Autodetect idcin only if audio properties allow decoding.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Wed, 19 Jun 2013 14:31:10 +0000 (16:31 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Wed, 19 Jun 2013 15:07:44 +0000 (17:07 +0200)
Fixes ticket #2688.

libavformat/idcin.c

index a4085a9..31d34f3 100644 (file)
@@ -93,7 +93,7 @@ typedef struct IdcinDemuxContext {
 
 static int idcin_probe(AVProbeData *p)
 {
-    unsigned int number;
+    unsigned int number, sample_rate;
 
     /*
      * This is what you could call a "probabilistic" file check: id CIN
@@ -122,18 +122,18 @@ static int idcin_probe(AVProbeData *p)
        return 0;
 
     /* check the audio sample rate */
-    number = AV_RL32(&p->buf[8]);
-    if ((number != 0) && ((number < 8000) | (number > 48000)))
+    sample_rate = AV_RL32(&p->buf[8]);
+    if (sample_rate && (sample_rate < 8000 || sample_rate > 48000))
         return 0;
 
     /* check the audio bytes/sample */
     number = AV_RL32(&p->buf[12]);
-    if (number > 2)
+    if (number > 2 || sample_rate && !number)
         return 0;
 
     /* check the audio channels */
     number = AV_RL32(&p->buf[16]);
-    if (number > 2)
+    if (number > 2 || sample_rate && !number)
         return 0;
 
     /* return half certainty since this check is a bit sketchy */