plugin_store: split getDmabufId() function to dedicated file

Currently, getDmabufId() is placed at C2VdqBqBlockPool.h. However,
the header file already has many dependencies. The caller of
getDmabufId() would need to add many unnecessary dependency libraries.

This CL splits the method to a dedicated file to reduce this issue.

Bug: 205501954
Test: m -j32

Change-Id: Ie7e366ddf77ceec105cbacf6d16e6b6dc3a58198
diff --git a/plugin_store/Android.bp b/plugin_store/Android.bp
index c6f313c..621cbfc 100644
--- a/plugin_store/Android.bp
+++ b/plugin_store/Android.bp
@@ -18,6 +18,7 @@
     srcs: [
         "C2VdaBqBlockPool.cpp",
         "C2VdaPooledBlockPool.cpp",
+        "DmabufHelpers.cpp",
         "H2BGraphicBufferProducer.cpp",
         "V4L2PluginStore.cpp",
         "VendorAllocatorLoader.cpp",
diff --git a/plugin_store/C2VdaBqBlockPool.cpp b/plugin_store/C2VdaBqBlockPool.cpp
index 4a4198f..8271d81 100644
--- a/plugin_store/C2VdaBqBlockPool.cpp
+++ b/plugin_store/C2VdaBqBlockPool.cpp
@@ -9,9 +9,6 @@
 
 #include <errno.h>
 #include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
 
 #include <chrono>
 #include <mutex>
@@ -27,6 +24,7 @@
 #include <log/log.h>
 #include <ui/BufferQueueDefs.h>
 
+#include <v4l2_codec2/plugin_store/DmabufHelpers.h>
 #include <v4l2_codec2/plugin_store/H2BGraphicBufferProducer.h>
 #include <v4l2_codec2/plugin_store/V4L2AllocatorId.h>
 
@@ -54,20 +52,6 @@
 using ::android::hardware::Return;
 using HProducerListener = ::android::hardware::graphics::bufferqueue::V2_0::IProducerListener;
 
-std::optional<unique_id_t> getDmabufId(int dmabufFd) {
-    struct stat sb {};
-    if (fstat(dmabufFd, &sb) != 0) {
-        return std::nullopt;
-    }
-
-    if (sb.st_size == 0) {
-        ALOGE("Dma-buf size is 0. Please check your kernel is v5.3+");
-        return std::nullopt;
-    }
-
-    return static_cast<unique_id_t>(sb.st_ino);
-}
-
 static c2_status_t asC2Error(status_t err) {
     switch (err) {
     case OK:
diff --git a/plugin_store/DmabufHelpers.cpp b/plugin_store/DmabufHelpers.cpp
new file mode 100644
index 0000000..4441d66
--- /dev/null
+++ b/plugin_store/DmabufHelpers.cpp
@@ -0,0 +1,32 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "DmabufHelpers"
+
+#include <v4l2_codec2/plugin_store/DmabufHelpers.h>
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <log/log.h>
+
+namespace android {
+
+std::optional<unique_id_t> getDmabufId(int dmabufFd) {
+    struct stat sb {};
+    if (fstat(dmabufFd, &sb) != 0) {
+        return std::nullopt;
+    }
+
+    if (sb.st_size == 0) {
+        ALOGE("Dma-buf size is 0. Please check your kernel is v5.3+");
+        return std::nullopt;
+    }
+
+    return static_cast<unique_id_t>(sb.st_ino);
+}
+
+}  // namespace android
diff --git a/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h b/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h
index fe66410..fde6299 100644
--- a/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h
+++ b/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h
@@ -16,10 +16,6 @@
 
 namespace android {
 
-// We use the value of dma-buf inode as the unique ID of the graphic buffers.
-using unique_id_t = uint32_t;
-std::optional<unique_id_t> getDmabufId(int dmabufFd);
-
 /**
  * The BufferQueue-backed block pool design which supports to request arbitrary count of graphic
  * buffers from IGBP, and use this buffer set among codec component and client.
diff --git a/plugin_store/include/v4l2_codec2/plugin_store/DmabufHelpers.h b/plugin_store/include/v4l2_codec2/plugin_store/DmabufHelpers.h
new file mode 100644
index 0000000..dd38fee
--- /dev/null
+++ b/plugin_store/include/v4l2_codec2/plugin_store/DmabufHelpers.h
@@ -0,0 +1,20 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ANDROID_V4L2_CODEC2_PLUGIN_STORE_DMABUF_HELPERS_H
+#define ANDROID_V4L2_CODEC2_PLUGIN_STORE_DMABUF_HELPERS_H
+
+#include <inttypes.h>
+
+#include <optional>
+
+namespace android {
+
+// We use the value of dma-buf inode as the unique ID of the graphic buffers.
+using unique_id_t = uint32_t;
+std::optional<unique_id_t> getDmabufId(int dmabufFd);
+
+}  // namespace android
+
+#endif  // ANDROID_V4L2_CODEC2_PLUGIN_STORE_DMABUF_HELPERS_H