[FFmpeg-cvslog] Set alpha of palettes to 0xff.

Baptiste Coudurier git at videolan.org
Wed Apr 27 21:53:27 CEST 2011


ffmpeg | branch: master | Baptiste Coudurier <baptiste.coudurier at gmail.com> | Wed Apr 27 21:49:45 2011 +0200| [dbfdb288c1921eeb9fef5bca20eee33da7fcdd71] | committer: Michael Niedermayer

Set alpha of palettes to 0xff.
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dbfdb288c1921eeb9fef5bca20eee33da7fcdd71
---

 libavcodec/bmp.c     |    2 +-
 libavcodec/targa.c   |    6 +++---
 libavcodec/tiff.c    |    3 ++-
 libswscale/swscale.c |   12 ++++++------
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/libavcodec/bmp.c b/libavcodec/bmp.c
index c02aac6..f4a6b76 100644
--- a/libavcodec/bmp.c
+++ b/libavcodec/bmp.c
@@ -245,7 +245,7 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         buf = buf0 + 14 + ihsize; //palette location
         if((hsize-ihsize-14) < (colors << 2)){ // OS/2 bitmap, 3 bytes per palette entry
             for(i = 0; i < colors; i++)
-                ((uint32_t*)p->data[1])[i] = bytestream_get_le24(&buf);
+                ((uint32_t*)p->data[1])[i] = (0xff<<24) | bytestream_get_le24(&buf);
         }else{
             for(i = 0; i < colors; i++)
                 ((uint32_t*)p->data[1])[i] = bytestream_get_le32(&buf);
diff --git a/libavcodec/targa.c b/libavcodec/targa.c
index 5514304..07173c7 100644
--- a/libavcodec/targa.c
+++ b/libavcodec/targa.c
@@ -189,10 +189,10 @@ static int decode_frame(AVCodecContext *avctx,
             int r, g, b, t;
             int32_t *pal = ((int32_t*)p->data[1]) + first_clr;
             for(t = 0; t < colors; t++){
-                r = *buf++;
-                g = *buf++;
                 b = *buf++;
-                *pal++ = (b << 16) | (g << 8) | r;
+                g = *buf++;
+                r = *buf++;
+                *pal++ = (0xff<<24) | (r << 16) | (g << 8) | b;
             }
             p->palette_has_changed = 1;
         }
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index 8295a4b..d43999b 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -429,7 +429,8 @@ static int tiff_decode_tag(TiffContext *s, const uint8_t *start, const uint8_t *
         bp = buf + count / 3 * off * 2;
         off = (type_sizes[type] - 1) << 3;
         for(i = 0; i < count / 3; i++){
-            j = (tget(&rp, type, s->le) >> off) << 16;
+            j = 0xff << 24;
+            j |= (tget(&rp, type, s->le) >> off) << 16;
             j |= (tget(&gp, type, s->le) >> off) << 8;
             j |= tget(&bp, type, s->le) >> off;
             pal[i] = j;
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 51882e4..54515c8 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1999,7 +1999,7 @@ int sws_scale(SwsContext *c, const uint8_t* const src[], const int srcStride[],
 
     if (usePal(c->srcFormat)) {
         for (i=0; i<256; i++) {
-            int p, r, g, b,y,u,v;
+            int p, r, g, b, y, u, v, a = 0xff;
             if(c->srcFormat == PIX_FMT_PAL8) {
                 p=((const uint32_t*)(src[1]))[i];
                 r= (p>>16)&0xFF;
@@ -2028,33 +2028,33 @@ int sws_scale(SwsContext *c, const uint8_t* const src[], const int srcStride[],
             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) + (a<<24);
 
             switch(c->dstFormat) {
             case PIX_FMT_BGR32:
 #if !HAVE_BIGENDIAN
             case PIX_FMT_RGB24:
 #endif
-                c->pal_rgb[i]=  r + (g<<8) + (b<<16);
+                c->pal_rgb[i]=  r + (g<<8) + (b<<16) + (a<<24);
                 break;
             case PIX_FMT_BGR32_1:
 #if HAVE_BIGENDIAN
             case PIX_FMT_BGR24:
 #endif
-                c->pal_rgb[i]= (r + (g<<8) + (b<<16)) << 8;
+                c->pal_rgb[i]= a + (r<<8) + (g<<16) + (b<<24);
                 break;
             case PIX_FMT_RGB32_1:
 #if HAVE_BIGENDIAN
             case PIX_FMT_RGB24:
 #endif
-                c->pal_rgb[i]= (b + (g<<8) + (r<<16)) << 8;
+                c->pal_rgb[i]= a + (b<<8) + (g<<16) + (r<<24);
                 break;
             case PIX_FMT_RGB32:
 #if !HAVE_BIGENDIAN
             case PIX_FMT_BGR24:
 #endif
             default:
-                c->pal_rgb[i]=  b + (g<<8) + (r<<16);
+                c->pal_rgb[i]=  b + (g<<8) + (r<<16) + (a<<24);
             }
         }
     }



More information about the ffmpeg-cvslog mailing list