set frame rate information, for good measure
authorMike Melanson <mike@multimedia.cx>
Sun, 16 Nov 2003 14:26:50 +0000 (14:26 +0000)
committerMike Melanson <mike@multimedia.cx>
Sun, 16 Nov 2003 14:26:50 +0000 (14:26 +0000)
Originally committed as revision 2521 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/4xm.c

index 2caa08f..2214e11 100644 (file)
@@ -86,6 +86,7 @@ typedef struct FourxmDemuxContext {
     int64_t audio_pts;
     int64_t video_pts;
     int video_pts_inc;
+    float fps;
 } FourxmDemuxContext;
 
 static float get_le_float(unsigned char *buffer)
@@ -132,11 +133,11 @@ static int fourxm_read_header(AVFormatContext *s,
     int i;
     int current_track = -1;
     AVStream *st;
-    float fps;
 
     fourxm->track_count = 0;
     fourxm->tracks = NULL;
     fourxm->selected_track = 0;
+    fourxm->fps = 1.0;
 
     /* skip the first 3 32-bit numbers */
     url_fseek(pb, 12, SEEK_CUR);
@@ -160,8 +161,8 @@ static int fourxm_read_header(AVFormatContext *s,
         size = LE_32(&header[i + 4]);
 
         if (fourcc_tag == std__TAG) {
-            fps = get_le_float(&header[i + 12]);
-            fourxm->video_pts_inc = (int)(90000.0 / fps);
+            fourxm->fps = get_le_float(&header[i + 12]);
+            fourxm->video_pts_inc = (int)(90000.0 / fourxm->fps);
         } else if (fourcc_tag == vtrk_TAG) {
             /* check that there is enough data */
             if (size != vtrk_SIZE) {
@@ -179,6 +180,8 @@ static int fourxm_read_header(AVFormatContext *s,
 
             fourxm->video_stream_index = st->index;
 
+            st->codec.frame_rate = fourxm->fps;
+            st->codec.frame_rate_base = 1.0;
             st->codec.codec_type = CODEC_TYPE_VIDEO;
             st->codec.codec_id = CODEC_ID_4XM;
             st->codec.codec_tag = 0;  /* no fourcc */