diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index 0119d39daf57808c21a3ea130272909db38d0de9..37c7de5e90fcf961c8ff0b68101f3e465817d186 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -709,7 +709,7 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx,
     int tags = 0;
 
     if (get_bits1(gb)) { // frameLengthFlag
-        av_log_missing_feature(avctx, "960/120 MDCT window", 1);
+        avpriv_request_sample(avctx, "960/120 MDCT window");
         return AVERROR_PATCHWELCOME;
     }
 
@@ -1713,7 +1713,7 @@ static int decode_ics(AACContext *ac, SingleChannelElement *sce,
         if ((tns->present = get_bits1(gb)) && decode_tns(ac, tns, gb, ics))
             return -1;
         if (get_bits1(gb)) {
-            av_log_missing_feature(ac->avctx, "SSR", 1);
+            avpriv_request_sample(ac->avctx, "SSR");
             return AVERROR_PATCHWELCOME;
         }
     }
@@ -2750,8 +2750,8 @@ static int latm_decode_audio_specific_config(struct LATMContext *latmctx,
         asclen         = get_bits_left(gb);
 
     if (config_start_bit % 8) {
-        av_log_missing_feature(latmctx->aac_ctx.avctx,
-                               "Non-byte-aligned audio-specific config", 1);
+        avpriv_request_sample(latmctx->aac_ctx.avctx,
+                              "Non-byte-aligned audio-specific config");
         return AVERROR_PATCHWELCOME;
     }
     if (asclen <= 0)
@@ -2810,8 +2810,7 @@ static int read_stream_mux_config(struct LATMContext *latmctx,
         skip_bits(gb, 6);                       // numSubFrames
         // numPrograms
         if (get_bits(gb, 4)) {                  // numPrograms
-            av_log_missing_feature(latmctx->aac_ctx.avctx,
-                                   "Multiple programs", 1);
+            avpriv_request_sample(latmctx->aac_ctx.avctx, "Multiple programs");
             return AVERROR_PATCHWELCOME;
         }
 
@@ -2819,8 +2818,7 @@ static int read_stream_mux_config(struct LATMContext *latmctx,
 
         // for each layer (which there is only one in DVB)
         if (get_bits(gb, 3)) {                   // numLayer
-            av_log_missing_feature(latmctx->aac_ctx.avctx,
-                                   "Multiple layers", 1);
+            avpriv_request_sample(latmctx->aac_ctx.avctx, "Multiple layers");
             return AVERROR_PATCHWELCOME;
         }
 
diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c
index 121f83a82dd300542cf776bb7a855c36c41fad7f..0b6779c2934050fd07d19b037218e13304e49649 100644
--- a/libavcodec/aacsbr.c
+++ b/libavcodec/aacsbr.c
@@ -942,7 +942,7 @@ static void read_sbr_extension(AACContext *ac, SpectralBandReplication *sbr,
     default:
         // some files contain 0-padding
         if (bs_extension_id || *num_bits_left > 16 || show_bits(gb, *num_bits_left))
-            av_log_missing_feature(ac->avctx, "Reserved SBR extensions", 1);
+            avpriv_request_sample(ac->avctx, "Reserved SBR extensions");
         skip_bits_long(gb, *num_bits_left); // bs_fill_bits
         *num_bits_left = 0;
         break;
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index 0e584a5b31db7d448d2b6df982a02b693b002870..a70d92ae07bab8102417498c057d521fa0f27578 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -874,7 +874,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk)
             /* check for enhanced coupling */
             if (s->eac3 && get_bits1(gbc)) {
                 /* TODO: parse enhanced coupling strategy info */
-                av_log_missing_feature(s->avctx, "Enhanced coupling", 1);
+                avpriv_request_sample(s->avctx, "Enhanced coupling");
                 return AVERROR_PATCHWELCOME;
             }
 
diff --git a/libavcodec/amrnbdec.c b/libavcodec/amrnbdec.c
index 4e88b8adba82f7ad731f1028608cfc6e4e8901d1..6376db11efe059bf09a8068706d20d20960f81e0 100644
--- a/libavcodec/amrnbdec.c
+++ b/libavcodec/amrnbdec.c
@@ -973,7 +973,7 @@ static int amrnb_decode_frame(AVCodecContext *avctx, void *data,
         return AVERROR_INVALIDDATA;
     }
     if (p->cur_frame_mode == MODE_DTX) {
-        av_log_missing_feature(avctx, "dtx mode", 0);
+        avpriv_report_missing_feature(avctx, "dtx mode");
         av_log(avctx, AV_LOG_INFO, "Note: libopencore_amrnb supports dtx\n");
         return AVERROR_PATCHWELCOME;
     }
diff --git a/libavcodec/amrwbdec.c b/libavcodec/amrwbdec.c
index 3be81d482c4c58fe30d4527a1bfe8a3a4323a1aa..8c3eb56d3becc2cd06e83a3ceca43dbf4ea2229e 100644
--- a/libavcodec/amrwbdec.c
+++ b/libavcodec/amrwbdec.c
@@ -1135,7 +1135,7 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data,
         av_log(avctx, AV_LOG_ERROR, "Encountered a bad or corrupted frame\n");
 
     if (ctx->fr_cur_mode == MODE_SID) { /* Comfort noise frame */
-        av_log_missing_feature(avctx, "SID mode", 1);
+        avpriv_request_sample(avctx, "SID mode");
         return AVERROR_PATCHWELCOME;
     }
 
diff --git a/libavcodec/eac3dec.c b/libavcodec/eac3dec.c
index 922bf7a0899a65cb30ba9b538fddd14dbbbccca7..b55ee2a34c2f155955e3b8db302079a36adff763 100644
--- a/libavcodec/eac3dec.c
+++ b/libavcodec/eac3dec.c
@@ -300,7 +300,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s)
        application can select from. each independent stream can also contain
        dependent streams which are used to add or replace channels. */
     if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) {
-        av_log_missing_feature(s->avctx, "Dependent substream decoding", 1);
+        avpriv_request_sample(s->avctx, "Dependent substream decoding");
         return AAC_AC3_PARSE_ERROR_FRAME_TYPE;
     } else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) {
         av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n");
@@ -312,7 +312,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s)
        associated to an independent stream have matching substream id's. */
     if (s->substreamid) {
         /* only decode substream with id=0. skip any additional substreams. */
-        av_log_missing_feature(s->avctx, "Additional substreams", 1);
+        avpriv_request_sample(s->avctx, "Additional substreams");
         return AAC_AC3_PARSE_ERROR_FRAME_TYPE;
     }
 
