summaryrefslogtreecommitdiff
path: root/vpx_dsp/arm/vpx_convolve_neon.c
diff options
context:
space:
mode:
authorLinfeng Zhang <linfengz@google.com>2017-08-28 10:35:43 -0700
committerLinfeng Zhang <linfengz@google.com>2017-09-05 15:22:36 -0700
commitd331e7a1c0c59d4055a3bfacd051268ec0832b48 (patch)
tree7309a0384415188af55340224c91d633ac608fbc /vpx_dsp/arm/vpx_convolve_neon.c
parentd49a1a5329ea43968faaf295f7da5f72b28f971e (diff)
downloadlibvpx-d331e7a1c0c59d4055a3bfacd051268ec0832b48.tar
libvpx-d331e7a1c0c59d4055a3bfacd051268ec0832b48.tar.gz
libvpx-d331e7a1c0c59d4055a3bfacd051268ec0832b48.tar.bz2
libvpx-d331e7a1c0c59d4055a3bfacd051268ec0832b48.zip
Remove get_filter_base() and get_filter_offset() in convolve
so that the convolve functions are independent of table alignment. Change-Id: Ieab132a30d72c6e75bbe9473544fbe2cf51541ee
Diffstat (limited to 'vpx_dsp/arm/vpx_convolve_neon.c')
-rw-r--r--vpx_dsp/arm/vpx_convolve_neon.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/vpx_dsp/arm/vpx_convolve_neon.c b/vpx_dsp/arm/vpx_convolve_neon.c
index bdaaff16a..2bf2d890b 100644
--- a/vpx_dsp/arm/vpx_convolve_neon.c
+++ b/vpx_dsp/arm/vpx_convolve_neon.c
@@ -15,8 +15,8 @@
#include "vpx_ports/mem.h"
void vpx_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
- ptrdiff_t dst_stride, const int16_t *filter_x,
- int x_step_q4, const int16_t *filter_y, int y_step_q4,
+ ptrdiff_t dst_stride, const InterpKernel *filter,
+ int x0_q4, int x_step_q4, int y0_q4, int y_step_q4,
int w, int h) {
/* Given our constraints: w <= 64, h <= 64, taps == 8 we can reduce the
* maximum buffer size to 64 * 64 + 7 (+ 1 to make it divisible by 4).
@@ -33,19 +33,19 @@ void vpx_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
* height and filter a multiple of 4 lines. Since this goes in to the temp
* buffer which has lots of extra room and is subsequently discarded this is
* safe if somewhat less than ideal. */
- vpx_convolve8_horiz_neon(src - src_stride * 3, src_stride, temp, w, filter_x,
- x_step_q4, filter_y, y_step_q4, w,
+ vpx_convolve8_horiz_neon(src - src_stride * 3, src_stride, temp, w, filter,
+ x0_q4, x_step_q4, y0_q4, y_step_q4, w,
intermediate_height);
/* Step into the temp buffer 3 lines to get the actual frame data */
- vpx_convolve8_vert_neon(temp + w * 3, w, dst, dst_stride, filter_x, x_step_q4,
- filter_y, y_step_q4, w, h);
+ vpx_convolve8_vert_neon(temp + w * 3, w, dst, dst_stride, filter, x0_q4,
+ x_step_q4, y0_q4, y_step_q4, w, h);
}
void vpx_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
- const int16_t *filter_x, int x_step_q4,
- const int16_t *filter_y, int y_step_q4, int w,
+ const InterpKernel *filter, int x0_q4,
+ int x_step_q4, int y0_q4, int y_step_q4, int w,
int h) {
uint8_t temp[64 * 72];
const int intermediate_height = h + 7;
@@ -56,9 +56,9 @@ void vpx_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride,
/* This implementation has the same issues as above. In addition, we only want
* to average the values after both passes.
*/
- vpx_convolve8_horiz_neon(src - src_stride * 3, src_stride, temp, w, filter_x,
- x_step_q4, filter_y, y_step_q4, w,
+ vpx_convolve8_horiz_neon(src - src_stride * 3, src_stride, temp, w, filter,
+ x0_q4, x_step_q4, y0_q4, y_step_q4, w,
intermediate_height);
- vpx_convolve8_avg_vert_neon(temp + w * 3, w, dst, dst_stride, filter_x,
- x_step_q4, filter_y, y_step_q4, w, h);
+ vpx_convolve8_avg_vert_neon(temp + w * 3, w, dst, dst_stride, filter, x0_q4,
+ x_step_q4, y0_q4, y_step_q4, w, h);
}