diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-27 15:13:50 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-27 15:38:40 +0200 |
commit | 42aa02418e43802b4ebcca373d2413ab63a0307e (patch) | |
tree | c6379a1f8b860a8c567e28d4a17d5d136fac7dfe | |
parent | d06ea6e5ce51165c7c81677ab6827612173bf4f7 (diff) | |
download | ffmpeg-42aa02418e43802b4ebcca373d2413ab63a0307e.tar.gz |
avformat/mpegts: Use DVB_TELETEXT timestamp heuristic also for DVB subtitles
Fixes Ticket4200
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavformat/mpegts.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 689b31da5c..b758ae36d1 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1140,7 +1140,10 @@ skip: p += 5; buf_size -= 5; } - if (pes->ts->fix_teletext_pts && pes->st->codec->codec_id == AV_CODEC_ID_DVB_TELETEXT) { + if ( pes->ts->fix_teletext_pts + && ( pes->st->codec->codec_id == AV_CODEC_ID_DVB_TELETEXT + || pes->st->codec->codec_id == AV_CODEC_ID_DVB_SUBTITLE) + ) { AVProgram *p = NULL; while ((p = av_find_program_from_stream(pes->stream, p, pes->st->index))) { if (p->pcr_pid != -1 && p->discard != AVDISCARD_ALL) { @@ -1169,7 +1172,11 @@ skip: pes->st->pts_wrap_behavior = st->pts_wrap_behavior; if (pes->dts == AV_NOPTS_VALUE || pes->dts < pcr) { pes->pts = pes->dts = pcr; - } else if (pes->dts > pcr + 3654 + 9000) { + } else if (pes->st->codec->codec_id == AV_CODEC_ID_DVB_TELETEXT && + pes->dts > pcr + 3654 + 9000) { + pes->pts = pes->dts = pcr + 3654 + 9000; + } else if (pes->st->codec->codec_id == AV_CODEC_ID_DVB_SUBTITLE && + pes->dts > pcr + 10*90000) { //10sec pes->pts = pes->dts = pcr + 3654 + 9000; } break; |