On 05/12/2011 01:56 AM, Anton Khirnov wrote: > From: Marton Balint <[email protected]> > > In the main loop, stream_number is incremented after checking the stream type, > so the search usually will not find the wanted stream. > > This patch eliminates the useless stream_number variable and introduces a new > one, called real_stream_index to store the real stream index of the current > stream, no matter if we are looping through all the streams or only the > streams > of a program. > > Signed-off-by: Michael Niedermayer <[email protected]> > Signed-off-by: Anton Khirnov <[email protected]> > --- > libavformat/utils.c | 9 +++++---- > 1 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/libavformat/utils.c b/libavformat/utils.c > index 830e5d0..2afac16 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -2462,7 +2462,7 @@ int av_find_best_stream(AVFormatContext *ic, > AVCodec **decoder_ret, > int flags) > { > - int i, nb_streams = ic->nb_streams, stream_number = 0; > + int i, nb_streams = ic->nb_streams; > int ret = AVERROR_STREAM_NOT_FOUND, best_count = -1; > unsigned *program = NULL; > AVCodec *decoder = NULL, *best_decoder = NULL; > @@ -2475,11 +2475,12 @@ int av_find_best_stream(AVFormatContext *ic, > } > } > for (i = 0; i < nb_streams; i++) { > - AVStream *st = ic->streams[program ? program[i] : i]; > + int real_stream_index = program ? program[i] : i; > + AVStream *st = ic->streams[real_stream_index]; > AVCodecContext *avctx = st->codec; > if (avctx->codec_type != type) > continue; > - if (wanted_stream_nb >= 0 && stream_number++ != wanted_stream_nb) > + if (wanted_stream_nb >= 0 && real_stream_index != wanted_stream_nb) > continue; > if (st->disposition & > (AV_DISPOSITION_HEARING_IMPAIRED|AV_DISPOSITION_VISUAL_IMPAIRED)) > continue; > @@ -2494,7 +2495,7 @@ int av_find_best_stream(AVFormatContext *ic, > if (best_count >= st->codec_info_nb_frames) > continue; > best_count = st->codec_info_nb_frames; > - ret = program ? program[i] : i; > + ret = real_stream_index; > best_decoder = decoder; > if (program && i == nb_streams - 1 && ret < 0) { > program = NULL;
ok. -Justin _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
