Mercurial > libavformat.hg
changeset 1906:330115d147d6 libavformat
remove codec_info_duration/nb_frames from AVStream
author | bcoudurier |
---|---|
date | Mon, 12 Mar 2007 10:59:47 +0000 |
parents | 54d1bdcb47e2 |
children | b33db97089ba |
files | avformat.h utils.c |
diffstat | 2 files changed, 8 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/avformat.h Sun Mar 11 23:44:13 2007 +0000 +++ b/avformat.h Mon Mar 12 10:59:47 2007 +0000 @@ -275,9 +275,11 @@ */ 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;
--- a/utils.c Sun Mar 11 23:44:13 2007 +0000 +++ b/utils.c Mon Mar 12 10:59:47 2007 +0000 @@ -1679,6 +1679,8 @@ 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 @@ 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 @@ 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 @@ (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++;