* ID3v2 tag useful for MP3 demuxing
*/
AVDictionary *id3v2_meta;
+
+ /*
+ * Prefer the codec framerate for avg_frame_rate computation.
+ */
+ int prefer_codec_framerate;
};
struct AVStreamInternal {
int len;
int64_t pos, probesize = s->probesize;
+ s->internal->prefer_codec_framerate = 1;
+
if (ffio_ensure_seekback(pb, probesize) < 0)
av_log(s, AV_LOG_WARNING, "Failed to allocate buffers for seekback\n");
st->info->codec_info_duration) {
int best_fps = 0;
double best_error = 0.01;
+ AVRational codec_frame_rate = avctx->framerate;
if (st->info->codec_info_duration >= INT64_MAX / st->time_base.num / 2||
st->info->codec_info_duration_fields >= INT64_MAX / st->time_base.den ||
best_error = error;
best_fps = std_fps.num;
}
+
+ if (ic->internal->prefer_codec_framerate && codec_frame_rate.num > 0 && codec_frame_rate.den > 0) {
+ error = fabs(av_q2d(codec_frame_rate) /
+ av_q2d(std_fps) - 1);
+ if (error < best_error) {
+ best_error = error;
+ best_fps = std_fps.num;
+ }
+ }
}
if (best_fps)
av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den,