summaryrefslogtreecommitdiff
path: root/fftools
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2022-11-16 16:29:42 +0100
committerAnton Khirnov <anton@khirnov.net>2022-11-23 10:36:23 +0100
commit86e2ffedfe343f8e2878db84fefef0d85ebfe0dc (patch)
treee6086e01de1d2ef9a398252c01028b64baac8fc2 /fftools
parent4c405816141129b682e26511dce4fea3f31a621f (diff)
fftools/ffmpeg_mux_init: simplify inner loop in map_auto_{video,audio}
Skip unusable streams early and do not compute any scores for them.
Diffstat (limited to 'fftools')
-rw-r--r--fftools/ffmpeg_mux_init.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
index e460e7603f..6db70cc852 100644
--- a/fftools/ffmpeg_mux_init.c
+++ b/fftools/ffmpeg_mux_init.c
@@ -869,15 +869,18 @@ static void map_auto_video(Muxer *mux, const OptionsContext *o)
for (int i = 0; i < ifile->nb_streams; i++) {
int score;
ist = input_streams[ifile->ist_index + i];
+
+ if (ist->user_set_discard == AVDISCARD_ALL ||
+ ist->st->codecpar->codec_type != AVMEDIA_TYPE_VIDEO)
+ continue;
+
score = ist->st->codecpar->width * ist->st->codecpar->height
+ 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+ 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
- if (ist->user_set_discard == AVDISCARD_ALL)
- continue;
if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
score = 1;
- if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
- score > file_best_score) {
+
+ if (score > file_best_score) {
if((qcr==MKTAG('A', 'P', 'I', 'C')) && !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
continue;
file_best_score = score;
@@ -913,13 +916,15 @@ static void map_auto_audio(Muxer *mux, const OptionsContext *o)
for (int i = 0; i < ifile->nb_streams; i++) {
int score;
ist = input_streams[ifile->ist_index + i];
+
+ if (ist->user_set_discard == AVDISCARD_ALL ||
+ ist->st->codecpar->codec_type != AVMEDIA_TYPE_AUDIO)
+ continue;
+
score = ist->st->codecpar->ch_layout.nb_channels
+ 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+ 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
- if (ist->user_set_discard == AVDISCARD_ALL)
- continue;
- if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
- score > file_best_score) {
+ if (score > file_best_score) {
file_best_score = score;
file_best_idx = ifile->ist_index + i;
}