aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-01-29 05:44:03 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-01-29 05:44:03 +0100
commit29986885ef7d87b009ed923fe721fbb6ccb9e398 (patch)
tree1491111ba6e9b64832dd19eb93ac75316b13b639
parentad61419bbffa37a9bc395f0a53ce7e1b40f68e4d (diff)
downloadffmpeg-29986885ef7d87b009ed923fe721fbb6ccb9e398.tar.gz
avformat/mpegts: Continue parsing PMTs until at least 2 streams are found or 100kb are reached
This (ugly) hack fixes Ticket3348 If someone has an idea on how to fix this nicer, that would be very welcome but the stream contains several PMTs with just one of the 2 streams at the start Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/mpegts.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index db697e40e1..53de4ac997 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1988,8 +1988,10 @@ static int handle_packet(MpegTSContext *ts, const uint8_t *packet)
break;
}
if (i == ts->nb_prg && ts->nb_prg > 0) {
- av_log(ts->stream, AV_LOG_DEBUG, "All programs have pmt, headers found\n");
- ts->stream->ctx_flags &= ~AVFMTCTX_NOHEADER;
+ if (ts->stream->nb_streams > 1 || pos > 100000) {
+ av_log(ts->stream, AV_LOG_DEBUG, "All programs have pmt, headers found\n");
+ ts->stream->ctx_flags &= ~AVFMTCTX_NOHEADER;
+ }
}
}