diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 2463760..791bbf6 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -20,6 +20,7 @@
 #include "aom_scale/yv12config.h"
 
 #include "av1/common/alloccommon.h"
+#include "av1/common/cdef_block.h"
 #include "av1/common/common_data.h"
 #include "av1/common/quant_common.h"
 #include "av1/common/entropy.h"
@@ -2133,7 +2134,7 @@
    * stored in the MB_MODE_INFO of the 1st block in this CDEF unit (inside
    * cm->mi_params.mi_grid_base).
    */
-  bool cdef_transmitted[4];
+  bool cdef_transmitted[CDEF_IN_SB];
 
   /*!
    * Mask for this block used for compound prediction.
diff --git a/av1/common/cdef.h b/av1/common/cdef.h
index d0c2469..75c12de 100644
--- a/av1/common/cdef.h
+++ b/av1/common/cdef.h
@@ -34,6 +34,14 @@
          AOMMIN(abs(diff), AOMMAX(0, threshold - (abs(diff) >> shift)));
 }
 
+static AOM_INLINE int av1_get_cdef_transmitted_index(int mi_row, int mi_col) {
+  // Find index of this CDEF unit in this superblock.
+  const int index_mask = 1 << MI_IN_CDEF_LINEAR_LOG2;
+  const int cdef_unit_row_in_sb = !!(mi_row & index_mask);
+  const int cdef_unit_col_in_sb = !!(mi_col & index_mask);
+  return cdef_unit_col_in_sb + CDEF_IN_SB_STRIDE * cdef_unit_row_in_sb;
+}
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/av1/common/cdef_block.h b/av1/common/cdef_block.h
index aee6644..db9bcbd 100644
--- a/av1/common/cdef_block.h
+++ b/av1/common/cdef_block.h
@@ -19,6 +19,9 @@
 #define CDEF_BLOCKSIZE_LOG2 6
 #define CDEF_NBLOCKS ((1 << MAX_SB_SIZE_LOG2) / 8)
 #define CDEF_SB_SHIFT (MAX_SB_SIZE_LOG2 - CDEF_BLOCKSIZE_LOG2)
+#define CDEF_IN_SB_STRIDE (1 << (CDEF_SB_SHIFT))
+#define CDEF_IN_SB (1 << (CDEF_SB_SHIFT * 2))
+#define MI_IN_CDEF_LINEAR_LOG2 (CDEF_BLOCKSIZE_LOG2 - MI_SIZE_LOG2)
 
 /* We need to buffer three vertical lines. */
 #define CDEF_VBORDER (3)
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 10ad849..3dfa75d 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -13,6 +13,8 @@
 #include <assert.h>
 
 #include "av1/common/blockd.h"
+#include "av1/common/cdef.h"
+#include "av1/common/cdef_block.h"
 #include "av1/common/cfl.h"
 #include "av1/common/common.h"
 #include "av1/common/entropy.h"
@@ -62,37 +64,14 @@
   const int mi_row_in_sb = (xd->mi_row & sb_mask);
   const int mi_col_in_sb = (xd->mi_col & sb_mask);
   if (mi_row_in_sb == 0 && mi_col_in_sb == 0) {
-    xd->cdef_transmitted[0] = xd->cdef_transmitted[1] =
-        xd->cdef_transmitted[2] = xd->cdef_transmitted[3] = false;
+    av1_zero(xd->cdef_transmitted);
   }
 
   // CDEF unit size is 64x64 irrespective of the superblock size.
-  const int cdef_size = 1 << (6 - MI_SIZE_LOG2);
+  const int cdef_size = 1 << MI_IN_CDEF_LINEAR_LOG2;
 
   // Find index of this CDEF unit in this superblock.
-  const int index_mask = cdef_size;
-  const int cdef_unit_row_in_sb = ((xd->mi_row & index_mask) != 0);
-  const int cdef_unit_col_in_sb = ((xd->mi_col & index_mask) != 0);
-  const int index = (cm->seq_params.sb_size == BLOCK_128X128)
-                        ? cdef_unit_col_in_sb + 2 * cdef_unit_row_in_sb
-                        : 0;
-#if CONFIG_EXT_RECUR_PARTITIONS
-  int second_index = index;
-  const int current_grid_idx =
-      get_mi_grid_idx(&cm->mi_params, xd->mi_row, xd->mi_col);
-  const MB_MODE_INFO *const current_mbmi =
-      cm->mi_params.mi_grid_base[current_grid_idx];
-  const BLOCK_SIZE current_bsize = current_mbmi->sb_type[0];
-  const int mi_row_end = xd->mi_row + mi_size_high[current_bsize] - 1;
-  const int mi_col_end = xd->mi_col + mi_size_wide[current_bsize] - 1;
-  if (cm->seq_params.sb_size == BLOCK_128X128 &&
-      block_size_wide[current_bsize] != 128 &&
-      block_size_high[current_bsize] != 128) {
-    const int second_cdef_unit_row_in_sb = ((mi_row_end & index_mask) != 0);
-    const int second_cdef_unit_col_in_sb = ((mi_col_end & index_mask) != 0);
-    second_index = second_cdef_unit_col_in_sb + 2 * second_cdef_unit_row_in_sb;
-  }
-#endif  // CONFIG_EXT_RECUR_PARTITIONS
+  const int index = av1_get_cdef_transmitted_index(xd->mi_row, xd->mi_col);
 
   // Read CDEF strength from the first non-skip coding block in this CDEF unit.
   if (!xd->cdef_transmitted[index] && !skip_txfm) {
@@ -108,38 +87,6 @@
         aom_read_literal(r, cm->cdef_info.cdef_bits, ACCT_STR);
     xd->cdef_transmitted[index] = true;
   }
