[FFmpeg-trac] #6531(avformat:new): MPEG-TS encoder may stop emitting SDT/PAT/PMT after DTS jump or rollover

FFmpeg trac at avcodec.org
Mon Jul 17 23:39:16 EEST 2017


#6531: MPEG-TS encoder may stop emitting SDT/PAT/PMT after DTS jump or rollover
----------------------------------+--------------------------------------
             Reporter:  mavrik    |                     Type:  defect
               Status:  new       |                 Priority:  normal
            Component:  avformat  |                  Version:  git-master
             Keywords:            |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+--------------------------------------
 When transcoding broadcast MPEG-TS streams, there may be jumps or a
 rollover in PTS/DTS values in stream. That's perfectly valid, however
 ffmpeg's MPEG-TS muxer may stop emitting SDT/PAT/PMT tables.

 The issue was tracked down to `retransmit_si_info` method where two
 following comparisons are made:



 {{{
 ...
         (dts != AV_NOPTS_VALUE && dts - ts->last_sdt_ts >=
 ts->sdt_period*90000.0)
 ...
         if (dts != AV_NOPTS_VALUE)
             ts->last_sdt_ts = FFMAX(dts, ts->last_sdt_ts);

 ...

         (dts != AV_NOPTS_VALUE && dts - ts->last_pat_ts >=
 ts->pat_period*90000.0) ||
 ...
         if (dts != AV_NOPTS_VALUE)
             ts->last_pat_ts = FFMAX(dts, ts->last_pat_ts);
 }}}




 All those comparisons fail to take into account the possibility of DTS
 regressing which means a negative DTS jump will cause the muxer to stop
 emitting SDT tables alltogether in all streams and PAT/PMT tables
 alltogether in audio-only streams.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6531>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list