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.

Hang when call GetParamer with OMX_IndexParamPortDefinition in Galaxy Nexus with 4.2.1

Hello All

We have been developing a media player basing on OMX components completely. When we try to use Hardware decoder on Galaxy nexus with 4.2.1 version, we meet a problem that after calling GetParameter  with OMX_IndexParamPortDefinition, it hangs in it.  Here are the whole figure. The player engine make the hardware decoder enter into loaded, idle , executing. Then the hardware decoder post a OMX_EventPortSettingsChanged event. Our player engine send disable command to the it. After the hardware decoder tell the engine that the disable has been complete. When our engine call GetParameter with OMX_IndexParamPortDefinition. It loop into the hang in it. Here are the related logs using adb logcat. 

2-29 14:20:31.560 D/DOMX    ( 1727): TRACE: hComp :0x41170670,eEvent: 0x0,nData1: 0x2,nData2: 0x1,pEventData: 0x0 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_skel.c:230    RPC_SKEL_EventHandler() 
12-29 14:20:31.560 D/DOMX    ( 1727): TRACE: Just Before Entering Proxy Event handler call 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c:567    PROXY_VIDDEC_EventHandler() 
12-29 14:20:31.560 D/DOMX    ( 1727): ENTER: hComponent=0x41170670, pCompPrv=0x418baa50, eEvent=0x0, nData1=0x2, nData2=0x1, pEventData=0x0 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_proxy_common/src/omx_proxy_common.c:254    PROXY_EventHandler() 
12-29 14:20:31.560 D/DOMX    ( 1727): ENTER: hComponent=0x41170670, pCompPrv=0x418baa50, eEvent=0x0, nData1=0x2, nData2=0x1, pEventData=0x0 
12-29 14:20:31.560 E/voCOMXBaseBox( 1727): @@@VOLOG Info THD 411D6F80:    voCOMXBaseBox.cpp  EventHandler  834    Component OMX.TI.DUCATI1.VIDEO.DECODER OMX_EventCmdComplete OMX_CommandPortDisable port is 1 
12-29 14:20:31.560 E/voCOMXBaseHole( 1727): @@@VOLOG Error THD 411D6F80:   voCOMXBaseHole.cpp  FillPortType  1314    m_pParent->GetComponentName () = OMX.TI.DUCATI1.VIDEO.DECODER 
12-29 14:20:31.560 E/voCOMXBaseHole( 1727): 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c:347    PROXY_VIDDEC_GetParameter() 
12-29 14:20:31.560 D/DOMX    ( 1727): ENTER: WHY_WHY  hardware/ti/omap4xxx/domx/omx_proxy_component/omx_video_dec/src/omx_proxy_videodec.c::PROXY_VIDDEC_GetParameter::347 hComponent = 0x41170670, pCompPrv = 0x418baa50, nParamIndex = 2000001, pParamStruct = 0x41b1a6b0 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c:390    RPC_GetParameter() 
12-29 14:20:31.560 D/DOMX    ( 1727): ENTER: 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c:416    RPC_GetParameter() 
12-29 14:20:31.560 D/DOMX    ( 1727): INFO: hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c::RPC_GetParameter::416 
12-29 14:20:31.560 D/DOMX    ( 1727): 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c:418    RPC_GetParameter() 
12-29 14:20:31.560 D/DOMX    ( 1727): INFO: hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c::RPC_GetParameter::418 hCtx->fd_omx = 12 
12-29 14:20:31.560 D/DOMX    ( 1727): <6>[  154.024871] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c:418    RPC_GetParameter() 
12-29 14:20:31.560 D/DOMX    ( 1727): INFO: hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c::RPC_GetParameter::418 
12-29 14:20:31.560 D/DOMX    ( 1727): 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c:418    RPC_GetParameter() 
12-29 14:20:31.560 D/DOMX    ( 1727): INFO: hardware/ti/omap4xxx/domx/domx/omx_rpc/src/omx_rpc_stub.c::RPC_GetParameter::418 
12-29 14:20:31.560 D/DOMX    ( 1727): 
12-29 14:20:31.560 D/DOMX    ( 1727): hardware/ti/omap4xxx/domx/mm_osal/src/timm_osal_pipes.c:332    TIMM_OSAL_ReadFromPipe() 
12-29 14:20:31.560 D/DOMX    ( 1727): INFO: hardware/ti/omap4xxx/domx/mm_osal/src/timm_osal_pipes.c::TIMM_OSAL_ReadFromPipe::332 pHandle->pfd[0]= 23 
12-29 14:20:31.560 D/DOMX    ( 1727): 
12-29 14:20:41.982 I/InputReader(  386): Reconfiguring input devices.  changes=0x00000004 
12-29 14:20:41.982 I/InputReader(  386): Device reconfigured: id=6, name='Melfas MMSxxx Touchscreen', size 720x1280, orientation 3, mode 1, display id 0 
12-29 14:20:41.982 I/ActivityManager(  386): Config changed: {1.0 999mcc?mnc zh_CN ldltr sw360dp w598dp h335dp 320dpi nrml land finger -keyb/v/h -nav/h s.7} 
12-29 14:20:43.599 D/dalvikvm(  571): GC_CONCURRENT freed 353K, 4% free 9293K/9672K, paused 6ms+4ms, total 45ms 



