提交 838c5f3d 编写于 作者: M Michael Niedermayer

avformat/utils: Redesign scoring in av_find_default_stream_index()

This avoids empty streams from being selected if a equivalent non empty one is available
The new system is also clearer and more systematic
This may need finetuning, which should be easy to do ...

Fixes Ticket2687
Signed-off-by: NMichael Niedermayer <michaelni@gmx.at>
上级 52c55218
......@@ -1585,26 +1585,26 @@ int av_find_default_stream_index(AVFormatContext *s)
int i;
AVStream *st;
int best_stream = 0;
int best_score = -1;
int best_score = INT_MIN;
if (s->nb_streams <= 0)
return -1;
for (i = 0; i < s->nb_streams; i++) {
int score = 0;
st = s->streams[i];
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
!(st->disposition & AV_DISPOSITION_ATTACHED_PIC)) {
if (!st->codec->width && !st->codec->height && !st->codec_info_nb_frames)
score += 25;
else
score += 100;
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
if (st->disposition & AV_DISPOSITION_ATTACHED_PIC)
score -= 400;
if (st->codec->width && st->codec->height)
score += 50;
score+= 25;
}
if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
if (!st->codec->sample_rate && !st->codec_info_nb_frames)
score += 12;
else
if (st->codec->sample_rate)
score += 50;
}
if (st->codec_info_nb_frames)
score += 12;
if (st->discard != AVDISCARD_ALL)
score += 200;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册