From 4c66af6141a0bb9e3132bc1105da7c9400602e00 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Fri, 5 Oct 2012 19:05:48 +0200 Subject: [PATCH 1/6] rangecoder-test: Set error message log level to error, instead of debug --- libavcodec/rangecoder.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/rangecoder.c b/libavcodec/rangecoder.c index dd09e46f8b..147e58de40 100644 --- a/libavcodec/rangecoder.c +++ b/libavcodec/rangecoder.c @@ -115,6 +115,7 @@ int ff_rac_terminate(RangeCoder *c) #define SIZE 10240 #include "libavutil/lfg.h" +#include "libavutil/log.h" int main(void) { @@ -150,7 +151,7 @@ STOP_TIMER("put_rac") for (i = 0; i < SIZE; i++) { START_TIMER if ((r[i] & 1) != get_rac(&c, state)) - av_log(NULL, AV_LOG_DEBUG, "rac failure at %d\n", i); + av_log(NULL, AV_LOG_ERROR, "rac failure at %d\n", i); STOP_TIMER("get_rac") } From 9e6ea3cef9927be46973c8e972656b4264f8f1f6 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sun, 30 Oct 2011 22:02:10 +0100 Subject: [PATCH 2/6] fate: add avstring test --- tests/fate/libavutil.mak | 4 ++++ tests/ref/fate/avstring | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 tests/ref/fate/avstring diff --git a/tests/fate/libavutil.mak b/tests/fate/libavutil.mak index afb0a2c98b..54f5da3f4f 100644 --- a/tests/fate/libavutil.mak +++ b/tests/fate/libavutil.mak @@ -8,6 +8,10 @@ fate-aes: libavutil/aes-test$(EXESUF) fate-aes: CMD = run libavutil/aes-test 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-base64: libavutil/base64-test$(EXESUF) fate-base64: CMD = run libavutil/base64-test diff --git a/tests/ref/fate/avstring b/tests/ref/fate/avstring new file mode 100644 index 0000000000..bc231e8148 --- /dev/null +++ b/tests/ref/fate/avstring @@ -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| From 717addecad77d85d329a4b502f4098d4912679d7 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Tue, 9 Oct 2012 00:41:34 +0200 Subject: [PATCH 3/6] Use proper return values in case of missing features --- libavcodec/aac_adtstoasc_bsf.c | 4 ++-- libavcodec/aacdec.c | 8 ++++---- libavcodec/ac3dec.c | 2 +- libavcodec/alsdec.c | 6 +++--- libavcodec/amrnbdec.c | 2 +- libavcodec/amrwbdec.c | 2 +- libavcodec/eac3dec.c | 2 +- libavcodec/flacdec.c | 2 +- libavcodec/mpc8.c | 2 +- libavcodec/tta.c | 2 +- libavcodec/wmaprodec.c | 2 +- libavcodec/wmavoice.c | 2 +- libavformat/rtpdec_qt.c | 6 +++--- 13 files changed, 21 insertions(+), 21 deletions(-) diff --git a/libavcodec/aac_adtstoasc_bsf.c b/libavcodec/aac_adtstoasc_bsf.c index a6599345bd..df9a3958db 100644 --- a/libavcodec/aac_adtstoasc_bsf.c +++ b/libavcodec/aac_adtstoasc_bsf.c @@ -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; diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index 859414adc9..4a6d3905f4 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -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; diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index 12770db2de..4336ca5374 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -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 */ diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index 1c3f0cbdb5..ba9f3bba2e 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -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; } diff --git a/libavcodec/amrnbdec.c b/libavcodec/amrnbdec.c index d0ad76c7ea..2cb06a6ead 100644 --- a/libavcodec/amrnbdec.c +++ b/libavcodec/amrnbdec.c @@ -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) { diff --git a/libavcodec/amrwbdec.c b/libavcodec/amrwbdec.c index 18b34cff9b..5cc96ab713 100644 --- a/libavcodec/amrwbdec.c +++ b/libavcodec/amrwbdec.c @@ -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), diff --git a/libavcodec/eac3dec.c b/libavcodec/eac3dec.c index 7072f783e4..626698839d 100644 --- a/libavcodec/eac3dec.c +++ b/libavcodec/eac3dec.c @@ -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 diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c index f3f1b3a283..b39feb679b 100644 --- a/libavcodec/flacdec.c +++ b/libavcodec/flacdec.c @@ -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 diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c index 91e228b07c..0331789bbb 100644 --- a/libavcodec/mpc8.c +++ b/libavcodec/mpc8.c @@ -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); diff --git a/libavcodec/tta.c b/libavcodec/tta.c index 7825c0c980..e6117488dc 100644 --- a/libavcodec/tta.c +++ b/libavcodec/tta.c @@ -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); diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index 1c9c6671e4..50f85e2938 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -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; diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c index 4a7ba6dabc..2ed79a6302 100644 --- a/libavcodec/wmavoice.c +++ b/libavcodec/wmavoice.c @@ -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 */ diff --git a/libavformat/rtpdec_qt.c b/libavformat/rtpdec_qt.c index 5dd1af1bc8..3093132672 100644 --- a/libavformat/rtpdec_qt.c +++ b/libavformat/rtpdec_qt.c @@ -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; } } From 7e76fc528d60bad588bfba82c7c38b3991de48d0 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Thu, 11 Oct 2012 21:51:41 +0100 Subject: [PATCH 4/6] mpegvideo: remove write-only variable Signed-off-by: Mans Rullgard --- libavcodec/mpegvideo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index ff9b865e0a..d6f7af2f4a 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -826,7 +826,7 @@ fail: */ av_cold int ff_MPV_common_init(MpegEncContext *s) { - int i, err; + int i; int nb_slices = (HAVE_THREADS && s->avctx->active_thread_type & FF_THREAD_SLICE) ? s->avctx->thread_count : 1; @@ -913,7 +913,7 @@ av_cold int ff_MPV_common_init(MpegEncContext *s) } if (s->width && s->height) { - if ((err = init_context_frame(s))) + if (init_context_frame(s)) goto fail; s->parse_context.state = -1; From 366484fff1720977b8591e3a90fbef9f4885e53c Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Thu, 11 Oct 2012 21:53:22 +0100 Subject: [PATCH 5/6] smjpeg: fix type of 'ret' variable in smjpeg_read_packet() The 'ret' variable is used for negative error codes so it should be a signed type. Signed-off-by: Mans Rullgard --- libavformat/smjpegdec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/smjpegdec.c b/libavformat/smjpegdec.c index 7764c0f34d..4cbfa2a580 100644 --- a/libavformat/smjpegdec.c +++ b/libavformat/smjpegdec.c @@ -135,8 +135,9 @@ static int smjpeg_read_header(AVFormatContext *s) static int smjpeg_read_packet(AVFormatContext *s, AVPacket *pkt) { SMJPEGContext *sc = s->priv_data; - uint32_t dtype, ret, size, timestamp; + uint32_t dtype, size, timestamp; int64_t pos; + int ret; if (s->pb->eof_reached) return AVERROR_EOF; From 0a7005bebd23ade7bb852bce0401af1a8fdbb723 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Thu, 11 Oct 2012 21:59:12 +0100 Subject: [PATCH 6/6] rtpdec_xiph: fix function return type parse_packed_headers() returns either zero or a negative error code so its return type must be signed. Signed-off-by: Mans Rullgard --- libavformat/rtpdec_xiph.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/rtpdec_xiph.c b/libavformat/rtpdec_xiph.c index dc739eeb38..38f12bbc39 100644 --- a/libavformat/rtpdec_xiph.c +++ b/libavformat/rtpdec_xiph.c @@ -243,7 +243,7 @@ static int get_base128(const uint8_t ** buf, const uint8_t * buf_end) /** * Based off parse_packed_headers in Vorbis RTP */ -static unsigned int +static int parse_packed_headers(const uint8_t * packed_headers, const uint8_t * packed_headers_end, AVCodecContext * codec, PayloadContext * xiph_data)