return ((const int[]) { 24, 30, 60, 12, 15 })[i - 60 * 12] * 1000 * 12;
}
-/* Is the time base unreliable?
- * This is a heuristic to balance between quick acceptance of the values in
- * the headers vs. some extra checks.
- * Old DivX and Xvid often have nonsense timebases like 1fps or 2fps.
- * MPEG-2 commonly misuses field repeat flags to store different framerates.
- * And there are "variable" fps files this needs to detect as well. */
-static int tb_unreliable(AVCodecContext *c)
-{
- if (c->time_base.den >= 101L * c->time_base.num ||
- c->time_base.den < 5L * c->time_base.num ||
- // c->codec_tag == AV_RL32("DIVX") ||
- // c->codec_tag == AV_RL32("XVID") ||
- c->codec_id == AV_CODEC_ID_MPEG2VIDEO ||
- c->codec_id == AV_CODEC_ID_H264)
- return 1;
- return 0;
-}
-
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
{
int i, count, ret, read_size, j;
if (ic->fps_probe_size >= 0)
fps_analyze_framecount = ic->fps_probe_size;
/* variable fps and no guess at the real fps */
- if (tb_unreliable(st->codec) && !st->avg_frame_rate.num &&
+ if (!st->avg_frame_rate.num &&
st->codec_info_nb_frames < fps_analyze_framecount &&
st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
break;