Browse Source

msrledec: move loop into switch

speeds up code and allows more simplifications

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.2
Michael Niedermayer 12 years ago
parent
commit
dbaae33c2c
1 changed files with 23 additions and 14 deletions
  1. +23
    -14
      libavcodec/msrledec.c

+ 23
- 14
libavcodec/msrledec.c View File

@@ -218,21 +218,30 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic,
case 32: pix32 = bytestream2_get_le32(gb); case 32: pix32 = bytestream2_get_le32(gb);
break; break;
} }
for(i = 0; i < p1; i++) {
switch(depth){
case 8: *output++ = pix[0];
break;
case 16: *(uint16_t*)output = pix16;
output += 2;
break;
case 24: *output++ = pix[0];
*output++ = pix[1];
*output++ = pix[2];
break;
case 32: *(uint32_t*)output = pix32;
output += 4;
break;
switch(depth){
case 8:
for(i = 0; i < p1; i++)
*output++ = pix[0];
break;
case 16:
for(i = 0; i < p1; i++) {
*(uint16_t*)output = pix16;
output += 2;
}
break;
case 24:
for(i = 0; i < p1; i++) {
*output++ = pix[0];
*output++ = pix[1];
*output++ = pix[2];
}
break;
case 32:
for(i = 0; i < p1; i++) {
*(uint32_t*)output = pix32;
output += 4;
} }
break;
} }
pos += p1; pos += p1;
} }


Loading…
Cancel
Save