diff mbox series

[FFmpeg-devel] libavformat/utils: Check codec whitelist

Message ID CY4PR0501MB373056D096B387EEFAC73960AA219@CY4PR0501MB3730.namprd05.prod.outlook.com
State New
Headers show
Series [FFmpeg-devel] libavformat/utils: Check codec whitelist | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished
andriy/make_aarch64_jetson success Make finished
andriy/make_fate_aarch64_jetson success Make fate finished

Commit Message

Eric Juteau Jan. 27, 2022, 5:06 p.m. UTC
Modified the function av_find_best_stream() such that, when a list of
allowed codecs is supplied in the format context, and when the caller is
requesting a decoder be returned, the function will select the best
stream that has a decoder in the allowed decoders list.

Signed-off-by: Eric Juteau <ericjut@outlook.com>
---
 libavformat/utils.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Eric Juteau March 1, 2022, 7:03 p.m. UTC | #1
Friendly ping for feedback on the patch below.

Thank you.

-----Original Message-----
From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Eric Juteau
Sent: Thursday, January 27, 2022 9:06 AM
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH] libavformat/utils: Check codec whitelist

Modified the function av_find_best_stream() such that, when a list of
allowed codecs is supplied in the format context, and when the caller is
requesting a decoder be returned, the function will select the best
stream that has a decoder in the allowed decoders list.

Signed-off-by: Eric Juteau <ericjut@outlook.com>
---
 libavformat/utils.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index e643821fc9..5a96f16c0f 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -529,7 +529,8 @@ int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type,
             continue;
         if (decoder_ret) {
             decoder = ff_find_decoder(ic, st, par->codec_id);
-            if (!decoder) {
+            if ((!decoder) ||
+                (ic->codec_whitelist && av_match_list(decoder->name, ic->codec_whitelist, ',') <= 0)) {
                 if (ret < 0)
                     ret = AVERROR_DECODER_NOT_FOUND;
                 continue;
diff mbox series

Patch

diff --git a/libavformat/utils.c b/libavformat/utils.c
index e643821fc9..5a96f16c0f 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -529,7 +529,8 @@  int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type,
             continue;
         if (decoder_ret) {
             decoder = ff_find_decoder(ic, st, par->codec_id);
-            if (!decoder) {
+            if ((!decoder) ||
+                (ic->codec_whitelist && av_match_list(decoder->name, ic->codec_whitelist, ',') <= 0)) {
                 if (ret < 0)
                     ret = AVERROR_DECODER_NOT_FOUND;
                 continue;