shithub: libvpx

Download patch

ref: 6b649a0db9727f3dd1d77af7046ecf3b31e18099
parent: 0a4403992a28e2c768d4d14dc7662f64f26b9d4c
parent: 54575d654ced22d89a28e7e2ba6a7d2b24e15850
author: Marco <[email protected]>
date: Tue Sep 2 06:58:41 EDT 2014

Merge "Updates to adaptive/aggressive denoiser mode."

--- a/vp8/encoder/denoising.c
+++ b/vp8/encoder/denoising.c
@@ -413,9 +413,11 @@
     denoiser->nmse_source_diff = 0;
     denoiser->nmse_source_diff_count = 0;
     // TODO(marpan): Adjust thresholds, including effect on resolution.
-    denoiser->threshold_aggressive_mode = 40;
+    denoiser->threshold_aggressive_mode = 35;
     if (width * height > 640 * 480)
-      denoiser->threshold_aggressive_mode = 180;
+      denoiser->threshold_aggressive_mode = 150;
+    else if (width * height > 1280 * 720)
+      denoiser->threshold_aggressive_mode = 1400;
     return 0;
 }
 
--- a/vp8/encoder/pickinter.c
+++ b/vp8/encoder/pickinter.c
@@ -487,6 +487,7 @@
     MB_PREDICTION_MODE this_mode = x->e_mbd.mode_info_context->mbmi.mode;
     int_mv mv = x->e_mbd.mode_info_context->mbmi.mv;
     int this_rd;
+    int denoise_aggressive = 0;
     /* Exit early and don't compute the distortion if this macroblock
      * is marked inactive. */
     if (cpi->active_map_enabled && x->active_ptr[0] == 0)
@@ -505,10 +506,17 @@
 
     this_rd = RDCOST(x->rdmult, x->rddiv, rate2, *distortion2);
 
+#if CONFIG_TEMPORAL_DENOISING
+    if (cpi->oxcf.noise_sensitivity > 0) {
+      denoise_aggressive =
+        (cpi->denoiser.denoiser_mode == kDenoiserOnYUVAggressive) ? 1 : 0;
+    }
+#endif
+
     // Adjust rd for ZEROMV and LAST, if LAST is the closest reference frame.
     if (this_mode == ZEROMV &&
         x->e_mbd.mode_info_context->mbmi.ref_frame == LAST_FRAME &&
-        cpi->closest_reference_frame == LAST_FRAME)
+        (denoise_aggressive || cpi->closest_reference_frame == LAST_FRAME))
     {
         this_rd = ((int64_t)this_rd) * rd_adj / 100;
     }