Merge "vp8: modify for add soft vp8 decoder [1/3]" into rvc-dev am: 7e38134185 am: c28fdf8979
Change-Id: I18355862b3864bd626e0475c6442891d47dc0907
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 73d3a0b..63ab654 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -2053,17 +2053,34 @@
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 {