| @@ -670,7 +670,7 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, | |||||
| int tags = 0; | int tags = 0; | ||||
| if (get_bits1(gb)) { // frameLengthFlag | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -1660,7 +1660,7 @@ static int decode_ics(AACContext *ac, SingleChannelElement *sce, | |||||
| if ((tns->present = get_bits1(gb)) && decode_tns(ac, tns, gb, ics)) | if ((tns->present = get_bits1(gb)) && decode_tns(ac, tns, gb, ics)) | ||||
| return -1; | return -1; | ||||
| if (get_bits1(gb)) { | if (get_bits1(gb)) { | ||||
| av_log_missing_feature(ac->avctx, "SSR", 1); | |||||
| avpriv_request_sample(ac->avctx, "SSR"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| } | } | ||||
| @@ -2620,8 +2620,8 @@ static int latm_decode_audio_specific_config(struct LATMContext *latmctx, | |||||
| asclen = get_bits_left(gb); | asclen = get_bits_left(gb); | ||||
| if (config_start_bit % 8) { | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| if (asclen <= 0) | if (asclen <= 0) | ||||
| @@ -2675,8 +2675,7 @@ static int read_stream_mux_config(struct LATMContext *latmctx, | |||||
| skip_bits(gb, 6); // numSubFrames | skip_bits(gb, 6); // numSubFrames | ||||
| // numPrograms | // numPrograms | ||||
| if (get_bits(gb, 4)) { // 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -2684,8 +2683,7 @@ static int read_stream_mux_config(struct LATMContext *latmctx, | |||||
| // for each layer (which there is only on in DVB) | // for each layer (which there is only on in DVB) | ||||
| if (get_bits(gb, 3)) { // numLayer | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -927,7 +927,7 @@ static void read_sbr_extension(AACContext *ac, SpectralBandReplication *sbr, | |||||
| } | } | ||||
| break; | break; | ||||
| default: | default: | ||||
| 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 | skip_bits_long(gb, *num_bits_left); // bs_fill_bits | ||||
| *num_bits_left = 0; | *num_bits_left = 0; | ||||
| break; | break; | ||||
| @@ -874,7 +874,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk) | |||||
| /* check for enhanced coupling */ | /* check for enhanced coupling */ | ||||
| if (s->eac3 && get_bits1(gbc)) { | if (s->eac3 && get_bits1(gbc)) { | ||||
| /* TODO: parse enhanced coupling strategy info */ | /* 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -957,7 +957,7 @@ static int amrnb_decode_frame(AVCodecContext *avctx, void *data, | |||||
| return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
| } | } | ||||
| if (p->cur_frame_mode == MODE_DTX) { | if (p->cur_frame_mode == MODE_DTX) { | ||||
| av_log_missing_feature(avctx, "dtx mode", 1); | |||||
| avpriv_request_sample(avctx, "dtx mode"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -1117,7 +1117,7 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, | |||||
| av_log(avctx, AV_LOG_ERROR, "Encountered a bad or corrupted frame\n"); | av_log(avctx, AV_LOG_ERROR, "Encountered a bad or corrupted frame\n"); | ||||
| if (ctx->fr_cur_mode == MODE_SID) { /* Comfort noise frame */ | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -300,7 +300,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) | |||||
| application can select from. each independent stream can also contain | application can select from. each independent stream can also contain | ||||
| dependent streams which are used to add or replace channels. */ | dependent streams which are used to add or replace channels. */ | ||||
| if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { | 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; | return AAC_AC3_PARSE_ERROR_FRAME_TYPE; | ||||
| } else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { | } else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { | ||||
| av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n"); | 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. */ | associated to an independent stream have matching substream id's. */ | ||||
| if (s->substreamid) { | if (s->substreamid) { | ||||
| /* only decode substream with id=0. skip any additional substreams. */ | /* 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; | 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 | 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 | handled like AC-3 DolbyNet, but we cannot be sure until we have a | ||||
| sample which utilizes this feature. */ | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| skip_bits(gbc, 5); // skip bitstream id | 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. */ | 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)); | int block_start_bits = (s->num_blocks-1) * (4 + av_log2(s->frame_size-2)); | ||||
| skip_bits_long(gbc, block_start_bits); | 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 */ | /* syntax state initialization */ | ||||
| @@ -259,11 +259,11 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data, | |||||
| if (s->ver == 2) { | if (s->ver == 2) { | ||||
| skip_bits(&gb, 6); | skip_bits(&gb, 6); | ||||
| if (get_bits1(&gb)) { | if (get_bits1(&gb)) { | ||||
| av_log_missing_feature(avctx, "iframe", 1); | |||||
| avpriv_request_sample(avctx, "iframe"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| if (get_bits1(&gb)) { | if (get_bits1(&gb)) { | ||||
| av_log_missing_feature(avctx, "Custom palette", 1); | |||||
| avpriv_request_sample(avctx, "Custom palette"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| } | } | ||||
| @@ -394,7 +394,7 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data, | |||||
| int row = get_bits(&gb, 8); | int row = get_bits(&gb, 8); | ||||
| av_log(avctx, AV_LOG_DEBUG, "%dx%d zlibprime_curr %dx%d\n", i, j, col, row); | av_log(avctx, AV_LOG_DEBUG, "%dx%d zlibprime_curr %dx%d\n", i, j, col, row); | ||||
| size -= 2; | size -= 2; | ||||
| av_log_missing_feature(avctx, "zlibprime_curr", 1); | |||||
| avpriv_request_sample(avctx, "zlibprime_curr"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| if (!s->blocks && (s->zlibprime_curr || s->zlibprime_prev)) { | if (!s->blocks && (s->zlibprime_curr || s->zlibprime_prev)) { | ||||
| @@ -2884,8 +2884,8 @@ static int h264_set_parameter_from_sps(H264Context *h) | |||||
| h->avctx->has_b_frames = !h->low_delay; | h->avctx->has_b_frames = !h->low_delay; | ||||
| if (h->sps.bit_depth_luma != h->sps.bit_depth_chroma) { | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -389,7 +389,7 @@ static int mimic_decode_frame(AVCodecContext *avctx, void *data, | |||||
| ctx->num_hblocks[i] = width >> (3 + !!i); | ctx->num_hblocks[i] = width >> (3 + !!i); | ||||
| } | } | ||||
| } else if (width != ctx->avctx->width || height != ctx->avctx->height) { | } 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -130,7 +130,7 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) | |||||
| c->maxbands = get_bits(&gb, 5) + 1; | c->maxbands = get_bits(&gb, 5) + 1; | ||||
| channels = get_bits(&gb, 4) + 1; | channels = get_bits(&gb, 4) + 1; | ||||
| if (channels > 2) { | if (channels > 2) { | ||||
| av_log_missing_feature(avctx, "Multichannel MPC SV8", 1); | |||||
| avpriv_request_sample(avctx, "Multichannel MPC SV8"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| c->MSS = get_bits1(&gb); | c->MSS = get_bits1(&gb); | ||||
| @@ -459,7 +459,7 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx) | |||||
| break; | break; | ||||
| default: | default: | ||||
| av_log(s->avctx, AV_LOG_ERROR, "unknown header %X\n", rv->sub_id); | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -402,7 +402,7 @@ static void smc_decode_stream(SmcContext *s) | |||||
| break; | break; | ||||
| case 0xF0: | case 0xF0: | ||||
| av_log_missing_feature(s->avctx, "0xF0 opcode", 1); | |||||
| avpriv_request_sample(s->avctx, "0xF0 opcode"); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -685,7 +685,7 @@ static int tak_decode_frame(AVCodecContext *avctx, void *data, | |||||
| return ret; | return ret; | ||||
| if (s->ti.flags & TAK_FRAME_FLAG_HAS_METADATA) { | if (s->ti.flags & TAK_FRAME_FLAG_HAS_METADATA) { | ||||
| av_log_missing_feature(avctx, "frame metadata", 1); | |||||
| avpriv_request_sample(avctx, "Frame metadata"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| @@ -226,7 +226,7 @@ static inline int tm2_read_header(TM2Context *ctx, const uint8_t *buf) | |||||
| switch (magic) { | switch (magic) { | ||||
| case TM2_OLD_HEADER_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; | return 0; | ||||
| case TM2_NEW_HEADER_MAGIC: | case TM2_NEW_HEADER_MAGIC: | ||||
| return 0; | return 0; | ||||
| @@ -222,7 +222,7 @@ static av_cold int tta_decode_init(AVCodecContext * avctx) | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| if (s->format == FORMAT_ENCRYPTED) { | if (s->format == FORMAT_ENCRYPTED) { | ||||
| av_report_missing_feature(s->avctx, "Encrypted TTA"); | |||||
| avpriv_report_missing_feature(s->avctx, "Encrypted TTA"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| avctx->channels = s->channels = get_bits(&s->gb, 16); | avctx->channels = s->channels = get_bits(&s->gb, 16); | ||||
| @@ -337,7 +337,7 @@ static int decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_size) | |||||
| buf_size -= 7; | buf_size -= 7; | ||||
| if (hscale || vscale) | 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; | s->update_golden = s->update_altref = VP56_FRAME_CURRENT; | ||||
| for (i = 0; i < 4; i++) | for (i = 0; i < 4; i++) | ||||
| @@ -886,7 +886,7 @@ static int decode_subframe(WmallDecodeCtx *s) | |||||
| s->do_arith_coding = get_bits1(&s->gb); | s->do_arith_coding = get_bits1(&s->gb); | ||||
| if (s->do_arith_coding) { | if (s->do_arith_coding) { | ||||
| av_log_missing_feature(s->avctx, "Arithmetic coding", 1); | |||||
| avpriv_request_sample(s->avctx, "Arithmetic coding"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| s->do_ac_filter = get_bits1(&s->gb); | s->do_ac_filter = get_bits1(&s->gb); | ||||
| @@ -1191,7 +1191,7 @@ static int decode_packet(AVCodecContext *avctx, void *data, int *got_frame_ptr, | |||||
| skip_bits(gb, 1); // Skip seekable_frame_in_packet, currently ununused | skip_bits(gb, 1); // Skip seekable_frame_in_packet, currently ununused | ||||
| spliced_packet = get_bits1(gb); | spliced_packet = get_bits1(gb); | ||||
| if (spliced_packet) | 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 */ | /* get number of bits that need to be added to the previous frame */ | ||||
| num_bits_prev_frame = get_bits(gb, s->log2_frame_size); | num_bits_prev_frame = get_bits(gb, s->log2_frame_size); | ||||
| @@ -314,7 +314,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||||
| /** get frame len */ | /** get frame len */ | ||||
| bits = ff_wma_get_frame_len_bits(avctx->sample_rate, 3, s->decode_flags); | bits = ff_wma_get_frame_len_bits(avctx->sample_rate, 3, s->decode_flags); | ||||
| if (bits > WMAPRO_BLOCK_MAX_BITS) { | 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; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||
| s->samples_per_frame = 1 << bits; | s->samples_per_frame = 1 << bits; | ||||
| @@ -1765,7 +1765,7 @@ static int synth_superframe(AVCodecContext *ctx, AVFrame *frame, | |||||
| * are really WMAPro-in-WMAVoice-superframes. I've never seen those in | * are really WMAPro-in-WMAVoice-superframes. I've never seen those in | ||||
| * the wild yet. */ | * the wild yet. */ | ||||
| if (!get_bits1(gb)) { | if (!get_bits1(gb)) { | ||||
| av_log_missing_feature(ctx, "WMAPro-in-WMAVoice", 1); | |||||
| avpriv_request_sample(ctx, "WMAPro-in-WMAVoice"); | |||||
| return AVERROR_PATCHWELCOME; | return AVERROR_PATCHWELCOME; | ||||
| } | } | ||||