OSDN Git Service

move sample size adjusting code after audio stsd v2 parsing to let v2 set correct...
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 28 Sep 2006 17:59:26 +0000 (17:59 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 28 Sep 2006 17:59:26 +0000 (17:59 +0000)
Originally committed as revision 6373 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mov.c

index 183abdc..00ba5eb 100644 (file)
@@ -985,12 +985,6 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
                 break;
             }
 
-            bits_per_sample = av_get_bits_per_sample(st->codec->codec_id);
-            if (bits_per_sample) {
-                st->codec->bits_per_sample = bits_per_sample;
-                sc->sample_size = (bits_per_sample >> 3) * st->codec->channels;
-            }
-
             //Read QT version 1 fields. In version 0 theese dont exist
             dprintf("version =%d mp4=%d\n",version,c->mp4);
             if(version==1) {
@@ -1008,6 +1002,12 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
                 get_be32(pb); /* bytes per audio packet if constant */
                 get_be32(pb); /* lpcm frames per audio packet if constant */
             }
+
+            bits_per_sample = av_get_bits_per_sample(st->codec->codec_id);
+            if (bits_per_sample) {
+                st->codec->bits_per_sample = bits_per_sample;
+                sc->sample_size = (bits_per_sample >> 3) * st->codec->channels;
+            }
         } else {
             /* other codec type, just skip (rtp, mp4s, tmcd ...) */
             url_fskip(pb, size - (url_ftell(pb) - start_pos));