Use 8x8 block resolution for dif cts model

This resolves certain blocky artifacts caused by the 16x16 block
resolution.

BUG=b/197857708

STATS_CHANGED

Change-Id: I0b02c793a45fb3dbe76af6cf848195788eb1cb8e
diff --git a/av1/encoder/allintra_vis.c b/av1/encoder/allintra_vis.c
index 385feba..391fb25 100644
--- a/av1/encoder/allintra_vis.c
+++ b/av1/encoder/allintra_vis.c
@@ -31,7 +31,7 @@
 void av1_init_mb_wiener_var_buffer(AV1_COMP *cpi) {
   AV1_COMMON *cm = &cpi->common;
 
-  cpi->weber_bsize = BLOCK_16X16;
+  cpi->weber_bsize = BLOCK_8X8;
 
   if (cpi->mb_weber_stats) return;
 
@@ -112,6 +112,7 @@
         continue;
       WeberStats *weber_stats =
           &cpi->mb_weber_stats[(row / mi_step) * mb_stride + (col / mi_step)];
+      if (weber_stats->max_scale < 1.0) continue;
       if (weber_stats->max_scale < min_max_scale)
         min_max_scale = weber_stats->max_scale;
     }
@@ -399,33 +400,35 @@
     cpi->norm_wiener_variance = (int64_t)(exp(sb_wiener_log / sb_count));
   cpi->norm_wiener_variance = AOMMAX(1, cpi->norm_wiener_variance);
 
-  sb_wiener_log = 0;
-  sb_count = 0;
-  for (mi_row = 0; mi_row < cm->mi_params.mi_rows; mi_row += sb_step) {
-    for (mi_col = 0; mi_col < cm->mi_params.mi_cols; mi_col += sb_step) {
-      int sb_wiener_var =
-          get_var_perceptual_ai(cpi, cm->seq_params->sb_size, mi_row, mi_col);
+  for (int its_cnt = 0; its_cnt < 2; ++its_cnt) {
+    sb_wiener_log = 0;
+    sb_count = 0;
+    for (mi_row = 0; mi_row < cm->mi_params.mi_rows; mi_row += sb_step) {
+      for (mi_col = 0; mi_col < cm->mi_params.mi_cols; mi_col += sb_step) {
+        int sb_wiener_var =
+            get_var_perceptual_ai(cpi, cm->seq_params->sb_size, mi_row, mi_col);
 
-      double beta = (double)cpi->norm_wiener_variance / sb_wiener_var;
-      double min_max_scale =
-          AOMMAX(1.0, get_max_scale(cpi, bsize, mi_row, mi_col));
-      beta = 1.0 / AOMMIN(1.0 / beta, min_max_scale);
-      beta = AOMMIN(beta, 4);
-      beta = AOMMAX(beta, 0.25);
+        double beta = (double)cpi->norm_wiener_variance / sb_wiener_var;
+        double min_max_scale =
+            AOMMAX(1.0, get_max_scale(cpi, bsize, mi_row, mi_col));
+        beta = 1.0 / AOMMIN(1.0 / beta, min_max_scale);
+        beta = AOMMIN(beta, 4);
+        beta = AOMMAX(beta, 0.25);
 
-      sb_wiener_var = (int)(cpi->norm_wiener_variance / beta);
+        sb_wiener_var = (int)(cpi->norm_wiener_variance / beta);
 
-      int64_t satd = get_satd(cpi, cm->seq_params->sb_size, mi_row, mi_col);
-      int64_t sse = get_sse(cpi, cm->seq_params->sb_size, mi_row, mi_col);
-      double scaled_satd = (double)satd / sqrt((double)sse);
-      sb_wiener_log += scaled_satd * log(sb_wiener_var);
-      sb_count += scaled_satd;
+        int64_t satd = get_satd(cpi, cm->seq_params->sb_size, mi_row, mi_col);
+        int64_t sse = get_sse(cpi, cm->seq_params->sb_size, mi_row, mi_col);
+        double scaled_satd = (double)satd / sqrt((double)sse);
+        sb_wiener_log += scaled_satd * log(sb_wiener_var);
+        sb_count += scaled_satd;
+      }
     }
-  }
 
-  if (sb_count > 0)
-    cpi->norm_wiener_variance = (int64_t)(exp(sb_wiener_log / sb_count));
-  cpi->norm_wiener_variance = AOMMAX(1, cpi->norm_wiener_variance);
+    if (sb_count > 0)
+      cpi->norm_wiener_variance = (int64_t)(exp(sb_wiener_log / sb_count));
+    cpi->norm_wiener_variance = AOMMAX(1, cpi->norm_wiener_variance);
+  }
 
   aom_free_frame_buffer(&cm->cur_frame->buf);
 }