Use aom_writer with generic_encode().

Change the generic_encode() function to take an aom_writer struct
 instead of an od_ec_enc struct.

Change-Id: Icb447fe5ada27aba45fbaea08b28e9fe42c5a404
diff --git a/av1/common/generic_code.h b/av1/common/generic_code.h
index c5b3915..2c2ac7f 100644
--- a/av1/common/generic_code.h
+++ b/av1/common/generic_code.h
@@ -69,7 +69,7 @@
 int od_decode_cdf_adapt_(od_ec_dec *ec, uint16_t *cdf, int n,
  int increment OD_ACC_STR);
 
-void generic_encode(od_ec_enc *enc, generic_encoder *model, int x, int max,
+void generic_encode(aom_writer *w, generic_encoder *model, int x, int max,
  int *ex_q16, int integration);
 double generic_encode_cost(generic_encoder *model, int x, int max,
  int *ex_q16);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 305a9d7..3fbdd8e 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2149,7 +2149,7 @@
           }
           // Encode residue of DC coeff, if exist.
           if (!has_dc_skip || (pvq->ac_dc_coded & 1)) {  // DC coded?
-            generic_encode(&w->ec, &adapt->model_dc[plane],
+            generic_encode(w, &adapt->model_dc[plane],
                            abs(pvq->dq_dc_residue) - has_dc_skip, -1,
                            &adapt->ex_dc[plane][pvq->bs][0], 2);
           }
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index a76443a..6573af9 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -1186,13 +1186,9 @@
 
   // Encode residue of DC coeff, if required.
   if (!has_dc_skip || out_int32[0]) {
-#if CONFIG_DAALA_EC
-    generic_encode(&daala_enc->w.ec, &daala_enc->state.adapt.model_dc[plane],
+    generic_encode(&daala_enc->w, &daala_enc->state.adapt.model_dc[plane],
                    abs(out_int32[0]) - has_dc_skip, -1,
                    &daala_enc->state.adapt.ex_dc[plane][tx_size][0], 2);
-#else
-#error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
-#endif
   }
   if (out_int32[0]) {
     aom_write_bit(&daala_enc->w, out_int32[0] < 0);
diff --git a/av1/encoder/generic_encoder.c b/av1/encoder/generic_encoder.c
index 64b0734..b67e042 100644
--- a/av1/encoder/generic_encoder.c
+++ b/av1/encoder/generic_encoder.c
@@ -77,7 +77,7 @@
  * distribution is one-sided (zero and up), has a single mode, and decays
  * exponentially past the model.
  *
- * @param [in,out] enc   range encoder
+ * @param [in,out] w     multi-symbol entropy encoder
  * @param [in,out] model generic probability model
  * @param [in]     x     variable being encoded
  * @param [in]     max   largest value possible
@@ -85,7 +85,7 @@
  * @param [in]     integration integration period of ExQ16 (leaky average over
  * 1<<integration samples)
  */
-void generic_encode(od_ec_enc *enc, generic_encoder *model, int x, int max,
+void generic_encode(aom_writer *w, generic_encoder *model, int x, int max,
  int *ex_q16, int integration) {
   int lg_q1;
   int shift;
@@ -107,9 +107,9 @@
   xs = (x + (1 << shift >> 1)) >> shift;
   ms = (max + (1 << shift >> 1)) >> shift;
   OD_ASSERT(max == -1 || xs <= ms);
-  if (max == -1) od_ec_encode_cdf_unscaled(enc, OD_MINI(15, xs), cdf, 16);
+  if (max == -1) aom_write_symbol_unscaled(w, OD_MINI(15, xs), cdf, 16);
   else {
-    od_ec_encode_cdf_unscaled(enc, OD_MINI(15, xs), cdf, OD_MINI(ms + 1, 16));
+    aom_write_symbol_unscaled(w, OD_MINI(15, xs), cdf, OD_MINI(ms + 1, 16));
   }
   if (xs >= 15) {
     int e;
@@ -122,7 +122,12 @@
     e = ((2**ex_q16 >> 8) + (1 << shift >> 1)) >> shift;
     decay = OD_MAXI(2, OD_MINI(254, 256*e/(e + 256)));
     /* Encode the tail of the distribution assuming exponential decay. */
-    od_laplace_encode_special(enc, xs - 15, decay, (max == -1) ? -1 : ms - 15);
+#if CONFIG_DAALA_EC
+    od_laplace_encode_special(&w->ec, xs - 15, decay,
+                              (max == -1) ? -1 : ms - 15);
+#else
+# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
+#endif
   }
   if (shift != 0) {
     int special;
@@ -130,8 +135,12 @@
        for xs=0. */
     special = xs == 0;
     if (shift - special > 0) {
-      od_ec_enc_bits(enc, x - (xs << shift) + (!special << (shift - 1)),
+#if CONFIG_DAALA_EC
+      od_ec_enc_bits(&w->ec, x - (xs << shift) + (!special << (shift - 1)),
        shift - special);
+#else
+# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
+#endif
     }
   }
   generic_model_update(model, ex_q16, x, xs, id, integration);
diff --git a/av1/encoder/pvq_encoder.c b/av1/encoder/pvq_encoder.c
index 3028d41..7ac34ba 100644
--- a/av1/encoder/pvq_encoder.c
+++ b/av1/encoder/pvq_encoder.c
@@ -683,22 +683,14 @@
   if (qg > 0) {
     int tmp;
     tmp = *exg;
-#if CONFIG_DAALA_EC
-    generic_encode(&w->ec, &model[!noref], qg - 1, -1, &tmp, 2);
-#else
-# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
-#endif
+    generic_encode(w, &model[!noref], qg - 1, -1, &tmp, 2);
     OD_IIR_DIADIC(*exg, qg << 16, 2);
   }
   if (theta > 1 && (nodesync || max_theta > 3)) {
     int tmp;
     tmp = *ext;
-#if CONFIG_DAALA_EC
-    generic_encode(&w->ec, &model[2], theta - 2, nodesync ? -1 : max_theta - 3,
+    generic_encode(w, &model[2], theta - 2, nodesync ? -1 : max_theta - 3,
      &tmp, 2);
-#else
-# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
-#endif
     OD_IIR_DIADIC(*ext, theta << 16, 2);
   }
 #if CONFIG_DAALA_EC
@@ -914,9 +906,9 @@
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
 #endif
       od_encode_checkpoint(enc, &dc_buf);
-#if CONFIG_DAALA_EC
-      generic_encode(&enc->w.ec, &enc->state.adapt.model_dc[pli],
+      generic_encode(&enc->w, &enc->state.adapt.model_dc[pli],
        n - 1, -1, &enc->state.adapt.ex_dc[pli][bs][0], 2);
+#if CONFIG_DAALA_EC
       tell2 = od_ec_enc_tell_frac(&enc->w.ec) - tell2;
 #else
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
@@ -1041,9 +1033,9 @@
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
 #endif
         od_encode_checkpoint(enc, &dc_buf);
-#if CONFIG_DAALA_EC
-        generic_encode(&enc->w.ec, &enc->state.adapt.model_dc[pli],
+        generic_encode(&enc->w, &enc->state.adapt.model_dc[pli],
          n - 1, -1, &enc->state.adapt.ex_dc[pli][bs][0], 2);
+#if CONFIG_DAALA_EC
         tell2 = od_ec_enc_tell_frac(&enc->w.ec) - tell2;
 #else
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."