From d84a2e7dc06da01fc9f9e7eacfd91f122eb435be Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Thu, 19 May 2016 09:57:23 -0700 Subject: [PATCH] Properly handle the filter extension in highbd setting This commit makes the filter extension in highbd aware of the dual filter and ext-interp experiments to prevent enc/dec mismatch when both experiments are turned on. Change-Id: I11ac1f041bd5f73d61e839d6386d9c5d008da3f7 --- vp10/common/vp10_convolve.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/vp10/common/vp10_convolve.c b/vp10/common/vp10_convolve.c index 6ffb42531..d7e2eaf35 100644 --- a/vp10/common/vp10_convolve.c +++ b/vp10/common/vp10_convolve.c @@ -320,13 +320,17 @@ void vp10_highbd_convolve(const uint8_t *src8, int src_stride, uint8_t *dst8, int temp_stride = MAX_BLOCK_WIDTH; #if CONFIG_DUAL_FILTER - InterpFilterParams filter_params = + InterpFilterParams filter_params_x = vp10_get_interp_filter_params(interp_filter[1 + 2 * ref_idx]); + InterpFilterParams filter_params_y = + vp10_get_interp_filter_params(interp_filter[0 + 2 * ref_idx]); + InterpFilterParams filter_params = filter_params_x; + int filter_size = filter_params_y.taps; #else InterpFilterParams filter_params = vp10_get_interp_filter_params(interp_filter); -#endif int filter_size = filter_params.taps; +#endif int intermediate_height = (((h - 1) * y_step_q4 + subpel_y_q4) >> SUBPEL_BITS) + filter_size; @@ -336,9 +340,7 @@ void vp10_highbd_convolve(const uint8_t *src8, int src_stride, uint8_t *dst8, filter_params, subpel_x_q4, x_step_q4, 0, bd); #if CONFIG_DUAL_FILTER - filter_params = vp10_get_interp_filter_params(interp_filter[2 * ref_idx]); -#else - filter_params = vp10_get_interp_filter_params(interp_filter); + filter_params = filter_params_y; #endif filter_size = filter_params.taps; assert(filter_params.taps <= MAX_FILTER_TAP);