diff options
| author | Dan Liang <dan.liang@intel.com> | 2013-10-23 17:34:11 +0800 |
|---|---|---|
| committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:02:54 -0700 |
| commit | 001883ca51a325c81e9a147588f14d16124cb631 (patch) | |
| tree | b36a65ba436c410448c284d7964dd2ea42f4a045 /videocodec/OMXVideoDecoderBase.cpp | |
| parent | 16bd93c8c335c1586e5b3f87065070247db904d4 (diff) | |
| download | android_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-x | videocodec/OMXVideoDecoderBase.cpp | 35 |
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; |
