unsigned char* decomp_buf;
int height;
z_stream zstream;
+
+ uint32_t pal[256];
} CamtasiaContext;
/*
int buf_size = avpkt->size;
CamtasiaContext * const c = avctx->priv_data;
const unsigned char *encoded = buf;
- unsigned char *outptr;
int zret; // Zlib return code
int len = buf_size;
return -1;
}
- outptr = c->pic.data[0]; // Output image pointer
-
zret = inflateReset(&(c->zstream));
if (zret != Z_OK) {
av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret);
/* make the palette available on the way out */
if (c->avctx->pix_fmt == PIX_FMT_PAL8) {
- memcpy(c->pic.data[1], c->avctx->palctrl->palette, AVPALETTE_SIZE);
- if (c->avctx->palctrl->palette_changed) {
+ const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
+
+ if (pal) {
c->pic.palette_has_changed = 1;
- c->avctx->palctrl->palette_changed = 0;
+ memcpy(c->pal, pal, AVPALETTE_SIZE);
}
+ memcpy(c->pic.data[1], c->pal, AVPALETTE_SIZE);
}
*data_size = sizeof(AVFrame);
c->height = avctx->height;
+ avcodec_get_frame_defaults(&c->pic);
// Needed if zlib unused or init aborted before inflateInit
memset(&(c->zstream), 0, sizeof(z_stream));
switch(avctx->bits_per_coded_sample){