You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Use proper return values in case of missing features
This commit is contained in:
		| @@ -62,7 +62,7 @@ static int aac_adtstoasc_filter(AVBitStreamFilterContext *bsfc, | ||||
|  | ||||
|     if (!hdr.crc_absent && hdr.num_aac_frames > 1) { | ||||
|         av_log_missing_feature(avctx, "Multiple RDBs per frame with CRC", 0); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     buf      += AAC_ADTS_HEADER_SIZE + 2*!hdr.crc_absent; | ||||
| @@ -75,7 +75,7 @@ static int aac_adtstoasc_filter(AVBitStreamFilterContext *bsfc, | ||||
|             init_get_bits(&gb, buf, buf_size * 8); | ||||
|             if (get_bits(&gb, 3) != 5) { | ||||
|                 av_log_missing_feature(avctx, "PCE based channel configuration, where the PCE is not the first syntax element", 0); | ||||
|                 return -1; | ||||
|                 return AVERROR_PATCHWELCOME; | ||||
|             } | ||||
|             init_put_bits(&pb, pce_data, MAX_PCE_SIZE); | ||||
|             pce_size = avpriv_copy_pce_data(&pb, &gb)/8; | ||||
|   | ||||
| @@ -634,7 +634,7 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, | ||||
|  | ||||
|     if (get_bits1(gb)) { // frameLengthFlag | ||||
|         av_log_missing_feature(avctx, "960/120 MDCT window", 1); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     if (get_bits1(gb))       // dependsOnCoreCoder | ||||
| @@ -1635,7 +1635,7 @@ static int decode_ics(AACContext *ac, SingleChannelElement *sce, | ||||
|             return -1; | ||||
|         if (get_bits1(gb)) { | ||||
|             av_log_missing_feature(ac->avctx, "SSR", 1); | ||||
|             return -1; | ||||
|             return AVERROR_PATCHWELCOME; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -2324,7 +2324,7 @@ static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb) | ||||
|     if (size > 0) { | ||||
|         if (hdr_info.num_aac_frames != 1) { | ||||
|             av_log_missing_feature(ac->avctx, "More than one AAC RDB per ADTS frame", 0); | ||||
|             return -1; | ||||
|             return AVERROR_PATCHWELCOME; | ||||
|         } | ||||
|         push_output_configuration(ac); | ||||
|         if (hdr_info.chan_config) { | ||||
| @@ -2609,7 +2609,7 @@ static int latm_decode_audio_specific_config(struct LATMContext *latmctx, | ||||
|     if (config_start_bit % 8) { | ||||
|         av_log_missing_feature(latmctx->aac_ctx.avctx, | ||||
|                                "Non-byte-aligned audio-specific config", 1); | ||||
|         return AVERROR_INVALIDDATA; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|     if (asclen <= 0) | ||||
|         return AVERROR_INVALIDDATA; | ||||
|   | ||||
| @@ -876,7 +876,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk) | ||||
|             if (s->eac3 && get_bits1(gbc)) { | ||||
|                 /* TODO: parse enhanced coupling strategy info */ | ||||
|                 av_log_missing_feature(s->avctx, "Enhanced coupling", 1); | ||||
|                 return -1; | ||||
|                 return AVERROR_PATCHWELCOME; | ||||
|             } | ||||
|  | ||||
|             /* determine which channels are coupled */ | ||||
|   | ||||
| @@ -427,9 +427,9 @@ static int check_specific_config(ALSDecContext *ctx) | ||||
|         }                                               \ | ||||
|     } | ||||
|  | ||||
|     MISSING_ERR(sconf->floating,             "Floating point decoding",     -1); | ||||
|     MISSING_ERR(sconf->rlslms,               "Adaptive RLS-LMS prediction", -1); | ||||
|     MISSING_ERR(sconf->chan_sort,            "Channel sorting",              0); | ||||
|     MISSING_ERR(sconf->floating,  "Floating point decoding",     AVERROR_PATCHWELCOME); | ||||
|     MISSING_ERR(sconf->rlslms,    "Adaptive RLS-LMS prediction", AVERROR_PATCHWELCOME); | ||||
|     MISSING_ERR(sconf->chan_sort, "Channel sorting",             0); | ||||
|  | ||||
|     return error; | ||||
| } | ||||
|   | ||||
| @@ -951,7 +951,7 @@ static int amrnb_decode_frame(AVCodecContext *avctx, void *data, | ||||
|     } | ||||
|     if (p->cur_frame_mode == MODE_DTX) { | ||||
|         av_log_missing_feature(avctx, "dtx mode", 1); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     if (p->cur_frame_mode == MODE_12k2) { | ||||
|   | ||||
| @@ -1111,7 +1111,7 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, | ||||
|  | ||||
|     if (ctx->fr_cur_mode == MODE_SID) { /* Comfort noise frame */ | ||||
|         av_log_missing_feature(avctx, "SID mode", 1); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     ff_amr_bit_reorder((uint16_t *) &ctx->frame, sizeof(AMRWBFrame), | ||||
|   | ||||
| @@ -322,7 +322,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) | ||||
|            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 rates", 1); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|     skip_bits(gbc, 5); // skip bitstream id | ||||
|  | ||||
|   | ||||
| @@ -372,7 +372,7 @@ static inline int decode_subframe(FLACContext *s, int channel) | ||||
|     } | ||||
|     if (bps > 32) { | ||||
|         av_log_missing_feature(s->avctx, "decorrelated bit depth > 32", 0); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
| //FIXME use av_log2 for types | ||||
|   | ||||
| @@ -130,7 +130,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); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|     c->MSS = get_bits1(&gb); | ||||
|     c->frames = 1 << (get_bits(&gb, 3) * 2); | ||||
|   | ||||
| @@ -222,7 +222,7 @@ static av_cold int tta_decode_init(AVCodecContext * avctx) | ||||
|         } | ||||
|         if (s->format == FORMAT_ENCRYPTED) { | ||||
|             av_log_missing_feature(s->avctx, "Encrypted TTA", 0); | ||||
|             return AVERROR(EINVAL); | ||||
|             return AVERROR_PATCHWELCOME; | ||||
|         } | ||||
|         avctx->channels = s->channels = get_bits(&s->gb, 16); | ||||
|         avctx->bits_per_coded_sample = get_bits(&s->gb, 16); | ||||
|   | ||||
| @@ -314,7 +314,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | ||||
|     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); | ||||
|         return AVERROR_INVALIDDATA; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|     s->samples_per_frame = 1 << bits; | ||||
|  | ||||
|   | ||||
| @@ -1763,7 +1763,7 @@ static int synth_superframe(AVCodecContext *ctx, int *got_frame_ptr) | ||||
|      * the wild yet. */ | ||||
|     if (!get_bits1(gb)) { | ||||
|         av_log_missing_feature(ctx, "WMAPro-in-WMAVoice support", 1); | ||||
|         return -1; | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     /* (optional) nr. of samples in superframe; always <= 480 and >= 0 */ | ||||
|   | ||||
| @@ -99,7 +99,7 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, | ||||
|         if (!is_start || !is_finish) { | ||||
|             av_log_missing_feature(s, "RTP-X-QT with payload description " | ||||
|                                       "split over several packets", 1); | ||||
|             return AVERROR(ENOSYS); | ||||
|             return AVERROR_PATCHWELCOME; | ||||
|         } | ||||
|         skip_bits(&gb, 12); // reserved | ||||
|         data_len = get_bits(&gb, 16); | ||||
| @@ -162,7 +162,7 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, | ||||
|  | ||||
|     if (has_packet_info) { | ||||
|         av_log_missing_feature(s, "RTP-X-QT with packet specific info", 1); | ||||
|         return AVERROR(ENOSYS); | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     alen = len - avio_tell(&pb); | ||||
| @@ -225,7 +225,7 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, | ||||
|  | ||||
|     default:  /* unimplemented */ | ||||
|         av_log_missing_feature(NULL, "RTP-X-QT with packing scheme 2", 1); | ||||
|         return AVERROR(ENOSYS); | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user