diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index f89eac5..f19643f 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -1824,4 +1824,9 @@
   int j;
   for (j = 0; j < Q_SEGMENT_CDF_COUNT; j++) AVERAGE_TILE_CDFS(seg.q_seg_cdf[j]);
 #endif
+#if CONFIG_JNT_COMP
+#if CONFIG_NEW_MULTISYMBOL
+  AVERAGE_TILE_CDFS(compound_index_cdf);
+#endif  // CONFIG_NEW_MULTISYMBOL
+#endif  // CONFIG_JNT_COMP
 }
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 5ac7e15..548d7d2 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1652,6 +1652,20 @@
 #endif  // CONFIG_NEW_MULTISYMBOL
 
 #if CONFIG_JNT_COMP
+#if CONFIG_NEW_MULTISYMBOL
+static const aom_cdf_prob
+    default_compound_idx_cdfs[COMP_INDEX_CONTEXTS][CDF_SIZE(2)] = {
+      { AOM_ICDF(24576), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16384), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(8192), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(24576), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16384), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(8192), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(24576), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(16384), AOM_ICDF(32768), 0 },
+      { AOM_ICDF(8192), AOM_ICDF(32768), 0 }
+    };
+#endif  // CONFIG_NEW_MULTISYMBOL
 static const aom_prob default_compound_idx_probs[COMP_INDEX_CONTEXTS] = {
   192, 128, 64, 192, 128, 64, 192, 128, 64,
 };
@@ -3446,6 +3460,9 @@
   av1_copy(fc->txfm_partition_cdf, default_txfm_partition_cdf);
 #endif
 #if CONFIG_JNT_COMP
+#if CONFIG_NEW_MULTISYMBOL
+  av1_copy(fc->compound_index_cdf, default_compound_idx_cdfs);
+#endif  // CONFIG_NEW_MULTISYMBOL
   av1_copy(fc->compound_index_probs, default_compound_idx_probs);
 #endif  // CONFIG_JNT_COMP
   av1_copy(fc->newmv_prob, default_newmv_prob);
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h
index 310e58a..5cd8a84 100644
--- a/av1/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -266,6 +266,9 @@
   aom_cdf_prob txfm_partition_cdf[TXFM_PARTITION_CONTEXTS][CDF_SIZE(2)];
 #endif
 #if CONFIG_JNT_COMP
+#if CONFIG_NEW_MULTISYMBOL
+  aom_cdf_prob compound_index_cdf[COMP_INDEX_CONTEXTS][CDF_SIZE(2)];
+#endif  // CONFIG_NEW_MULTISYMBOL
   aom_prob compound_index_probs[COMP_INDEX_CONTEXTS];
 #endif  // CONFIG_JNT_COMP
 #if CONFIG_NEW_MULTISYMBOL
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index c724285..8fb19bc 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -2161,8 +2161,13 @@
 #if CONFIG_JNT_COMP
   if (has_two_sided_comp_refs(cm, mbmi)) {
     const int comp_index_ctx = get_comp_index_context(cm, xd);
+#if CONFIG_NEW_MULTISYMBOL
+    mbmi->compound_idx = aom_read_symbol(
+        r, ec_ctx->compound_index_cdf[comp_index_ctx], 2, ACCT_STR);
+#else
     mbmi->compound_idx =
         aom_read(r, ec_ctx->compound_index_probs[comp_index_ctx], ACCT_STR);
+#endif  // CONFIG_NEW_MULTISYMBOL
     if (xd->counts)
       ++xd->counts->compound_index[comp_index_ctx][mbmi->compound_idx];
   } else {
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index a3bd05a..b87fa06 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1497,11 +1497,19 @@
     write_ref_frames(cm, xd, w);
 
 #if CONFIG_JNT_COMP
+#if CONFIG_NEW_MULTISYMBOL
+    if (has_two_sided_comp_refs(cm, mbmi)) {
+      const int comp_index_ctx = get_comp_index_context(cm, xd);
+      aom_write_symbol(w, mbmi->compound_idx,
+                       ec_ctx->compound_index_cdf[comp_index_ctx], 2);
+    }
+#else
     if (has_two_sided_comp_refs(cm, mbmi)) {
       const int comp_index_ctx = get_comp_index_context(cm, xd);
       aom_write(w, mbmi->compound_idx,
                 ec_ctx->compound_index_probs[comp_index_ctx]);
     }
+#endif  // CONFIG_NEW_MULTISYMBOL
 #endif  // CONFIG_JNT_COMP
 
 #if CONFIG_COMPOUND_SINGLEREF
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 065e1a0..bd79d1f 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -301,6 +301,9 @@
   DECLARE_ALIGNED(16, uint8_t, decoded_8x8[8 * 8]);
 #endif
 #endif  // CONFIG_DIST_8X8
+#if CONFIG_JNT_COMP
+  int comp_idx_cost[COMP_INDEX_CONTEXTS][2];
+#endif  // CONFIG_JNT_COMP
 };
 
 #ifdef __cplusplus
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index dac927f..d30f995 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -608,10 +608,12 @@
   av1_copy_frame_mvs(cm, mi, mi_row, mi_col, x_mis, y_mis);
 
 #if CONFIG_JNT_COMP
