I finally managed to play these files. Two pieces of information were not being passed to MTK OMX library:
* Some codec specific data that was not being copied by libhybris downwards, although gstreamer was actually providing the data.
* The suggested size for the input buffers is not provided by libhybris/gstreamer, so defaults are taken. It looks like the fact that the video is interleaved implies that bigger than normal input buffers are needed. I made a quick workaround that made a file play, but to solve this properly implies modifications to gstreamer that I am currently analysing. Android takes the input buffer size from the AVI header. From http://msdn.microsoft.com/en-us/library/windows/desktop/dd318180(v=vs.85).aspx :
dwSuggestedBufferSize:
<<
Specifies the suggested buffer size for reading the file. Generally, this size should be large enough to contain the largest chunk in the file. If set to zero, or if it is too small, the playback software will have to reallocate memory during playback, which will reduce performance. For an interleaved file, the buffer size should be large enough to read an entire record, and not just a chunk.
>>
From Alfonso Sanchez-Beato (alfonsosanchez beato):
I finally managed to play these files. Two pieces of information were not being passed to MTK OMX library:
* Some codec specific data that was not being copied by libhybris downwards, although gstreamer was actually providing the data.
* The suggested size for the input buffers is not provided by libhybris/ gstreamer, so defaults are taken. It looks like the fact that the video is interleaved implies that bigger than normal input buffers are needed. I made a quick workaround that made a file play, but to solve this properly implies modifications to gstreamer that I am currently analysing. Android takes the input buffer size from the AVI header. From http:// msdn.microsoft. com/en- us/library/ windows/ desktop/ dd318180( v=vs.85) .aspx :
dwSuggestedBuff erSize:
<<
Specifies the suggested buffer size for reading the file. Generally, this size should be large enough to contain the largest chunk in the file. If set to zero, or if it is too small, the playback software will have to reallocate memory during playback, which will reduce performance. For an interleaved file, the buffer size should be large enough to read an entire record, and not just a chunk.
>>