Add compound_round experiment
This experiment extracts the post compound rounding feature
from convolve_round experiment
lowres
convolve_round -1.493%
compound_round only -0.874%
Change-Id: I084cf10b5155edd408848e44681f8af66b803724
diff --git a/av1/common/convolve.c b/av1/common/convolve.c
index b98bd95..c15c234 100644
--- a/av1/common/convolve.c
+++ b/av1/common/convolve.c
@@ -230,8 +230,13 @@
for (k = 0; k < filter_params_x->taps; ++k) {
sum += x_filter[k] * src_horiz[y * src_stride + x - fo_horiz + k];
}
+#if CONFIG_COMPOUND_ROUND
+ im_block[y * im_stride + x] =
+ clip_pixel(ROUND_POWER_OF_TWO_SIGNED(sum, conv_params->round_0));
+#else
im_block[y * im_stride + x] =
ROUND_POWER_OF_TWO_SIGNED(sum, conv_params->round_0);
+#endif
}
}
diff --git a/av1/common/convolve.h b/av1/common/convolve.h
index 41415c2..4a4dd8c 100644
--- a/av1/common/convolve.h
+++ b/av1/common/convolve.h
@@ -64,7 +64,11 @@
ConvolveParams conv_params;
conv_params.ref = ref;
conv_params.round = CONVOLVE_OPT_NO_ROUND;
+#if CONFIG_COMPOUND_ROUND
+ conv_params.round_0 = FILTER_BITS;
+#else
conv_params.round_0 = 5;
+#endif
conv_params.round_1 = 0;
conv_params.dst = dst;
conv_params.dst_stride = dst_stride;
diff --git a/configure b/configure
index 1bba82a..8d757cb 100755
--- a/configure
+++ b/configure
@@ -252,6 +252,7 @@
tpl_mv
dual_filter
convolve_round
+ compound_round
ext_tx
tx64x64
sub8x8_mc
@@ -510,6 +511,7 @@
enabled ec_multisymbol && ! enabled daala_ec && soft_enable ans
enabled palette_throughput && soft_enable palette
enabled txk_sel && soft_enable lv_map
+ enabled compound_round && soft_enable convolve_round
if enabled rawbits && ! enabled daala_ec; then
log_echo "rawbits requires daala_ec, so disabling rawbits"
disable_feature rawbits