Hi
I'm developing a video phone on Android blaze tablet which uses omap4430 chip.The s/w version is 4.AI.4 and kernel version is 3.0.21 After the Decoder component enters into OMX_StateExecuting,
I'm calling OMX_EmptyThisBuffer with valid i/p data. The function succeeds and then i call the OMX_FillThisBuffer. I get the OMX_EventPortSettingsChanged indication from the open max layer but the EmptyBufferDone and the FillBufferDone call backs are not called. No errors reported from the TI open max layer
Ignoring the empty buffer done and fill buffer done callbacks, if i submit the next frame to the omx layer, the applications hungs after submitting 4 buffers to the decoder component. After tracing through the omx code provided in the 4.04 android source, came to know that the RPCCallback thread is not receiving any response from the remote core. This remote core could be the DUCATI.
I've verified the i/p given to the decoder using vlc player and the i/p is fine. Even if the i/p frame to decoder is erroneous, the omx component should return error. This does not happen and the application hungs. I don't know the reason for this.
But from my observation. OMX_EventPortSettingsChanged indication is given by the TI omx layer for the o/p port which means that the decoder might have decoded the frame I'm saying this because the OMX_EventPortSettingsChanged indication is NOT received if i DO NOT call the OMX_FILLThisBuffer function i,,e the event is not received if i do not call the fill buffer function. This probably means that the OMX_EventPortSettingsChanged event is sent ONLY after decoding the first frame i,,e I-frame.
How to debug the issue. Do any one have ideas on this. What are the reasons for TI omx layer not responding to the frames submitted. What are the conditions in which the i/p frame is discarded and NOT returning any error ?? Please do not suggest to execute the demo and check it first. i've to debug as per my current situation.
The following are the logs
===== submitting 1st frame which is an I-frame ========
/VideoPhone( 4575): [1345530431-DEBG :934] Calling DECODER with ptr: 5f000000 length: 1316 at tv.tv_sec: 1345530431 tv.tv_usec: 894893
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:121 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:202 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:471 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): ENTER: hComponent=0x3a4410, pCompPrv=0x67ec58, nFilledLen=1316, nOffset=0, nFlags=00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1251 RPC_EmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 411a68 BufHdrRemote 85a211e8
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1323 RPC_EmptyThisBuffer()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Corresponding RPC function executed successfully
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:547 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :945] Calling OMX_FillThisBuffer with ptr: 5f200000 at tv.tv_sec: 1345530431 tv.tv_usec: 894893
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:581 PROXY_FillThisBuffer()
D/DOMX ( 4575): ENTER: hComponent = 0x3a4410, pCompPrv = 0x67ec58, nFilledLen = 0, nOffset = 0, nFlags = 00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 2
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1357 RPC_FillThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 514840 BufHdrRemote 85a21d30
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1402 RPC_FillThisBuffer()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Corresponding RPC function executed successfully
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:602 PROXY_FillThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c:708 PROXY_VIDDEC_FillThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_skel.c:212 RPC_SKEL_EventHandler()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE:
D/DOMX ( 4575): **__**Got eventhandler from Remote Core succesffuly - values are : **__**
D/DOMX ( 4575): TRACE: hComp :0x3a4410,eEvent: 0x3,nData1: 0x1,nData2: 0x0,pEventData: 0x0
D/DOMX ( 4575): TRACE: Just Before Entering Proxy Event handler call
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c:554 PROXY_VIDDEC_EventHandler()
D/DOMX ( 4575): ENTER: hComponent=0x3a4410, pCompPrv=0x67ec58, eEvent=0x3, nData1=0x1, nData2=0x0, pEventData=0x0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:233 PROXY_EventHandler()
D/DOMX ( 4575): ENTER: hComponent=0x3a4410, pCompPrv=0x67ec58, eEvent=0x3, nData1=0x1, nData2=0x0, pEventData=0x0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :498] Entered OmxDecEvtHandler () with Comp_Handle: 3a4410 event: 3 nData1: 1 nData2: 0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :533] OmxDecEvtHandler () Rcvd OMX_EventPortSettingsChanged pAppData: 5c65750c nData1: 1 nData2: 0 pEventData: 0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :463] SIGNAL_COMMAND_COMPLETION() value of condition: -4 i32CurrVal: 1
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:293 PROXY_EventHandler()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_skel.c:236 RPC_SKEL_EventHandler()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
I/VideoPhone( 4575):
===== submitting 2nd frame ========
I/VideoPhone( 4575): [1345530431-DEBG :934] Calling DECODER with ptr: 5f100000 length: 7352 at tv.tv_sec: 1345530431 tv.tv_usec: 907344
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:121 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:202 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:471 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): ENTER: hComponent=0x3a4410, pCompPrv=0x67ec58, nFilledLen=7352, nOffset=0, nFlags=00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 1
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1251 RPC_EmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 411ac0 BufHdrRemote 85a21238
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1323 RPC_EmptyThisBuffer()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Corresponding RPC function executed successfully
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:547 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :945] Calling OMX_FillThisBuffer with ptr: 5f380000 at tv.tv_sec: 1345530431 tv.tv_usec: 907344
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:581 PROXY_FillThisBuffer()
D/DOMX ( 4575): ENTER: hComponent = 0x3a4410, pCompPrv = 0x67ec58, nFilledLen = 0, nOffset = 0, nFlags = 00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 3
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1357 RPC_FillThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 498348 BufHdrRemote 85a21d80
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1402 RPC_FillThisBuffer()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Corresponding RPC function executed successfully
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:602 PROXY_FillThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c:708 PROXY_VIDDEC_FillThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
I/VideoPhone( 4575):
===== submitting 3rd frame ========
I/VideoPhone( 4575): [1345530431-DEBG :934] Calling DECODER with ptr: 5f000000 length: 955 at tv.tv_sec: 1345530431 tv.tv_usec: 928828
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:121 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:202 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:471 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): ENTER: hComponent=0x3a4410, pCompPrv=0x67ec58, nFilledLen=955, nOffset=0, nFlags=00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1251 RPC_EmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 411a68 BufHdrRemote 85a211e8
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1323 RPC_EmptyThisBuffer()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Corresponding RPC function executed successfully
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:547 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :945] Calling OMX_FillThisBuffer with ptr: 5f500000 at tv.tv_sec: 1345530431 tv.tv_usec: 928828
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:581 PROXY_FillThisBuffer()
D/DOMX ( 4575): ENTER: hComponent = 0x3a4410, pCompPrv = 0x67ec58, nFilledLen = 0, nOffset = 0, nFlags = 00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 4
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1357 RPC_FillThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 4ce4b8 BufHdrRemote 85a21dd0
D/DOMX ( 4575): TRACE: Recd. omx message
D/DOMX ( 4575): TRACE: Waiting for messages from remote core
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1402 RPC_FillThisBuffer()
D/DOMX ( 4575): EXIT:
D/DOMX ( 4575): TRACE: Corresponding RPC function executed successfully
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:602 PROXY_FillThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c:708 PROXY_VIDDEC_FillThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
I/VideoPhone( 4575):
I/VideoPhone( 4575): [1345530431-DEBG :934] Calling DECODER with ptr: 5f100000 length: 1979 at tv.tv_sec: 1345530431 tv.tv_usec: 950343
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:121 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): hardware/ti/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec_utils.c:202 PrearrageEmptyThisBuffer()
D/DOMX ( 4575): EXIT: eError: 0
D/DOMX ( 4575): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:471 PROXY_EmptyThisBuffer()
D/DOMX ( 4575): ENTER: hComponent=0x3a4410, pCompPrv=0x67ec58, nFilledLen=1979, nOffset=0, nFlags=00000000
D/DOMX ( 4575): TRACE: Buffer Index of Match 1
D/DOMX ( 4575): hardware/ti/domx/domx/omx_rpc/src/omx_rpc_stub.c:1251 RPC_EmptyThisBuffer()
D/DOMX ( 4575): ENTER:
D/DOMX ( 4575): TRACE: pBufferHdr = 411ac0 BufHdrRemote 85a21238