fixing total_frames
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 2 Mar 2006 20:44:35 +0000 (20:44 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 2 Mar 2006 20:44:35 +0000 (20:44 +0000)
Originally committed as revision 5101 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/avienc.c
tests/libav.regression.ref

index 2239e26..dbb301d 100644 (file)
@@ -613,22 +613,21 @@ static int avi_write_idx1(AVFormatContext *s)
         file_size = url_ftell(pb);
         nb_frames = 0;
         for(n=0;n<s->nb_streams;n++) {
-            if (avi->frames_hdr_strm[n] != 0) {
+            assert(avi->frames_hdr_strm[n]);
                 stream = s->streams[n]->codec;
                 url_fseek(pb, avi->frames_hdr_strm[n], SEEK_SET);
                 ff_parse_specific_params(stream, &au_byterate, &au_ssize, &au_scale);
                 if (au_ssize == 0) {
                     put_le32(pb, avi->packet_count[n]);
-                    nb_frames += avi->packet_count[n];
                 } else {
                     put_le32(pb, avi->audio_strm_length[n] / au_ssize);
                 }
-            }
-       }
-       if (avi->frames_hdr_all != 0) {
-           url_fseek(pb, avi->frames_hdr_all, SEEK_SET);
-           put_le32(pb, nb_frames);
+            if(stream->codec_type == CODEC_TYPE_VIDEO)
+                nb_frames = FFMAX(nb_frames, avi->packet_count[n]);
        }
+        assert(avi->frames_hdr_all);
+        url_fseek(pb, avi->frames_hdr_all, SEEK_SET);
+        put_le32(pb, nb_frames);
        url_fseek(pb, file_size, SEEK_SET);
     }
     return 0;
index 5297408..aebe963 100644 (file)
@@ -1,5 +1,5 @@
 ffmpeg regression test
-ffe84c1d286255bb6856f864b8122b6a *./data/b-libav.avi
+3175f33f01e7d0e1ee4bf7f7e4894393 *./data/b-libav.avi
  342282 ./data/b-libav.avi
 ./data/b-libav.avi CRC=0xccab3a27
 6f4dca897d9a009009798e434fe5f651 *./data/b-libav.asf