]> granicus.if.org Git - libvpx/commitdiff
Don't dering skipped superblocks
authorJean-Marc Valin <jmvalin@mozilla.com>
Mon, 18 Jul 2016 15:48:59 +0000 (11:48 -0400)
committerYaowu Xu <yaowu@google.com>
Thu, 13 Oct 2016 00:12:10 +0000 (17:12 -0700)
No change in metrics

Change-Id: I0da09270d78c3caf78a32a3157f02c87f2232e3e

av1/common/dering.c
av1/encoder/pickdering.c

index 7405fb54248d550fa5518e2e2d311091fd1edca7..725be2eb13c2381ed380d83def4c0a0302e3cb90 100644 (file)
@@ -113,7 +113,7 @@ void av1_dering_frame(YV12_BUFFER_CONFIG *frame, AV1_COMMON *cm,
         /* FIXME: This is a temporary hack that uses more conservative
            deringing for chroma. */
         if (pli) level = (level * 5 + 4) >> 3;
-        if (sb_all_skip(cm, sbr * MAX_MIB_SIZE, sbc * MAX_MIB_SIZE)) level = 0;
+        if (sb_all_skip(cm, sbr * MAX_MIB_SIZE, sbc * MAX_MIB_SIZE)) continue;
         threshold = level << coeff_shift;
         od_dering(&OD_DERING_VTBL_C, dst, MAX_MIB_SIZE * bsize[pli],
                   &src[pli][sbr * stride * bsize[pli] * MAX_MIB_SIZE +
index 726a4c10ffb0c817073e30d4d29a7ce69e6e14b1..952e36b85a5693094927a85b8d8426409e7f6e31 100644 (file)
@@ -96,6 +96,7 @@ int av1_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
       int16_t dst[MAX_MIB_SIZE * MAX_MIB_SIZE * 8 * 8];
       nhb = AOMMIN(MAX_MIB_SIZE, cm->mi_cols - MAX_MIB_SIZE * sbc);
       nvb = AOMMIN(MAX_MIB_SIZE, cm->mi_rows - MAX_MIB_SIZE * sbr);
+      if (sb_all_skip(cm, sbr * MAX_MIB_SIZE, sbc * MAX_MIB_SIZE)) continue;
       for (level = 0; level < 64; level++) {
         int cur_mse;
         int threshold;
@@ -126,6 +127,7 @@ int av1_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
       for (sbc = 0; sbc < nhsb; sbc++) {
         int gi;
         int best_mse = mse[nhsb * sbr + sbc][0];
+        if (sb_all_skip(cm, sbr * MAX_MIB_SIZE, sbc * MAX_MIB_SIZE)) continue;
         for (gi = 1; gi < 4; gi++) {
           level = compute_level_from_index(global_level, gi);
           if (mse[nhsb * sbr + sbc][level] < best_mse) {
@@ -145,6 +147,7 @@ int av1_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
       int gi;
       int best_gi;
       int best_mse = mse[nhsb * sbr + sbc][0];
+      if (sb_all_skip(cm, sbr * MAX_MIB_SIZE, sbc * MAX_MIB_SIZE)) continue;
       best_gi = 0;
       for (gi = 1; gi < DERING_REFINEMENT_LEVELS; gi++) {
         level = compute_level_from_index(best_level, gi);