diff options
author | Peter Ross <pross@xvid.org> | 2019-06-21 00:52:31 +0300 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2019-10-30 12:06:38 +0300 |
commit | fd172185580c1ccdcfb90bbfdb59fa806fad3117 (patch) | |
tree | 97743b09c37d6cecc1f231e31800fcbe1eb80d15 /libavcodec/vp3dsp.h | |
parent | d3dee676b8a8ab6752c599e25c9b5461f06a3959 (diff) |
vp4: prevent unaligned memory access in loop filter
VP4 applies a loop filter during motion compensation, causing the block offset
will often by unaligned. This produces a bus error on some platforms, namely
ARMv7 NEON.
This patch adds a unaligned version of the loop filter function pointer
to VP3DSPContext.
Reported-by: Mike Melanson <mike@multimedia.cx>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/vp3dsp.h')
-rw-r--r-- | libavcodec/vp3dsp.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libavcodec/vp3dsp.h b/libavcodec/vp3dsp.h index 32b2cad0ef..3b849ec05d 100644 --- a/libavcodec/vp3dsp.h +++ b/libavcodec/vp3dsp.h @@ -43,6 +43,8 @@ typedef struct VP3DSPContext { void (*idct_dc_add)(uint8_t *dest, ptrdiff_t stride, int16_t *block); void (*v_loop_filter)(uint8_t *src, ptrdiff_t stride, int *bounding_values); void (*h_loop_filter)(uint8_t *src, ptrdiff_t stride, int *bounding_values); + void (*v_loop_filter_unaligned)(uint8_t *src, ptrdiff_t stride, int *bounding_values); + void (*h_loop_filter_unaligned)(uint8_t *src, ptrdiff_t stride, int *bounding_values); } VP3DSPContext; void ff_vp3dsp_v_loop_filter_12(uint8_t *first_pixel, ptrdiff_t stride, int *bounding_values); |