]> granicus.if.org Git - libvpx/commitdiff
Refactor tpl model update function
authorJingning Han <jingning@google.com>
Sun, 22 Jul 2018 04:49:42 +0000 (21:49 -0700)
committerJingning Han <jingning@google.com>
Sun, 22 Jul 2018 14:33:37 +0000 (07:33 -0700)
Fill up all the blocks inside an operating unit with the provided
statistics.

Change-Id: I93556e0daf9f08cbe62d3c12cf38b5e26ad7c799

vp9/encoder/vp9_encoder.c

index 818302237b52e3e9e0b63651410f2872751f60aa..05d344df3e30142a6a5fa450d3fc0ad6f66f4615 100644 (file)
@@ -5700,13 +5700,21 @@ void tpl_model_update(TplDepFrame *tpl_frame, TplDepStats *tpl_stats,
                         (tpl_stats->mc_dep_cost * tpl_stats->inter_cost) /
                             tpl_stats->intra_cost;
 
-      ref_stats[ref_mi_row * ref_tpl_frame->stride + ref_mi_col].mc_flow +=
-          (mc_flow * overlap_area) / pix_num;
-
-      ref_stats[ref_mi_row * ref_tpl_frame->stride + ref_mi_col].mc_ref_cost +=
-          ((tpl_stats->intra_cost - tpl_stats->inter_cost) * overlap_area) /
-          pix_num;
-      assert(overlap_area >= 0);
+      int idx, idy;
+
+      for (idy = 0; idy < mi_height; ++idy) {
+        for (idx = 0; idx < mi_width; ++idx) {
+          TplDepStats *des_stats =
+              &ref_stats[(ref_mi_row + idy) * ref_tpl_frame->stride +
+                         (ref_mi_col + idx)];
+
+          des_stats->mc_flow += (mc_flow * overlap_area) / pix_num;
+          des_stats->mc_ref_cost +=
+              ((tpl_stats->intra_cost - tpl_stats->inter_cost) * overlap_area) /
+              pix_num;
+          assert(overlap_area >= 0);
+        }
+      }
     }
   }
 }