@@ -321,7 +321,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s)
            rates in bit allocation.  The best assumption would be that it is
            handled like AC-3 DolbyNet, but we cannot be sure until we have a
            sample which utilizes this feature. */
-        av_log_missing_feature(s->avctx, "Reduced sampling rate", 1);
+        avpriv_request_sample(s->avctx, "Reduced sampling rate");
         return AVERROR_PATCHWELCOME;
     }
     skip_bits(gbc, 5); // skip bitstream id
@@ -593,7 +593,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s)
            It is likely the offset of each block within the frame. */
         int block_start_bits = (s->num_blocks-1) * (4 + av_log2(s->frame_size-2));
         skip_bits_long(gbc, block_start_bits);
-        av_log_missing_feature(s->avctx, "Block start info", 1);
+        avpriv_request_sample(s->avctx, "Block start info");
     }
 
     /* syntax state initialization */
diff --git a/libavcodec/flashsv.c b/libavcodec/flashsv.c
index 81628e6788a0ef27b66a4afe93b578ae0da113ef..9982b5e96637e78ea568bd8af86fd123c2ee99cd 100644
--- a/libavcodec/flashsv.c
+++ b/libavcodec/flashsv.c
@@ -269,11 +269,11 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data,
     if (s->ver == 2) {
         skip_bits(&gb, 6);
         if (get_bits1(&gb)) {
-            av_log_missing_feature(avctx, "iframe", 1);
+            avpriv_request_sample(avctx, "iframe");
             return AVERROR_PATCHWELCOME;
         }
         if (get_bits1(&gb)) {
-            av_log_missing_feature(avctx, "Custom palette", 1);
+            avpriv_request_sample(avctx, "Custom palette");
             return AVERROR_PATCHWELCOME;
         }
     }
