From 71ef1c155995c469ba661d3a55d864c0d2e74120 Mon Sep 17 00:00:00 2001 From: Sungtak Lee Date: Thu, 11 Jan 2024 21:26:07 +0000 Subject: [PATCH 1/2] media.bufferpool2: support AHardwareBuffer based buffer Change-Id: I43102797b92d4782d2fc620ea3c9490f5187b90c --- media/bufferpool/aidl/Android.bp | 10 ++++++++-- .../android/hardware/media/bufferpool2/Buffer.aidl | 3 ++- .../android/hardware/media/bufferpool2/Buffer.aidl | 7 ++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/media/bufferpool/aidl/Android.bp b/media/bufferpool/aidl/Android.bp index 8e013e0535..9dcc90e9c0 100644 --- a/media/bufferpool/aidl/Android.bp +++ b/media/bufferpool/aidl/Android.bp @@ -26,6 +26,9 @@ aidl_interface { vendor_available: true, double_loadable: true, srcs: ["android/hardware/media/bufferpool2/*.aidl"], + headers: [ + "HardwareBuffer_aidl", + ], imports: [ "android.hardware.common-V2", "android.hardware.common.fmq-V1", @@ -44,10 +47,13 @@ aidl_interface { "//apex_available:platform", "com.android.media.swcodec", ], + additional_shared_libraries: [ + "libnativewindow", + ], min_sdk_version: "29", }, rust: { - enabled: true, + enabled: false, }, }, versions_with_info: [ @@ -59,6 +65,6 @@ aidl_interface { ], }, ], - frozen: true, + frozen: false, } diff --git a/media/bufferpool/aidl/aidl_api/android.hardware.media.bufferpool2/current/android/hardware/media/bufferpool2/Buffer.aidl b/media/bufferpool/aidl/aidl_api/android.hardware.media.bufferpool2/current/android/hardware/media/bufferpool2/Buffer.aidl index 4ea0bba7fc..85a78ad6ee 100644 --- a/media/bufferpool/aidl/aidl_api/android.hardware.media.bufferpool2/current/android/hardware/media/bufferpool2/Buffer.aidl +++ b/media/bufferpool/aidl/aidl_api/android.hardware.media.bufferpool2/current/android/hardware/media/bufferpool2/Buffer.aidl @@ -35,5 +35,6 @@ package android.hardware.media.bufferpool2; @VintfStability parcelable Buffer { int id; - android.hardware.common.NativeHandle buffer; + @nullable android.hardware.common.NativeHandle buffer; + @nullable android.hardware.HardwareBuffer hwbBuffer; } diff --git a/media/bufferpool/aidl/android/hardware/media/bufferpool2/Buffer.aidl b/media/bufferpool/aidl/android/hardware/media/bufferpool2/Buffer.aidl index 976f674878..79b3f23ad2 100644 --- a/media/bufferpool/aidl/android/hardware/media/bufferpool2/Buffer.aidl +++ b/media/bufferpool/aidl/android/hardware/media/bufferpool2/Buffer.aidl @@ -17,6 +17,7 @@ package android.hardware.media.bufferpool2; import android.hardware.common.NativeHandle; +import android.hardware.HardwareBuffer; /** * Generic buffer for fast recycling for media/stagefright. @@ -26,10 +27,14 @@ import android.hardware.common.NativeHandle; * by a buffer pool, and are recycled to the buffer pool when they are * no longer referenced by the clients. * + * Initially all buffers in media HAL should be NativeHandle(actually native_handle_t). + * HardwareBuffer(actually AHardwareBuffer) for GraphicBuffer is added from V2. + * * E.g. ion or gralloc buffer */ @VintfStability parcelable Buffer { int id; - NativeHandle buffer; + @nullable NativeHandle buffer; + @nullable HardwareBuffer hwbBuffer; } From f36c31c9f08da3c500caba7099d67066bfad9c74 Mon Sep 17 00:00:00 2001 From: Sungtak Lee Date: Fri, 12 Jan 2024 04:53:17 +0000 Subject: [PATCH 2/2] media.c2 aidl: Use bufferpool2 V2 Bug: 254050314 Change-Id: I1597fa92214086378d48fa37401a389a32c72bba --- media/bufferpool/aidl/default/Android.bp | 5 +++-- media/bufferpool/aidl/default/BufferPoolClient.cpp | 8 +++++++- media/bufferpool/aidl/default/tests/Android.bp | 9 ++++++--- media/c2/aidl/Android.bp | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/media/bufferpool/aidl/default/Android.bp b/media/bufferpool/aidl/default/Android.bp index 11a616373e..4d12d6304a 100644 --- a/media/bufferpool/aidl/default/Android.bp +++ b/media/bufferpool/aidl/default/Android.bp @@ -33,15 +33,16 @@ cc_library { "libcutils", "libfmq", "liblog", + "libnativewindow", "libutils", - "android.hardware.media.bufferpool2-V1-ndk", + "android.hardware.media.bufferpool2-V2-ndk", ], static_libs: [ "libaidlcommonsupport", ], export_shared_lib_headers: [ "libfmq", - "android.hardware.media.bufferpool2-V1-ndk", + "android.hardware.media.bufferpool2-V2-ndk", ], double_loadable: true, cflags: [ diff --git a/media/bufferpool/aidl/default/BufferPoolClient.cpp b/media/bufferpool/aidl/default/BufferPoolClient.cpp index 0e249d5c63..ce4ad8e37f 100644 --- a/media/bufferpool/aidl/default/BufferPoolClient.cpp +++ b/media/bufferpool/aidl/default/BufferPoolClient.cpp @@ -757,7 +757,13 @@ BufferPoolStatus BufferPoolClient::Impl::fetchBufferHandle( return svcSpecific ? svcSpecific : ResultStatus::CRITICAL_ERROR; } if (results[0].getTag() == FetchResult::buffer) { - *handle = ::android::dupFromAidl(results[0].get().buffer); + if (results[0].get().buffer.has_value()) { + *handle = ::android::dupFromAidl(results[0].get().buffer.value()); + } else { + // TODO: Support HardwareBuffer + ALOGW("handle nullptr"); + *handle = nullptr; + } return ResultStatus::OK; } return results[0].get(); diff --git a/media/bufferpool/aidl/default/tests/Android.bp b/media/bufferpool/aidl/default/tests/Android.bp index 549af5739c..487ed4c593 100644 --- a/media/bufferpool/aidl/default/tests/Android.bp +++ b/media/bufferpool/aidl/default/tests/Android.bp @@ -36,8 +36,9 @@ cc_test { "libcutils", "libfmq", "liblog", + "libnativewindow", "libutils", - "android.hardware.media.bufferpool2-V1-ndk", + "android.hardware.media.bufferpool2-V2-ndk", ], static_libs: [ "libaidlcommonsupport", @@ -59,8 +60,9 @@ cc_test { "libcutils", "libfmq", "liblog", + "libnativewindow", "libutils", - "android.hardware.media.bufferpool2-V1-ndk", + "android.hardware.media.bufferpool2-V2-ndk", ], static_libs: [ "libaidlcommonsupport", @@ -82,8 +84,9 @@ cc_test { "libcutils", "libfmq", "liblog", + "libnativewindow", "libutils", - "android.hardware.media.bufferpool2-V1-ndk", + "android.hardware.media.bufferpool2-V2-ndk", ], static_libs: [ "libaidlcommonsupport", diff --git a/media/c2/aidl/Android.bp b/media/c2/aidl/Android.bp index b511e45701..2eaeb010e2 100644 --- a/media/c2/aidl/Android.bp +++ b/media/c2/aidl/Android.bp @@ -20,7 +20,7 @@ aidl_interface { ], imports: [ "android.hardware.common-V2", - "android.hardware.media.bufferpool2-V1", + "android.hardware.media.bufferpool2-V2", ], include_dirs: [ "frameworks/native/aidl/gui",