From 35f4783d906bfa559d76bce18c83bfe6ac1056b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Grzesik?= <bgrzesik@google.com>
Date: Tue, 7 Mar 2023 09:42:37 +0000
Subject: [PATCH] service: Uprev Codec 2.0 VNDK to 1.2

This CL uprevs Codec 2.0 VNDK version 1.2 to take advantage of
asynchronous graphic buffer fetching from buffer queue in following
patches.

Bug: 268301611
Bug: 268305422
Bug: 270329448
Bug: 238710012
Bug: 238390060
Bug: 270331759
Bug: 238709912
Test: CtsMediaCodecTestCases
Test: CtsMediaDecoderTestCases
Test: CtsMediaV2TestCases
Test: GtsExoPlayerTestCases com.google.android.exoplayer.gts.CommonEncryptionDrmTest#cencSchemeTypeV*
Change-Id: Icad6d78c3f36d365749af787f2b3bab3edc54d3e
(cherry picked from commit d1454490efa1865cd9fd33bd13237f9ef919823b)
---
 plugin_store/C2VdaBqBlockPool.cpp                      | 10 ++++++++++
 .../v4l2_codec2/plugin_store/C2VdaBqBlockPool.h        |  4 ++++
 service/Android.bp                                     |  6 +++---
 ...> android.hardware.media.c2@1.2-service-v4l2-32.rc} |  2 +-
 ...> android.hardware.media.c2@1.2-service-v4l2-64.rc} |  2 +-
 service/service.cpp                                    |  6 +++---
 6 files changed, 22 insertions(+), 8 deletions(-)
 rename service/{android.hardware.media.c2@1.0-service-v4l2-32.rc => android.hardware.media.c2@1.2-service-v4l2-32.rc} (57%)
 rename service/{android.hardware.media.c2@1.0-service-v4l2-64.rc => android.hardware.media.c2@1.2-service-v4l2-64.rc} (57%)

diff --git a/plugin_store/C2VdaBqBlockPool.cpp b/plugin_store/C2VdaBqBlockPool.cpp
index d53f4a0..3356885 100644
--- a/plugin_store/C2VdaBqBlockPool.cpp
+++ b/plugin_store/C2VdaBqBlockPool.cpp
@@ -918,6 +918,16 @@ c2_status_t C2VdaBqBlockPool::fetchGraphicBlock(
     return C2_NO_INIT;
 }
 
