From 9fa47cb77371fe93ba7081d33e49e53765c17aa7 Mon Sep 17 00:00:00 2001 From: elupus Date: Wed, 27 Aug 2008 20:44:16 +0200 Subject: [PATCH] make mpegts_get_pcr resync if it's not on a valid mpegts packet --- libavformat/mpegts.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 9a4e129a36..b9efe8234a 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1724,6 +1724,12 @@ static int64_t mpegts_get_pcr(AVFormatContext *s, int stream_index, return AV_NOPTS_VALUE; if (avio_read(s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE) return AV_NOPTS_VALUE; + if (buf[0] != 0x47) { + if (mpegts_resync(s->pb) < 0) + return AV_NOPTS_VALUE; + pos = url_ftell(s->pb); + continue; + } if ((pcr_pid < 0 || (AV_RB16(buf + 1) & 0x1fff) == pcr_pid) && parse_pcr(×tamp, &pcr_l, buf) == 0) { *ppos = pos;