Browse Source

aasc: 8bit support

Closes #1319.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
tags/n1.0
Paul B Mahol 13 years ago
parent
commit
bd971ddaf4
1 changed files with 18 additions and 0 deletions
  1. +18
    -0
      libavcodec/aasc.c

+ 18
- 0
libavcodec/aasc.c View File

@@ -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…
Cancel
Save