mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
aasc: 8bit support
Closes #1319. Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
8a57ca5c6a
commit
bd971ddaf4
@ -36,14 +36,29 @@ typedef struct AascContext {
|
||||
AVCodecContext *avctx;
|
||||
GetByteContext gb;
|
||||
AVFrame frame;
|
||||
|
||||
uint32_t palette[AVPALETTE_COUNT];
|
||||
int palette_size;
|
||||
} AascContext;
|
||||
|
||||
static av_cold int aasc_decode_init(AVCodecContext *avctx)
|
||||
{
|
||||
AascContext *s = avctx->priv_data;
|
||||
uint8_t *ptr;
|
||||
int i;
|
||||
|
||||
s->avctx = avctx;
|
||||
switch (avctx->bits_per_coded_sample) {
|
||||
case 8:
|
||||
avctx->pix_fmt = PIX_FMT_PAL8;
|
||||
|
||||
ptr = avctx->extradata;
|
||||
s->palette_size = FFMIN(avctx->extradata_size, AVPALETTE_SIZE);
|
||||
for (i = 0; i < s->palette_size / 4; i++) {
|
||||
s->palette[i] = 0xFFU << 24 | AV_RL32(ptr);
|
||||
ptr += 4;
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
avctx->pix_fmt = PIX_FMT_RGB555;
|
||||
break;
|
||||
@ -112,6 +127,9 @@ static int aasc_decode_frame(AVCodecContext *avctx,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (avctx->pix_fmt == PIX_FMT_PAL8)
|
||||
memcpy(s->frame.data[1], s->palette, s->palette_size);
|
||||
|
||||
*data_size = sizeof(AVFrame);
|
||||
*(AVFrame*)data = s->frame;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user