[FFmpeg-cvslog] avformat/utils: Redesign scoring in av_find_default_stream_index()
Michael Niedermayer
git at videolan.org
Wed Jul 1 23:01:13 CEST 2015
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Jul 1 22:35:07 2015 +0200| [838c5f3df7e98b15fd3acbcacaf315c32600ca45] | committer: 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: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=838c5f3df7e98b15fd3acbcacaf315c32600ca45
---
libavformat/utils.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/libavformat/utils.c b/libavformat/utils.c
index caa15ab..66c3ed7 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -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;
More information about the ffmpeg-cvslog
mailing list