aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChih-Yu Huang <akahuang@google.com>2021-11-08 14:08:02 +0900
committerChih-yu Huang <akahuang@google.com>2021-11-12 06:57:15 +0000
commitcec802b9d3773893a2756abc3e737530676381a1 (patch)
tree2ee37e80e41f3f8ec2d715ed04bbd60aba0755f7
parent53f82c27d562d82553355681b97557cf1ba4b238 (diff)
downloadv4l2_codec2-cec802b9d3773893a2756abc3e737530676381a1.tar.gz
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
-rw-r--r--plugin_store/Android.bp1
-rw-r--r--plugin_store/C2VdaBqBlockPool.cpp18
-rw-r--r--plugin_store/DmabufHelpers.cpp32
-rw-r--r--plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h4
-rw-r--r--plugin_store/include/v4l2_codec2/plugin_store/DmabufHelpers.h20
5 files changed, 54 insertions, 21 deletions
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 @@ cc_library_shared {
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::BufferQueueDefs::NUM_BUFFER_SLOTS;
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