[FFmpeg-devel] pts/dts generation and index for mpegts (vob)

Erik Van Grunderbeeck erik
Tue Apr 28 23:09:50 CEST 2009

> > Vobs aren't really meant to be read without parsing and understanding
> > the NAV
> > (pci/dsi) packtes within. It's quite common that the timestamps are
> > discontinuous in the vob files (and there could be multiple angles
> > interleaved).
> >
> Yes, but the seek code skips them right now just looking for specific
> packets id's based on either the stream selected, or the generic index
> (which is usually the first video stream). I tried seeking on the first
> audio stream btw; and lost audio there. Not sure why yet.
> Reading the nav packets would be faster though as it would allow
> skipping in
> the file since the stream offsets would be known (and in a "real"
> stream the
> parser could instruct the sender to really seek forward and restart
> sending
> from a specific offset, instead of sending all the packets over the
> wire).
> I think Michael's suggestion was build the index from start before the
> stream's are used (correct me if wrong Michael).
> One thing I haven't seen or tested the behavior on is a DVD/vob with
> multiple angles (since I don't have one here). Not sure if that works
> in
> ffmpeg/ffplay, or the whole stream just gets pushed seq.
Continuing my off/on options here I have been looking at libdvdnav to
extend/rebuild my dvd/vob/mpeg protocol handler to allow for parsing and
angle/chapter (and possibly menu) selection.

I feel it would be feasible if I add a data/script stream from the protocol
handler, which would be fed by packets containing all needed information
(example menu selection, etc) back to the main application loop. That could
then decide to ignore them, or parse and do something with them. It would
also be clean.

Question: I have not found a way to feed information back into the protocol
handlers. Has this ever been considered? I can imagine that would be useful
(ege in channel selection on a transport layer subscribing to a network
mask, in script selection for some containers, etc). In this case it could
be useful to add user input selection back into the state machine.


PS; found a DVD with angle information btw (Wall-e), and ffmpeg/ffplay just
play seq as expected (and thus wrong).
PS2: if this is going outside of the scope of this mailing list, please

More information about the ffmpeg-devel mailing list