[FFmpeg-devel] [PATCH] dvbsub fix transcoding
Wim Vander Schelden
lists at fixnum.org
Thu May 22 14:59:09 CEST 2014
The entire DVB subtitle encoder is conceptually wrong and broken in ffmpeg,
so fixing this little issue will achieve very little anyway.
The protocol of a DVB subtitle stream is describe in very high level terms
at http://trac.ffmpeg.org/ticket/2024#comment:8 - the way ffmpeg currently
encodes them is as follows:
For every AVSubtitle:
- Emit a packet containing the subtitle data at PTS
- Emit a packet containing no data at PTS + duration of subtitle
- Move on to the next subtitle
This fails the strict ordering of PTS timestamps when a subtitle disappears
after a new one disappears, as the encoder will have written out the
"clear" packet already when handling the disappearing subtitle.
However, as described in comment #8, these "clears" are not strictly
necessary when a new subtitle already occurs in the same region as the
older one. If not, an empty region should be sent with a PTS at which the
region should be cleared.
The current implementation also adds the ultimately unnecessary nb-loop to
the do_subtitle_out. The proper solution is to fix the DVB subtitle
encoder, and remove the loop from ffmpeg.c.
I have no idea how dvbsubenc defines regions, I'd have to take a deeper
look at the encoder to find out.
Hope this makes sense,
On Thu, May 22, 2014 at 2:12 PM, Carl Eugen Hoyos <cehoyos at ag.or.at> wrote:
> anshul <anshul.ffmpeg <at> gmail.com> writes:
> > > I tested your patch with the first sample from
> > > ticket #2024 (Starship_Troopers.vob) and as far
> > > as I can tell, it breaks the output. Does it work
> > > for you?
> > Yes,its work for me for 1st Video also
> Please run:
> $ ffplay Starship_Troopers.vob
> $ ffplay test.ts
> and compare carefully.
> Carl Eugen
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
More information about the ffmpeg-devel