summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm-core/inc/OMX_QCOMExtns.h2
-rw-r--r--mm-video-v4l2/vidc/vdec/inc/omx_vdec.h1
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp17
3 files changed, 19 insertions, 1 deletions
diff --git a/mm-core/inc/OMX_QCOMExtns.h b/mm-core/inc/OMX_QCOMExtns.h
index 75447455..0d33f173 100644
--- a/mm-core/inc/OMX_QCOMExtns.h
+++ b/mm-core/inc/OMX_QCOMExtns.h
@@ -476,6 +476,8 @@ enum OMX_QCOM_EXTN_INDEXTYPE
/*"OMX.QCOM.index.param.video.CustomBufferSize"*/
OMX_QcomIndexParamVideoCustomBufferSize = 0x7F00003E,
+
+ OMX_QcomIndexParamVideoProcessNotCodedVOP = 0x7F00003F,
};
/**
diff --git a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
index ac0b6f76..503156a3 100644
--- a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
+++ b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
@@ -966,6 +966,7 @@ class omx_vdec: public qc_omx_component
unsigned int m_fill_output_msg;
bool client_set_fps;
+ bool ignore_not_coded_vops;
class allocate_color_convert_buf
{
public:
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
index a4728e4b..e3d40481 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -585,6 +585,7 @@ omx_vdec::omx_vdec(): m_error_propogated(false),
m_other_extradata(NULL),
m_profile(0),
client_set_fps(false),
+ ignore_not_coded_vops(true),
m_last_rendered_TS(-1),
m_queued_codec_config_count(0)
{
@@ -3109,6 +3110,12 @@ OMX_ERRORTYPE omx_vdec::get_parameter(OMX_IN OMX_HANDLETYPE hComp,
break;
#endif
+ case OMX_QcomIndexParamVideoProcessNotCodedVOP:
+ {
+ DEBUG_PRINT_LOW("get_parameter: OMX_QcomIndexParamVideoProcessNotCodedVOP");
+ ((QOMX_ENABLETYPE *)paramData)->bEnable = (OMX_BOOL)!ignore_not_coded_vops;
+ break;
+ }
default: {
DEBUG_PRINT_ERROR("get_parameter: unknown param %08x", paramIndex);
eRet =OMX_ErrorUnsupportedIndex;
@@ -3947,6 +3954,12 @@ OMX_ERRORTYPE omx_vdec::set_parameter(OMX_IN OMX_HANDLETYPE hComp,
}
break;
}
+ case OMX_QcomIndexParamVideoProcessNotCodedVOP:
+ {
+ DEBUG_PRINT_LOW("set_parameter: OMX_QcomIndexParamVideoProcessNotCodedVOP");
+ ignore_not_coded_vops = !((QOMX_ENABLETYPE *)paramData)->bEnable;
+ break;
+ }
default: {
DEBUG_PRINT_ERROR("Setparameter: unknown param %d", paramIndex);
eRet = OMX_ErrorUnsupportedIndex;
@@ -5996,7 +6009,9 @@ OMX_ERRORTYPE omx_vdec::empty_this_buffer_proxy(OMX_IN OMX_HANDLETYPE hComp,
}
- if (codec_type_parse == CODEC_TYPE_MPEG4 || codec_type_parse == CODEC_TYPE_DIVX) {
+ if (ignore_not_coded_vops &&
+ (codec_type_parse == CODEC_TYPE_MPEG4 ||
+ codec_type_parse == CODEC_TYPE_DIVX)) {
mp4StreamType psBits;
psBits.data = (unsigned char *)(buffer->pBuffer + buffer->nOffset);
psBits.numBytes = buffer->nFilledLen;