Set nb_frames.
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 2 Feb 2010 23:53:38 +0000 (23:53 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 2 Feb 2010 23:53:38 +0000 (23:53 +0000)
Also add DXSA tag (commited by mistake in this commit, i can revert and recommit
seperately if someone wants)

Originally committed as revision 21619 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/avidec.c

index 854ebc2..3d68e47 100644 (file)
@@ -251,7 +251,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
     ByteIOContext *pb = s->pb;
     unsigned int tag, tag1, handler;
     int codec_type, stream_index, frame_period, bit_rate;
     ByteIOContext *pb = s->pb;
     unsigned int tag, tag1, handler;
     int codec_type, stream_index, frame_period, bit_rate;
-    unsigned int size, nb_frames;
+    unsigned int size;
     int i;
     AVStream *st;
     AVIStream *ast = NULL;
     int i;
     AVStream *st;
     AVIStream *ast = NULL;
@@ -412,10 +412,10 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
             av_set_pts_info(st, 64, ast->scale, ast->rate);
 
             ast->cum_len=get_le32(pb); /* start */
             av_set_pts_info(st, 64, ast->scale, ast->rate);
 
             ast->cum_len=get_le32(pb); /* start */
-            nb_frames = get_le32(pb);
+            st->nb_frames = get_le32(pb);
 
             st->start_time = 0;
 
             st->start_time = 0;
-            st->duration = nb_frames;
+            st->duration = st->nb_frames;
             get_le32(pb); /* buffer size */
             get_le32(pb); /* quality */
             ast->sample_size = get_le32(pb); /* sample ssize */
             get_le32(pb); /* buffer size */
             get_le32(pb); /* quality */
             ast->sample_size = get_le32(pb); /* sample ssize */
@@ -476,7 +476,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
                     get_le32(pb); /* ClrUsed */
                     get_le32(pb); /* ClrImportant */
 
                     get_le32(pb); /* ClrUsed */
                     get_le32(pb); /* ClrImportant */
 
-                    if (tag1 == MKTAG('D', 'X', 'S', 'B')) {
+                    if (tag1 == MKTAG('D', 'X', 'S', 'B') || tag1 == MKTAG('D','X','S','A')) {
                         st->codec->codec_type = CODEC_TYPE_SUBTITLE;
                         st->codec->codec_tag = tag1;
                         st->codec->codec_id = CODEC_ID_XSUB;
                         st->codec->codec_type = CODEC_TYPE_SUBTITLE;
                         st->codec->codec_tag = tag1;
                         st->codec->codec_id = CODEC_ID_XSUB;