diff options
author | Yuanjun Huang <yuanjun.huang@intel.com> | 2015-02-11 08:51:43 +0800 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2015-02-11 10:04:52 -0800 |
commit | 15f60f1eccc69ecb05ec3ae6bd075e1ca0f59ff5 (patch) | |
tree | 1cead1011eff0d68ed2e3718741a861095af63e6 | |
parent | dd94f000f413fb14aaf4f61a2bb3f944033a38c8 (diff) | |
download | android_hardware_intel_common_omx-components-15f60f1eccc69ecb05ec3ae6bd075e1ca0f59ff5.tar.gz android_hardware_intel_common_omx-components-15f60f1eccc69ecb05ec3ae6bd075e1ca0f59ff5.tar.bz2 android_hardware_intel_common_omx-components-15f60f1eccc69ecb05ec3ae6bd075e1ca0f59ff5.zip |
Fix defect when native buffer mode fallbacks to byte-buffer mode
(raw data mode). The color format needs to be set to default as
non-Intel format.
Bug: 19317169
Change-Id: Ia818c667efb1aca450b30adf9be9b4fec15955cc
Signed-off-by: Yuanjun Huang <yuanjun.huang@intel.com>
-rw-r--r-- | videocodec/OMXVideoDecoderBase.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/videocodec/OMXVideoDecoderBase.cpp b/videocodec/OMXVideoDecoderBase.cpp index 6900d5c..7d1d830 100644 --- a/videocodec/OMXVideoDecoderBase.cpp +++ b/videocodec/OMXVideoDecoderBase.cpp @@ -884,16 +884,25 @@ OMX_ERRORTYPE OMXVideoDecoderBase::SetNativeBufferModeSpecific(OMX_PTR pStructur CHECK_TYPE_HEADER(param); CHECK_PORT_INDEX_RANGE(param); CHECK_SET_PARAM_STATE(); + + PortVideo *port = NULL; + port = static_cast<PortVideo *>(this->ports[OUTPORT_INDEX]); + OMX_PARAM_PORTDEFINITIONTYPE port_def; + memcpy(&port_def,port->GetPortDefinition(),sizeof(port_def)); + if (!param->enable) { mWorkingMode = RAWDATA_MODE; + // If it is fallback from native mode the color format has been + // already set to INTEL format. + // We need to set back the default color format and Native stuff. + port_def.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar; + port_def.format.video.pNativeRender = NULL; + port_def.format.video.pNativeWindow = NULL; + port->SetPortDefinition(&port_def,true); return OMX_ErrorNone; } - mWorkingMode = GRAPHICBUFFER_MODE; - PortVideo *port = NULL; - port = static_cast<PortVideo *>(this->ports[OUTPORT_INDEX]); - OMX_PARAM_PORTDEFINITIONTYPE port_def; - memcpy(&port_def,port->GetPortDefinition(),sizeof(port_def)); + mWorkingMode = GRAPHICBUFFER_MODE; port_def.nBufferCountMin = mNativeBufferCount; if (mEnableAdaptivePlayback) { SetMaxOutputBufferCount(&port_def); |