Make decoding run of pixels in MS RLE saner.
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 6 Dec 2008 09:05:30 +0000 (09:05 +0000)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 6 Dec 2008 09:05:30 +0000 (09:05 +0000)
This is based on patches by Alex Converse and Mans Rullgard
Thread "[PATCH] Fix MSRLE type punning"

Originally committed as revision 16013 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/msrledec.c

index ce3c56d..7d09ed9 100644 (file)
@@ -195,13 +195,12 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic, int de
             }
             pos += p2;
         } else { //Run of pixels
             }
             pos += p2;
         } else { //Run of pixels
-            int pix[4]; //original pixel
+            uint8_t pix[3]; //original pixel
             switch(depth){
             case  8: pix[0] = *src++;
                      break;
             case 16: pix16 = AV_RL16(src);
                      src += 2;
             switch(depth){
             case  8: pix[0] = *src++;
                      break;
             case 16: pix16 = AV_RL16(src);
                      src += 2;
-                     *(uint16_t*)pix = pix16;
                      break;
             case 24: pix[0] = *src++;
                      pix[1] = *src++;
                      break;
             case 24: pix[0] = *src++;
                      pix[1] = *src++;
@@ -209,7 +208,6 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic, int de
                      break;
             case 32: pix32 = AV_RL32(src);
                      src += 4;
                      break;
             case 32: pix32 = AV_RL32(src);
                      src += 4;
-                     *(uint32_t*)pix = pix32;
                      break;
             }
             if (output + p1 * (depth >> 3) > output_end)
                      break;
             }
             if (output + p1 * (depth >> 3) > output_end)