@@ -401,7 +401,7 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data,
                     int row = get_bits(&gb, 8);
                     av_log(avctx, AV_LOG_DEBUG, "%dx%d zlibprime_curr %dx%d\n", i, j, col, row);
                     size -= 2;
-                    av_log_missing_feature(avctx, "zlibprime_curr", 1);
+                    avpriv_request_sample(avctx, "zlibprime_curr");
                     return AVERROR_PATCHWELCOME;
                 }
                 if (!s->blocks && (s->zlibprime_curr || s->zlibprime_prev)) {
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 92074f809e2814b997294d22ebaf9a9c466f362b..bc8ee2eeadbda0faf398fc1c5e349769ce3fce41 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -2945,8 +2945,8 @@ static int h264_set_parameter_from_sps(H264Context *h)
         h->avctx->has_b_frames = !h->low_delay;
 
     if (h->sps.bit_depth_luma != h->sps.bit_depth_chroma) {
-        av_log_missing_feature(h->avctx,
-            "Different bit depth between chroma and luma", 1);
+        avpriv_request_sample(h->avctx,
+                              "Different chroma and luma bit depth");
         return AVERROR_PATCHWELCOME;
     }
 
diff --git a/libavcodec/mimic.c b/libavcodec/mimic.c
index 335d58be13ffa4ec385a6c8c39d3305f1260b7a8..85c6a1a96bd6d93883b2ac9b6b4c52171285ae1f 100644
--- a/libavcodec/mimic.c
+++ b/libavcodec/mimic.c
@@ -392,7 +392,7 @@ static int mimic_decode_frame(AVCodecContext *avctx, void *data,
             ctx->num_hblocks[i] =     width   >> (3 + !!i);
         }
     } else if (width != ctx->avctx->width || height != ctx->avctx->height) {
-        av_log_missing_feature(avctx, "resolution changing", 1);
+        avpriv_request_sample(avctx, "Resolution changing");
         return AVERROR_PATCHWELCOME;
     }
 
diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c
index a05a72b35ddfde5c5e53d2f4bc15b85338d5e99e..4d6ca896b7015d0b9fa53662899c383b4692631e 100644
--- a/libavcodec/mpc8.c
+++ b/libavcodec/mpc8.c
@@ -134,7 +134,7 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx)
     }
     channels = get_bits(&gb, 4) + 1;
     if (channels > 2) {
-        av_log_missing_feature(avctx, "Multichannel MPC SV8", 1);
+        avpriv_request_sample(avctx, "Multichannel MPC SV8");
         return AVERROR_PATCHWELCOME;
     }
     c->MSS = get_bits1(&gb);
diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c
index da347854d3bbede098e4407a6d3e3764eeb688e2..3f6d52e150424506d827a4184c38c685dab7171d 100644
--- a/libavcodec/rv10.c
+++ b/libavcodec/rv10.c
@@ -493,7 +493,7 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx)
         break;
     default:
         av_log(s->avctx, AV_LOG_ERROR, "unknown header %X\n", rv->sub_id);
-        av_log_missing_feature(avctx, "RV1/2 version", 1);
+        avpriv_request_sample(avctx, "RV1/2 version");
         return AVERROR_PATCHWELCOME;
     }
 
diff --git a/libavcodec/smc.c b/libavcodec/smc.c
index bb00c69aec93fb8183c92a2f5d3262798ac5c6bb..2c7ab9ab690b8baf53a1562bb9a02b4a9f78d5f6 100644
--- a/libavcodec/smc.c
+++ b/libavcodec/smc.c
@@ -402,7 +402,7 @@ static void smc_decode_stream(SmcContext *s)
             break;
 
         case 0xF0:
-            av_log_missing_feature(s->avctx, "0xF0 opcode", 1);
+            avpriv_request_sample(s->avctx, "0xF0 opcode");
             break;
         }
     }
