From d9a542ace1b9ca5c0ea6d758127d03d4124b7801 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Sat, 5 Apr 2014 14:14:30 -0400 Subject: [PATCH] swscale: Set alpha to opaque for internal palettes. Fixes conversion of pal8 to rgb formats with alpha. Updated references for 2 FATE tests which previously encoded fully transparent images. Based on a patch by Baptiste Coudurier --- libswscale/swscale_unscaled.c | 10 +++++----- tests/ref/fate/targa-conformance-CCM8 | 2 +- tests/ref/fate/targa-conformance-UCM8 | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index 9e50d48ac3..da1bde13b0 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -1217,33 +1217,33 @@ int attribute_align_arg sws_scale(struct SwsContext *c, y = av_clip_uint8((RY * r + GY * g + BY * b + ( 33 << (RGB2YUV_SHIFT - 1))) >> RGB2YUV_SHIFT); u = av_clip_uint8((RU * r + GU * g + BU * b + (257 << (RGB2YUV_SHIFT - 1))) >> RGB2YUV_SHIFT); v = av_clip_uint8((RV * r + GV * g + BV * b + (257 << (RGB2YUV_SHIFT - 1))) >> RGB2YUV_SHIFT); - c->pal_yuv[i] = y + (u << 8) + (v << 16); + c->pal_yuv[i] = y + (u << 8) + (v << 16) + (0xFFU << 24); switch (c->dstFormat) { case AV_PIX_FMT_BGR32: #if !HAVE_BIGENDIAN case AV_PIX_FMT_RGB24: #endif - c->pal_rgb[i] = r + (g << 8) + (b << 16); + c->pal_rgb[i] = r + (g << 8) + (b << 16) + (0xFFU << 24); break; case AV_PIX_FMT_BGR32_1: #if HAVE_BIGENDIAN case AV_PIX_FMT_BGR24: #endif - c->pal_rgb[i] = (r << 8) + (g << 16) + ((unsigned)b << 24); + c->pal_rgb[i] = 0xFF + (r << 8) + (g << 16) + ((unsigned)b << 24); break; case AV_PIX_FMT_RGB32_1: #if HAVE_BIGENDIAN case AV_PIX_FMT_RGB24: #endif - c->pal_rgb[i] = (b << 8) + (g << 16) + ((unsigned)r << 24); + c->pal_rgb[i] = 0xFF + (b << 8) + (g << 16) + ((unsigned)r << 24); break; case AV_PIX_FMT_RGB32: #if !HAVE_BIGENDIAN case AV_PIX_FMT_BGR24: #endif default: - c->pal_rgb[i] = b + (g << 8) + (r << 16); + c->pal_rgb[i] = b + (g << 8) + (r << 16) + (0xFFU << 24); } } } diff --git a/tests/ref/fate/targa-conformance-CCM8 b/tests/ref/fate/targa-conformance-CCM8 index aad3bfc955..45bb18167b 100644 --- a/tests/ref/fate/targa-conformance-CCM8 +++ b/tests/ref/fate/targa-conformance-CCM8 @@ -1,2 +1,2 @@ #tb 0: 1/25 -0, 0, 0, 1, 65536, 0xcf98bc29 +0, 0, 0, 1, 65536, 0x47e97fe9 diff --git a/tests/ref/fate/targa-conformance-UCM8 b/tests/ref/fate/targa-conformance-UCM8 index aad3bfc955..45bb18167b 100644 --- a/tests/ref/fate/targa-conformance-UCM8 +++ b/tests/ref/fate/targa-conformance-UCM8 @@ -1,2 +1,2 @@ #tb 0: 1/25 -0, 0, 0, 1, 65536, 0xcf98bc29 +0, 0, 0, 1, 65536, 0x47e97fe9