From 08b5f8a2994bfeea3290301077cf5705b7c606ba Mon Sep 17 00:00:00 2001 From: Uma Mehta Date: Fri, 2 Jun 2017 11:22:25 +0530 Subject: [PATCH] video: Disconnect from native window for secure case Disconnect from native window for secure case, to ensure earlier resolution buffers are freed, which will help to reduce delay for allocation of new resolution buffers CRs-Fixed: 2069666 Bug: 142782952 Test: atest CtsMediaTestCases -- --module-arg CtsMediaTestCases:size:small Change-Id: Ic95e0b62eb5f5043e0321cd0d1bbfbff76729ef3 --- media/libstagefright/ACodec.cpp | 15 ++++++++++++++- .../include/media/stagefright/ACodec.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index ef9d253c86..960120f49c 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -1310,7 +1310,7 @@ status_t ACodec::allocateOutputMetadataBuffers() { OMX_U32 bufferCount, bufferSize, minUndequeuedBuffers; status_t err = configureOutputBuffersFromNativeWindow( &bufferCount, &bufferSize, &minUndequeuedBuffers, - false /* preregister */); + mFlags & kFlagPreregisterMetadataBuffers /* preregister */); if (err != OK) return err; mNumUndequeuedBuffers = minUndequeuedBuffers; @@ -1896,6 +1896,19 @@ status_t ACodec::configureCodec( setPortMode(kPortIndexInput, IOMX::kPortModePresetByteBuffer); err = OK; // ignore error for now } + + OMX_INDEXTYPE index; + if (mOMXNode->getExtensionIndex( + "OMX.google.android.index.preregisterMetadataBuffers", &index) == OK) { + OMX_CONFIG_BOOLEANTYPE param; + InitOMXParams(¶m); + param.bEnabled = OMX_FALSE; + if (mOMXNode->getParameter(index, ¶m, sizeof(param)) == OK) { + if (param.bEnabled == OMX_TRUE) { + mFlags |= kFlagPreregisterMetadataBuffers; + } + } + } } if (haveNativeWindow) { sp nativeWindow = diff --git a/media/libstagefright/include/media/stagefright/ACodec.h b/media/libstagefright/include/media/stagefright/ACodec.h index 7754de447d..d56ec4f07a 100644 --- a/media/libstagefright/include/media/stagefright/ACodec.h +++ b/media/libstagefright/include/media/stagefright/ACodec.h @@ -158,6 +158,7 @@ private: kFlagIsSecure = 1, kFlagPushBlankBuffersToNativeWindowOnShutdown = 2, kFlagIsGrallocUsageProtected = 4, + kFlagPreregisterMetadataBuffers = 8, }; enum {