in order to find out why. I try to  add logs on the driver rpmsg-omx. Here are the related logs from kernel when using the hardware decoder: 

<6>[  154.024871] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.025573] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.025695] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.025939] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.026062] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.026153] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.026397] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.026519] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.026824] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.026885] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.027008] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.029754] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.030517] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.031066] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.031188] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.031280] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.031829] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.032104] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.032318] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.032562] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.032806] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.033325] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.033416] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.033691] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.033966] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.034027] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.034301] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.034637] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.035003] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.035125] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.035400] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.035888] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.036193] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  154.036468] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.036712] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.036804] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418aefb8 
<6>[  154.037017] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::506 
<6>[  154.037078] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::519 
<6>[  154.038635] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_read::563 buf = 418af3a8 
<6>[  154.038940] rpmsg_omx rpmsg-omx1: drivers/rpmsg/rpmsg_omx.c::rpmsg_omx_write::584 
<6>[  154.039245] rpmsg_omx rpmsg6: TX From 0x401, To 0x65, Len 252, Flags 0, Unused 0 
<6>[  155.612091] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  205.627899] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  255.648071] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  305.674438] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  355.693023] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  405.748107] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  455.822967] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<6>[  505.854309] max17040 4-0036: online = 1 vcell = 4207500 soc = 100 status = 1 health = 1 temp = 300 charger status = 1 
<3>[  534.250854] CFG80211-ERROR) wl_notify_connect_status : link down, calling cfg80211_disconnected with deauth_reason:0 
<6>[  534.260772] cfg80211: Calling CRDA for country: CN 
<4>[  535.350006] wl_bss_connect_done succeeded with 34:a8:4e:1c:56:e0 
<4>[  535.385894] wl_bss_connect_done succeeded with 34:a8:4e:1c:56:e0 
<6>[  535.390258] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready 

Basing on it. It hinds the requirement has been wrote to remote processor Coretex-M3 core. I use the adb shell cat /sys/kernel/debug/remoteproc/omap-rproc.1/trace1 
to find out what kind message from remote processor. Here the related dumps: 

