|
|
|
@@ -2949,7 +2949,7 @@ int av_find_best_stream(AVFormatContext *ic, |
|
|
|
int flags) |
|
|
|
{ |
|
|
|
int i, nb_streams = ic->nb_streams; |
|
|
|
int ret = AVERROR_STREAM_NOT_FOUND, best_count = -1; |
|
|
|
int ret = AVERROR_STREAM_NOT_FOUND, best_count = -1, best_bitrate = -1, best_multiframe = -1, count, bitrate, multiframe; |
|
|
|
unsigned *program = NULL; |
|
|
|
AVCodec *decoder = NULL, *best_decoder = NULL; |
|
|
|
|
|
|
|
@@ -2978,9 +2978,16 @@ int av_find_best_stream(AVFormatContext *ic, |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
if (best_count >= st->codec_info_nb_frames) |
|
|
|
count = st->codec_info_nb_frames; |
|
|
|
bitrate = avctx->bit_rate; |
|
|
|
multiframe = FFMIN(5, count); |
|
|
|
if ((best_multiframe > multiframe) || |
|
|
|
(best_multiframe == multiframe && best_bitrate > bitrate) || |
|
|
|
(best_multiframe == multiframe && best_bitrate == bitrate && best_count >= count)) |
|
|
|
continue; |
|
|
|
best_count = st->codec_info_nb_frames; |
|
|
|
best_count = count; |
|
|
|
best_bitrate = bitrate; |
|
|
|
best_multiframe = multiframe; |
|
|
|
ret = real_stream_index; |
|
|
|
best_decoder = decoder; |
|
|
|
if (program && i == nb_streams - 1 && ret < 0) { |
|
|
|
|