From 2a2bbcb05fde486eef76d070f26eecddd4de0ace Mon Sep 17 00:00:00 2001 From: Mike Melanson Date: Thu, 30 Oct 2003 05:40:58 +0000 Subject: revised palette API, courtesy of Roberto Togni (rtogni at freemail.it) Originally committed as revision 2451 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/idcinvideo.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'libavcodec/idcinvideo.c') diff --git a/libavcodec/idcinvideo.c b/libavcodec/idcinvideo.c index d516e39fbf..b3a658296a 100644 --- a/libavcodec/idcinvideo.c +++ b/libavcodec/idcinvideo.c @@ -72,8 +72,6 @@ typedef struct IdcinContext { unsigned char *buf; int size; - unsigned char palette[PALETTE_COUNT * 4]; - hnode_t huff_nodes[256][HUF_TOKENS*2]; int num_huff_nodes[256]; @@ -218,27 +216,11 @@ static int idcin_decode_frame(AVCodecContext *avctx, uint8_t *buf, int buf_size) { IdcinContext *s = (IdcinContext *)avctx->priv_data; - AVPaletteControl *palette_control = - (AVPaletteControl *)avctx->extradata; - int i; - unsigned int *palette32; - int palette_index = 0; - unsigned char r, g, b; + AVPaletteControl *palette_control = avctx->palctrl; s->buf = buf; s->size = buf_size; - if (palette_control->palette_changed) { - palette32 = (unsigned int *)s->palette; - for (i = 0; i < PALETTE_COUNT; i++) { - r = palette_control->palette[palette_index++] * 1; - g = palette_control->palette[palette_index++] * 1; - b = palette_control->palette[palette_index++] * 1; - palette32[i] = (r << 16) | (g << 8) | (b); - } - palette_control->palette_changed = 0; - } - if (s->frame.data[0]) avctx->release_buffer(avctx, &s->frame); @@ -250,7 +232,12 @@ static int idcin_decode_frame(AVCodecContext *avctx, idcin_decode_vlcs(s); /* make the palette available on the way out */ - memcpy(s->frame.data[1], s->palette, PALETTE_COUNT * 4); + memcpy(s->frame.data[1], palette_control->palette, PALETTE_COUNT * 4); + /* If palette changed inform application*/ + if (palette_control->palette_changed) { + palette_control->palette_changed = 0; + s->frame.palette_has_changed = 1; + } *data_size = sizeof(AVFrame); *(AVFrame*)data = s->frame; -- cgit v1.2.3