From 30d62507cd9cc2e5d312af476036c9bce2f2bd00 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 9 Dec 2012 18:55:53 +0100 Subject: mdec: return meaningful error codes. --- libavcodec/mdec.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c index b5ea84c8a9..59bb6bee54 100644 --- a/libavcodec/mdec.c +++ b/libavcodec/mdec.c @@ -68,7 +68,7 @@ static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n) component = (n <= 3 ? 0 : n - 4 + 1); diff = decode_dc(&a->gb, component); if (diff >= 0xffff) - return -1; + return AVERROR_INVALIDDATA; a->last_dc[component] += diff; block[0] = a->last_dc[component] << 3; } @@ -108,7 +108,7 @@ static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n) } if (i > 63) { av_log(a->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y); - return -1; + return AVERROR_INVALIDDATA; } block[j] = level; @@ -121,15 +121,17 @@ static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n) static inline int decode_mb(MDECContext *a, int16_t block[6][64]) { - int i; + int i, ret; const int block_index[6] = { 5, 4, 0, 1, 2, 3 }; a->dsp.clear_blocks(block[0]); for (i = 0; i < 6; i++) { - if (mdec_decode_block_intra(a, block[block_index[i]], block_index[i]) < 0 || - get_bits_left(&a->gb) < 0) - return -1; + if ((ret = mdec_decode_block_intra(a, block[block_index[i]], + block_index[i])) < 0) + return ret; + if (get_bits_left(&a->gb) < 0) + return AVERROR_INVALIDDATA; } return 0; } @@ -163,15 +165,15 @@ static int decode_frame(AVCodecContext *avctx, int buf_size = avpkt->size; AVFrame *picture = data; AVFrame * const p = &a->picture; - int i; + int i, ret; if (p->data[0]) ff_thread_release_buffer(avctx, p); p->reference = 0; - if (ff_thread_get_buffer(avctx, p) < 0) { + if ((ret = ff_thread_get_buffer(avctx, p)) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); - return -1; + return ret; } p->pict_type = AV_PICTURE_TYPE_I; p->key_frame = 1; @@ -195,8 +197,8 @@ static int decode_frame(AVCodecContext *avctx, for (a->mb_x = 0; a->mb_x < a->mb_width; a->mb_x++) { for (a->mb_y = 0; a->mb_y < a->mb_height; a->mb_y++) { - if (decode_mb(a, a->block) < 0) - return -1; + if ((ret = decode_mb(a, a->block)) < 0) + return ret; idct_put(a, a->mb_x, a->mb_y); } -- cgit v1.2.3 From e6da5d215b1f2267bfdbb83028f2c1b63434edad Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 27 Dec 2012 09:01:38 +0100 Subject: mimic: remove a pointless cast. --- libavcodec/mimic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/mimic.c b/libavcodec/mimic.c index 9a4aa3dc53..8ab1c9e985 100644 --- a/libavcodec/mimic.c +++ b/libavcodec/mimic.c @@ -297,7 +297,7 @@ static int decode(MimicContext *ctx, int quality, int num_coeffs, * Flip the buffer upside-down and put it in the YVU order to match the * way Mimic encodes frames. */ -static void prepare_avpic(MimicContext *ctx, AVPicture *dst, AVPicture *src) +static void prepare_avpic(MimicContext *ctx, AVPicture *dst, AVFrame *src) { int i; dst->data[0] = src->data[0] + ( ctx->avctx->height - 1) * src->linesize[0]; @@ -374,7 +374,7 @@ static int mimic_decode_frame(AVCodecContext *avctx, void *data, ctx->next_cur_index = (ctx->cur_index - 1) & 15; prepare_avpic(ctx, &ctx->flipped_ptrs[ctx->cur_index], - (AVPicture*) &ctx->buf_ptrs[ctx->cur_index]); + &ctx->buf_ptrs[ctx->cur_index]); ff_thread_finish_setup(avctx); -- cgit v1.2.3 From aec50f79e7460340a148a3096fe212d67edc2c64 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 3 Jan 2013 17:19:01 +0100 Subject: rawdec: use AVPALETTE_SIZE instead of magic constants. --- libavcodec/rawdec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index 2751f34974..ab93d49e07 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -138,14 +138,15 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, frame->reordered_opaque = avctx->reordered_opaque; frame->pkt_pts = avctx->pkt->pts; - if (buf_size < context->length - (avctx->pix_fmt == AV_PIX_FMT_PAL8 ? 256 * 4 : 0)) + if (buf_size < context->length - (avctx->pix_fmt == AV_PIX_FMT_PAL8 ? + AVPALETTE_SIZE : 0)) return -1; //2bpp and 4bpp raw in avi and mov (yes this is ugly ...) if (context->buffer) { int i; uint8_t *dst = context->buffer; - buf_size = context->length - 256 * 4; + buf_size = context->length - AVPALETTE_SIZE; if (avctx->bits_per_coded_sample == 4) { for (i = 0; 2 * i + 1 < buf_size; i++) { dst[2 * i + 0] = buf[i] >> 4; -- cgit v1.2.3