diff mov.c @ 3029:10abe8748ec2 libavformat

use correct demux mechanism when audio compression id is -2, dv audio does not matter, demux partially qt_dv_pal_test.mov which does NOT use cid -2
author bcoudurier
date Mon, 11 Feb 2008 22:23:05 +0000
parents 8ba21013bcbf
children 5064dffc46b7
line wrap: on
line diff
--- a/mov.c	Mon Feb 11 15:20:35 2008 +0000
+++ b/mov.c	Mon Feb 11 22:23:05 2008 +0000
@@ -108,6 +108,7 @@
     unsigned int samples_per_frame;
     int dv_audio_container;
     int pseudo_stream_id;
+    int16_t audio_cid; ///< stsd audio compression id
 } MOVStreamContext;
 
 typedef struct MOVContext {
@@ -743,7 +744,7 @@
             /* do we need to force to 16 for AMR ? */
 
             /* handle specific s8 codec */
-            get_be16(pb); /* compression id = 0*/
+            sc->audio_cid = get_be16(pb);
             get_be16(pb); /* packet size = 0 */
 
             st->codec->sample_rate = ((get_be32(pb) >> 16));
@@ -1329,7 +1330,8 @@
     unsigned int stss_index = 0;
     unsigned int i, j, k;
 
-    if (sc->sample_sizes || st->codec->codec_type == CODEC_TYPE_VIDEO || sc->dv_audio_container) {
+    if (sc->sample_sizes || st->codec->codec_type == CODEC_TYPE_VIDEO ||
+        sc->audio_cid == -2) {
         unsigned int current_sample = 0;
         unsigned int stts_sample = 0;
         unsigned int keyframe, sample_size;