diff --git a/av1/common/generic_code.c b/av1/common/generic_code.c
index e21e81c..d0426f0 100644
--- a/av1/common/generic_code.c
+++ b/av1/common/generic_code.c
@@ -27,6 +27,16 @@
   }
 }
 
+void aom_cdf_init_q15_1D(uint16_t *cdf, int nsyms, int cdf_size) {
+  int i;
+  for (i = 0; i < nsyms; i++)
+    cdf[i] = (i + 1)*32768/nsyms;
+
+#if CONFIG_EC_ADAPT
+  cdf[cdf_size - 1] = 0;
+#endif
+}
+
 /** Adapts a Q15 cdf after encoding/decoding a symbol. */
 void aom_cdf_adapt_q15(int val, uint16_t *cdf, int n, int *count, int rate) {
   int i;
diff --git a/av1/common/generic_code.h b/av1/common/generic_code.h
index 310a62a..2ebe543 100644
--- a/av1/common/generic_code.h
+++ b/av1/common/generic_code.h
@@ -49,8 +49,21 @@
 #define OD_SINGLE_CDF_INIT_FIRST(cdf, val, first) aom_cdf_init(cdf, \
  1, sizeof(cdf)/sizeof(cdf[0]), val, first)
 
+// WARNING: DO NOT USE this init function,
+// if the size of cdf is different from what is declared by code.
+#define OD_CDFS_INIT_Q15(cdfs) \
+  { int n_cdfs = sizeof(cdfs)/sizeof(cdfs[0]); \
+    int cdf_size = sizeof(cdfs[0])/sizeof(cdfs[0][0]); \
+    int nsyms = cdf_size - CONFIG_EC_ADAPT; \
+    int i_; \
+    for (i_ = 0; i_ < n_cdfs; i_++) \
+      aom_cdf_init_q15_1D(cdfs[i_], nsyms, cdf_size); \
+  }
+
 void aom_cdf_init(uint16_t *cdf, int ncdfs, int nsyms, int val, int first);
 
+void aom_cdf_init_q15_1D(uint16_t *cdf, int nsyms, int cdf_size);
+
 void aom_cdf_adapt_q15(int val, uint16_t *cdf, int n, int *count, int rate);
 
 void aom_encode_cdf_adapt_q15(aom_writer *w, int val, uint16_t *cdf, int n,
diff --git a/av1/common/pvq_state.c b/av1/common/pvq_state.c
index a9567da..b6fcfb2 100644
--- a/av1/common/pvq_state.c
+++ b/av1/common/pvq_state.c
@@ -13,12 +13,11 @@
 #include "av1/common/odintrin.h"
 
 void od_adapt_ctx_reset(od_adapt_ctx *adapt, int is_keyframe) {
-  int i;
   int pli;
   od_adapt_pvq_ctx_reset(&adapt->pvq, is_keyframe);
-  adapt->skip_increment = 128;
-  OD_CDFS_INIT(adapt->skip_cdf, adapt->skip_increment >> 2);
+  OD_CDFS_INIT_Q15(adapt->skip_cdf);
   for (pli = 0; pli < OD_NPLANES_MAX; pli++) {
+    int i;
     generic_model_init(&adapt->model_dc[pli]);
     for (i = 0; i < OD_TXSIZES; i++) {
       int j;
diff --git a/av1/common/pvq_state.h b/av1/common/pvq_state.h
index dc8c0fa..e52c313 100644
--- a/av1/common/pvq_state.h
+++ b/av1/common/pvq_state.h
@@ -34,8 +34,7 @@
   int ex_g[OD_NPLANES_MAX][OD_TXSIZES];
 
   /* Joint skip flag for DC and AC */
-  uint16_t skip_cdf[OD_TXSIZES*2][4];
-  int skip_increment;
+  uint16_t skip_cdf[OD_TXSIZES*2][CDF_SIZE(4)];
 };
 
 struct od_state {
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 7006ead..3867e2b 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -425,10 +425,10 @@
   // NOTE : we don't use 5 symbols for luma here in aom codebase,
   // since block partition is taken care of by aom.
   // So, only AC/DC skip info is coded
-  const int ac_dc_coded = aom_decode_cdf_adapt(
+  const int ac_dc_coded = aom_read_symbol(
       xd->daala_dec.r,
       xd->daala_dec.state.adapt.skip_cdf[2 * tx_size + (plane != 0)], 4,
-      xd->daala_dec.state.adapt.skip_increment, "skip");
+      "skip");
   if (ac_dc_coded < 0 || ac_dc_coded > 3) {
     aom_internal_error(&cm->error, AOM_CODEC_INVALID_PARAM,
                        "Invalid PVQ Skip Type");
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index d364cba..e926360 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1057,9 +1057,8 @@
       pvq = get_pvq_block(x->pvq_q);
 
       // encode block skip info
-      aom_encode_cdf_adapt(w, pvq->ac_dc_coded,
-                           adapt->skip_cdf[2 * tx_size + (plane != 0)], 4,
-                           adapt->skip_increment);
+      aom_write_symbol(w, pvq->ac_dc_coded,
+                       adapt->skip_cdf[2 * tx_size + (plane != 0)], 4);
 
       // AC coeffs coded?
       if (pvq->ac_dc_coded & AC_CODED) {
@@ -1070,7 +1069,7 @@
             pvq_encode_partition(
                 w, pvq->qg[i], pvq->theta[i], pvq->max_theta[i],
                 pvq->y + pvq->off[i], pvq->size[i], pvq->k[i], model, adapt,
-                exg + i, ext + i, nodesync,
+                exg + i, ext + i, nodesync || is_keyframe,
                 (plane != 0) * OD_TXSIZES * PVQ_MAX_PARTITIONS +
                     pvq->bs * PVQ_MAX_PARTITIONS + i,
                 is_keyframe, i == 0 && (i < pvq->nb_bands - 1), pvq->skip_rest,
diff --git a/av1/encoder/pvq_encoder.c b/av1/encoder/pvq_encoder.c
index d437a38..7820214 100644
--- a/av1/encoder/pvq_encoder.c
+++ b/av1/encoder/pvq_encoder.c
@@ -884,8 +884,7 @@
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
 #endif
   /* Code as if we're not skipping. */
-  aom_encode_cdf_adapt(&enc->w, 2 + (out[0] != 0), skip_cdf,
-   4, enc->state.adapt.skip_increment);
+  aom_write_symbol(&enc->w, 2 + (out[0] != 0), skip_cdf, 4);
   ac_dc_coded = AC_CODED + (out[0] != 0);
   cfl_encoded = 0;
   skip_rest = 1;
@@ -988,8 +987,7 @@
     }
     /* We decide to skip, roll back everything as it was before. */
     od_encode_rollback(enc, &buf);
-    aom_encode_cdf_adapt(&enc->w, out[0] != 0, skip_cdf,
-     4, enc->state.adapt.skip_increment);
+    aom_write_symbol(&enc->w, out[0] != 0, skip_cdf, 4);
     ac_dc_coded = (out[0] != 0);
     if (is_keyframe) for (i = 1; i < 1 << (2*bs + 4); i++) out[i] = 0;
     else for (i = 1; i < 1 << (2*bs + 4); i++) out[i] = ref[i];
