1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

lavc: eliminate tb_unreliable()

If framerate estimation is enabled, it makes sense to always apply it,
instead of limiting it to a few specific cases.
This commit is contained in:
Anton Khirnov 2014-04-25 16:33:27 +02:00
parent cdf6eb5a97
commit 1eb57e1d9b

View File

@ -2174,24 +2174,6 @@ static int get_std_framerate(int i)
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;
@ -2264,7 +2246,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
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;