[FFmpeg-devel] ASS in AVI

Aurelien Jacobs aurel
Tue Aug 11 21:08:03 CEST 2009

On Tue, Aug 11, 2009 at 08:37:53PM +0200, Michael Niedermayer wrote:
> On Tue, Aug 11, 2009 at 02:30:45PM +0200, Aurelien Jacobs wrote:
> > Hi,
> > 
> > This patchset add support for ASS subtitles in AVI demuxer.
> > The format is documented [1] and implemented in various tools since sevral
> > years.
> > 
> > First patch export functions of the ASS demuxer so that they can be used
> > from the AVI demuxer.
> > Second patch add seeking support in the ASS demuxer.
> > Third patch finally add support for demuxer ASS subtitles from AVI files
> > using functions from the ASS demuxer.
> uhm eh hmm wtf ...
> what exactly is this patch set doing and why?
> ok on can store a whole subtitle file in one chunk, this isnt really sane
> but hey the windoz kiddies arent sane.

Yes, this kind of non-interleaved storage is ugly... But I fear we will
have to deal with it :-(

> still i dont see why that would require this mess
> 1. avi demuxer returns 1 chunk

This chunk is generally at the very end of the file, so it have to
seek to this chunk and read it during read_header.

> 2. ass parser splits chunk


Here I added a step:

2.5. avi demuxer get the next packet from ass parser and output it
interleaved with other streams at correct time.

> 3. add decoder makes many AVSubtitles ot of it


> 4. render renders out of the hundreads of AVSubtitles which are needed
>    at the current frame

So the renderer needs to buffer all the AVSubtitles from all the subtitle
streams ?
And it needs to be able to select which stream to render (and
change it at runtime) ?
Or do we need one renderer per subtitle stream, with the possibility to
enable/disable each renderer at runtime ?
And renderer needs to handle seeking ?

All of this doesn't sound really natural.

And how would you handle stream copy from AVI to NUT for example ?

Basically, my code does more or less the same thing that the non-interleaved
avi code.


More information about the ffmpeg-devel mailing list