|
|
|
@ -129,7 +129,7 @@ static av_cold int flic_decode_init(AVCodecContext *avctx) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int flic_decode_frame_8BPP(AVCodecContext *avctx, |
|
|
|
|
void *data, int *data_size, |
|
|
|
|
void *data, int *got_frame, |
|
|
|
|
const uint8_t *buf, int buf_size) |
|
|
|
|
{ |
|
|
|
|
FlicDecodeContext *s = avctx->priv_data; |
|
|
|
@ -419,14 +419,14 @@ static int flic_decode_frame_8BPP(AVCodecContext *avctx, |
|
|
|
|
s->new_palette = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
*data_size=sizeof(AVFrame); |
|
|
|
|
*got_frame = 1; |
|
|
|
|
*(AVFrame*)data = s->frame; |
|
|
|
|
|
|
|
|
|
return buf_size; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int flic_decode_frame_15_16BPP(AVCodecContext *avctx, |
|
|
|
|
void *data, int *data_size, |
|
|
|
|
void *data, int *got_frame, |
|
|
|
|
const uint8_t *buf, int buf_size) |
|
|
|
|
{ |
|
|
|
|
/* Note, the only difference between the 15Bpp and 16Bpp */ |
|
|
|
@ -681,14 +681,14 @@ static int flic_decode_frame_15_16BPP(AVCodecContext *avctx, |
|
|
|
|
"and final chunk ptr = %d\n", buf_size, bytestream2_tell(&g2)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*data_size=sizeof(AVFrame); |
|
|
|
|
*got_frame = 1; |
|
|
|
|
*(AVFrame*)data = s->frame; |
|
|
|
|
|
|
|
|
|
return buf_size; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int flic_decode_frame_24BPP(AVCodecContext *avctx, |
|
|
|
|
void *data, int *data_size, |
|
|
|
|
void *data, int *got_frame, |
|
|
|
|
const uint8_t *buf, int buf_size) |
|
|
|
|
{ |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "24Bpp FLC Unsupported due to lack of test files.\n"); |
|
|
|
@ -696,22 +696,22 @@ static int flic_decode_frame_24BPP(AVCodecContext *avctx, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int flic_decode_frame(AVCodecContext *avctx, |
|
|
|
|
void *data, int *data_size, |
|
|
|
|
void *data, int *got_frame, |
|
|
|
|
AVPacket *avpkt) |
|
|
|
|
{ |
|
|
|
|
const uint8_t *buf = avpkt->data; |
|
|
|
|
int buf_size = avpkt->size; |
|
|
|
|
if (avctx->pix_fmt == AV_PIX_FMT_PAL8) { |
|
|
|
|
return flic_decode_frame_8BPP(avctx, data, data_size, |
|
|
|
|
return flic_decode_frame_8BPP(avctx, data, got_frame, |
|
|
|
|
buf, buf_size); |
|
|
|
|
} |
|
|
|
|
else if ((avctx->pix_fmt == AV_PIX_FMT_RGB555) || |
|
|
|
|
(avctx->pix_fmt == AV_PIX_FMT_RGB565)) { |
|
|
|
|
return flic_decode_frame_15_16BPP(avctx, data, data_size, |
|
|
|
|
return flic_decode_frame_15_16BPP(avctx, data, got_frame, |
|
|
|
|
buf, buf_size); |
|
|
|
|
} |
|
|
|
|
else if (avctx->pix_fmt == AV_PIX_FMT_BGR24) { |
|
|
|
|
return flic_decode_frame_24BPP(avctx, data, data_size, |
|
|
|
|
return flic_decode_frame_24BPP(avctx, data, got_frame, |
|
|
|
|
buf, buf_size); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|