[FFmpeg-cvslog] msrledec: merge switches

Michael Niedermayer git at videolan.org
Wed Jan 30 16:47:09 CET 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Jan 30 16:41:33 2013 +0100| [d2e0a276d593ded94401e687f60bee266f3e725e] | committer: Michael Niedermayer

msrledec: merge switches

More speedup and fixes 'may be used uninitialized in this function' warnings

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/msrledec.c |   19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/libavcodec/msrledec.c b/libavcodec/msrledec.c
index cc69af8..e969994 100644
--- a/libavcodec/msrledec.c
+++ b/libavcodec/msrledec.c
@@ -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;



More information about the ffmpeg-cvslog mailing list