xref: /aosp_15_r20/external/v4l2_codec2/plugin_store/DmabufHelpers.cpp (revision 0ec5a0ec62797f775085659156625e7f1bdb369f)
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 Worker std::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