]> git.sesse.net Git - ffmpeg/commitdiff
swscale: Set alpha to opaque for internal palettes.
authorJustin Ruggles <justin.ruggles@gmail.com>
Sat, 5 Apr 2014 18:14:30 +0000 (14:14 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sat, 12 Apr 2014 18:07:19 +0000 (14:07 -0400)
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 <baptiste.coudurier@gmail.com>

libswscale/swscale_unscaled.c
tests/ref/fate/targa-conformance-CCM8
tests/ref/fate/targa-conformance-UCM8

index 9e50d48ac3520d09ba1e839c6994fd5d5db6108f..da1bde13b01488069bda0b3373e9bd44ad153348 100644 (file)
@@ -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);
             }
         }
     }
index aad3bfc95514baeb11f62003af2ae41361627ddb..45bb18167bea03d00836d383ed7b0c98829dda6e 100644 (file)
@@ -1,2 +1,2 @@
 #tb 0: 1/25
-0,          0,          0,        1,    65536, 0xcf98bc29
+0,          0,          0,        1,    65536, 0x47e97fe9
index aad3bfc95514baeb11f62003af2ae41361627ddb..45bb18167bea03d00836d383ed7b0c98829dda6e 100644 (file)
@@ -1,2 +1,2 @@
 #tb 0: 1/25
-0,          0,          0,        1,    65536, 0xcf98bc29
+0,          0,          0,        1,    65536, 0x47e97fe9