|
|
@@ -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; |
|
|
|