From: Ronald S. Bultje Date: Fri, 28 Jan 2011 14:51:34 +0000 (-0500) Subject: Fix VP8 aliasing problems. X-Git-Tag: n0.8~523^2~1004 X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff_plain;h=9d4bdcb714f85b5d90ebf9704784a31c88dfb360;hp=f81c7ac70a7e5e82b0ab0839faf8d22d555efb9d Fix VP8 aliasing problems. Replace * (uint32_t *) buf accesses with AV_WN32A/AV_COPY32. --- diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index 3691f15977..66a7c4dec4 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -1132,9 +1132,9 @@ void intra_predict(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb, linesize = 8; if (!(mb_y + y)) { copy_dst[3] = 127U; - * (uint32_t *) (copy_dst + 4) = 127U * 0x01010101U; + AV_WN32A(copy_dst+4, 127U * 0x01010101U); } else { - * (uint32_t *) (copy_dst + 4) = * (uint32_t *) (ptr+4*x-s->linesize); + AV_COPY32(copy_dst+4, ptr+4*x-s->linesize); if (!(mb_x + x)) { copy_dst[3] = 129U; } else { @@ -1158,10 +1158,10 @@ void intra_predict(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb, } s->hpc.pred4x4[mode](dst, topright, linesize); if (copy) { - * (uint32_t *) (ptr+4*x) = * (uint32_t *) (copy_dst + 12); - * (uint32_t *) (ptr+4*x+s->linesize) = * (uint32_t *) (copy_dst + 20); - * (uint32_t *) (ptr+4*x+s->linesize*2) = * (uint32_t *) (copy_dst + 28); - * (uint32_t *) (ptr+4*x+s->linesize*3) = * (uint32_t *) (copy_dst + 36); + AV_COPY32(ptr+4*x , copy_dst+12); + AV_COPY32(ptr+4*x+s->linesize , copy_dst+20); + AV_COPY32(ptr+4*x+s->linesize*2, copy_dst+28); + AV_COPY32(ptr+4*x+s->linesize*3, copy_dst+36); } nnz = s->non_zero_count_cache[y][x];