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.

dm8168多路解码的问题



我用dm8168开发板,想进行多路解码测试及应用。

现在采用的例子,为sdk中的例子,ti-ezsdk_dm816x-evm_5_05_02_00\component-sources\omx_05_02_00_48\examples\ti\omx\demos\decode,进行多线程改造而成。也就是每个线程运行一个这个例子,采用264解码,n个线程并行运行,264源从文件读取。

测试的结果,不知道什么原因,1080p的解码最多只能3路,4路都不行。720p只能4路,d1分辨率只能6路。这个和文档中差距较大,按文档说明,8168有3个hd加速,每个可以解码1080p60fps,可以多通道。按理是可以解码6路1080p30fps的。

解码4路1080p出现的现象为,执行到eError = OMX_SendCommand (pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);可以执行。OMX_AllocateBuffer为端口分配内存也可以执行。然后就到 eError = Decode_WaitForState (pHandle, OMX_StateIdle)。

就在eError = Decode_WaitForState (pHandle, OMX_StateIdle)的时候,三个线程都过了,打出state IDLE。第四个线程就不行了,就在这里卡住了,一直在等待。可能是在等待什么资源,然后就无反应了。有时候头三个线程还解码了几帧,但是一执行到第四个线程的 Decode_WaitForState,就没反应了。

请问这是什么问题。为端口分配内存OMX_AllocateBuffer已经通过了。我用d1分辨率做解码实验,就可以解6路,7路的时候,也是类似问题,第七个线程就不能等到state idle了。

root@dm816x-evm:/usr/share/ti/ti-omx# ./linsm_test_a8host_debug.xv5T -w 1920 -h 1080 -i test.264 -o test.yuv -c h264
input file: test.264
width: 1920
height: 1080
output_file: test.yuv
codec: h264
Decoder example
===============================
UIAClient is ready to send a UIA configuration command
UIAClient received UIA_CONFIGURE_ACK
UIAClient is done sending requests
Iteration 0 - Start
Iteration 0 - Start
Iteration 0 - Start
Iteration 0 - Start
allocating field buffer
calling getHandle
allocating field buffer
calling getHandle
allocating field buffer
calling getHandle
allocating field buffer
calling getHandle
Output port buffer size: 3637248
Depreciated API: TRACE:
Came back from send command without error

Output port buffer size: 3637248
Output port buffer size: 3637248
Output port buffer size: 3637248
Depreciated API: TRACE:
Came back from send command without error

Depreciated API: TRACE:
Came back from send command without error

Depreciated API: TRACE:
Came back from send command without error

wait state !
state IDLE
wait state !
state IDLE
wait state !
state IDLE
就卡住了,只有三路返回了 stete IDLE,第四路只返回了Came back from send command without error,但是没有state IDLE返回。