[Libav-user] Parse raw movie packet data into AVPacket

dream01 at email.it dream01 at email.it
Tue Nov 8 11:36:28 CET 2011

Matthew Einhorn <moiein2000 at ...> writes:

> Have you looked into using custom IO calls like here:
> http://cdry.wordpress.com/2009/09/09/using-custom-io-callbacks-with-ffmpeg/

Thank you very much! It's exactly what I need.
But it works only partially, I mean, I'm able to play the movie file directly
from the buffer but I am not able to seek.

I've implemented the seek function but it doesn't work as expected.
As I seek, the seek callback function is correctly called with 
SEEK_SET as whence but it behaves in a strange way.

I try to explain this clearly:

seek function is called with the required file position to seek to, 
then I seek into my buffer to reach the 
required position and return the new position after seek. 
Remember that my buffer is an exact 1:1 copy byte by byte of 
the entire file, so seeking to a certain position in a file is 
equal to seeking to that position in my buffer.

After seek callback function has returned, it gets called 
once again with SEEK_SET as whence and with a negative offset, 
therefore I am supposed to seek to a negative position in 
my file/buffer. 
This obviously makes seek function to return -1 and therefore
also av_seek_frame returns -1 and this is interpreted as end-of-file.

Where is the mistake?
I don't know if this is important or not, but my buffer is a copy of 
a m2ts file which contains:
video (h264), audio (DTS and AC3) and subtitles (PGS). 

More information about the Libav-user mailing list