diff --git a/libavformat/utils.c b/libavformat/utils.c
index 26343175ffdcaa4274a9fe941d98c807fdd153e3..b1d0a0a477c0dd7ec516b7f32ac0b5a0ffc6f40b 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3695,9 +3695,13 @@ FF_ENABLE_DEPRECATION_WARNINGS
             if (!has_codec_parameters(st, NULL)) {
                 const AVCodec *codec = find_probe_decoder(ic, st, st->codecpar->codec_id);
                 if (codec && !avctx->codec) {
-                    if (avcodec_open2(avctx, codec, (options && stream_index < orig_nb_streams) ? &options[stream_index] : NULL) < 0)
+                    AVDictionary *opts = NULL;
+                    if (ic->codec_whitelist)
+                        av_dict_set(&opts, "codec_whitelist", ic->codec_whitelist, 0);
+                    if (avcodec_open2(avctx, codec, (options && stream_index < orig_nb_streams) ? &options[stream_index] : &opts) < 0)
                         av_log(ic, AV_LOG_WARNING,
                             "Failed to open codec in av_find_stream_info\n");
+                    av_dict_free(&opts);
                 }
             }