]> granicus.if.org Git - libvpx/commitdiff
Adjust variance threshold based on source noise level.
authorMarco <marpan@google.com>
Fri, 4 Dec 2015 19:57:04 +0000 (11:57 -0800)
committerMarco <marpan@google.com>
Fri, 4 Dec 2015 22:43:39 +0000 (14:43 -0800)
For non-rd variance partition: Adjust variance threhsold based
on noise level estimate. This change allows the adjustment to be
updated more frequently.

Change-Id: Ie2abf63bf3f1ee54d0bc4ff497298801fdb92b0d

vp9/encoder/vp9_encodeframe.c

index 17ba956526639c8171bb4d20f55765a2e737f05a..c643b184894ee58bc2bdcfbebbb921bd18e74a64 100644 (file)
@@ -488,13 +488,14 @@ static void set_vbp_thresholds(VP9_COMP *cpi, int64_t thresholds[], int q) {
     thresholds[2] = threshold_base >> 2;
     thresholds[3] = threshold_base << 2;
   } else {
-    // Increase base variance threshold if estimated noise level is high.
+    // Increase base variance threshold based on  estimated noise level.
     if (cpi->noise_estimate.enabled) {
-      if (cpi->noise_estimate.level == kHigh)
+      NOISE_LEVEL noise_level = vp9_noise_estimate_extract_level(
+          &cpi->noise_estimate);
+      if (noise_level == kHigh)
         threshold_base = 3 * threshold_base;
-      else
-        if (cpi->noise_estimate.level == kMedium)
-          threshold_base = threshold_base << 1;
+      else if (noise_level == kMedium)
+        threshold_base = threshold_base << 1;
     }
     if (cm->width <= 352 && cm->height <= 288) {
       thresholds[0] = threshold_base >> 3;