From ea486ab3bede4fc68b8cccb70791cdfa589a0fcb Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Mon, 12 Mar 2007 10:59:47 +0000 Subject: [PATCH] remove codec_info_duration/nb_frames from AVStream Originally committed as revision 8337 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/avformat.h | 2 ++ libavformat/utils.c | 13 ++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index c2136a65be..b6fefaf33b 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -275,9 +275,11 @@ typedef struct AVStream { */ AVRational r_frame_rate; void *priv_data; +#if LIBAVFORMAT_VERSION_INT < (52<<16) /* internal data used in av_find_stream_info() */ int64_t codec_info_duration; int codec_info_nb_frames; +#endif /** encoding: PTS generation when outputing stream */ AVFrac pts; diff --git a/libavformat/utils.c b/libavformat/utils.c index 0c1259cb26..768d0b8687 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1679,6 +1679,8 @@ int av_find_stream_info(AVFormatContext *ic) int duration_count[MAX_STREAMS]={0}; double (*duration_error)[MAX_STD_TIMEBASES]; offset_t old_offset = url_ftell(&ic->pb); + int64_t codec_info_duration[MAX_STREAMS]={0}; + int codec_info_nb_frames[MAX_STREAMS]={0}; duration_error = av_mallocz(MAX_STREAMS * sizeof(*duration_error)); if (!duration_error) return AVERROR_NOMEM; @@ -1777,10 +1779,10 @@ int av_find_stream_info(AVFormatContext *ic) read_size += pkt->size; st = ic->streams[pkt->stream_index]; - if(st->codec_info_nb_frames>1) //FIXME move codec_info_nb_frames and codec_info_duration from AVStream into this func - st->codec_info_duration += pkt->duration; + if(codec_info_nb_frames[st->index]>1) + codec_info_duration[st->index] += pkt->duration; if (pkt->duration != 0) - st->codec_info_nb_frames++; + codec_info_nb_frames[st->index]++; { int index= pkt->stream_index; @@ -1801,9 +1803,6 @@ int av_find_stream_info(AVFormatContext *ic) duration_error[index][i] += error*error; } duration_count[index]++; - - if(st->codec_info_nb_frames == 0 && 0) - st->codec_info_duration += duration; } if(last == AV_NOPTS_VALUE || duration_count[index]<=1) last_dts[pkt->stream_index]= pkt->dts; @@ -1839,7 +1838,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) >= ic->max_analyze_duration) { + if (av_rescale_q(codec_info_duration[st->index], st->time_base, AV_TIME_BASE_Q) >= ic->max_analyze_duration) { break; } count++;