Adjust a hyper-parameter used in temporal filter.
In the motion search of temporal filtering, the searched motion vector
will be passed along the frame sequence. A hyper-parameter (based on the
motion search error) is used to control whether to pass down the motion
vector from one frame to the next frame. Basically, if the search error
is too large (meaning the searched block is not accurate), we should not
pass down the motion vector any more.
This CL uses a larger threshold ONLY for hdres videos, i.e., increasing
the probability of passing down the motion vector.
Experimental results:
Under Speed-4 (two-pass mode):
avg PSNR ovr PSNR SSIM
hdres -0.104 -0.097 -0.101
hdres2 -0.103 -0.101 -0.133
STATS_CHANGED
Change-Id: I2e2f829187d5942dec67b967daa4b29ccea49125
diff --git a/av1/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c
index 74294cc..da770a0 100644
--- a/av1/encoder/temporal_filter.c
+++ b/av1/encoder/temporal_filter.c
@@ -996,7 +996,8 @@
block_size, mb_row, mb_col, &ref_mv,
subblock_mvs, subblock_mses);
// Do not pass down the reference motion vector if error is too large.
- if (block_mse > (3 << (mbd->bd - 8))) {
+ const int thresh = AOMMIN(frame_height, frame_width) >= 720 ? 12 : 3;
+ if (block_mse > (thresh << (mbd->bd - 8))) {
ref_mv = kZeroMv;
}
}