changeset 9298:9698f0d03ed9 libavcodec

Avoid code duplication by using ?: and array indexing instead of if..else
author reimar
date Tue, 31 Mar 2009 13:21:10 +0000
parents 493f6d65db83
children 1c7fe87b1674
files interplayvideo.c
diffstat 1 files changed, 14 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/interplayvideo.c	Tue Mar 31 12:57:03 2009 +0000
+++ b/interplayvideo.c	Tue Mar 31 13:21:10 2009 +0000
@@ -197,16 +197,16 @@
 static int ipvideo_decode_block_opcode_0x7(IpvideoContext *s)
 {
     int x, y;
-    unsigned char P0, P1;
+    unsigned char P[2];
     unsigned int flags;
 
     /* 2-color encoding */
     CHECK_STREAM_PTR(2);
 
-    P0 = *s->stream_ptr++;
-    P1 = *s->stream_ptr++;
+    P[0] = *s->stream_ptr++;
+    P[1] = *s->stream_ptr++;
 
-    if (P0 <= P1) {
+    if (P[0] <= P[1]) {
 
         /* need 8 more bytes from the stream */
         CHECK_STREAM_PTR(8);
@@ -214,10 +214,7 @@
         for (y = 0; y < 8; y++) {
             flags = *s->stream_ptr++;
             for (x = 0x01; x <= 0x80; x <<= 1) {
-                if (flags & x)
-                    *s->pixel_ptr++ = P1;
-                else
-                    *s->pixel_ptr++ = P0;
+                *s->pixel_ptr++ = P[!!(flags & x)];
             }
             s->pixel_ptr += s->line_inc;
         }
@@ -230,17 +227,10 @@
         flags = bytestream_get_le16(&s->stream_ptr);
         for (y = 0; y < 8; y += 2) {
             for (x = 0; x < 8; x += 2, flags >>= 1) {
-                if (flags & 1) {
                     s->pixel_ptr[x                ] =
                     s->pixel_ptr[x + 1            ] =
                     s->pixel_ptr[x +     s->stride] =
-                    s->pixel_ptr[x + 1 + s->stride] = P1;
-                } else {
-                    s->pixel_ptr[x                ] =
-                    s->pixel_ptr[x + 1            ] =
-                    s->pixel_ptr[x +     s->stride] =
-                    s->pixel_ptr[x + 1 + s->stride] = P0;
-                }
+                    s->pixel_ptr[x + 1 + s->stride] = P[flags & 1];
             }
             s->pixel_ptr += s->stride * 2;
         }
@@ -307,10 +297,7 @@
                     P1 = P[lower_half + 5];
                 }
 
-                if (flags & 1)
-                    *s->pixel_ptr++ = P1;
-                else
-                    *s->pixel_ptr++ = P0;
+                *s->pixel_ptr++ = flags & 1 ? P1 : P0;
             }
             s->pixel_ptr += s->line_inc;
         }
@@ -356,10 +343,7 @@
                         P1 = P[3];
                     }
 
-                    if (flags & 1)
-                        *s->pixel_ptr++ = P1;
-                    else
-                        *s->pixel_ptr++ = P0;
+                    *s->pixel_ptr++ = flags & 1 ? P1 : P0;
                 }
                 s->pixel_ptr += s->line_inc;
             }
@@ -382,10 +366,7 @@
 
                 for (bitmask = 0x01; bitmask <= 0x80; bitmask <<= 1) {
 
-                    if (flags & bitmask)
-                        *s->pixel_ptr++ = P1;
-                    else
-                        *s->pixel_ptr++ = P0;
+                    *s->pixel_ptr++ = flags & bitmask ? P1 : P0;
                 }
                 s->pixel_ptr += s->line_inc;
             }
@@ -667,22 +648,17 @@
 static int ipvideo_decode_block_opcode_0xF(IpvideoContext *s)
 {
     int x, y;
-    unsigned char sample0, sample1;
+    unsigned char sample[2];
 
     /* dithered encoding */
     CHECK_STREAM_PTR(2);
-    sample0 = *s->stream_ptr++;
-    sample1 = *s->stream_ptr++;
+    sample[0] = *s->stream_ptr++;
+    sample[1] = *s->stream_ptr++;
 
     for (y = 0; y < 8; y++) {
         for (x = 0; x < 8; x += 2) {
-            if (y & 1) {
-                *s->pixel_ptr++ = sample1;
-                *s->pixel_ptr++ = sample0;
-            } else {
-                *s->pixel_ptr++ = sample0;
-                *s->pixel_ptr++ = sample1;
-            }
+            *s->pixel_ptr++ = sample[  y & 1 ];
+            *s->pixel_ptr++ = sample[!(y & 1)];
         }
         s->pixel_ptr += s->line_inc;
     }