Browse code

Set start_time and duration in AVStream instead of AVFormatContext for formats with only one stream; the AVFormatContext values will be derived from the AVStream and this helps in calculating stream bitrate.

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

David Conrad authored on 2010/01/21 18:47:02
Showing 3 changed files
... ...
@@ -310,8 +310,8 @@ static int ape_read_header(AVFormatContext * s, AVFormatParameters * ap)
310 310
     st->codec->frame_size      = MAC_SUBFRAME_SIZE;
311 311
 
312 312
     st->nb_frames = ape->totalframes;
313
-    s->start_time = 0;
314
-    s->duration   = (int64_t) total_blocks * AV_TIME_BASE / ape->samplerate;
313
+    st->start_time = 0;
314
+    st->duration  = total_blocks / MAC_SUBFRAME_SIZE;
315 315
     av_set_pts_info(st, 64, MAC_SUBFRAME_SIZE, ape->samplerate);
316 316
 
317 317
     st->codec->extradata = av_malloc(APE_EXTRADATA_SIZE);
... ...
@@ -115,8 +115,8 @@ static int mpc_read_header(AVFormatContext *s, AVFormatParameters *ap)
115 115
     st->codec->sample_rate = mpc_rate[st->codec->extradata[2] & 3];
116 116
     av_set_pts_info(st, 32, MPC_FRAMESIZE, st->codec->sample_rate);
117 117
     /* scan for seekpoints */
118
-    s->start_time = 0;
119
-    s->duration = (int64_t)c->fcount * MPC_FRAMESIZE * AV_TIME_BASE / st->codec->sample_rate;
118
+    st->start_time = 0;
119
+    st->duration = c->fcount;
120 120
 
121 121
     /* try to read APE tags */
122 122
     if (!url_is_streamed(s->pb)) {
... ...
@@ -168,8 +168,8 @@ static int wv_read_header(AVFormatContext *s,
168 168
     st->codec->sample_rate = wc->rate;
169 169
     st->codec->bits_per_coded_sample = wc->bpp;
170 170
     av_set_pts_info(st, 64, 1, wc->rate);
171
-    s->start_time = 0;
172
-    s->duration = (int64_t)wc->samples * AV_TIME_BASE / st->codec->sample_rate;
171
+    st->start_time = 0;
172
+    st->duration = wc->samples;
173 173
 
174 174
     if(!url_is_streamed(s->pb)) {
175 175
         int64_t cur = url_ftell(s->pb);