Hi! Attached patch fixes the colours for the sample in ticket #5611.
Please comment, Carl Eugen
From 7af0c224f5c0fd8dec095ba5333a87257ffccd85 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos <ceho...@ag.or.at> Date: Mon, 19 Sep 2016 19:12:12 +0200 Subject: [PATCH] lavc/rscc: Support pal8 in rscc. Fixes the colours for the sample in ticket #5611. --- libavcodec/rscc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/libavcodec/rscc.c b/libavcodec/rscc.c index 3b3703c..6d4b5af 100644 --- a/libavcodec/rscc.c +++ b/libavcodec/rscc.c @@ -31,7 +31,7 @@ * and it can be deflated or not. Similarly, pixel data comes after the header * and a variable size value, and it can be deflated or just raw. * - * Supports: GRAY8, BGRA, BGR24, RGB555, RGB8 + * Supports: PAL8, BGRA, BGR24, RGB555, RGB8 */ #include <stdint.h> @@ -58,6 +58,8 @@ typedef struct RsccContext { Tile *tiles; unsigned int tiles_size; int component_size; + uint32_t pal[AVPALETTE_COUNT]; + int pal_size; /* zlib interaction */ uint8_t *inflated_buf; @@ -86,10 +88,18 @@ static av_cold int rscc_init(AVCodecContext *avctx) avctx->pix_fmt = AV_PIX_FMT_BGRA; ctx->component_size = 4; } else if (avctx->codec_tag == MKTAG('R', 'S', 'C', 'C')) { + int i; + uint8_t *pal; ctx->component_size = avctx->bits_per_coded_sample / 8; switch (avctx->bits_per_coded_sample) { case 8: - avctx->pix_fmt = AV_PIX_FMT_GRAY8; + avctx->pix_fmt = AV_PIX_FMT_PAL8; + pal = avctx->extradata; + ctx->pal_size = FFMIN(avctx->extradata_size, AVPALETTE_SIZE); + for (i = 0; i < ctx->pal_size / 4; i++) { + ctx->pal[i] = 0xFFU << 24 | AV_RL32(pal); + pal += 4; + } break; case 16: avctx->pix_fmt = AV_PIX_FMT_RGB555LE; @@ -308,6 +318,8 @@ static int rscc_decode_frame(AVCodecContext *avctx, void *data, } else { frame->pict_type = AV_PICTURE_TYPE_P; } + if (avctx->pix_fmt == AV_PIX_FMT_PAL8) + memcpy(frame->data[1], ctx->pal, ctx->pal_size); *got_frame = 1; end: -- 1.7.10.4
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel