[FFmpeg-devel] [PATCH 35/44] avformat/utils: Move av_find_default_stream_index to avformat.c
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sat May 7 14:28:21 EEST 2022
While it is clearly written with demuxers in mind,
it is not forbidden to call it with muxers, hence avformat.c
and not demux_utils.c.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
libavformat/avformat.c | 36 ++++++++++++++++++++++++++++++++++++
libavformat/utils.c | 36 ------------------------------------
2 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/libavformat/avformat.c b/libavformat/avformat.c
index e3dad1f9a5..2b012a903f 100644
--- a/libavformat/avformat.c
+++ b/libavformat/avformat.c
@@ -276,6 +276,42 @@ AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int
return NULL;
}
+int av_find_default_stream_index(AVFormatContext *s)
+{
+ int best_stream = 0;
+ int best_score = INT_MIN;
+
+ if (s->nb_streams <= 0)
+ return -1;
+ for (unsigned i = 0; i < s->nb_streams; i++) {
+ const AVStream *const st = s->streams[i];
+ const FFStream *const sti = cffstream(st);
+ int score = 0;
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
+ if (st->disposition & AV_DISPOSITION_ATTACHED_PIC)
+ score -= 400;
+ if (st->codecpar->width && st->codecpar->height)
+ score += 50;
+ score+= 25;
+ }
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
+ if (st->codecpar->sample_rate)
+ score += 50;
+ }
+ if (sti->codec_info_nb_frames)
+ score += 12;
+
+ if (st->discard != AVDISCARD_ALL)
+ score += 200;
+
+ if (score > best_score) {
+ best_score = score;
+ best_stream = i;
+ }
+ }
+ return best_stream;
+}
+
/**
* Matches a stream specifier (but ignores requested index).
*
diff --git a/libavformat/utils.c b/libavformat/utils.c
index e500d35d83..b448f7b9cd 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -181,42 +181,6 @@ int ff_is_intra_only(enum AVCodecID id)
return 1;
}
-int av_find_default_stream_index(AVFormatContext *s)
-{
- int best_stream = 0;
- int best_score = INT_MIN;
-
- if (s->nb_streams <= 0)
- return -1;
- for (unsigned i = 0; i < s->nb_streams; i++) {
- const AVStream *const st = s->streams[i];
- const FFStream *const sti = cffstream(st);
- int score = 0;
- if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
- if (st->disposition & AV_DISPOSITION_ATTACHED_PIC)
- score -= 400;
- if (st->codecpar->width && st->codecpar->height)
- score += 50;
- score+= 25;
- }
- if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
- if (st->codecpar->sample_rate)
- score += 50;
- }
- if (sti->codec_info_nb_frames)
- score += 12;
-
- if (st->discard != AVDISCARD_ALL)
- score += 200;
-
- if (score > best_score) {
- best_score = score;
- best_stream = i;
- }
- }
- return best_stream;
-}
-
/*******************************************************/
unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id)
--
2.32.0
More information about the ffmpeg-devel
mailing list