#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 _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://ffmpeg.org/mailman/listinfo/ffmpeg-trac