+c2_status_t C2VdaBqBlockPool::fetchGraphicBlock(uint32_t width, uint32_t height, uint32_t format,
+                                                C2MemoryUsage usage,
+                                                std::shared_ptr<C2GraphicBlock>* block,
+                                                C2Fence* fence) {
+    if (mImpl) {
+        return mImpl->fetchGraphicBlock(width, height, format, usage, block);
+    }
+    return C2_NO_INIT;
+}
+
 void C2VdaBqBlockPool::setRenderCallback(
         const C2BufferQueueBlockPool::OnRenderCallback& renderCallback) {
     if (mImpl) {
diff --git a/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h b/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h
index fde6299..addc23d 100644
--- a/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h
+++ b/plugin_store/include/v4l2_codec2/plugin_store/C2VdaBqBlockPool.h
@@ -55,6 +55,10 @@ public:
                                   C2MemoryUsage usage,
                                   std::shared_ptr<C2GraphicBlock>* block /* nonnull */) override;
 
+    c2_status_t fetchGraphicBlock(uint32_t width, uint32_t height, uint32_t format,
+                                  C2MemoryUsage usage, std::shared_ptr<C2GraphicBlock>* block,
+                                  C2Fence* fence) override;
+
     void setRenderCallback(const C2BufferQueueBlockPool::OnRenderCallback& renderCallback =
                                    C2BufferQueueBlockPool::OnRenderCallback()) override;
     void configureProducer(const android::sp<HGraphicBufferProducer>& producer) override;
diff --git a/service/Android.bp b/service/Android.bp
index c901a02..a690f08 100644
--- a/service/Android.bp
+++ b/service/Android.bp
@@ -8,7 +8,7 @@ package {
 }
 
 cc_binary {
-    name: "android.hardware.media.c2@1.0-service-v4l2",
+    name: "android.hardware.media.c2@1.2-service-v4l2",
 
     defaults: [
         "hidl_defaults",
@@ -37,11 +37,11 @@ cc_binary {
     multilib: {
         lib32: {
             suffix: "-32",
-            init_rc: ["android.hardware.media.c2@1.0-service-v4l2-32.rc"],
+            init_rc: ["android.hardware.media.c2@1.2-service-v4l2-32.rc"],
         },
         lib64: {
             suffix: "-64",
-            init_rc: ["android.hardware.media.c2@1.0-service-v4l2-64.rc"],
+            init_rc: ["android.hardware.media.c2@1.2-service-v4l2-64.rc"],
         },
     },
 }
diff --git a/service/android.hardware.media.c2@1.0-service-v4l2-32.rc b/service/android.hardware.media.c2@1.2-service-v4l2-32.rc
similarity index 57%
rename from service/android.hardware.media.c2@1.0-service-v4l2-32.rc
rename to service/android.hardware.media.c2@1.2-service-v4l2-32.rc
index e4ddbc3..4fe0ccb 100644
--- a/service/android.hardware.media.c2@1.0-service-v4l2-32.rc
+++ b/service/android.hardware.media.c2@1.2-service-v4l2-32.rc
@@ -1,4 +1,4 @@
-service android-hardware-media-c2-v4l2-hal-1-0 /vendor/bin/hw/android.hardware.media.c2@1.0-service-v4l2-32
+service android-hardware-media-c2-v4l2-hal-1-2 /vendor/bin/hw/android.hardware.media.c2@1.2-service-v4l2-32
     class hal
     user media
     group mediadrm drmrpc
diff --git a/service/android.hardware.media.c2@1.0-service-v4l2-64.rc b/service/android.hardware.media.c2@1.2-service-v4l2-64.rc
similarity index 57%
rename from service/android.hardware.media.c2@1.0-service-v4l2-64.rc
rename to service/android.hardware.media.c2@1.2-service-v4l2-64.rc
index 454953b..9869c6b 100644
--- a/service/android.hardware.media.c2@1.0-service-v4l2-64.rc
+++ b/service/android.hardware.media.c2@1.2-service-v4l2-64.rc
@@ -1,4 +1,4 @@
-service android-hardware-media-c2-v4l2-hal-1-0 /vendor/bin/hw/android.hardware.media.c2@1.0-service-v4l2-64
+service android-hardware-media-c2-v4l2-hal-1-2 /vendor/bin/hw/android.hardware.media.c2@1.2-service-v4l2-64
     class hal
     user media
     group mediadrm drmrpc
diff --git a/service/service.cpp b/service/service.cpp
index 616e641..6917354 100644
--- a/service/service.cpp
+++ b/service/service.cpp
@@ -5,9 +5,9 @@
 //#define LOG_NDEBUG 0
 #define LOG_TAG "android.hardware.media.c2@1.0-service-v4l2"
 
-#include <base/logging.h>
 #include <C2Component.h>
-#include <codec2/hidl/1.0/ComponentStore.h>
+#include <base/logging.h>
+#include <codec2/hidl/1.2/ComponentStore.h>
 #include <hidl/HidlTransportSupport.h>
 #include <log/log.h>
 #include <minijail.h>
@@ -39,7 +39,7 @@ int main(int /* argc */, char** /* argv */) {
 
     // Create IComponentStore service.
     {
-        using namespace ::android::hardware::media::c2::V1_0;
+        using namespace ::android::hardware::media::c2::V1_2;
 
         ALOGD("Instantiating Codec2's V4L2 IComponentStore service...");
         android::sp<IComponentStore> store(
-- 
GitLab