msrledec: merge switches
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 30 Jan 2013 15:41:33 +0000 (16:41 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 20 Mar 2013 18:47:03 +0000 (19:47 +0100)
More speedup and fixes 'may be used uninitialized in this function' warnings

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d2e0a276d593ded94401e687f60bee266f3e725e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/msrledec.c

index cc69af8..e969994 100644 (file)
@@ -206,30 +206,24 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic,
             if ((pic->linesize[0] > 0 && output + p1 * (depth >> 3) > output_end) ||
                 (pic->linesize[0] < 0 && output + p1 * (depth >> 3) < output_end))
                 continue;
-            switch(depth){
-            case  8: pix[0] = bytestream2_get_byte(gb);
-                     break;
-            case 16: pix16  = bytestream2_get_le16(gb);
-                     break;
-            case 24: pix[0] = bytestream2_get_byte(gb);
-                     pix[1] = bytestream2_get_byte(gb);
-                     pix[2] = bytestream2_get_byte(gb);
-                     break;
-            case 32: pix32  = bytestream2_get_le32(gb);
-                     break;
-            }
+
             switch(depth){
             case  8:
+                pix[0] = bytestream2_get_byte(gb);
                 for(i = 0; i < p1; i++)
                         *output++ = pix[0];
                 break;
             case 16:
+                pix16  = bytestream2_get_le16(gb);
                 for(i = 0; i < p1; i++) {
                         *(uint16_t*)output = pix16;
                         output += 2;
                 }
                 break;
             case 24:
+                pix[0] = bytestream2_get_byte(gb);
+                pix[1] = bytestream2_get_byte(gb);
+                pix[2] = bytestream2_get_byte(gb);
                 for(i = 0; i < p1; i++) {
                         *output++ = pix[0];
                         *output++ = pix[1];
@@ -237,6 +231,7 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic,
                 }
                 break;
             case 32:
+                pix32  = bytestream2_get_le32(gb);
                 for(i = 0; i < p1; i++) {
                         *(uint32_t*)output = pix32;
                         output += 4;