scaling: Avoid SSSE3 convolution instructions when scaling
The SSE3 convolve functions do not work when scaling is involved. If
either x_step_q4 or y_step_q4 is not 16 scaling will occur and an assert
fails.
This patch creates a C version of av1_convolve, av1_convolve_c. This
function in turn calls all C versions of what av1_convolve calls. New C
versions of these called functions have been created where needed and
the same for the functions they call. This means that when scaling is
enabled no asserts fail. av1_convolve_c is called instead of
av1_convolve when x_step_q4 or y_step_q4 is not 16.
Change-Id: I604d2716e034e23a0553fb7004133d3075514a7a
diff --git a/av1/common/convolve.h b/av1/common/convolve.h
index 471152e..cb6569c 100644
--- a/av1/common/convolve.h
+++ b/av1/common/convolve.h
@@ -86,6 +86,16 @@
const int subpel_x, int xstep, const int subpel_y, int ystep,
ConvolveParams *conv_params);
+void av1_convolve_c(const uint8_t *src, int src_stride, uint8_t *dst,
+ int dst_stride, int w, int h,
+#if CONFIG_DUAL_FILTER
+ const InterpFilter *interp_filter,
+#else
+ const InterpFilter interp_filter,
+#endif
+ const int subpel_x, int xstep, const int subpel_y,
+ int ystep, ConvolveParams *conv_params);
+
#if CONFIG_AOM_HIGHBITDEPTH
void av1_highbd_convolve(const uint8_t *src, int src_stride, uint8_t *dst,
int dst_stride, int w, int h,