[FFmpeg-cvslog] avformat/mpegts: Fix probing of mpegts with invalid ASC

Michael Niedermayer git at videolan.org
Tue Jun 7 15:58:37 CEST 2016


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Tue Jun  7 15:46:08 2016 +0200| [e01b19deceaafa2b7a9d59717484d8831b00cd71] | committer: Michael Niedermayer

avformat/mpegts: Fix probing of mpegts with invalid ASC

Fixes Ticket5566

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libavformat/mpegts.c |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index d38b8af..7d78c41 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -542,13 +542,16 @@ static int analyze(const uint8_t *buf, int size, int packet_size,
     memset(stat, 0, packet_size * sizeof(*stat));
 
     for (i = 0; i < size - 3; i++) {
-        if (buf[i] == 0x47 &&
-            (!probe || (buf[i + 3] & 0x30))) {
-            int x = i % packet_size;
-            stat[x]++;
-            stat_all++;
-            if (stat[x] > best_score) {
-                best_score = stat[x];
+        if (buf[i] == 0x47) {
+            int pid = AV_RB16(buf+1) & 0x1FFF;
+            int asc = buf[i + 3] & 0x30;
+            if (!probe || pid == 0x1FFF || asc) {
+                int x = i % packet_size;
+                stat[x]++;
+                stat_all++;
+                if (stat[x] > best_score) {
+                    best_score = stat[x];
+                }
             }
         }
     }



More information about the ffmpeg-cvslog mailing list