[Ffmpeg-devel] Subtitle patches
Ian Caulfield
imc25
Mon Aug 15 14:40:42 CEST 2005
On Sun, 14 Aug 2005, Michael Niedermayer wrote:
> Hi
>
> On Wed, Jul 27, 2005 at 06:33:22PM +0100, Ian Caulfield wrote:
>> Hi,
>>
>> I've attache a couple of subtitle decoder patches - subs.diff fixes a
>> couple of minor bugs in my DVB subtitle decoder, and also fixes a few
>> problems in the DVD decoder (the palette entries were being read
>> back-to-front, and the timing conversions were slighly off). I've also
>> added an extra field to the AVSubtitleRect structure to pass the DVD clut
>> mappings out, so that an application with access to the IFO files can
>> display the correct colours.
>
> thats not good at all, the way AVSubtitleRect is stored we cannot add
> anything to it without breaking binary compatibility, please change it to
> a linked list (or anything else if you have an idea), so we break
> compatibility just once instead of every time a field is added, also
> please increase the version number in avcodec.h if compatibility is broken
Will do. Given that the next change is going to have to break
compatibility, it's probably worth addressing as much as possible!
> forget arrays of structures which are vissible outside libav*, as already
> described above its very problematic if we add a field and the user
> application was compiled against a version of libav* prior to that
> maybe merging AVSubtitle & AVSubtitleRect would simplify things if we
> output multiple AVSubtitles anyway?
There is a slight semantic difference - an AVSubtitle represents a single
page of display - all the AVSubtitleRects within one page are displayed
together. For DVD subtitles, it's possible to generate multiple pages from
one packet. Perhaps if the decode call returns a list of AVSubtitles?
>> - Different formats use different coordinate systems - DVB subtitles are
>> based on a 720x576 frame regardless of video resolution, while DVD
>> subtitles are given (I think) in video coordinates (does anyone have a
>> sub-D1 DVD to test this on?). Also DVD subtitles for letterboxed display
>> are formatted to put the text into the black bars - they're meant to be
>> scaled separately to the video. Currently there's no way to support this
>> in the AVSubtitle struct. What would be the best way to represent this?
>
> well either convert to the video width/height or set the width/height
> of the used coordinate system in AVCodecContext, i think the later is
> better in the long run as there might be multiple video streams with
> different resolution but the same subtitles
Agreed that the latter is the better solution. Just wondering how best to
implement this.
DVD subtitles are scaled to video coordinates (although may be stretched
to 4:3 with widescreen video). The subtitle stream doesn't specify the
video size.
DVB subtitles are scaled to 720x576 (possible widescreen issues there
too).
If we added fields to AVCodecContext to indicate the frame size then an
application such as ffmpeg doing transcoding would have to rescale
AVSubtitles itself - might be better to add them to the AVSubtitle
structure (or perhaps both?), then an encoder could rescale as it needed
without the encoding application needing to know the output resolution.
Ian
More information about the ffmpeg-devel
mailing list