diff options
Diffstat (limited to 'videocodec/OMXVideoDecoderMPEG4.cpp')
| -rw-r--r-- | videocodec/OMXVideoDecoderMPEG4.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/videocodec/OMXVideoDecoderMPEG4.cpp b/videocodec/OMXVideoDecoderMPEG4.cpp index 850899a..be19d13 100644 --- a/videocodec/OMXVideoDecoderMPEG4.cpp +++ b/videocodec/OMXVideoDecoderMPEG4.cpp @@ -64,11 +64,11 @@ OMX_ERRORTYPE OMXVideoDecoderMPEG4::ProcessorDeinit(void) { } OMX_ERRORTYPE OMXVideoDecoderMPEG4::ProcessorProcess( - OMX_BUFFERHEADERTYPE **buffers, + OMX_BUFFERHEADERTYPE ***pBuffers, buffer_retain_t *retains, OMX_U32 numberBuffers) { - return OMXVideoDecoderBase::ProcessorProcess(buffers, retains, numberBuffers); + return OMXVideoDecoderBase::ProcessorProcess(pBuffers, retains, numberBuffers); } OMX_ERRORTYPE OMXVideoDecoderMPEG4::PrepareConfigBuffer(VideoConfigBuffer *p) { @@ -82,6 +82,7 @@ OMX_ERRORTYPE OMXVideoDecoderMPEG4::PrepareDecodeBuffer(OMX_BUFFERHEADERTYPE *bu OMX_ERRORTYPE OMXVideoDecoderMPEG4::BuildHandlerList(void) { OMXVideoDecoderBase::BuildHandlerList(); AddHandler(OMX_IndexParamVideoMpeg4, GetParamVideoMpeg4, SetParamVideoMpeg4); + AddHandler(static_cast<OMX_INDEXTYPE>(OMX_IndexExtEnableNativeBuffer),GetNativeBufferMode,SetNativeBufferMode); return OMX_ErrorNone; } @@ -107,6 +108,30 @@ OMX_ERRORTYPE OMXVideoDecoderMPEG4::SetParamVideoMpeg4(OMX_PTR pStructure) { memcpy(&mParamMpeg4, p, sizeof(mParamMpeg4)); return OMX_ErrorNone; } +OMX_ERRORTYPE OMXVideoDecoderMPEG4::GetNativeBufferMode(OMX_PTR pStructure) { + OMX_ERRORTYPE ret; + return OMX_ErrorNone; //would not be here +} + + +#define MAX_OUTPUT_BUFFER_COUNT_FOR_MPEG4 10 +OMX_ERRORTYPE OMXVideoDecoderMPEG4::SetNativeBufferMode(OMX_PTR pStructure) { + OMX_ERRORTYPE ret; + //EnableAndroidNativeBuffersParams *param = (EnableAndroidNativeBuffersParams*)pStructure; + //CHECK_TYPE_HEADER(param); + CHECK_SET_PARAM_STATE(); + mNativeBufferMode = true; + PortVideo *port = NULL; + port = static_cast<PortVideo *>(this->ports[OUTPORT_INDEX]); + OMX_PARAM_PORTDEFINITIONTYPE port_def; + memcpy(&port_def,port->GetPortDefinition(),sizeof(port_def)); + port_def.nBufferCountMin = 1; + port_def.nBufferCountActual = MAX_OUTPUT_BUFFER_COUNT_FOR_MPEG4; + port_def.format.video.cMIMEType = (OMX_STRING)VA_VED_RAW_MIME_TYPE; + port_def.format.video.eColorFormat =static_cast<OMX_COLOR_FORMATTYPE>(VA_VED_COLOR_FORMAT); + port->SetPortDefinition(&port_def,true); + return OMX_ErrorNone; +} DECLARE_OMX_COMPONENT("OMX.Intel.VideoDecoder.MPEG4", "video_decoder.mpeg4", OMXVideoDecoderMPEG4); |
