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."