aboutsummaryrefslogtreecommitdiffstats
path: root/videocodec/OMXVideoDecoderBase.cpp
diff options
context:
space:
mode:
authorDan Liang <dan.liang@intel.com>2013-10-23 17:34:11 +0800
committerPatrick Tjin <pattjin@google.com>2014-07-21 22:02:54 -0700
commit001883ca51a325c81e9a147588f14d16124cb631 (patch)
treeb36a65ba436c410448c284d7964dd2ea42f4a045 /videocodec/OMXVideoDecoderBase.cpp
parent16bd93c8c335c1586e5b3f87065070247db904d4 (diff)
downloadandroid_hardware_intel_common_omx-components-001883ca51a325c81e9a147588f14d16124cb631.tar.gz
android_hardware_intel_common_omx-components-001883ca51a325c81e9a147588f14d16124cb631.tar.bz2
android_hardware_intel_common_omx-components-001883ca51a325c81e9a147588f14d16124cb631.zip
omx-component: Add support for Error Report needed by WebRTC
BZ: 147912 enable error report in omx component Change-Id: Id5728d95272e622d0199a94a20e6af9acc78044c Signed-off-by: Dan Liang <dan.liang@intel.com>
Diffstat (limited to 'videocodec/OMXVideoDecoderBase.cpp')
-rwxr-xr-xvideocodec/OMXVideoDecoderBase.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/videocodec/OMXVideoDecoderBase.cpp b/videocodec/OMXVideoDecoderBase.cpp
index 7823c85..6a14142 100755
--- a/videocodec/OMXVideoDecoderBase.cpp
+++ b/videocodec/OMXVideoDecoderBase.cpp
@@ -32,7 +32,8 @@ OMXVideoDecoderBase::OMXVideoDecoderBase()
#ifdef TARGET_HAS_VPP
mVppBufferNum(0),
#endif
- mWorkingMode(RAWDATA_MODE) {
+ mWorkingMode(RAWDATA_MODE),
+ mErrorReportEnabled (false) {
memset(&mGraphicBufferParam, 0, sizeof(mGraphicBufferParam));
}
@@ -455,6 +456,10 @@ OMX_ERRORTYPE OMXVideoDecoderBase::PrepareConfigBuffer(VideoConfigBuffer *p) {
}
}
+
+ if (mErrorReportEnabled)
+ p->flag |= WANT_ERROR_REPORT;
+
p->rotationDegrees = mRotationDegrees;
#ifdef TARGET_HAS_VPP
p->vppBufferNum = mVppBufferNum;
@@ -507,6 +512,7 @@ OMX_ERRORTYPE OMXVideoDecoderBase::FillRenderBuffer(OMX_BUFFERHEADERTYPE **pBuff
OMX_BUFFERHEADERTYPE *buffer = *pBuffer;
OMX_BUFFERHEADERTYPE *buffer_orign = buffer;
+ VideoErrorBuffer *ErrBufPtr = NULL;
if (mWorkingMode != GRAPHICBUFFER_MODE && buffer->pPlatformPrivate) {
VideoRenderBuffer *p = (VideoRenderBuffer *)buffer->pPlatformPrivate;
@@ -514,9 +520,16 @@ OMX_ERRORTYPE OMXVideoDecoderBase::FillRenderBuffer(OMX_BUFFERHEADERTYPE **pBuff
buffer->pPlatformPrivate = NULL;
}
+ if (mWorkingMode == GRAPHICBUFFER_MODE && mErrorReportEnabled) {
+ if (buffer->pAppPrivate == NULL)
+ LOGE("The App doesn't provide the output buffer for error reporting");
+ else
+ ErrBufPtr = (VideoErrorBuffer *)buffer->pAppPrivate;
+ }
+
bool draining = (inportBufferFlags & OMX_BUFFERFLAG_EOS);
//pthread_mutex_lock(&mSerializationLock);
- const VideoRenderBuffer *renderBuffer = mVideoDecoder->getOutput(draining);
+ const VideoRenderBuffer *renderBuffer = mVideoDecoder->getOutput(draining, ErrBufPtr);
//pthread_mutex_unlock(&mSerializationLock);
if (renderBuffer == NULL) {
buffer->nFilledLen = 0;
@@ -718,6 +731,7 @@ OMX_ERRORTYPE OMXVideoDecoderBase::BuildHandlerList(void) {
AddHandler(static_cast<OMX_INDEXTYPE>(OMX_IndexExtVppBufferNum), GetDecoderVppBufferNum, SetDecoderVppBufferNum);
#endif
AddHandler(OMX_IndexConfigCommonOutputCrop, GetDecoderOutputCrop, SetDecoderOutputCrop);
+ AddHandler(static_cast<OMX_INDEXTYPE>(OMX_IndexExtEnableErrorReport), GetErrorReportMode, SetErrorReportMode);
return OMX_ErrorNone;
}
@@ -890,6 +904,23 @@ OMX_ERRORTYPE OMXVideoDecoderBase::SetDecoderOutputCrop(OMX_PTR pStructure) {
return OMX_ErrorUnsupportedSetting;
}
+OMX_ERRORTYPE OMXVideoDecoderBase::GetErrorReportMode(OMX_PTR pStructure) {
+ LOGE("GetErrorReportMode is not implemented");
+ return OMX_ErrorNotImplemented;
+}
+
+OMX_ERRORTYPE OMXVideoDecoderBase::SetErrorReportMode(OMX_PTR pStructure) {
+ CHECK_SET_PARAM_STATE();
+
+ if (pStructure) {
+ mErrorReportEnabled = *(static_cast<bool *>(pStructure));
+ LOGD("Error reporting is %s", mErrorReportEnabled ? "enabled" : "disabled");
+
+ return OMX_ErrorNone;
+ } else
+ return OMX_ErrorBadParameter;
+}
+
OMX_COLOR_FORMATTYPE OMXVideoDecoderBase::GetOutputColorFormat(int width, int height) {
#ifndef VED_TILING
return OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar;