1*0ec5a0ecSAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors. All rights reserved. 2*0ec5a0ecSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*0ec5a0ecSAndroid Build Coastguard Worker // found in the LICENSE file. 4*0ec5a0ecSAndroid Build Coastguard Worker 5*0ec5a0ecSAndroid Build Coastguard Worker //#define LOG_NDEBUG 0 6*0ec5a0ecSAndroid Build Coastguard Worker #define LOG_TAG "DmabufHelpers" 7*0ec5a0ecSAndroid Build Coastguard Worker 8*0ec5a0ecSAndroid Build Coastguard Worker #include <v4l2_codec2/plugin_store/DmabufHelpers.h> 9*0ec5a0ecSAndroid Build Coastguard Worker 10*0ec5a0ecSAndroid Build Coastguard Worker #include <sys/stat.h> 11*0ec5a0ecSAndroid Build Coastguard Worker #include <sys/types.h> 12*0ec5a0ecSAndroid Build Coastguard Worker #include <unistd.h> 13*0ec5a0ecSAndroid Build Coastguard Worker 14*0ec5a0ecSAndroid Build Coastguard Worker #include <log/log.h> 15*0ec5a0ecSAndroid Build Coastguard Worker 16*0ec5a0ecSAndroid Build Coastguard Worker namespace android { 17*0ec5a0ecSAndroid Build Coastguard Worker getDmabufId(int dmabufFd)18*0ec5a0ecSAndroid Build Coastguard Workerstd::optional<unique_id_t> getDmabufId(int dmabufFd) { 19*0ec5a0ecSAndroid Build Coastguard Worker struct stat sb {}; 20*0ec5a0ecSAndroid Build Coastguard Worker if (fstat(dmabufFd, &sb) != 0) { 21*0ec5a0ecSAndroid Build Coastguard Worker return std::nullopt; 22*0ec5a0ecSAndroid Build Coastguard Worker } 23*0ec5a0ecSAndroid Build Coastguard Worker 24*0ec5a0ecSAndroid Build Coastguard Worker if (sb.st_size == 0) { 25*0ec5a0ecSAndroid Build Coastguard Worker ALOGE("Dma-buf size is 0. Please check your kernel is v5.3+"); 26*0ec5a0ecSAndroid Build Coastguard Worker return std::nullopt; 27*0ec5a0ecSAndroid Build Coastguard Worker } 28*0ec5a0ecSAndroid Build Coastguard Worker 29*0ec5a0ecSAndroid Build Coastguard Worker return static_cast<unique_id_t>(sb.st_ino); 30*0ec5a0ecSAndroid Build Coastguard Worker } 31*0ec5a0ecSAndroid Build Coastguard Worker 32*0ec5a0ecSAndroid Build Coastguard Worker } // namespace android 33