Hi,
I'm trying to build a player using the omx components and Gstreamer. From the stability standpoint I found that keeping the handle for the component allows me to survive endurance testing for days, just by reconfiguring the ports acording to the desired resolution and options. After a lot of testing I found that when decoding h264 interlaced video if a odd number of nal units are processed by the decoder I get a Omx_ErrorUndefined.
I modified the omx application decode-display in order to reproduce the issue, here is the code, the application and the test file:
/cfs-file/__key/communityserver-discussions-components-files/791/2110.data.zip
The data flow goes like this:
- > omx_display
file->omx_h264dec->omx_dei->|
-> discarded
Testing the aplication, the following works (I kept the deiscaler to check the output, but is not actually deinterlacing the output is configured at 1080p ):
/decode_display_a8host_debug.xv5T -o /tmp/file.h264 -i /test-000.h264 -m 1080p -c h264 -f 30 -b 10000000 -n 60 -d 0 -r 1
That is actually able to survive for days. The following fails:
/decode_display_a8host_debug.xv5T -o /tmp/file.h264 -i /test-000.h264 -m 1080p -c h264 -f 30 -b 10000000 -n 61 -d 0 -r 1
After the first iterationg I get a Omx_ErrorUndefined, the interlaced file test-000.h264 is included in the zip file. Here is the log from my aplication when it fails:
Decoder processing frame: 8
Processing buffer number 8
Sending buffers to the decoder
In Parser number of bytes i :0 bytes: 184
In Parser number of bytes i :65 bytes: 184
In Parser returning Success i: 120
Sending framesize to component: 19808
Decoder processing frame: 9
Processing buffer number 9
got event*** unrecoverable error: OMX_ErrorUndefined (0x80001001)
Press a key to proceed
Sending buffers to the decoder
In Parser number of bytes i :0 bytes: 184
In Parser number of bytes i :65 bytes: 184
In Parser returning Success i: 90
Sending framesize to component: 26218
Decoder processing frame: 10
Processing buffer number 10
Sending buffer downstream
Sending buffers to the decoder
This causes that a buffer is never returned via empty_callback (lost forever?) and makes the application unable to restart again without destroying the handle of the decoder. I'm testing on the Dm8168 EVM with ezsdk 5_05_02_00. Any suggestions will be greatly appreciated.