[FFmpeg-trac] #2024(undetermined:new): Reencoding dvbsub fails

FFmpeg trac at avcodec.org
Wed Nov 6 16:45:17 CET 2013


#2024: Reencoding dvbsub fails
-------------------------------------+-------------------------------------
             Reporter:  cehoyos      |                    Owner:
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:
              Version:  git-master   |  undetermined
             Keywords:  dvbsub       |               Resolution:
  av_interleaved_write_frame         |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------

Comment (by wvdschel):

 I've worked out what the problem is (with the help of nevcariel, ubitux
 and others on #ffmpeg-devel):

     * DVB subtitles are encoded as a series of rectangular bitmaps, and
 they are individually "flushed" to be displayed using a display segment
 packet.
     * The way the DVB subtitles decoder (avcodec/dvbsubdec.c) currently
 works, is that it keeps track of all the other segments (which define
 regions, colour lookup tables, and contain the actual bitmaps) until a
 display segment is encountered, at which point it renders all these things
 to an AVSubtitle.
     * On the encoding side, DVB subtitles differ from other subtitle
 codecs because it is currently the only codec that needs to have two
 packets to do its work: one to render the subtitle and one to indicate
 that it can be removed from the screen. These have (obviously) different
 PTS'es.
     * It's possible that a later AVSubtitle appears before an earlier one
 dissappears from the screen. In fact, it's quite common for live
 subtitling, where each word is pushed & displayed as a separate region
 (have a look at http://samples.ffmpeg.org/MPEG-
 VOB/transport/dvbsub/dvbsubtest.ts for an example of this happening).
     * Because the current subtitle encoding happens to write out the
 display & clear packets for DVB in sequence, a later subtitle can trigger
 the above error in the muxer.

 So this is the problem. As for the solution: I don't have a clue on how to
 fix this cleanly. There's already quite a bit of DVB subtitles specific
 code in ffmpeg.c, and I'd rather remove from it than add to it, fixing the
 issue in the decoder.

 I'd love to get this fixed, so I'm hoping that someone has an idea how
 this could be solved.

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2024#comment:4>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list