[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