EC_ADAPT: refactor and fix MinArfFreq unit tests.

Ensure that cdfs are synced with pdfs after every
forward update.

Change-Id: I5677f78300156c8622f1728d7a343ff6c3a4ea64
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index aa55db3..818137e 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -565,13 +565,9 @@
     prob_diff_update(
         av1_switchable_interp_tree, cm->fc->switchable_interp_prob[j],
         counts->switchable_interp[j], SWITCHABLE_FILTERS, probwt, w);
-#if CONFIG_DAALA_EC
-    av1_tree_to_cdf(av1_switchable_interp_tree,
-                    cm->fc->switchable_interp_prob[j],
-                    cm->fc->switchable_interp_cdf[j]);
-#endif
   }
 }
+#endif
 
 #if CONFIG_EXT_TX
 static void update_ext_tx_probs(AV1_COMMON *cm, aom_writer *w) {
@@ -631,6 +627,7 @@
 }
 
 #else
+#if !CONFIG_EC_ADAPT || !CONFIG_DAALA_EC
 
 static void update_ext_tx_probs(AV1_COMMON *cm, aom_writer *w) {
   const int savings_thresh = av1_cost_one(GROUP_DIFF_UPDATE_PROB) -
@@ -657,13 +654,10 @@
       for (j = 0; j < TX_TYPES; ++j) {
         prob_diff_update(av1_ext_tx_tree, cm->fc->intra_ext_tx_prob[i][j],
                          cm->counts.intra_ext_tx[i][j], TX_TYPES, probwt, w);
-#if CONFIG_DAALA_EC
-        av1_tree_to_cdf(av1_ext_tx_tree, cm->fc->intra_ext_tx_prob[i][j],
-                        cm->fc->intra_ext_tx_cdf[i][j]);
-#endif
       }
     }
   }
+
   savings = 0;
   for (i = TX_4X4; i < EXT_TX_SIZES; ++i) {
     savings +=
@@ -676,10 +670,6 @@
     for (i = TX_4X4; i < EXT_TX_SIZES; ++i) {
       prob_diff_update(av1_ext_tx_tree, cm->fc->inter_ext_tx_prob[i],
                        cm->counts.inter_ext_tx[i], TX_TYPES, probwt, w);
-#if CONFIG_DAALA_EC
-      av1_tree_to_cdf(av1_ext_tx_tree, cm->fc->inter_ext_tx_prob[i],
-                      cm->fc->inter_ext_tx_cdf[i]);
-#endif
     }
   }
 }
@@ -2345,9 +2335,6 @@
     }
     default: assert(0);
   }
-#if CONFIG_RANS || CONFIG_DAALA_EC
-  av1_coef_pareto_cdfs(cpi->common.fc);
-#endif  // CONFIG_EC_MULTISYMBOL
 }
 
 #if CONFIG_ENTROPY
@@ -2922,12 +2909,8 @@
     prob_diff_update(av1_segment_tree, cm->fc->seg.tree_probs,
                      cm->counts.seg.tree_total, MAX_SEGMENTS, probwt, w);
   }
-#if CONFIG_DAALA_EC
-  av1_tree_to_cdf(av1_segment_tree, cm->fc->seg.tree_probs,
-                  cm->fc->seg.tree_cdf);
-#endif
 }
