|
|
|
@ -329,6 +329,7 @@ static const AVOption options[]={ |
|
|
|
|
{"genpts", "generate pts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_GENPTS, INT_MIN, INT_MAX, D, "fflags"}, |
|
|
|
|
{"track", " set the track number", OFFSET(track), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E}, |
|
|
|
|
{"year", "set the year", OFFSET(year), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, E}, |
|
|
|
|
{"analyzeduration", NULL, OFFSET(max_analyze_duration), FF_OPT_TYPE_INT, 3*AV_TIME_BASE, 0, INT_MAX, D}, |
|
|
|
|
{NULL}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -1757,9 +1758,6 @@ static int try_decode_frame(AVStream *st, const uint8_t *data, int size) |
|
|
|
|
/* absolute maximum size we read until we abort */ |
|
|
|
|
#define MAX_READ_SIZE 5000000 |
|
|
|
|
|
|
|
|
|
/* maximum duration until we stop analysing the stream */ |
|
|
|
|
#define MAX_STREAM_DURATION ((int)(AV_TIME_BASE * 3.0)) |
|
|
|
|
|
|
|
|
|
#define MAX_STD_TIMEBASES (60*12+5) |
|
|
|
|
static int get_std_framerate(int i){ |
|
|
|
|
if(i<60*12) return i*1001; |
|
|
|
@ -1942,7 +1940,7 @@ int av_find_stream_info(AVFormatContext *ic) |
|
|
|
|
(st->codec->codec_id == CODEC_ID_MPEG4 && !st->need_parsing))*/) |
|
|
|
|
try_decode_frame(st, pkt->data, pkt->size); |
|
|
|
|
|
|
|
|
|
if (av_rescale_q(st->codec_info_duration, st->time_base, AV_TIME_BASE_Q) >= MAX_STREAM_DURATION) { |
|
|
|
|
if (av_rescale_q(st->codec_info_duration, st->time_base, AV_TIME_BASE_Q) >= ic->max_analyze_duration) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
count++; |
|
|
|
|