-#if CONFIG_EXT_RECUR_PARTITIONS
-  if (!xd->cdef_transmitted[second_index] && !skip_txfm) {
-    // CDEF strength for this CDEF unit needs to be read into the MB_MODE_INFO
-    // of the 1st block in this CDEF unit.
-    const int first_block_mask = ~(cdef_size - 1);
-    CommonModeInfoParams *const mi_params = &cm->mi_params;
-    const int grid_idx =
-        get_mi_grid_idx(mi_params, mi_row_end & first_block_mask,
-                        mi_col_end & first_block_mask);
-    assert(IMPLIES(!mi_params->mi_grid_base[grid_idx],
-                   xd->tree_type == LUMA_PART));
-    if (!mi_params->mi_grid_base[grid_idx]) {
-      const int mi_alloc_idx =
-          get_alloc_mi_idx(mi_params, mi_row_end & first_block_mask,
-                           mi_col_end & first_block_mask);
-      mi_params->mi_grid_base[grid_idx] = &mi_params->mi_alloc[mi_alloc_idx];
-    }
-    MB_MODE_INFO *const mbmi = mi_params->mi_grid_base[grid_idx];
-    mbmi->cdef_strength =
-        aom_read_literal(r, cm->cdef_info.cdef_bits, ACCT_STR);
-    xd->cdef_transmitted[second_index] = true;
-    for (int x = 0; x < mi_size_wide[current_bsize]; x++) {
-      for (int y = 0; y < mi_size_high[current_bsize]; y++) {
-        const int mi_x = xd->mi_col + x;
-        const int mi_y = xd->mi_row + y;
-        const int idx = get_alloc_mi_idx(mi_params, mi_y, mi_x);
-        if (mi_y < mi_params->mi_rows && mi_x < mi_params->mi_cols)
-          mi_params->mi_alloc[idx].cdef_strength = mbmi->cdef_strength;
-      }
-    }
-  }
-#endif  // CONFIG_EXT_RECUR_PARTITIONS
 }
 
 #if CONFIG_CCSO
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 9149446..bf75996 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1399,38 +1399,14 @@
   const int mi_row_in_sb = (xd->mi_row & sb_mask);
   const int mi_col_in_sb = (xd->mi_col & sb_mask);
   if (mi_row_in_sb == 0 && mi_col_in_sb == 0) {
-    xd->cdef_transmitted[0] = xd->cdef_transmitted[1] =
-        xd->cdef_transmitted[2] = xd->cdef_transmitted[3] = false;
+    av1_zero(xd->cdef_transmitted);
   }
 
   // CDEF unit size is 64x64 irrespective of the superblock size.
   const int cdef_size = 1 << (6 - MI_SIZE_LOG2);
 
   // Find index of this CDEF unit in this superblock.
-  const int index_mask = cdef_size;
-  const int cdef_unit_row_in_sb = ((xd->mi_row & index_mask) != 0);
-  const int cdef_unit_col_in_sb = ((xd->mi_col & index_mask) != 0);
-  const int index = (cm->seq_params.sb_size == BLOCK_128X128)
-                        ? cdef_unit_col_in_sb + 2 * cdef_unit_row_in_sb
-                        : 0;
-#if CONFIG_EXT_RECUR_PARTITIONS
-  int second_index = index;
-  const int current_grid_idx =
-      get_mi_grid_idx(&cm->mi_params, xd->mi_row, xd->mi_col);
-  const MB_MODE_INFO *const current_mbmi =
-      cm->mi_params.mi_grid_base[current_grid_idx];
-  assert(xd->tree_type != CHROMA_PART);
-  const BLOCK_SIZE current_bsize = current_mbmi->sb_type[0];
-  const int mi_row_end = xd->mi_row + mi_size_high[current_bsize] - 1;
-  const int mi_col_end = xd->mi_col + mi_size_wide[current_bsize] - 1;
-  if (cm->seq_params.sb_size == BLOCK_128X128 &&
-      block_size_wide[current_bsize] != 128 &&
-      block_size_high[current_bsize] != 128) {
-    const int second_cdef_unit_row_in_sb = ((mi_row_end & index_mask) != 0);
-    const int second_cdef_unit_col_in_sb = ((mi_col_end & index_mask) != 0);
-    second_index = second_cdef_unit_col_in_sb + 2 * second_cdef_unit_row_in_sb;
-  }
-#endif  // CONFIG_EXT_RECUR_PARTITIONS
+  const int index = av1_get_cdef_transmitted_index(xd->mi_row, xd->mi_col);
 
   // Write CDEF strength to the first non-skip coding block in this CDEF unit.
   if (!xd->cdef_transmitted[index] && !skip) {
@@ -1445,20 +1421,6 @@
     aom_write_literal(w, mbmi->cdef_strength, cm->cdef_info.cdef_bits);
     xd->cdef_transmitted[index] = true;
   }
-#if CONFIG_EXT_RECUR_PARTITIONS
-  if (!xd->cdef_transmitted[second_index] && !skip) {
-    // CDEF strength for this CDEF unit needs to be stored in the MB_MODE_INFO
-    // of the 1st block in this CDEF unit.
-    const int first_block_mask = ~(cdef_size - 1);
-    const CommonModeInfoParams *const mi_params = &cm->mi_params;
-    const int grid_idx =
-        get_mi_grid_idx(mi_params, mi_row_end & first_block_mask,
-                        mi_col_end & first_block_mask);
-    const MB_MODE_INFO *const mbmi = mi_params->mi_grid_base[grid_idx];
-    aom_write_literal(w, mbmi->cdef_strength, cm->cdef_info.cdef_bits);
-    xd->cdef_transmitted[second_index] = true;
-  }
-#endif  // CONFIG_EXT_RECUR_PARTITIONS
 }
 
 #if CONFIG_CCSO