-#endif  // CONFIG_EC_ADAPT,CONFIG_DAALA_EC
+#endif
 
 static void write_txfm_mode(TX_MODE mode, struct aom_write_bit_buffer *wb) {
   aom_wb_write_bit(wb, mode == TX_MODE_SELECT);
@@ -3749,10 +3732,6 @@
   for (i = 0; i < INTRA_MODES; ++i) {
     prob_diff_update(av1_intra_mode_tree, fc->uv_mode_prob[i],
                      counts->uv_mode[i], INTRA_MODES, probwt, header_bc);
-#if CONFIG_DAALA_EC
-    av1_tree_to_cdf(av1_intra_mode_tree, fc->uv_mode_prob[i],
-                    fc->uv_mode_cdf[i]);
-#endif
   }
 
 #if CONFIG_EXT_PARTITION_TYPES
@@ -3766,12 +3745,8 @@
   for (i = 0; i < PARTITION_CONTEXTS; ++i) {
     prob_diff_update(av1_partition_tree, fc->partition_prob[i],
                      counts->partition[i], PARTITION_TYPES, probwt, header_bc);
-#if CONFIG_DAALA_EC
-    av1_tree_to_cdf(av1_partition_tree, cm->fc->partition_prob[i],
-                    cm->fc->partition_cdf[i]);
-#endif
   }
-#endif  // CONFIG_EXT_PARTITION_TYPES
+#endif  // CONFIG_EC_ADAPT, CONFIG_DAALA_EC
 
 #if CONFIG_EXT_INTRA
   for (i = 0; i < INTRA_FILTERS + 1; ++i)
@@ -3787,31 +3762,22 @@
 
 #if !CONFIG_EC_ADAPT || !CONFIG_DAALA_EC
     for (i = 0; i < INTRA_MODES; ++i)
-      for (j = 0; j < INTRA_MODES; ++j) {
+      for (j = 0; j < INTRA_MODES; ++j)
         prob_diff_update(av1_intra_mode_tree, cm->kf_y_prob[i][j],
                          counts->kf_y_mode[i][j], INTRA_MODES, probwt,
                          header_bc);
-#if CONFIG_DAALA_EC
-        av1_tree_to_cdf(av1_intra_mode_tree, cm->kf_y_prob[i][j],
-                        cm->kf_y_cdf[i][j]);
-#endif
-      }
 #endif  // CONFIG_EC_ADAPT, CONFIG_DAALA_EC
   } else {
-#if !CONFIG_EC_ADAPT || !CONFIG_DAALA_EC
 #if CONFIG_REF_MV
     update_inter_mode_probs(cm, header_bc, counts);
 #else
+#if !CONFIG_EC_ADAPT || !CONFIG_DAALA_EC
     for (i = 0; i < INTER_MODE_CONTEXTS; ++i) {
       prob_diff_update(av1_inter_mode_tree, cm->fc->inter_mode_probs[i],
                        counts->inter_mode[i], INTER_MODES, probwt, header_bc);
-#if CONFIG_DAALA_EC
-      av1_tree_to_cdf(av1_inter_mode_tree, cm->fc->inter_mode_probs[i],
-                      cm->fc->inter_mode_cdf[i]);
-#endif
     }
 #endif
-#endif  // CONFIG_EC_ADAPT, CONFIG_DAALA_EC
+#endif
 #if CONFIG_EXT_INTER
     update_inter_compound_mode_probs(cm, probwt, header_bc);
 
@@ -3895,12 +3861,8 @@
     for (i = 0; i < BLOCK_SIZE_GROUPS; ++i) {
       prob_diff_update(av1_intra_mode_tree, cm->fc->y_mode_prob[i],
                        counts->y_mode[i], INTRA_MODES, probwt, header_bc);
-#if CONFIG_DAALA_EC
-      av1_tree_to_cdf(av1_intra_mode_tree, cm->fc->y_mode_prob[i],
-                      cm->fc->y_mode_cdf[i]);
-#endif
     }
-#endif  // CONFIG_EC_ADAPT, CONFIG_DAALA_EC
+#endif
 
     av1_write_nmv_probs(cm, cm->allow_high_precision_mv, header_bc,
 #if CONFIG_REF_MV
@@ -3922,6 +3884,13 @@
     write_global_motion(cpi, header_bc);
 #endif  // CONFIG_GLOBAL_MOTION
   }
+#if CONFIG_EC_MULTISYMBOL
+  av1_coef_pareto_cdfs(fc);
+  av1_set_mv_cdfs(&fc->nmvc);
+#if CONFIG_DAALA_EC
+  av1_set_mode_cdfs(cm);
+#endif
+#endif
 #if CONFIG_ANS
   ans_write_init(&header_ans, data);
   buf_ans_flush(header_bc, &header_ans);
diff --git a/av1/encoder/encodemv.c b/av1/encoder/encodemv.c
index 0da24ec..40929ef 100644
--- a/av1/encoder/encodemv.c
+++ b/av1/encoder/encodemv.c
@@ -175,13 +175,9 @@
   for (nmv_ctx = 0; nmv_ctx < NMV_CONTEXTS; ++nmv_ctx) {
     nmv_context *const mvc = &cm->fc->nmvc[nmv_ctx];
     nmv_context_counts *const counts = &nmv_counts[nmv_ctx];
-
+#if !CONFIG_EC_ADAPT
     write_mv_update(av1_mv_joint_tree, mvc->joints, counts->joints, MV_JOINTS,
                     w);
-#if CONFIG_DAALA_EC
-    av1_tree_to_cdf(av1_mv_joint_tree, cm->fc->nmvc.joints,
-                    cm->fc->nmvc.joint_cdf);
-#endif
 
     for (i = 0; i < 2; ++i) {
       nmv_component *comp = &mvc->comps[i];
@@ -204,6 +200,7 @@
       write_mv_update(av1_mv_fp_tree, mvc->comps[i].fp, counts->comps[i].fp,
                       MV_FP_SIZE, w);
     }
+#endif
 
     if (usehp) {
       for (i = 0; i < 2; ++i) {
@@ -219,10 +216,6 @@
 
 #if !CONFIG_EC_ADAPT
   write_mv_update(av1_mv_joint_tree, mvc->joints, counts->joints, MV_JOINTS, w);
-#if CONFIG_EC_MULTISYMBOL
-  av1_tree_to_cdf(av1_mv_joint_tree, cm->fc->nmvc.joints,
-                  cm->fc->nmvc.joint_cdf);
-#endif
 
   for (i = 0; i < 2; ++i) {
     nmv_component *comp = &mvc->comps[i];
@@ -231,9 +224,6 @@
     update_mv(w, comp_counts->sign, &comp->sign, MV_UPDATE_PROB);
     write_mv_update(av1_mv_class_tree, comp->classes, comp_counts->classes,
                     MV_CLASSES, w);
-#if CONFIG_EC_MULTISYMBOL
-    av1_tree_to_cdf(av1_mv_class_tree, comp->classes, comp->class_cdf);
-#endif
     write_mv_update(av1_mv_class0_tree, comp->class0, comp_counts->class0,
                     CLASS0_SIZE, w);
     for (j = 0; j < MV_OFFSET_BITS; ++j)
@@ -244,16 +234,9 @@
     for (j = 0; j < CLASS0_SIZE; ++j) {
       write_mv_update(av1_mv_fp_tree, mvc->comps[i].class0_fp[j],
                       counts->comps[i].class0_fp[j], MV_FP_SIZE, w);
-#if CONFIG_EC_MULTISYMBOL
-      av1_tree_to_cdf(av1_mv_fp_tree, mvc->comps[i].class0_fp[j],
-                      mvc->comps[i].class0_fp_cdf[j]);
-#endif
     }
     write_mv_update(av1_mv_fp_tree, mvc->comps[i].fp, counts->comps[i].fp,
                     MV_FP_SIZE, w);
-#if CONFIG_EC_MULTISYMBOL
-    av1_tree_to_cdf(av1_mv_fp_tree, mvc->comps[i].fp, mvc->comps[i].fp_cdf);
-#endif
   }
 #endif  // !CONFIG_EC_ADAPT
 
diff --git a/av1/encoder/segmentation.c b/av1/encoder/segmentation.c
index 1b7e011..828b31c 100644
--- a/av1/encoder/segmentation.c
+++ b/av1/encoder/segmentation.c
@@ -374,9 +374,6 @@
   } else {
     seg->temporal_update = 0;
   }
-#if !CONFIG_EC_ADAPT && CONFIG_DAALA_EC
-  av1_tree_to_cdf(av1_segment_tree, segp->tree_probs, segp->tree_cdf);
-#endif
 }
 
 void av1_reset_segment_features(AV1_COMMON *cm) {