shithub: libvpx

Download patch

ref: 9ff73fe0926b8256306df76f528f23eb1d73b57b
parent: 89b1c9d4bec12e96307942a3dfb9a1397276141d
author: Marco <[email protected]>
date: Mon Apr 4 05:25:59 EDT 2016

vp9-noise estimation: Increase threshold for Low-level.

This make it more likely clean/low-noise content will
be set as LowLow, and hence no denoising will be done.
Also set early exit on denoising for small blocks.

Change-Id: I4a72bba3e6c5e2d523d304c39deacc9c39bf216c

--- a/vp9/encoder/vp9_denoiser.c
+++ b/vp9/encoder/vp9_denoiser.c
@@ -216,6 +216,12 @@
   if (is_skin && (motion_magnitude > 0 || consec_zeromv < 4))
     return COPY_BLOCK;
 
+  // Avoid denoising for small block (unless motion is small).
+  // Small blocks are selected in variance partition (before encoding) and
+  // will typically lie on moving areas.
+  if (motion_magnitude > 16 && bs <= BLOCK_8X8)
+    return COPY_BLOCK;
+
   // If the best reference frame uses inter-prediction and there is enough of a
   // difference in sum-squared-error, use it.
   if (frame != INTRA_FRAME &&
--- a/vp9/encoder/vp9_noise_estimate.c
+++ b/vp9/encoder/vp9_noise_estimate.c
@@ -91,7 +91,7 @@
   } else {
     if (ne->value > ne->thresh)
       noise_level = kMedium;
-    else if (ne->value > (ne->thresh >> 1))
+    else if (ne->value > ((5 * ne->thresh) >> 3))
       noise_level = kLow;
     else
       noise_level = kLowLow;