Hi,
We are trying to enable seeking functionality on an application that uses the h264_decoder omx component. We are using ezsdk-5_05_02_00 on dm814x platform.
We have two h264 encoded videos, when applying seeking to the first video (moving from frame 500 to frame 3000 of the h264 video, for instance), the decoder is able to resume and process the video just fine. On the second video, after jumping a few frames further in the video, the image looks distorted (like it has lost its reference picture buffer or IDR frame) and is never able to recover.
The difference between those videos is that 2nd video has I-frames instead of IDR-frames, just the first frame of the video is IDR:
1st Video composition = IDR-frame | P-frame | ... | P-frame | IDR-frame | P-frame | ... | P-frame | IDR-frame
2nd Video composition = IDR-frame | P-frame | ... | P-frame | I-frame | P-frame | ... | P-frame | I-frame
We are testing this behavior by modifying the decode_display omx demo (dropping some buffers in the middle of the video stream to simulate the seeking functionality).
This is 4011.decode_display_bin.zip the decode_display binary and this is 2867.decode_display_code.zip decode_display source code with the modifications if you want to try to reproduce the behavior. Also, this link https://www.dropbox.com/s/ivqgpgswz7196mq/Video_1.zip?dl=0 is Video_1 with IDR-frames and this link www.dropbox.com/.../Video_2.zip is Video_2 with the I-frames.
According to my knowledge on h264 format; both IDR and I-frames are full frames, so the decoder should be able to recover on both cases, is the decoder able to refresh the reference picture buffer for both types of frames?
So in relation to the omx h264 decoder, if the video does not have any more IDR-frames besides the one at the beginning, is there any way to manually tell the decoder to refresh itself after decoding a few frames?.
Thanks!