summaryrefslogtreecommitdiff
path: root/libavcodec/interplayvideo.c
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-03-31 13:21:10 +0000
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-03-31 13:21:10 +0000
commit9be06a0ed185be83af07cbf7d2b13beff185f17a (patch)
tree1248c1edd7fb99dbd7b2a4a2002c79e8daf51259 /libavcodec/interplayvideo.c
parent32eea24e9ac2736f07321292d4f1ba72ecbe7378 (diff)
Avoid code duplication by using ?: and array indexing instead of if..else
Originally committed as revision 18262 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/interplayvideo.c')
-rw-r--r--libavcodec/interplayvideo.c52
1 files changed, 14 insertions, 38 deletions
diff --git a/libavcodec/interplayvideo.c b/libavcodec/interplayvideo.c
index 6cdca28cf9..a685aca023 100644
--- a/libavcodec/interplayvideo.c
+++ b/libavcodec/interplayvideo.c
@@ -197,16 +197,16 @@ static int ipvideo_decode_block_opcode_0x6(IpvideoContext *s)
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 @@ static int ipvideo_decode_block_opcode_0x7(IpvideoContext *s)
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 @@ static int ipvideo_decode_block_opcode_0x7(IpvideoContext *s)
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 @@ static int ipvideo_decode_block_opcode_0x8(IpvideoContext *s)
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 @@ static int ipvideo_decode_block_opcode_0x8(IpvideoContext *s)
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 @@ static int ipvideo_decode_block_opcode_0x8(IpvideoContext *s)
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_0xE(IpvideoContext *s)
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;
}