diff options
| author | Mike Melanson <mike@multimedia.cx> | 2003-10-30 06:00:19 +0000 |
|---|---|---|
| committer | Mike Melanson <mike@multimedia.cx> | 2003-10-30 06:00:19 +0000 |
| commit | 80800258310fa4b54f6033a80b0f4bdce80c1d0a (patch) | |
| tree | 3b22a8026d4622f0f631f56652055f1b75f28a2f /src/libffmpeg/libavcodec/idcinvideo.c | |
| parent | cb8e9943d18bbacf6b2e99383df39a86f3febc09 (diff) | |
| download | xine-lib-80800258310fa4b54f6033a80b0f4bdce80c1d0a.tar.gz xine-lib-80800258310fa4b54f6033a80b0f4bdce80c1d0a.tar.bz2 | |
deploy revised ffmpeg palette API
CVS patchset: 5641
CVS date: 2003/10/30 06:00:19
Diffstat (limited to 'src/libffmpeg/libavcodec/idcinvideo.c')
| -rw-r--r-- | src/libffmpeg/libavcodec/idcinvideo.c | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/src/libffmpeg/libavcodec/idcinvideo.c b/src/libffmpeg/libavcodec/idcinvideo.c index d516e39fb..b3a658296 100644 --- a/src/libffmpeg/libavcodec/idcinvideo.c +++ b/src/libffmpeg/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; |
