* qatar/master: wnv1: cosmetics, reformat xan: remove a trivially true if(). ansi: do not depend on get_buffer() initializing the frame. zerocodec: remove an unused variable. zmbv: remove some pointless comments and empty lines Conflicts: libavcodec/xan.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n1.1
| @@ -353,6 +353,12 @@ static int decode_frame(AVCodecContext *avctx, | |||
| av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); | |||
| return ret; | |||
| } | |||
| if (!avctx->frame_number) { | |||
| for (i=0; i<avctx->height; i++) | |||
| memset(s->frame.data[0]+ i*s->frame.linesize[0], 0, avctx->width); | |||
| memset(s->frame.data[1], 0, AVPALETTE_SIZE); | |||
| } | |||
| s->frame.pict_type = AV_PICTURE_TYPE_I; | |||
| s->frame.palette_has_changed = 1; | |||
| set_palette((uint32_t *)s->frame.data[1]); | |||
| @@ -30,7 +30,7 @@ | |||
| #include "mathops.h" | |||
| typedef struct WNV1Context{ | |||
| typedef struct WNV1Context { | |||
| AVCodecContext *avctx; | |||
| AVFrame pic; | |||
| @@ -38,10 +38,10 @@ typedef struct WNV1Context{ | |||
| GetBitContext gb; | |||
| } WNV1Context; | |||
| static const uint16_t code_tab[16][2]={ | |||
| {0x1FD,9}, {0xFD,8}, {0x7D,7}, {0x3D,6}, {0x1D,5}, {0x0D,4}, {0x005,3}, | |||
| {0x000,1}, | |||
| {0x004,3}, {0x0C,4}, {0x1C,5}, {0x3C,6}, {0x7C,7}, {0xFC,8}, {0x1FC,9}, {0xFF,8} | |||
| static const uint16_t code_tab[16][2] = { | |||
| { 0x1FD, 9 }, { 0xFD, 8 }, { 0x7D, 7 }, { 0x3D, 6 }, { 0x1D, 5 }, { 0x0D, 4 }, { 0x005, 3 }, | |||
| { 0x000, 1 }, | |||
| { 0x004, 3 }, { 0x0C, 4 }, { 0x1C, 5 }, { 0x3C, 6 }, { 0x7C, 7 }, { 0xFC, 8 }, { 0x1FC, 9 }, { 0xFF, 8 } | |||
| }; | |||
| #define CODE_VLC_BITS 9 | |||
| @@ -52,20 +52,20 @@ static inline int wnv1_get_code(WNV1Context *w, int base_value) | |||
| { | |||
| int v = get_vlc2(&w->gb, code_vlc.table, CODE_VLC_BITS, 1); | |||
| if(v==15) | |||
| return ff_reverse[ get_bits(&w->gb, 8 - w->shift) ]; | |||
| if (v == 15) | |||
| return ff_reverse[get_bits(&w->gb, 8 - w->shift)]; | |||
| else | |||
| return base_value + ((v - 7)<<w->shift); | |||
| return base_value + ((v - 7) << w->shift); | |||
| } | |||
| static int decode_frame(AVCodecContext *avctx, | |||
| void *data, int *got_frame, | |||
| AVPacket *avpkt) | |||
| { | |||
| const uint8_t *buf = avpkt->data; | |||
| int buf_size = avpkt->size; | |||
| WNV1Context * const l = avctx->priv_data; | |||
| AVFrame * const p = &l->pic; | |||
| const uint8_t *buf = avpkt->data; | |||
| int buf_size = avpkt->size; | |||
| AVFrame * const p = &l->pic; | |||
| unsigned char *Y,*U,*V; | |||
| int i, j, ret; | |||
| int prev_y = 0, prev_u = 0, prev_v = 0; | |||
| @@ -77,12 +77,12 @@ static int decode_frame(AVCodecContext *avctx, | |||
| } | |||
| rbuf = av_malloc(buf_size + FF_INPUT_BUFFER_PADDING_SIZE); | |||
| if(!rbuf){ | |||
| if (!rbuf) { | |||
| av_log(avctx, AV_LOG_ERROR, "Cannot allocate temporary buffer\n"); | |||
| return AVERROR(ENOMEM); | |||
| } | |||
| if(p->data[0]) | |||
| if (p->data[0]) | |||
| avctx->release_buffer(avctx, p); | |||
| p->reference = 0; | |||
| @@ -93,9 +93,9 @@ static int decode_frame(AVCodecContext *avctx, | |||
| } | |||
| p->key_frame = 1; | |||
| for(i=8; i<buf_size; i++) | |||
| rbuf[i]= ff_reverse[ buf[i] ]; | |||
| init_get_bits(&l->gb, rbuf+8, (buf_size-8)*8); | |||
| for (i = 8; i < buf_size; i++) | |||
| rbuf[i] = ff_reverse[buf[i]]; | |||
| init_get_bits(&l->gb, rbuf + 8, (buf_size - 8) * 8); | |||
| if (buf[2] >> 4 == 6) | |||
| l->shift = 2; | |||
| @@ -136,15 +136,16 @@ static int decode_frame(AVCodecContext *avctx, | |||
| return buf_size; | |||
| } | |||
| static av_cold int decode_init(AVCodecContext *avctx){ | |||
| static av_cold int decode_init(AVCodecContext *avctx) | |||
| { | |||
| WNV1Context * const l = avctx->priv_data; | |||
| static VLC_TYPE code_table[1 << CODE_VLC_BITS][2]; | |||
| l->avctx = avctx; | |||
| l->avctx = avctx; | |||
| avctx->pix_fmt = AV_PIX_FMT_YUV422P; | |||
| avcodec_get_frame_defaults(&l->pic); | |||
| code_vlc.table = code_table; | |||
| code_vlc.table = code_table; | |||
| code_vlc.table_allocated = 1 << CODE_VLC_BITS; | |||
| init_vlc(&code_vlc, CODE_VLC_BITS, 16, | |||
| &code_tab[0][1], 4, 2, | |||
| @@ -153,7 +154,8 @@ static av_cold int decode_init(AVCodecContext *avctx){ | |||
| return 0; | |||
| } | |||
| static av_cold int decode_end(AVCodecContext *avctx){ | |||
| static av_cold int decode_end(AVCodecContext *avctx) | |||
| { | |||
| WNV1Context * const l = avctx->priv_data; | |||
| AVFrame *pic = &l->pic; | |||
| @@ -518,66 +518,65 @@ static int xan_decode_frame(AVCodecContext *avctx, | |||
| const uint8_t *buf = avpkt->data; | |||
| int ret, buf_size = avpkt->size; | |||
| XanContext *s = avctx->priv_data; | |||
| if (avctx->codec->id == AV_CODEC_ID_XAN_WC3) { | |||
| const uint8_t *buf_end = buf + buf_size; | |||
| int tag = 0; | |||
| while (buf_end - buf > 8 && tag != VGA__TAG) { | |||
| unsigned *tmpptr; | |||
| uint32_t new_pal; | |||
| int size; | |||
| int i; | |||
| tag = bytestream_get_le32(&buf); | |||
| size = bytestream_get_be32(&buf); | |||
| if(size < 0) { | |||
| av_log(avctx, AV_LOG_ERROR, "Invalid tag size %d\n", size); | |||
| const uint8_t *buf_end = buf + buf_size; | |||
| int tag = 0; | |||
| while (buf_end - buf > 8 && tag != VGA__TAG) { | |||
| unsigned *tmpptr; | |||
| uint32_t new_pal; | |||
| int size; | |||
| int i; | |||
| tag = bytestream_get_le32(&buf); | |||
| size = bytestream_get_be32(&buf); | |||
| if(size < 0) { | |||
| av_log(avctx, AV_LOG_ERROR, "Invalid tag size %d\n", size); | |||
| return AVERROR_INVALIDDATA; | |||
| } | |||
| size = FFMIN(size, buf_end - buf); | |||
| switch (tag) { | |||
| case PALT_TAG: | |||
| if (size < PALETTE_SIZE) | |||
| return AVERROR_INVALIDDATA; | |||
| } | |||
| size = FFMIN(size, buf_end - buf); | |||
| switch (tag) { | |||
| case PALT_TAG: | |||
| if (size < PALETTE_SIZE) | |||
| return AVERROR_INVALIDDATA; | |||
| if (s->palettes_count >= PALETTES_MAX) | |||
| return AVERROR_INVALIDDATA; | |||
| tmpptr = av_realloc(s->palettes, | |||
| (s->palettes_count + 1) * AVPALETTE_SIZE); | |||
| if (!tmpptr) | |||
| return AVERROR(ENOMEM); | |||
| s->palettes = tmpptr; | |||
| tmpptr += s->palettes_count * AVPALETTE_COUNT; | |||
| for (i = 0; i < PALETTE_COUNT; i++) { | |||
| if (s->palettes_count >= PALETTES_MAX) | |||
| return AVERROR_INVALIDDATA; | |||
| tmpptr = av_realloc(s->palettes, | |||
| (s->palettes_count + 1) * AVPALETTE_SIZE); | |||
| if (!tmpptr) | |||
| return AVERROR(ENOMEM); | |||
| s->palettes = tmpptr; | |||
| tmpptr += s->palettes_count * AVPALETTE_COUNT; | |||
| for (i = 0; i < PALETTE_COUNT; i++) { | |||
| #if RUNTIME_GAMMA | |||
| int r = gamma_corr(*buf++); | |||
| int g = gamma_corr(*buf++); | |||
| int b = gamma_corr(*buf++); | |||
| int r = gamma_corr(*buf++); | |||
| int g = gamma_corr(*buf++); | |||
| int b = gamma_corr(*buf++); | |||
| #else | |||
| int r = gamma_lookup[*buf++]; | |||
| int g = gamma_lookup[*buf++]; | |||
| int b = gamma_lookup[*buf++]; | |||
| int r = gamma_lookup[*buf++]; | |||
| int g = gamma_lookup[*buf++]; | |||
| int b = gamma_lookup[*buf++]; | |||
| #endif | |||
| *tmpptr++ = (0xFFU << 24) | (r << 16) | (g << 8) | b; | |||
| } | |||
| s->palettes_count++; | |||
| break; | |||
| case SHOT_TAG: | |||
| if (size < 4) | |||
| return AVERROR_INVALIDDATA; | |||
| new_pal = bytestream_get_le32(&buf); | |||
| if (new_pal < s->palettes_count) { | |||
| s->cur_palette = new_pal; | |||
| } else | |||
| av_log(avctx, AV_LOG_ERROR, "Invalid palette selected\n"); | |||
| break; | |||
| case VGA__TAG: | |||
| break; | |||
| default: | |||
| buf += size; | |||
| break; | |||
| *tmpptr++ = (0xFFU << 24) | (r << 16) | (g << 8) | b; | |||
| } | |||
| s->palettes_count++; | |||
| break; | |||
| case SHOT_TAG: | |||
| if (size < 4) | |||
| return AVERROR_INVALIDDATA; | |||
| new_pal = bytestream_get_le32(&buf); | |||
| if (new_pal < s->palettes_count) { | |||
| s->cur_palette = new_pal; | |||
| } else | |||
| av_log(avctx, AV_LOG_ERROR, "Invalid palette selected\n"); | |||
| break; | |||
| case VGA__TAG: | |||
| break; | |||
| default: | |||
| buf += size; | |||
| break; | |||
| } | |||
| buf_size = buf_end - buf; | |||
| } | |||
| buf_size = buf_end - buf; | |||
| if (s->palettes_count <= 0) { | |||
| av_log(s->avctx, AV_LOG_ERROR, "No palette found\n"); | |||
| return AVERROR_INVALIDDATA; | |||
| @@ -25,7 +25,6 @@ | |||
| typedef struct { | |||
| AVFrame previous_frame; | |||
| z_stream zstream; | |||
| int size; | |||
| } ZeroCodecContext; | |||
| static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, | |||
| @@ -136,9 +135,6 @@ static av_cold int zerocodec_decode_init(AVCodecContext *avctx) | |||
| avctx->pix_fmt = AV_PIX_FMT_UYVY422; | |||
| avctx->bits_per_raw_sample = 8; | |||
| zc->size = avpicture_get_size(avctx->pix_fmt, | |||
| avctx->width, avctx->height); | |||
| zstream->zalloc = Z_NULL; | |||
| zstream->zfree = Z_NULL; | |||
| zstream->opaque = Z_NULL; | |||
| @@ -608,13 +608,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac | |||
| return buf_size; | |||
| } | |||
| /* | |||
| * | |||
| * Init zmbv decoder | |||
| * | |||
| */ | |||
| static av_cold int decode_init(AVCodecContext *avctx) | |||
| { | |||
| ZmbvContext * const c = avctx->priv_data; | |||
| @@ -655,13 +648,6 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
| return 0; | |||
| } | |||
| /* | |||
| * | |||
| * Uninit zmbv decoder | |||
| * | |||
| */ | |||
| static av_cold int decode_end(AVCodecContext *avctx) | |||
| { | |||
| ZmbvContext * const c = avctx->priv_data; | |||