hnode huff_nodes[256][HUF_TOKENS*2];
int num_huff_nodes[256];
+ uint32_t pal[256];
} IdcinContext;
/*
huff_build_tree(s, i);
}
+ avcodec_get_frame_defaults(&s->frame);
s->frame.data[0] = NULL;
return 0;
const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size;
IdcinContext *s = avctx->priv_data;
- AVPaletteControl *palette_control = avctx->palctrl;
+ const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
s->buf = buf;
s->size = buf_size;
idcin_decode_vlcs(s);
- /* make the palette available on the way out */
- 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;
+ if (pal) {
s->frame.palette_has_changed = 1;
+ memcpy(s->pal, pal, AVPALETTE_SIZE);
}
+ /* make the palette available on the way out */
+ memcpy(s->frame.data[1], s->pal, AVPALETTE_SIZE);
*data_size = sizeof(AVFrame);
*(AVFrame*)data = s->frame;