0.000] DEH: Watchdog started 
[      0.000] [ERR=5] src/mmsw_platform.c:[152]:Ducati Image  xxxxxxxxxxxx (Compile Time: Jul 11 2012 09:29:19)xxxxxxxxxxxx 
[      0.004] serviceMgr: started on port: 60 
[      0.004] registering rpmsg-omx service on 60 with HOST 
[      0.004] [t=0x001b161b] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 
[      4.232] serviceMgr: received msg type: 0 from addr: 1025 
[      4.232] serviceMgr: CONN_REQ: len: 4, name: OMX 
[      4.233] createService: new OMX Service at endpoint: 101 
[      4.233] serviceMgr: Replying with msg type: 1 to addr: 1025  from: 60 
[      4.250] [ERR=22] src/new_sensor_DRV.c:[1164]:Read Sensor ID:4e50 
[      4.250] [ERR=23] src/new_sensor_MSP.c:[1214]:Sen Read ID: 20048, expected ID:20048 
[      4.250] 
[      4.256] [ERR=24] src/sensor_detect_MSP.c:[265]:0>>:S5K4E1GA Socket:0 
[      4.256] [ERR=25] src/sensor_detect_MSP.c:[265]:1>>:RT8515 Socket:0 
[      4.256] [ERR=26] src/sensor_detect_MSP.c:[265]:2>>:VM149C Socket:0 
[      4.256] [ERR=27] src/sensor_detect_MSP.c:[265]:3>>:CSI2A Socket:0 
[      4.268] [ERR=28] src/new_sensor_DRV.c:[1164]:Read Sensor ID:6a10 
[      4.269] [ERR=29] src/new_sensor_MSP.c:[1214]:Sen Read ID: 27152, expected ID:27152 
[      4.269] 
[      4.277] [ERR=30] src/sensor_detect_MSP.c:[265]:0>>:S5K6A1GX03 Socket:1 
[      4.277] [ERR=31] src/sensor_detect_MSP.c:[265]:1>>:CSI2B Socket:1 
[      4.277] [ERR=32] src/sensor_detect_MSP.c:[268]:On Socket:2 Sensor no detected 
[      4.277] [ERR=33] src/msp_mem_mngr.c:[347]:Mem_mngr Successfully created. MEM_MNGR address: 8061d558 
[      4.278] [ERR=34] src/config/omx_conv/configs/conv_omx_configs_fxns.c:[2097]:OMX_SetConfig(AlgoAreas) bad parameter: shared buffer is NULL pointer. Nothing to set. 
[      4.284] [ERR=35] src/config/omx_config/params/omx_params_custom.c:[224]: 
[      4.284] Error in src/config/omx_config/params/omx_params_custom.c, line:224 
[      4.284] 
[      4.284] [ERR=36] src/config/omx_sup/cam_super_cfg_plugin.c:[103]: 
[      4.284] Error in src/config/omx_sup/cam_super_cfg_plugin.c, line:103 
[      4.284] 
[      4.284] [ERR=37] src/conf_mng.c:[158]: 
[      4.284] Error in src/conf_mng.c, line:158 
[      4.285] 
[      4.285] [ERR=38] omx_rpc/src/omx_rpc_skel.c:[412]:Component returned error: 0x8000100e 
[      4.292] [ERR=39] src/msp_dcc_server.c:[319]:DCC server: DCCSERVER_CREATE for camera_id = 305 
[      4.292] [ERR=40] src/msp_dcc_server.c:[558]: 
[      4.292] Error in src/msp_dcc_server.c, line:558 
[      4.292] 
[      4.293] [ERR=41] src/msp_dcc_server.c:[493]:No DCC file for Alg ID 200 
[      4.293] [ERR=42] src/msp_dcc_server.c:[522]: 
[      4.293] Error in src/msp_dcc_server.c, line:522 
[      4.293] 
[      4.293] [ERR=43] src/msp_dcc_server.c:[346]:DCC server first reading of DCC_ID_MANIFACTURE_VERSION failed, DCC Alg ID 200 
[      4.293] [ERR=44] src/msp_dcc_server.c:[417]:DCC server: DCC_ID_MANIFACTURE_VERSION: will use DCCs from: BINs (from the file system) 
[      4.294] [ERR=45] src/msp_dcc_server.c:[493]:No DCC file for Alg ID 41 
[      4.294] [ERR=46] src/msp_dcc_server.c:[522]: 
[      4.294] Error in src/msp_dcc_server.c, line:522 
[      4.294] 
[      4.300] [ERR=47] src/msp_dcc_server.c:[319]:DCC server: DCCSERVER_CREATE for camera_id = 306 
[      4.300] [ERR=48] src/msp_dcc_server.c:[558]: 
[      4.300] Error in src/msp_dcc_server.c, line:558 
[      4.300] 
[      4.300] [ERR=49] src/msp_dcc_server.c:[493]:No DCC file for Alg ID 200 
[      4.301] [ERR=50] src/msp_dcc_server.c:[522]: 
[      4.301] Error in src/msp_dcc_server.c, line:522 
[      4.301] 
[      4.301] [ERR=51] src/msp_dcc_server.c:[346]:DCC server first reading of DCC_ID_MANIFACTURE_VERSION failed, DCC Alg ID 200 
[      4.301] [ERR=52] src/msp_dcc_server.c:[417]:DCC server: DCC_ID_MANIFACTURE_VERSION: will use DCCs from: BINs (from the file system) 
[      4.301] [ERR=53] src/msp_dcc_server.c:[493]:No DCC file for Alg ID 41 
[      4.302] [ERR=54] src/msp_dcc_server.c:[522]: 
[      4.302] Error in src/msp_dcc_server.c, line:522 
[      4.302] 
[      4.307] serviceMgr: received msg type: 4 from addr: 1025 
[      4.307] serviceMgr: OMX_DISCONNECT: len 4, addr: 101 
[      4.308] RcmServer_serverThrFxn_P: Exiting thread. 
[      4.308] deleteService: removed RcmServer at endpoint: 101 
[      9.306] serviceMgr: received msg type: 0 from addr: 1025 
[      9.306] serviceMgr: CONN_REQ: len: 4, name: OMX 
[      9.307] createService: new OMX Service at endpoint: 101 
[      9.307] serviceMgr: Replying with msg type: 1 to addr: 1025  from: 60 
[      9.737] [ERR=99] omx_videodec_common/src/omx_video_decoder_utils.c:[1228]:Dynamic port reconfiguration triggered 
[      9.753] [ERR=100] omx_rpc/src/omx_rpc_skel.c:[634]:Component returned error: 0x80001018 
[     15.872] serviceMgr: received msg type: 4 from addr: 1025 
[     15.872] serviceMgr: OMX_DISCONNECT: len 4, addr: 101 
[     15.872] [ERR=101] omx_rpc/src/omx_rpc_skel.c:[1140]:DOMX detected component:0x8060f2b0 to be cleaned up!! 
[     16.373] [ERR=102] omx_base_comp/src/omx_base_process.c:[463]:Failed check: OMX_ErrorNone == eError 
[     16.373] [ERR=103] omx_base_comp/src/omx_base_process.c:[463]:Returning error: eError 
[     16.373] [ERR=104] omx_base_comp/src/omx_base_process.c:[290]:Failed check: OMX_ErrorNone == eError 
[     16.374] [ERR=105] omx_base_comp/src/omx_base_process.c:[290]:Returning error: eError 
[     16.379] [ERR=131] omx_videodec_common/src/omx_video_decoder.c:[2914]:Memory leak detected. Bytes lost = 40 
[     16.379] [ERR=132] omx_videodec_common/src/omx_video_decoder.c:[2915]: Value from GetMemCounter = 110 
[     16.380] [ERR=133] omx_videodec_common/src/omx_video_decoder.c:[2916]: Value from GetMemUsage = 24996 
[     16.380] [ERR=134] omx_videodec_common/src/omx_video_decoder.c:[2919]:Total size = 10485744 
[     16.380] [ERR=135] omx_videodec_common/src/omx_video_decoder.c:[2920]:Total free size = 10416616 
[     16.380] [ERR=136] omx_videodec_common/src/omx_video_decoder.c:[2921]:Largest Free size = 10362304 
[     16.381] [ERR=137] omx_videodec_common/src/omx_video_decoder.c:[2922]: 
[     16.381] [ERR=138] omx_videodec_common/src/omx_video_decoder.c:[2923]:----------------------------------------------- 
[     16.381] [ERR=139] omx_videodec_common/src/omx_video_decoder.c:[2924]: 
[     16.382] [ERR=140] omx_rpc/src/omx_rpc_skel.c:[1142]:DOMX cleaned up component:0x8060f2b0 
[     16.382] RcmServer_serverThrFxn_P: Exiting thread. 
[     16.382] deleteService: removed RcmServer at endpoint: 101 
[     22.053] serviceMgr: received msg type: 0 from addr: 1025 
[     22.053] serviceMgr: CONN_REQ: len: 4, name: OMX 
[     22.054] createService: new OMX Service at endpoint: 101 
[     22.054] serviceMgr: Replying with msg type: 1 to addr: 1025  from: 60 
[     22.630] [ERR=165] omx_videodec_common/src/omx_video_decoder_utils.c:[1228]:Dynamic port reconfiguration triggered 

