|
|
|
@ -328,7 +328,6 @@ static void qtrle_decode_32bpp(QtrleContext *s, int stream_ptr, int row_ptr, int |
|
|
|
|
int rle_code; |
|
|
|
|
int pixel_ptr; |
|
|
|
|
int row_inc = s->frame.linesize[0]; |
|
|
|
|
unsigned char a, r, g, b; |
|
|
|
|
unsigned int argb; |
|
|
|
|
unsigned char *rgb = s->frame.data[0]; |
|
|
|
|
int pixel_limit = s->frame.linesize[0] * s->avctx->height; |
|
|
|
@ -347,16 +346,13 @@ static void qtrle_decode_32bpp(QtrleContext *s, int stream_ptr, int row_ptr, int |
|
|
|
|
/* decode the run length code */ |
|
|
|
|
rle_code = -rle_code; |
|
|
|
|
CHECK_STREAM_PTR(4); |
|
|
|
|
a = s->buf[stream_ptr++]; |
|
|
|
|
r = s->buf[stream_ptr++]; |
|
|
|
|
g = s->buf[stream_ptr++]; |
|
|
|
|
b = s->buf[stream_ptr++]; |
|
|
|
|
argb = (a << 24) | (r << 16) | (g << 8) | (b << 0); |
|
|
|
|
argb = AV_RB32(s->buf + stream_ptr); |
|
|
|
|
stream_ptr += 4; |
|
|
|
|
|
|
|
|
|
CHECK_PIXEL_PTR(rle_code * 4); |
|
|
|
|
|
|
|
|
|
while (rle_code--) { |
|
|
|
|
*(unsigned int *)(&rgb[pixel_ptr]) = argb; |
|
|
|
|
AV_WN32A(rgb + pixel_ptr, argb); |
|
|
|
|
pixel_ptr += 4; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
@ -365,13 +361,10 @@ static void qtrle_decode_32bpp(QtrleContext *s, int stream_ptr, int row_ptr, int |
|
|
|
|
|
|
|
|
|
/* copy pixels directly to output */ |
|
|
|
|
while (rle_code--) { |
|
|
|
|
a = s->buf[stream_ptr++]; |
|
|
|
|
r = s->buf[stream_ptr++]; |
|
|
|
|
g = s->buf[stream_ptr++]; |
|
|
|
|
b = s->buf[stream_ptr++]; |
|
|
|
|
argb = (a << 24) | (r << 16) | (g << 8) | (b << 0); |
|
|
|
|
*(unsigned int *)(&rgb[pixel_ptr]) = argb; |
|
|
|
|
pixel_ptr += 4; |
|
|
|
|
argb = AV_RB32(s->buf + stream_ptr); |
|
|
|
|
AV_WN32A(rgb + pixel_ptr, argb); |
|
|
|
|
stream_ptr += 4; |
|
|
|
|
pixel_ptr += 4; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|