]> granicus.if.org Git - libvpx/commitdiff
Fix deringing level choice for 10-bit and 12-bit
authorJean-Marc Valin <jmvalin@mozilla.com>
Sat, 8 Oct 2016 18:10:39 +0000 (14:10 -0400)
committerYaowu Xu <yaowu@google.com>
Thu, 13 Oct 2016 18:27:17 +0000 (18:27 +0000)
Making sure we never exceed a base level of 63

Change-Id: I821254b8d970446bd40fdd6e4d7073c69760a86d

av1/encoder/pickdering.c

index cc5528beacab628553d0441f29dd0c71ca80677f..4ef83cdd4a62f9425184b47c418dd70ba1f8f892 100644 (file)
@@ -90,8 +90,12 @@ int av1_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
      adjusted on a 64x64 basis. We use a threshold of the form T = a*Q^b,
      where a and b are derived empirically trying to optimize rate-distortion
      at different quantizer settings. */
-  best_level = (int)floor(
-      .5 + .45 * pow(av1_ac_quant(cm->base_qindex, 0, cm->bit_depth), 0.6));
+  best_level = AOMMIN(
+      MAX_DERING_LEVEL - 1,
+      (int)floor(.5 +
+                 .45 * pow(av1_ac_quant(cm->base_qindex, 0, cm->bit_depth) >>
+                               (cm->bit_depth - 8),
+                           0.6)));
   for (sbr = 0; sbr < nvsb; sbr++) {
     for (sbc = 0; sbc < nhsb; sbc++) {
       int nvb, nhb;