summaryrefslogtreecommitdiff
path: root/libavcodec/qtrle.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-11-27 00:30:13 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-27 00:30:13 +0100
commit5c15b78e4a47c46de03d5e7291ed19a717f36885 (patch)
treea88ba284818fa1b64b1da37872bb4a60bd66a976 /libavcodec/qtrle.c
parent22cb8e7b3436b6ad12e4e2d588dd8775d2da1684 (diff)
parent7c5ce99bd92fb480b7235cbc9a005f7e6d31f1d7 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: (42 commits) swscale: fix signed overflow in yuv2mono_X_c_template snow: fix integer overflows svq1enc: remove stale altivec-related hack snow: fix signed overflow in byte to 32-bit replication adx: rename ff_adx_decode_header() to avpriv_adx_decode_header() avformat: add CRI ADX format demuxer adx: add an ADX parser. adx: move header decoding to ADX common code adx: calculate the number of blocks in a packet adx: define and use 2 new macro constants BLOCK_SIZE and BLOCK_SAMPLES adx: check for unsupported ADX formats adx: simplify encoding by using put_sbits() adx: calculate correct LPC coeffs adx: use 12-bit coefficients instead of 14-bit to avoid integer overflow adx: simplify adx_decode() by using get_sbits() to read residual samples adx: fix the data offset parsing in adx_decode_header() adx: remove unneeded post-decode channel interleaving adx: validate header values adx: cosmetics: general pretty-printing and comment clean-up adx: remove useless comments ... Conflicts: Changelog libavcodec/cook.c libavcodec/fraps.c libavcodec/nuv.c libavcodec/pthread.c libavcodec/version.h libavformat/Makefile libavformat/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/qtrle.c')
-rw-r--r--libavcodec/qtrle.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/libavcodec/qtrle.c b/libavcodec/qtrle.c
index bf3e5db062..c7a04c0520 100644
--- a/libavcodec/qtrle.c
+++ b/libavcodec/qtrle.c
@@ -332,7 +332,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;
@@ -352,16 +351,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 {
@@ -370,13 +366,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;
}
}
}