[FFmpeg-devel] [WIP] DVD reader protocol

Stefano Sabatini stefasab at gmail.com
Sat Jan 28 10:46:54 CET 2012


On date Monday 2012-01-23 12:20:49 +0100, Erik Van Grunderbeeck encoded:
> I see the follow -up on patches still takes time, I see I submitted this one
> 3 years ago :)
> 
> There's a number of other changes that need to happen on this patch. I
> haven't worked on it for quite some time, but could if there's interest (and
> I find the time)
> 
> I did a quick read on the list archive on responses. In general:
> 
> 1) Yes, pts/dts can change and jump anywhere in a vob. It doesn't need to
> start from 0 neither, and interleaved angle changes (and alternative scenes)
> mean that you have to use the IFO file to read a DVD. Libdvd handles that.
> 
> 2) The code in ffplay/ffmpeg needs to handle new streams being found (and
> possibly decoded). Example: subtitles in DVD often start several
> seconds/minutes into the movie, and if not found by the dedect routines will
> now never decode. Same with audio.
> 
> 3) In general, find_stream_info needs to be turned to a 0 buffer. Otherwise
> resyncing with libdvd becomes a major headache.
> 
> 4) Stream resets need to be handled. Vob files often concatenate several
> audio formats (aac 2 channel jumping to aac 5 channel  for example), usually
> in the preview section of a DVD (the "preview" features on most DVD's). Some
> with video (going from ntsc <-> pal and back)
> 
> 5) a/v sync needs to be more robust. Usually because audio can be delayed
> several packets in a vob file.
> 
> 6) Things need to be signaled back to the dvd : wait and delay modes, menu
> selections, etc. libdvd handles this, but the app needs to tell it with to
> do.
> 
> 7) Streams need to be able to be cleared (or deleted/reset) when a new
> vob/movie part is encountered.
> 
> If someone wants to work on part of this, I can do some (or advise on how)
> of it, but I don't have loads of times anymore these days. 

Before to jump at finetuning I want to get simple playback (even if
clunky) working. Your patchset was old and incomplete and I had to
figure out how to put all the pieces togheter, so something is not yet
working properly.

Now my main problem is that I don't know how I am supposed to deal
with a sector/VOBU end, dvd_read() keeps reading from
dvdnav_get_next_block(), at some point I get "Truncating packet"
ffio_limit() errors when I reach the end of the AVIOContext buffer
(which is the size of the VOBU).

I suppose I need a mechanism for automatically skipping to the next
chapter/VOBU when a certain VOBU end is reached (how to test it?), but
I'm not sure about which is the best method for doing that.
-- 
FFmpeg = Fancy and Foolish Mystic Pure Enhancing Gladiator
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-lavf-add-SEEK-flags-required-by-the-DVD-protocol.patch
Type: text/x-diff
Size: 965 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120128/3537c67d/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-lavf-add-DVD-reader-protocol.patch
Type: text/x-diff
Size: 28485 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120128/3537c67d/attachment-0001.bin>


More information about the ffmpeg-devel mailing list