+#if !CONFIG_NEW_MULTISYMBOL
   if (has_two_sided_comp_refs(cm, mbmi)) {
     const int comp_index_ctx = get_comp_index_context(cm, xd);
     ++td->counts->compound_index[comp_index_ctx][mbmi->compound_idx];
   }
+#endif  // CONFIG_NEW_MULTISYMBOL
 #endif  // CONFIG_JNT_COMP
 }
 
@@ -1284,6 +1286,17 @@
           }
         }
       }
+
+#if CONFIG_JNT_COMP
+#if CONFIG_NEW_MULTISYMBOL
+      if (has_second_ref(mbmi)) {
+        const int comp_index_ctx = get_comp_index_context(cm, xd);
+        ++counts->compound_index[comp_index_ctx][mbmi->compound_idx];
+        update_cdf(fc->compound_index_cdf[comp_index_ctx], mbmi->compound_idx,
+                   2);
+      }
+#endif  // CONFIG_NEW_MULTISYMBOL
+#endif  // CONFIG_JNT_COMP
     }
   }
 }
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index c0c8438..a44bc4a 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -379,6 +379,17 @@
       x->motion_mode_cost1[i][1] = av1_cost_bit(fc->obmc_prob[i], 1);
 #endif
     }
+#if CONFIG_JNT_COMP
+    for (i = 0; i < COMP_INDEX_CONTEXTS; ++i) {
+#if CONFIG_NEW_MULTISYMBOL
+      av1_cost_tokens_from_cdf(x->comp_idx_cost[i], fc->compound_index_cdf[i],
+                               NULL);
+#else
+      x->comp_idx_cost[i][0] = av1_cost_bit(fc->compound_index_probs[i], 0);
+      x->comp_idx_cost[i][1] = av1_cost_bit(fc->compound_index_probs[i], 1);
+#endif  // CONFIG_NEW_MULTISYMBOL
+    }
+#endif  // CONFIG_JNT_COMP
   }
 }
 
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 4250f61..52a4a91 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -8249,8 +8249,7 @@
 #if CONFIG_JNT_COMP
   if (has_two_sided_comp_refs(cm, mbmi)) {
     const int comp_index_ctx = get_comp_index_context(cm, xd);
-    rd_stats->rate += av1_cost_bit(cm->fc->compound_index_probs[comp_index_ctx],
-                                   mbmi->compound_idx);
+    rd_stats->rate += x->comp_idx_cost[comp_index_ctx][mbmi->compound_idx];
   }
 #endif  // CONFIG_JNT_COMP
 
