From 0cc3c2179c39e8627287308a30eaf7c3f191ca61 Mon Sep 17 00:00:00 2001 From: Liang Ji Date: Tue, 14 Apr 2020 13:20:34 +0800 Subject: [PATCH] vp8: modify for add soft vp8 decoder [1/3] PD# GH-245 Problem: vp8 play do not smooth Solution: modify for add vendor soft decoder for vp8 decoder Bug: 149354182 Test: U212 Change-Id: I91c6ba90f7d3edc28d6164ec8cd2a57195d0a7a7 Signed-off-by: Jian Wang --- media/libstagefright/ACodec.cpp | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 73d3a0b18b..63ab6548b4 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -2053,17 +2053,34 @@ status_t ACodec::configureCodec( if (mIsVideo || mIsImage) { // determine need for software renderer bool usingSwRenderer = false; - if (haveNativeWindow && mComponentName.startsWith("OMX.google.")) { - usingSwRenderer = true; - haveNativeWindow = false; - (void)setPortMode(kPortIndexOutput, IOMX::kPortModePresetByteBuffer); - } else if (haveNativeWindow && !storingMetadataInDecodedBuffers()) { - err = setPortMode(kPortIndexOutput, IOMX::kPortModePresetANWBuffer); - if (err != OK) { - return err; + if (haveNativeWindow) { + bool requiresSwRenderer = false; + OMX_PARAM_U32TYPE param; + InitOMXParams(¶m); + param.nPortIndex = kPortIndexOutput; + + status_t err = mOMXNode->getParameter( + (OMX_INDEXTYPE)OMX_IndexParamVideoAndroidRequiresSwRenderer, + ¶m, sizeof(param)); + + if (err == OK && param.nU32 == 1) { + requiresSwRenderer = true; } + + if (mComponentName.startsWith("OMX.google.") || requiresSwRenderer) { + usingSwRenderer = true; + haveNativeWindow = false; + (void)setPortMode(kPortIndexOutput, IOMX::kPortModePresetByteBuffer); + } else if (!storingMetadataInDecodedBuffers()) { + err = setPortMode(kPortIndexOutput, IOMX::kPortModePresetANWBuffer); + if (err != OK) { + return err; + } + } + } + if (encoder) { err = setupVideoEncoder(mime, msg, outputFormat, inputFormat); } else {