diff options
Diffstat (limited to 'vp8/common/reconintra4x4.c')
-rw-r--r-- | vp8/common/reconintra4x4.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/vp8/common/reconintra4x4.c b/vp8/common/reconintra4x4.c index ef1afa8cb..07c922333 100644 --- a/vp8/common/reconintra4x4.c +++ b/vp8/common/reconintra4x4.c @@ -15,6 +15,8 @@ #include "vp8_rtcd.h" #include "blockd.h" #include "reconintra4x4.h" +#include "vp8/common/common.h" +#include "vpx_ports/mem.h" typedef void (*intra_pred_fn)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left); @@ -38,8 +40,19 @@ void vp8_intra4x4_predict(unsigned char *above, unsigned char *yleft, int left_stride, B_PREDICTION_MODE b_mode, unsigned char *dst, int dst_stride, unsigned char top_left) { - unsigned char Left[4]; unsigned char Aboveb[12], *Above = Aboveb + 4; +#if HAVE_NEON + // Neon intrinsics are unable to load 32 bits, or 4 8 bit values. Instead, it + // over reads but does not use the extra 4 values. + unsigned char Left[8]; +#if VPX_WITH_ASAN + // Silence an 'uninitialized read' warning. Although uninitialized values are + // indeed read, they are not used. + vp8_zero_array(Left, 8); +#endif // VPX_WITH_ASAN +#else + unsigned char Left[4]; +#endif // HAVE_NEON Left[0] = yleft[0]; Left[1] = yleft[left_stride]; |