When the GetParameter loop into the hang in it. I can not find any usful information from /sys/kernel/debug/remoteproc/omap-rproc.1/trace1. 
Here are related information that build ducatin-m3.bin: 

rpmsg: 1.00.09.44 
core0: 1.00.09.44 
    xdctools_3_22_01_21 
    ipc_1_23_01_26 
    bios_6_32_01_38 
    TI_CGT_TMS470_4.9.0 
core1: TI-MM-DUCATI_RLS.02.00.00.00-897-g96c4dca 
    xdctools_3_22_01_21 
    codec_engine_3_21_00_13_eng 
    ipc_1_23_01_26 
    bios_6_32_01_38 
    TI_CGT_TMS470_4.9.0 
    xdais_7_21_00_01_eng 
    framework_components_3_21_00_17_eng 
    osal_1_21_00_05_eng 

We guess the fault should come from OMX component implement that running in ducati-mp3.bin.  But we can not find any source codes on related it.
Appreciating any commens on it . 

  • One thing to check is in your source code to be using either include location from hardware/ti/domx or hardware/ti/omap4xxx/domx, I think the normal one is the first one, they could have different index numbers.

    From the logs it is not that visible what the error is, from omx_rpc/src/omx_rpc_skel.c it indicates incorrect state call for buffer allocations,

    [      9.737] [ERR=99] omx_videodec_common/src/omx_video_decoder_utils.c:[1228]:Dynamic port reconfiguration triggered 
    [      9.753] [ERR=100] omx_rpc/src/omx_rpc_skel.c:[634]:Component returned error: 0x80001018 
    [     15.872] serviceMgr: received msg type: 4 from addr: 1025

    Some times it is needed to do more than one port reconfiguration events.

    One post about port reconfiguration is next one, check it because I made an error in the buffer contents in first post, then I corrected it later in the same post.

    http://e2e.ti.com/support/omap/f/849/t/210475.aspx

  • Another post with helpful information could be

    http://e2e.ti.com/support/omap/f/849/p/192468/692015.aspx

  • I have developed a mini hardware decoder test application and find out the key reason. When I want to share my experience and tell other developer the key reason. I find some developers have find out the key reason too. It is great.  In fact, TI's OpenMax component implement can not call other API during the EventHandler, such as PortSettingChanged and Disable, Enable and FillBufferDone and so on.  Otherwise the block issue will be happen.  I read OMX_IL spec again.  It is NOT a must to respond within five milliseconds. Maybe this the reason why other vendors can call other OMX_IL API during the EventHandler. 

  • Just to understand the issue and try to help.

    The function OMX_GetParameter is marked as a blocking call and it should return within 20 seconds, not 5 seconds, at least in OpenMax IL 1.0.

    Each component must have a component thread that takes care for returning the buffer done calls and Eventhandler calls when required, what you mention is that it is not possible to call other APIs within EventHandler, this is for port reconfiguration case to right, the code I worked before usually does wait for the first buffer to be processed it waits in a semaphore from Client IL thread ( application thread), if everything goes ok the first input buffer is returned in OMX_EmptyBufferDone semaphore is set and then execution continues (this only for the first buffer next buffers doesn't need to wait) second buffer is processed and all is ok.

    When EventHandler returns OMX_PortSettingsChangedEvent then after it first buffer is returned in OMX_EmptyBufferDone, in EventHadler exist a flag that is set like port reconfiguration happened and it removes the semaphore from Client IL thread, this happens from Component's thread. The Client IL thread execution continues and check this flag, if it is set then port reconfiguration takes from this thread and it is possible to call OMX APIs. After port reconfiguration it is needed to send the first buffer again and repeat the process if needed.

    Some calls can be made fron EventHandler like OMX_GetState.

    Try to read OpenMax IL 1.0 and then 1.1.1, there are some tables and information in 1.0 that are not in later documents.

    you can find a sample code for generic component in next folder

    /mydroid/hardware/ti/domx/test/sample_proxy