summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2012-10-21 19:30:43 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2012-10-21 19:30:43 +0200
commitfa190b3cd736ae10e3af7d893423eb121b70b803 (patch)
tree9db27fb3fc36b7cf9bdb0e74a8f34ce3668f9c53 /libavformat
parent747a00b688d74f3187e9c4dc21fe1b0ce2b63064 (diff)
Improve MPEG-PS-in-MOV detection.
Fixes issue 1520.
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mov.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index fb62bfb82b..ce4865d841 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2908,15 +2908,14 @@ static int mov_probe(AVProbeData *p)
* MOV-packed MPEG-PS */
offset = moov_offset;
- while(offset < (p->buf_size - 20)){ /* Sufficient space */
- /* We found an actual stsd atom */
- if(AV_RL32(p->buf+offset) == MKTAG('s','t','s','d') &&
- /* Make sure there's only one stream */
- AV_RB32(p->buf + offset + 8) == 1 &&
- AV_RL32(p->buf + offset + 16) == MKTAG('m','1','s',' ')
- ){
- av_log(NULL, AV_LOG_WARNING, "Found m1s tag indicating this is a MOV-packed MPEG-PS.\n");
- /* We found an stsd atom describing an MPEG-PS-in-MOV, return a
+ while(offset < (p->buf_size - 16)){ /* Sufficient space */
+ /* We found an actual hdlr atom */
+ if(AV_RL32(p->buf + offset ) == MKTAG('h','d','l','r') &&
+ AV_RL32(p->buf + offset + 8) == MKTAG('m','h','l','r') &&
+ AV_RL32(p->buf + offset + 12) == MKTAG('M','P','E','G')){
+ av_log(NULL, AV_LOG_WARNING, "Found media data tag MPEG indicating this is a MOV-packed MPEG-PS.\n");
+ /* We found a media handler reference atom describing an
+ * MPEG-PS-in-MOV, return a
* low score to force expanding the probe window until
* mpegps_probe finds what it needs */
return 5;