This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP4 : Video Decoder - Ducati Error

Hi All,

I am working on RTP based H264 video streaming playback on OMAP4 Android platform (Galaxy Nexus).

Many times I observe following error thrown from Ducati, causing MediaServer to crash. (Observed on both ICS and JB). This is during port setting change, during initialization of Decoder. 

Following is the brief crash log. 

V/ACodec ( 121): [OMX.TI.DUCATI1.VIDEO.DECODER] Now handling output port settings change
V/ACodec ( 121): [OMX.TI.DUCATI1.VIDEO.DECODER] Output port now disabled.

D/DOMX ( 121): PROXY_VIDDEC_SendCommand() +
D/DOMX ( 121): RPC_UTIL_SetStrideAndPadding() +
D/DOMX ( 121): ERROR: failed check:(eError == OMX_ErrorNone) || (eError == OMX_ErrorNoMore) - returning error: 0x80001019 - Error returned from OMX API in ducati
D/DOMX ( 121): ERROR: failed check:eError == OMX_ErrorNone - returning error: 0x80001019 - Error in Proxy SetParameter for Port Def
D/DOMX ( 121): RPC_UTIL_SetStrideAndPadding() -
D/DOMX ( 121): ERROR: failed check:eError == OMX_ErrorNone - returning error: 0x80001019 - Stride and padding setting from proxy returned
D/DOMX ( 121): PROXY_VIDDEC_SendCommand() -

F/ACodec ( 121): frameworks/av/media/libstagefright/ACodec.cpp:3654 CHECK_EQ( mCodec->mOMX->sendCommand( mCodec->mNode, OMX_CommandPortEnable, kPortIndexOutput),(status_t)OK) failed: -1010 vs. 0

 
 Above Crash is in OMX_Setparameter() call from RPC_UTIL_SetStrideAndPadding(), where the value of Stride is actually getting correctly set as 4096 for 2D output buffers.

The most uncertain thing is, decoder works fine sometimes and fails with above error other times, so it is difficult to predict the exact triggering situation for above error.

Kindly help me with some inputs.

Regards,
Kalpesh Patil 

  • Can you check that used Stride value is no greater than used width? and that it is multiple of 128 bits? next are the 2 checks that are made about it.

    OMX_ASSERT(pPortDefs->format.video.nStride >= pOutputPortDef->format.video.nFrameWidth, OMX_ErrorUnsupportedSetting);
     
    Or

    //Supported values of stride are only multiples of 128

    OMX_ASSERT((pPortDefs->format.video.nStride & 0x7F) == 0, OMX_ErrorUnsupportedSetting);