Add short_filter experiment
Reduce the motion interpolation filter taps for inter prediction
blocks with widths or heights smaller than or equal to 4 to alleviate the memory
bandwidth increase.
AWCY HL: 0.01% Y, -0.20% U, -0.29% V (positive number means loss)
Change-Id: Ic454340e20aea2f1aae622336990f24a9e5b54d8
diff --git a/av1/common/convolve.h b/av1/common/convolve.h
index 61f290a..c9f6785 100644
--- a/av1/common/convolve.h
+++ b/av1/common/convolve.h
@@ -64,9 +64,15 @@
}
#endif
-static INLINE void av1_get_convolve_filter_params(
- InterpFilters interp_filters, int avoid_1212, InterpFilterParams *params_x,
- InterpFilterParams *params_y) {
+static INLINE void av1_get_convolve_filter_params(InterpFilters interp_filters,
+ int avoid_1212,
+ InterpFilterParams *params_x,
+ InterpFilterParams *params_y
+#if CONFIG_SHORT_FILTER
+ ,
+ int w, int h
+#endif
+ ) {
#if CONFIG_DUAL_FILTER
InterpFilter filter_x = av1_extract_interp_filter(interp_filters, 1);
InterpFilter filter_y = av1_extract_interp_filter(interp_filters, 0);
@@ -74,9 +80,13 @@
InterpFilter filter_x = av1_extract_interp_filter(interp_filters, 0);
InterpFilter filter_y = av1_extract_interp_filter(interp_filters, 0);
#endif
-
+#if CONFIG_SHORT_FILTER
+ *params_x = av1_get_interp_filter_params_with_block_size(filter_x, w);
+ *params_y = av1_get_interp_filter_params_with_block_size(filter_y, h);
+#else
*params_x = av1_get_interp_filter_params(filter_x);
*params_y = av1_get_interp_filter_params(filter_y);
+#endif
if (avoid_1212) {
#if CONFIG_DUAL_FILTER && USE_EXTRA_FILTER