[FFmpeg-cvslog] make mpegts_get_pcr resync if it's not on a valid mpegts packet

elupus git at videolan.org
Wed Sep 14 17:19:59 CEST 2011


ffmpeg | branch: master | elupus <elupus at ecce.se> | Wed Aug 27 20:44:16 2008 +0200| [9fa47cb77371fe93ba7081d33e49e53765c17aa7] | committer: Michael Niedermayer

make mpegts_get_pcr resync if it's not on a valid mpegts packet

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9fa47cb77371fe93ba7081d33e49e53765c17aa7
---

 libavformat/mpegts.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 9a4e129..b9efe82 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(&timestamp, &pcr_l, buf) == 0) {
             *ppos = pos;



More information about the ffmpeg-cvslog mailing list