summaryrefslogtreecommitdiff
path: root/libavformat/mpegts.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat/mpegts.c')
-rw-r--r--libavformat/mpegts.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index d38b8af1b7..7d78c41d3c 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];
+ }
}
}
}