* 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"); | av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); | ||||
| return ret; | 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.pict_type = AV_PICTURE_TYPE_I; | ||||
| s->frame.palette_has_changed = 1; | s->frame.palette_has_changed = 1; | ||||
| set_palette((uint32_t *)s->frame.data[1]); | set_palette((uint32_t *)s->frame.data[1]); | ||||
| @@ -30,7 +30,7 @@ | |||||
| #include "mathops.h" | #include "mathops.h" | ||||
| typedef struct WNV1Context{ | |||||
| typedef struct WNV1Context { | |||||
| AVCodecContext *avctx; | AVCodecContext *avctx; | ||||
| AVFrame pic; | AVFrame pic; | ||||
| @@ -38,10 +38,10 @@ typedef struct WNV1Context{ | |||||
| GetBitContext gb; | GetBitContext gb; | ||||
| } WNV1Context; | } 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 | #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); | 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 | else | ||||
| return base_value + ((v - 7)<<w->shift); | |||||
| return base_value + ((v - 7) << w->shift); | |||||
| } | } | ||||
| static int decode_frame(AVCodecContext *avctx, | static int decode_frame(AVCodecContext *avctx, | ||||
| void *data, int *got_frame, | void *data, int *got_frame, | ||||
| AVPacket *avpkt) | AVPacket *avpkt) | ||||
| { | { | ||||
| const uint8_t *buf = avpkt->data; | |||||
| int buf_size = avpkt->size; | |||||
| WNV1Context * const l = avctx->priv_data; | 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; | unsigned char *Y,*U,*V; | ||||
| int i, j, ret; | int i, j, ret; | ||||
| int prev_y = 0, prev_u = 0, prev_v = 0; | 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); | 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"); | av_log(avctx, AV_LOG_ERROR, "Cannot allocate temporary buffer\n"); | ||||
| return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
| } | } | ||||
| if(p->data[0]) | |||||
| if (p->data[0]) | |||||
| avctx->release_buffer(avctx, p); | avctx->release_buffer(avctx, p); | ||||
| p->reference = 0; | p->reference = 0; | ||||
| @@ -93,9 +93,9 @@ static int decode_frame(AVCodecContext *avctx, | |||||
| } | } | ||||
| p->key_frame = 1; | 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) | if (buf[2] >> 4 == 6) | ||||
| l->shift = 2; | l->shift = 2; | ||||
| @@ -136,15 +136,16 @@ static int decode_frame(AVCodecContext *avctx, | |||||
| return buf_size; | 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; | WNV1Context * const l = avctx->priv_data; | ||||
| static VLC_TYPE code_table[1 << CODE_VLC_BITS][2]; | static VLC_TYPE code_table[1 << CODE_VLC_BITS][2]; | ||||
| l->avctx = avctx; | |||||
| l->avctx = avctx; | |||||
| avctx->pix_fmt = AV_PIX_FMT_YUV422P; | avctx->pix_fmt = AV_PIX_FMT_YUV422P; | ||||
| avcodec_get_frame_defaults(&l->pic); | avcodec_get_frame_defaults(&l->pic); | ||||
| code_vlc.table = code_table; | |||||
| code_vlc.table = code_table; | |||||
| code_vlc.table_allocated = 1 << CODE_VLC_BITS; | code_vlc.table_allocated = 1 << CODE_VLC_BITS; | ||||
| init_vlc(&code_vlc, CODE_VLC_BITS, 16, | init_vlc(&code_vlc, CODE_VLC_BITS, 16, | ||||
| &code_tab[0][1], 4, 2, | &code_tab[0][1], 4, 2, | ||||
| @@ -153,7 +154,8 @@ static av_cold int decode_init(AVCodecContext *avctx){ | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static av_cold int decode_end(AVCodecContext *avctx){ | |||||
| static av_cold int decode_end(AVCodecContext *avctx) | |||||
| { | |||||
| WNV1Context * const l = avctx->priv_data; | WNV1Context * const l = avctx->priv_data; | ||||
| AVFrame *pic = &l->pic; | AVFrame *pic = &l->pic; | ||||
| @@ -518,66 +518,65 @@ static int xan_decode_frame(AVCodecContext *avctx, | |||||
| const uint8_t *buf = avpkt->data; | const uint8_t *buf = avpkt->data; | ||||
| int ret, buf_size = avpkt->size; | int ret, buf_size = avpkt->size; | ||||
| XanContext *s = avctx->priv_data; | 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; | 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 | #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 | #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 | #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) { | if (s->palettes_count <= 0) { | ||||
| av_log(s->avctx, AV_LOG_ERROR, "No palette found\n"); | av_log(s->avctx, AV_LOG_ERROR, "No palette found\n"); | ||||
| return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
| @@ -25,7 +25,6 @@ | |||||
| typedef struct { | typedef struct { | ||||
| AVFrame previous_frame; | AVFrame previous_frame; | ||||
| z_stream zstream; | z_stream zstream; | ||||
| int size; | |||||
| } ZeroCodecContext; | } ZeroCodecContext; | ||||
| static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, | 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->pix_fmt = AV_PIX_FMT_UYVY422; | ||||
| avctx->bits_per_raw_sample = 8; | avctx->bits_per_raw_sample = 8; | ||||
| zc->size = avpicture_get_size(avctx->pix_fmt, | |||||
| avctx->width, avctx->height); | |||||
| zstream->zalloc = Z_NULL; | zstream->zalloc = Z_NULL; | ||||
| zstream->zfree = Z_NULL; | zstream->zfree = Z_NULL; | ||||
| zstream->opaque = 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; | return buf_size; | ||||
| } | } | ||||
| /* | |||||
| * | |||||
| * Init zmbv decoder | |||||
| * | |||||
| */ | |||||
| static av_cold int decode_init(AVCodecContext *avctx) | static av_cold int decode_init(AVCodecContext *avctx) | ||||
| { | { | ||||
| ZmbvContext * const c = avctx->priv_data; | ZmbvContext * const c = avctx->priv_data; | ||||
| @@ -655,13 +648,6 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| /* | |||||
| * | |||||
| * Uninit zmbv decoder | |||||
| * | |||||
| */ | |||||
| static av_cold int decode_end(AVCodecContext *avctx) | static av_cold int decode_end(AVCodecContext *avctx) | ||||
| { | { | ||||
| ZmbvContext * const c = avctx->priv_data; | ZmbvContext * const c = avctx->priv_data; | ||||