diff --git a/libavcodec/truemotion2.c b/libavcodec/truemotion2.c
index 13b972320cb4c57ec49fbdf1635d326932847664..7783386d2511cbc4b714600ea25be312885e1084 100644
--- a/libavcodec/truemotion2.c
+++ b/libavcodec/truemotion2.c
@@ -231,7 +231,7 @@ static inline int tm2_read_header(TM2Context *ctx, const uint8_t *buf)
 
     switch (magic) {
     case TM2_OLD_HEADER_MAGIC:
-        av_log_missing_feature(ctx->avctx, "TM2 old header", 1);
+        avpriv_request_sample(ctx->avctx, "Old TM2 header");
         return 0;
     case TM2_NEW_HEADER_MAGIC:
         return 0;
diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
index 7bd1cc9950d3e1b175b75580042451cf6fe64618..ac929d03b4162e6c71e3366ec072eb0bdc173af9 100644
--- a/libavcodec/vp8.c
+++ b/libavcodec/vp8.c
@@ -337,7 +337,7 @@ static int decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_size)
         buf_size -= 7;
 
         if (hscale || vscale)
-            av_log_missing_feature(s->avctx, "Upscaling", 1);
+            avpriv_request_sample(s->avctx, "Upscaling");
 
         s->update_golden = s->update_altref = VP56_FRAME_CURRENT;
         for (i = 0; i < 4; i++)
diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c
index e76b73a6d54fde7ca97fb533269f2b092a368da9..90a01098fb7933be3322699db96213d32fa58881 100644
--- a/libavcodec/wmalosslessdec.c
+++ b/libavcodec/wmalosslessdec.c
@@ -886,7 +886,7 @@ static int decode_subframe(WmallDecodeCtx *s)
 
         s->do_arith_coding    = get_bits1(&s->gb);
         if (s->do_arith_coding) {
-            av_log_missing_feature(s->avctx, "Arithmetic coding", 1);
+            avpriv_request_sample(s->avctx, "Arithmetic coding");
             return AVERROR_PATCHWELCOME;
         }
         s->do_ac_filter       = get_bits1(&s->gb);
@@ -1189,7 +1189,7 @@ static int decode_packet(AVCodecContext *avctx, void *data, int *got_frame_ptr,
         skip_bits(gb, 1);   // Skip seekable_frame_in_packet, currently ununused
         spliced_packet = get_bits1(gb);
         if (spliced_packet)
-            av_log_missing_feature(avctx, "Bitstream splicing", 1);
+            avpriv_request_sample(avctx, "Bitstream splicing");
 
         /* get number of bits that need to be added to the previous frame */
         num_bits_prev_frame = get_bits(gb, s->log2_frame_size);
diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c
index 00fb4e8c85ea9d518a6f2f38b7c39ff437a74f4f..07cc2235ed223481a177fc29a6ed3657e42b1dfb 100644
--- a/libavcodec/wmaprodec.c
+++ b/libavcodec/wmaprodec.c
@@ -314,7 +314,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
     /** get frame len */
     bits = ff_wma_get_frame_len_bits(avctx->sample_rate, 3, s->decode_flags);
     if (bits > WMAPRO_BLOCK_MAX_BITS) {
-        av_log_missing_feature(avctx, "14-bits block sizes", 1);
+        avpriv_request_sample(avctx, "14-bit block sizes");
         return AVERROR_PATCHWELCOME;
     }
     s->samples_per_frame = 1 << bits;
diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c
index 970902b0d88c27c382c33d2e925411943153c457..19f8965a4813b48ae3a0672b1208f13270686e57 100644
--- a/libavcodec/wmavoice.c
+++ b/libavcodec/wmavoice.c
@@ -1763,7 +1763,7 @@ static int synth_superframe(AVCodecContext *ctx, AVFrame *frame,
      * are really WMAPro-in-WMAVoice-superframes. I've never seen those in
      * the wild yet. */
     if (!get_bits1(gb)) {
-        av_log_missing_feature(ctx, "WMAPro-in-WMAVoice", 1);
+        avpriv_request_sample(ctx, "WMAPro-in-WMAVoice");
         return AVERROR_PATCHWELCOME;
     }