* commit '0a7005bebd23ade7bb852bce0401af1a8fdbb723': rtpdec_xiph: fix function return type smjpeg: fix type of 'ret' variable in smjpeg_read_packet() mpegvideo: remove write-only variable Use proper return values in case of missing features fate: add avstring test rangecoder-test: Set error message log level to error, instead of debug Conflicts: libavcodec/aacdec.c libavcodec/amrnbdec.c libavcodec/mpegvideo.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n1.1
| @@ -62,7 +62,7 @@ static int aac_adtstoasc_filter(AVBitStreamFilterContext *bsfc, | |||||
| if (!hdr.crc_absent && hdr.num_aac_frames > 1) { | if (!hdr.crc_absent && hdr.num_aac_frames > 1) { | ||||
| av_log_missing_feature(avctx, "Multiple RDBs per frame with CRC", 0); | 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; | 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); | init_get_bits(&gb, buf, buf_size * 8); | ||||
| if (get_bits(&gb, 3) != 5) { | 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); | 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); | init_put_bits(&pb, pce_data, MAX_PCE_SIZE); | ||||
| pce_size = avpriv_copy_pce_data(&pb, &gb)/8; | pce_size = avpriv_copy_pce_data(&pb, &gb)/8; | ||||
| @@ -666,7 +666,7 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, | |||||
| if (get_bits1(gb)) { // frameLengthFlag | if (get_bits1(gb)) { // frameLengthFlag | ||||
| av_log_missing_feature(avctx, "960/120 MDCT window", 1); | av_log_missing_feature(avctx, "960/120 MDCT window", 1); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| if (get_bits1(gb)) // dependsOnCoreCoder | if (get_bits1(gb)) // dependsOnCoreCoder | ||||
| @@ -1670,7 +1670,7 @@ static int decode_ics(AACContext *ac, SingleChannelElement *sce, | |||||
| return -1; | return -1; | ||||
| if (get_bits1(gb)) { | if (get_bits1(gb)) { | ||||
| av_log_missing_feature(ac->avctx, "SSR", 1); | av_log_missing_feature(ac->avctx, "SSR", 1); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| } | } | ||||
| @@ -2730,7 +2730,7 @@ static int latm_decode_audio_specific_config(struct LATMContext *latmctx, | |||||
| if (config_start_bit % 8) { | if (config_start_bit % 8) { | ||||
| av_log_missing_feature(latmctx->aac_ctx.avctx, | av_log_missing_feature(latmctx->aac_ctx.avctx, | ||||
| "Non-byte-aligned audio-specific config", 1); | "Non-byte-aligned audio-specific config", 1); | ||||
| return AVERROR_INVALIDDATA; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| if (asclen <= 0) | if (asclen <= 0) | ||||
| return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
| @@ -876,7 +876,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk) | |||||
| 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); | av_log_missing_feature(s->avctx, "Enhanced coupling", 1); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| /* determine which channels are coupled */ | /* 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; | return error; | ||||
| } | } | ||||
| @@ -969,7 +969,7 @@ static int amrnb_decode_frame(AVCodecContext *avctx, void *data, | |||||
| if (p->cur_frame_mode == MODE_DTX) { | if (p->cur_frame_mode == MODE_DTX) { | ||||
| av_log_missing_feature(avctx, "dtx mode", 0); | av_log_missing_feature(avctx, "dtx mode", 0); | ||||
| av_log(avctx, AV_LOG_INFO, "Note: libopencore_amrnb supports dtx\n"); | av_log(avctx, AV_LOG_INFO, "Note: libopencore_amrnb supports dtx\n"); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| if (p->cur_frame_mode == MODE_12k2) { | if (p->cur_frame_mode == MODE_12k2) { | ||||
| @@ -1130,7 +1130,7 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, | |||||
| 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); | av_log_missing_feature(avctx, "SID mode", 1); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| ff_amr_bit_reorder((uint16_t *) &ctx->frame, sizeof(AMRWBFrame), | 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 | 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 rates", 1); | av_log_missing_feature(s->avctx, "Reduced sampling rates", 1); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| skip_bits(gbc, 5); // skip bitstream id | skip_bits(gbc, 5); // skip bitstream id | ||||
| @@ -370,7 +370,7 @@ static inline int decode_subframe(FLACContext *s, int channel) | |||||
| } | } | ||||
| if (bps > 32) { | if (bps > 32) { | ||||
| av_log_missing_feature(s->avctx, "decorrelated bit depth > 32", 0); | av_log_missing_feature(s->avctx, "decorrelated bit depth > 32", 0); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| //FIXME use av_log2 for types | //FIXME use av_log2 for types | ||||
| @@ -134,7 +134,7 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) | |||||
| 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); | av_log_missing_feature(avctx, "Multichannel MPC SV8", 1); | ||||
| return -1; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| c->MSS = get_bits1(&gb); | c->MSS = get_bits1(&gb); | ||||
| c->frames = 1 << (get_bits(&gb, 3) * 2); | c->frames = 1 << (get_bits(&gb, 3) * 2); | ||||
| @@ -799,7 +799,7 @@ fail: | |||||
| */ | */ | ||||
| av_cold int ff_MPV_common_init(MpegEncContext *s) | av_cold int ff_MPV_common_init(MpegEncContext *s) | ||||
| { | { | ||||
| int i, err; | |||||
| int i; | |||||
| int nb_slices = (HAVE_THREADS && | int nb_slices = (HAVE_THREADS && | ||||
| s->avctx->active_thread_type & FF_THREAD_SLICE) ? | s->avctx->active_thread_type & FF_THREAD_SLICE) ? | ||||
| s->avctx->thread_count : 1; | s->avctx->thread_count : 1; | ||||
| @@ -877,7 +877,7 @@ av_cold int ff_MPV_common_init(MpegEncContext *s) | |||||
| avcodec_get_frame_defaults(&s->picture[i].f); | avcodec_get_frame_defaults(&s->picture[i].f); | ||||
| } | } | ||||
| if ((err = init_context_frame(s))) | |||||
| if (init_context_frame(s)) | |||||
| goto fail; | goto fail; | ||||
| s->parse_context.state = -1; | s->parse_context.state = -1; | ||||
| @@ -116,6 +116,7 @@ int ff_rac_terminate(RangeCoder *c) | |||||
| #define SIZE 10240 | #define SIZE 10240 | ||||
| #include "libavutil/lfg.h" | #include "libavutil/lfg.h" | ||||
| #include "libavutil/log.h" | |||||
| int main(void) | int main(void) | ||||
| { | { | ||||
| @@ -200,7 +200,7 @@ static av_cold int tta_decode_init(AVCodecContext * avctx) | |||||
| } | } | ||||
| if (s->format == FORMAT_ENCRYPTED) { | if (s->format == FORMAT_ENCRYPTED) { | ||||
| av_log_missing_feature(s->avctx, "Encrypted TTA", 0); | 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->channels = s->channels = get_bits(&s->gb, 16); | ||||
| if (s->channels > 1 && s->channels < 9) | if (s->channels > 1 && s->channels < 9) | ||||
| @@ -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); | 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); | av_log_missing_feature(avctx, "14-bits block sizes", 1); | ||||
| return AVERROR_INVALIDDATA; | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| s->samples_per_frame = 1 << bits; | s->samples_per_frame = 1 << bits; | ||||
| @@ -1763,7 +1763,7 @@ static int synth_superframe(AVCodecContext *ctx, int *got_frame_ptr) | |||||
| * the wild yet. */ | * the wild yet. */ | ||||
| if (!get_bits1(gb)) { | if (!get_bits1(gb)) { | ||||
| av_log_missing_feature(ctx, "WMAPro-in-WMAVoice support", 1); | 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 */ | /* (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) { | if (!is_start || !is_finish) { | ||||
| av_log_missing_feature(s, "RTP-X-QT with payload description " | av_log_missing_feature(s, "RTP-X-QT with payload description " | ||||
| "split over several packets", 1); | "split over several packets", 1); | ||||
| return AVERROR(ENOSYS); | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| skip_bits(&gb, 12); // reserved | skip_bits(&gb, 12); // reserved | ||||
| data_len = get_bits(&gb, 16); | data_len = get_bits(&gb, 16); | ||||
| @@ -162,7 +162,7 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, | |||||
| if (has_packet_info) { | if (has_packet_info) { | ||||
| av_log_missing_feature(s, "RTP-X-QT with packet specific info", 1); | av_log_missing_feature(s, "RTP-X-QT with packet specific info", 1); | ||||
| return AVERROR(ENOSYS); | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| alen = len - avio_tell(&pb); | alen = len - avio_tell(&pb); | ||||
| @@ -225,7 +225,7 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, | |||||
| default: /* unimplemented */ | default: /* unimplemented */ | ||||
| av_log_missing_feature(NULL, "RTP-X-QT with packing scheme 2", 1); | av_log_missing_feature(NULL, "RTP-X-QT with packing scheme 2", 1); | ||||
| return AVERROR(ENOSYS); | |||||
| return AVERROR_PATCHWELCOME; | |||||
| } | } | ||||
| } | } | ||||
| @@ -242,7 +242,7 @@ static int get_base128(const uint8_t ** buf, const uint8_t * buf_end) | |||||
| /** | /** | ||||
| * Based off parse_packed_headers in Vorbis RTP | * Based off parse_packed_headers in Vorbis RTP | ||||
| */ | */ | ||||
| static unsigned int | |||||
| static int | |||||
| parse_packed_headers(const uint8_t * packed_headers, | parse_packed_headers(const uint8_t * packed_headers, | ||||
| const uint8_t * packed_headers_end, | const uint8_t * packed_headers_end, | ||||
| AVCodecContext * codec, PayloadContext * xiph_data) | AVCodecContext * codec, PayloadContext * xiph_data) | ||||
| @@ -135,8 +135,9 @@ static int smjpeg_read_header(AVFormatContext *s) | |||||
| static int smjpeg_read_packet(AVFormatContext *s, AVPacket *pkt) | static int smjpeg_read_packet(AVFormatContext *s, AVPacket *pkt) | ||||
| { | { | ||||
| SMJPEGContext *sc = s->priv_data; | SMJPEGContext *sc = s->priv_data; | ||||
| uint32_t dtype, ret, size, timestamp; | |||||
| uint32_t dtype, size, timestamp; | |||||
| int64_t pos; | int64_t pos; | ||||
| int ret; | |||||
| if (s->pb->eof_reached) | if (s->pb->eof_reached) | ||||
| return AVERROR_EOF; | return AVERROR_EOF; | ||||
| @@ -8,6 +8,10 @@ fate-aes: libavutil/aes-test$(EXESUF) | |||||
| fate-aes: CMD = run libavutil/aes-test | fate-aes: CMD = run libavutil/aes-test | ||||
| fate-aes: REF = /dev/null | fate-aes: REF = /dev/null | ||||
| FATE_LIBAVUTIL += fate-avstring | |||||
| fate-avstring: libavutil/avstring-test$(EXESUF) | |||||
| fate-avstring: CMD = run libavutil/avstring-test | |||||
| FATE_LIBAVUTIL += fate-base64 | FATE_LIBAVUTIL += fate-base64 | ||||
| fate-base64: libavutil/base64-test$(EXESUF) | fate-base64: libavutil/base64-test$(EXESUF) | ||||
| fate-base64: CMD = run libavutil/base64-test | fate-base64: CMD = run libavutil/base64-test | ||||
| @@ -0,0 +1,27 @@ | |||||
| Testing av_get_token() | |||||
| |''| -> || + || | |||||
| || -> || + || | |||||
| |:| -> || + |:| | |||||
| |\| -> |\| + || | |||||
| |'| -> || + || | |||||
| | '' :| -> || + |:| | |||||
| | '' '' :| -> | | + |:| | |||||
| |foo '' :| -> |foo | + |:| | |||||
| |'foo'| -> |foo| + || | |||||
| |foo | -> |foo| + || | |||||
| | ' foo ' | -> | foo | + || | |||||
| |foo\| -> |foo\| + || | |||||
| |foo': blah:blah| -> |foo: blah:blah| + || | |||||
| |foo\: blah:blah| -> |foo: blah| + |:blah| | |||||
| |foo'| -> |foo| + || | |||||
| |'foo : ' :blahblah| -> |foo : | + |:blahblah| | |||||
| |\ :blah| -> | | + |:blah| | |||||
| | foo| -> |foo| + || | |||||
| | foo | -> |foo| + || | |||||
| | foo \ | -> |foo | + || | |||||
| |foo ':blah| -> |foo :blah| + || | |||||
| | foo bar : blahblah| -> |foo bar| + |: blahblah| | |||||
| |\f\o\o| -> |foo| + || | |||||
| |'foo : \ \ ' : blahblah| -> |foo : \ \ | + |: blahblah| | |||||
| |'\fo\o:': blahblah| -> |\fo\o:| + |: blahblah| | |||||
| |\'fo\o\:': foo ' :blahblah| -> |'foo:: foo | + |:blahblah| | |||||