1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-24 13:56:33 +02:00

Make LucasArts Smush SANM palette opaque.

Reviewed-by: Paul B Mahol
This commit is contained in:
Carl Eugen Hoyos 2012-06-26 09:52:10 +02:00
parent c77bcbbb32
commit 6eff277284

View File

@ -283,7 +283,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
ctx->subversion = AV_RL16(avctx->extradata); ctx->subversion = AV_RL16(avctx->extradata);
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
ctx->pal[i] = AV_RL32(avctx->extradata + 2 + i * 4); ctx->pal[i] = 0xFF << 24 | AV_RL32(avctx->extradata + 2 + i * 4);
} }
return 0; return 0;
@ -1163,7 +1163,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
ctx->pal[i] = bytestream2_get_be24u(&ctx->gb); ctx->pal[i] = 0xFF << 24 | bytestream2_get_be24u(&ctx->gb);
break; break;
case MKBETAG('F', 'O', 'B', 'J'): case MKBETAG('F', 'O', 'B', 'J'):
if (size < 16) if (size < 16)
@ -1181,7 +1181,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
int t = (ctx->pal[i] >> (16 - j * 8)) & 0xFF; int t = (ctx->pal[i] >> (16 - j * 8)) & 0xFF;
tmp[j] = av_clip_uint8((t * 129 + ctx->delta_pal[i * 3 + j]) >> 7); tmp[j] = av_clip_uint8((t * 129 + ctx->delta_pal[i * 3 + j]) >> 7);
} }
ctx->pal[i] = AV_RB24(tmp); ctx->pal[i] = 0xFF << 24 | AV_RB24(tmp);
} }
} else { } else {
if (size < 768 * 2 + 4) { if (size < 768 * 2 + 4) {
@ -1194,7 +1194,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
ctx->delta_pal[i] = bytestream2_get_le16u(&ctx->gb); ctx->delta_pal[i] = bytestream2_get_le16u(&ctx->gb);
if (size >= 768 * 5 + 4) { if (size >= 768 * 5 + 4) {
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
ctx->pal[i] = bytestream2_get_be24u(&ctx->gb); ctx->pal[i] = 0xFF << 24 | bytestream2_get_be24u(&ctx->gb);
} else { } else {
memset(ctx->pal, 0, sizeof(ctx->pal)); memset(ctx->pal, 0, sizeof(ctx->pal));
} }