[FFmpeg-devel] [PATCH 05/10] fftools/ffmpeg_mux_init: simplify inner loop in map_auto_{video, audio}
Anton Khirnov
anton at khirnov.net
Thu Nov 17 12:16:35 EET 2022
Skip unusable streams early and do not compute any scores for them.
---
fftools/ffmpeg_mux_init.c | 21 +++++++++++++--------
1 file 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;
}
--
2.35.1
More information about the ffmpeg-devel
mailing list