mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-30 06:50:44 +00:00
Fix VP8 aliasing problems.
Replace * (uint32_t *) buf accesses with AV_WN32A/AV_COPY32.
This commit is contained in:
parent
f81c7ac70a
commit
9d4bdcb714
@ -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];
|
||||
|
Loading…
Reference in New Issue
Block a user