Merge eob-first into lv-map

Change-Id: Ib36a8df1a3ebddbf4320fb7b9b5537041bddc3a3
diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index de2d3f1..5f90c94 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -2196,9 +2196,7 @@
   AVERAGE_TILE_CDFS(txb_skip_cdf)
   AVERAGE_TILE_CDFS(nz_map_cdf)
   AVERAGE_TILE_CDFS(eob_flag_cdf)
-#if CONFIG_EOB_FIRST
   AVERAGE_TILE_CDFS(eob_extra_cdf)
-#endif
   AVERAGE_TILE_CDFS(dc_sign_cdf)
   AVERAGE_TILE_CDFS(coeff_base_cdf)
   AVERAGE_TILE_CDFS(coeff_lps_cdf)
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 52857af..f30728d 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -144,9 +144,7 @@
     };
 
 const aom_prob default_nz_map[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS] =
-    {
-#if CONFIG_EOB_FIRST
-      { { 42,  58,  129, 82,  37,  16,  117, 117, 66,  31,  17,  63,
+    { { { 42,  58,  129, 82,  37,  16,  117, 117, 66,  31,  17,  63,
           98,  40,  128, 128, 136, 130, 95,  43,  128, 154, 143, 98,
           41,  128, 103, 141, 69,  128, 128, 128, 130, 131, 95,  39,
           128, 147, 146, 94,  38,  128, 102, 143, 63,  128, 128, 128 },
@@ -177,123 +175,7 @@
         { 72,  215, 186, 137, 72,  43,  239, 209, 164, 136, 64,  251,
           215, 173, 130, 17,  128, 128, 128, 128, 128, 128, 128, 128,
           128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-          128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 } }
-#else
-#if CONFIG_EXT_TX
-      { { 56,  137, 82,  136, 83,  187, 124, 65,
-          215, 118, 155, 97,  160, 111, 71,  55,
-
-          142, 156, 91,  226, 107, 231, 146, 65,
-          105, 91,  232, 97,  185, 121, 90,  74,
-
-          153, 195, 123, 154, 106, 196, 143, 67,
-          232, 125, 121, 105, 159, 113, 88,  66 },
-        { 50,  124, 89,  135, 116, 189, 150, 81,
-          202, 126, 130, 107, 149, 110, 85,  67,
-
-          139, 174, 112, 200, 94,  206, 146, 71,
-          163, 164, 212, 99,  177, 143, 125, 85,
-
-          151, 181, 126, 168, 135, 186, 143, 94,
-          207, 129, 142, 135, 145, 112, 98,  81 } },
-      { { 57,  156, 91,  162, 99,  212, 149, 81,
-          223, 128, 182, 121, 216, 163, 119, 94,
-
-          139, 183, 100, 206, 98,  242, 163, 79,
-          200, 127, 234, 112, 230, 169, 115, 90,
-
-          156, 190, 130, 172, 117, 209, 163, 80,
-          217, 145, 182, 135, 204, 163, 120, 88 },
-        { 48,  133, 102, 143, 119, 190, 170, 109,
-          197, 127, 176, 137, 214, 168, 130, 119,
-
-          139, 185, 129, 210, 84,  237, 177, 75,
-          182, 165, 216, 121, 206, 177, 147, 102,
-
-          159, 192, 153, 182, 139, 203, 160, 125,
-          193, 161, 176, 142, 173, 145, 131, 114 } },
-      { { 33,  148, 81,  149, 84,  219, 152, 76,
-          229, 127, 205, 120, 234, 170, 123, 88,
-
-          134, 197, 101, 213, 91,  244, 169, 85,
-          220, 141, 234, 123, 242, 183, 130, 94,
-
-          141, 184, 121, 173, 98,  213, 156, 85,
-          204, 156, 197, 119, 212, 174, 127, 92 },
-        { 14,  75,  45,  98,  83,  197, 150, 90,
-          235, 124, 242, 155, 246, 187, 143, 103,
-
-          78,  185, 111, 255, 116, 255, 224, 171,
-          185, 157, 255, 85,  219, 122, 128, 128,
-
-          117, 187, 102, 181, 132, 233, 197, 93,
-          207, 135, 191, 107, 222, 175, 130, 47 } },
-      {
-          { 14,  79,  44,  86,  59,  178, 124, 63,
-            244, 106, 233, 117, 252, 185, 132, 92,
-
-            85,  225, 47,  236, 103, 255, 190, 116,
-            235, 114, 247, 123, 250, 174, 122, 110,
-
-            109, 197, 78,  177, 76,  242, 148, 68,
-            236, 123, 231, 103, 247, 171, 122, 91 },
-          { 11,  40,  27,  92,  78,  183, 171, 70,
-            216, 74,  251, 146, 252, 213, 171, 148,
-
-            85,  225, 47,  236, 103, 255, 190, 116,
-            235, 114, 247, 123, 250, 174, 122, 110,
-
-            109, 197, 78,  177, 76,  242, 148, 68,
-            236, 123, 231, 103, 247, 171, 122, 91 },
-      },
-#else   // CONFIG_EXT_TX
-      {
-          {
-              34, 103, 61, 106, 62, 160, 112, 54, 173, 121, 157, 92, 157, 129,
-              94, 65,
-          },
-
-          {
-              52, 124, 84, 136, 107, 197, 161, 82, 183, 151, 153, 140, 152, 134,
-              109, 81,
-          },
-      },
-      {
-          {
-              34, 127, 74, 124, 74, 204, 153, 76, 226, 162, 207, 126, 227, 192,
-              149, 108,
-          },
-
-          {
-              43, 136, 115, 158, 130, 212, 187, 112, 231, 180, 202, 164, 236,
-              204, 168, 139,
-          },
-      },
-      {
-          {
-              25, 117, 70, 120, 77, 215, 171, 102, 234, 156, 235, 155, 247, 220,
-              176, 127,
-          },
-
-          {
-              24, 88, 49, 100, 62, 202, 148, 62, 237, 178, 233, 168, 244, 198,
-              162, 127,
-          },
-      },
-      {
-          {
-              11, 54, 17, 69, 26, 128, 125, 56, 232, 130, 237, 121, 250, 168,
-              134, 114,
-          },
-
-          {
-              21, 52, 32, 95, 64, 171, 152, 70, 247, 159, 252, 177, 252, 221,
-              192, 143,
-          },
-      },
-#endif  // CONFIG_EXT_TX
-#endif  // CONFIG_EOB_FIRST
-    };
+          128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 } } };
 
 #if CONFIG_CTX1D
 const aom_prob default_eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS] = {
@@ -366,8 +248,7 @@
       128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
       128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 } },
 };
-#else  // CONFIG_CTX1D
-#if CONFIG_EOB_FIRST
+#else   // CONFIG_CTX1D
 static const aom_prob
     default_eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS] = {
       { { 221, 233, 232, 221, 231, 233, 216, 196, 233, 226, 200, 133, 227,
@@ -387,7 +268,7 @@
         { 92,  181, 200, 233, 232, 235, 249, 253, 253, 255, 254, 238, 228,
           255, 251, 240, 128, 242, 233, 211, 171, 214, 179, 46,  128 } }
     };
-#if CONFIG_EOB_FIRST
+
 static const aom_prob
     default_eob_extra[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS] = {
       { {
@@ -423,35 +304,6 @@
             145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
         } }
     };
-#endif
-#else
-const aom_prob default_eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS] = {
-  {
-      { 229, 236, 231, 222, 239, 236, 214, 201, 236, 226, 195, 134, 228,
-        210, 150, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
-      { 182, 186, 172, 176, 207, 213, 152, 122, 187, 171, 131, 65, 170,
-        134, 101, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
-  },
-  {
-      { 225, 234, 244, 236, 205, 242, 246, 247, 246, 234, 191, 242, 237,
-        215, 142, 224, 206, 142, 73,  128, 128, 128, 128, 128, 128 },
-      { 154, 171, 187, 175, 62,  199, 202, 206, 215, 200, 111, 197, 199,
-        174, 100, 135, 105, 104, 45,  128, 128, 128, 128, 128, 128 },
-  },
-  {
-      { 180, 213, 216, 229, 233, 232, 240, 235, 220, 178, 239, 238, 225,
-        187, 229, 214, 226, 200, 183, 141, 158, 179, 128, 128, 128 },
-      { 190, 225, 234, 248, 249, 248, 253, 251, 232, 110, 254, 252, 236,
-        57,  253, 248, 232, 85,  244, 189, 112, 64,  128, 128, 128 },
-  },
-  {
-      { 248, 224, 246, 244, 239, 245, 251, 246, 251, 255, 255, 255, 249,
-        255, 255, 255, 229, 255, 255, 255, 228, 255, 255, 247, 137 },
-      { 204, 207, 233, 215, 193, 228, 239, 221, 227, 250, 236, 207, 135,
-        236, 186, 182, 57,  209, 140, 128, 85,  184, 110, 128, 128 },
-  },
-};
-#endif
 #endif  // CONFIG_CTX1D
 
 const aom_prob default_coeff_lps[TX_SIZES][PLANE_TYPES][LEVEL_CONTEXTS] = {
@@ -6336,7 +6188,7 @@
   av1_copy(fc->txb_skip, default_txb_skip);
   av1_copy(fc->nz_map, default_nz_map);
   av1_copy(fc->eob_flag, default_eob_flag);
-#if CONFIG_EOB_FIRST
+#if !CONFIG_CTX1D
   av1_copy(fc->eob_extra, default_eob_extra);
 #endif
   av1_copy(fc->dc_sign, default_dc_sign);
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h
index a3388c8..bc4b5b9 100644
--- a/av1/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -149,9 +149,7 @@
   aom_prob txb_skip[TX_SIZES][TXB_SKIP_CONTEXTS];
   aom_prob nz_map[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS];
   aom_prob eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS];
-#if CONFIG_EOB_FIRST
   aom_prob eob_extra[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS];
-#endif
   aom_prob dc_sign[PLANE_TYPES][DC_SIGN_CONTEXTS];
   aom_prob coeff_base[TX_SIZES][PLANE_TYPES][NUM_BASE_LEVELS]
                      [COEFF_BASE_CONTEXTS];
@@ -168,10 +166,8 @@
                          [CDF_SIZE(2)];
   aom_cdf_prob eob_flag_cdf[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS]
                            [CDF_SIZE(2)];
-#if CONFIG_EOB_FIRST
   aom_cdf_prob eob_extra_cdf[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS]
                             [CDF_SIZE(2)];
-#endif
   aom_cdf_prob dc_sign_cdf[PLANE_TYPES][DC_SIGN_CONTEXTS][CDF_SIZE(2)];
   aom_cdf_prob coeff_base_cdf[TX_SIZES][PLANE_TYPES][NUM_BASE_LEVELS]
                              [COEFF_BASE_CONTEXTS][CDF_SIZE(2)];
@@ -414,9 +410,7 @@
   unsigned int txb_skip[TX_SIZES][TXB_SKIP_CONTEXTS][2];
   unsigned int nz_map[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS][2];
   unsigned int eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS][2];
-#if CONFIG_EOB_FIRST
   unsigned int eob_extra[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS][2];
-#endif
   unsigned int dc_sign[PLANE_TYPES][DC_SIGN_CONTEXTS][2];
   unsigned int coeff_base[TX_SIZES][PLANE_TYPES][NUM_BASE_LEVELS]
                          [COEFF_BASE_CONTEXTS][2];
diff --git a/av1/common/txb_common.c b/av1/common/txb_common.c
index c92bc48..42ebd55 100644
--- a/av1/common/txb_common.c
+++ b/av1/common/txb_common.c
@@ -149,14 +149,12 @@
         fc->eob_flag_cdf[tx_size][plane][ctx][2] = 0;
       }
 
-#if CONFIG_EOB_FIRST
       for (ctx = 0; ctx < EOB_COEF_CONTEXTS; ++ctx) {
         fc->eob_extra_cdf[tx_size][plane][ctx][0] =
             AOM_ICDF(128 * (aom_cdf_prob)fc->eob_extra[tx_size][plane][ctx]);
         fc->eob_extra_cdf[tx_size][plane][ctx][1] = AOM_ICDF(32768);
         fc->eob_extra_cdf[tx_size][plane][ctx][2] = 0;
       }
-#endif
     }
   }
 
@@ -233,7 +231,6 @@
   }
 }
 
-#if CONFIG_EOB_FIRST
 const int16_t k_eob_group_start[12] = { 0,  1,  2,  3,   5,   9,
                                         17, 33, 65, 129, 257, 513 };
 const int16_t k_eob_offset_bits[12] = { 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
@@ -276,5 +273,3 @@
 
   return t;
 }
-
-#endif
diff --git a/av1/common/txb_common.h b/av1/common/txb_common.h
index 6d487c4..5441b9d 100644
--- a/av1/common/txb_common.h
+++ b/av1/common/txb_common.h
@@ -15,12 +15,10 @@
 #define REDUCE_CONTEXT_DEPENDENCY 0
 #define MIN_SCAN_IDX_REDUCE_CONTEXT_DEPENDENCY 0
 
-#if CONFIG_EOB_FIRST
 extern const int16_t k_eob_group_start[12];
 extern const int16_t k_eob_offset_bits[12];
 int16_t get_eob_pos_token(int eob, int16_t *extra);
 int get_eob_pos_ctx(int eob_token);
-#endif
 
 extern const int16_t av1_coeff_band_4x4[16];
 
@@ -159,21 +157,12 @@
 }
 
 #define BR_CONTEXT_POSITION_NUM 8  // Base range coefficient context
-#if CONFIG_EOB_FIRST
 static const int br_ref_offset[BR_CONTEXT_POSITION_NUM][2] = {
   /* clang-format off*/
   { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, -1 },
   { 0, 1 },   { 1, -1 }, { 1, 0 },  { 1, 1 },
   /* clang-format on*/
 };
-#else
-static const int br_ref_offset[BR_CONTEXT_POSITION_NUM][2] = {
-  /* clang-format off*/
-  { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, -1 },
-  { 0, 1 },   { 1, -1 }, { 1, 0 },  { 1, 1 },
-  /* clang-format on*/
-};
-#endif
 
 static const int br_level_map[9] = {
   0, 0, 1, 1, 2, 2, 3, 3, 3,
@@ -278,7 +267,7 @@
 }
 
 #define SIG_REF_OFFSET_NUM 7
-#if CONFIG_EOB_FIRST
+
 static const int sig_ref_offset[SIG_REF_OFFSET_NUM][2] = {
   { 2, 1 }, { 2, 0 }, { 1, 2 }, { 1, 1 }, { 1, 0 }, { 0, 2 }, { 0, 1 },
 };
@@ -316,52 +305,6 @@
   }
   return count;
 }
-#else
-static const int sig_ref_offset[SIG_REF_OFFSET_NUM][2] = {
-  { -2, -1 }, { -2, 0 }, { -1, -2 }, { -1, -1 },
-  { -1, 0 },  { 0, -2 }, { 0, -1 },
-};
-
-#if REDUCE_CONTEXT_DEPENDENCY
-static INLINE int get_nz_count(const void *const tcoeffs, const int bwl,
-                               const int height, const int row, const int col,
-                               const int coeff_is_byte_flag, const int prev_row,
-                               const int prev_col) {
-  int count = 0;
-  for (int idx = 0; idx < SIG_REF_OFFSET_NUM; ++idx) {
-    const int ref_row = row + sig_ref_offset[idx][0];
-    const int ref_col = col + sig_ref_offset[idx][1];
-    if (ref_row < 0 || ref_col < 0 || ref_row >= height ||
-        ref_col >= (1 << bwl) || (prev_row == ref_row && prev_col == ref_col))
-      continue;
-    const int nb_pos = (ref_row << bwl) + ref_col;
-    count +=
-        ((coeff_is_byte_flag ? ((const uint8_t *)tcoeffs)[nb_pos]
-                             : ((const tran_low_t *)tcoeffs)[nb_pos]) != 0);
-  }
-  return count;
-}
-#else
-static INLINE int get_nz_count(const void *const tcoeffs, const int bwl,
-                               const int height, const int row, const int col,
-                               const int coeff_is_byte_flag) {
-  int count = 0;
-  for (int idx = 0; idx < SIG_REF_OFFSET_NUM; ++idx) {
-    const int ref_row = row + sig_ref_offset[idx][0];
-    const int ref_col = col + sig_ref_offset[idx][1];
-    if (ref_row < 0 || ref_col < 0 || ref_row >= height ||
-        ref_col >= (1 << bwl))
-      continue;
-    const int nb_pos = (ref_row << bwl) + ref_col;
-    count +=
-        ((coeff_is_byte_flag ? ((const uint8_t *)tcoeffs)[nb_pos]
-                             : ((const tran_low_t *)tcoeffs)[nb_pos]) != 0);
-  }
-  return count;
-}
-#endif
-
-#endif
 
 static INLINE TX_CLASS get_tx_class(TX_TYPE tx_type) {
   switch (tx_type) {
@@ -381,10 +324,7 @@
 // count to ctx
 static INLINE int get_nz_map_ctx_from_count(int count,
                                             int coeff_idx,  // raster order
-                                            int bwl,
-#if CONFIG_EOB_FIRST
-                                            int height,
-#endif
+                                            int bwl, int height,
                                             TX_TYPE tx_type) {
   (void)tx_type;
   const int row = coeff_idx >> bwl;
@@ -403,7 +343,6 @@
   int offset = 0;
 #endif
 
-#if CONFIG_EOB_FIRST
   (void)height;
   ctx = (count + 1) >> 1;
 
@@ -428,41 +367,6 @@
       return offset + 10 + ctx;
     }
   }
-#else
-  if (row == 0 && col == 0) return offset + 0;
-
-  if (row == 0 && col == 1) return offset + 1 + count;
-
-  if (row == 1 && col == 0) return offset + 3 + count;
-
-  if (row == 1 && col == 1) {
-    ctx = (count + 1) >> 1;
-
-    assert(5 + ctx <= 7);
-
-    return offset + 5 + ctx;
-  }
-
-  if (row == 0) {
-    ctx = (count + 1) >> 1;
-
-    assert(ctx < 2);
-    return offset + 8 + ctx;
-  }
-
-  if (col == 0) {
-    ctx = (count + 1) >> 1;
-
-    assert(ctx < 2);
-    return offset + 10 + ctx;
-  }
-
-  ctx = count >> 1;
-
-  assert(12 + ctx < 16);
-
-  return offset + 12 + ctx;
-#endif
 }
 
 static INLINE int get_nz_map_ctx(const void *const tcoeffs, const int scan_idx,
@@ -472,35 +376,11 @@
   const int coeff_idx = scan[scan_idx];
   const int row = coeff_idx >> bwl;
   const int col = coeff_idx - (row << bwl);
-#if REDUCE_CONTEXT_DEPENDENCY
-  int prev_coeff_idx;
-  int prev_row;
-  int prev_col;
-  if (scan_idx > MIN_SCAN_IDX_REDUCE_CONTEXT_DEPENDENCY) {
-    prev_coeff_idx = scan[scan_idx - 1];  // raster order
-    prev_row = prev_coeff_idx >> bwl;
-    prev_col = prev_coeff_idx - (prev_row << bwl);
-  } else {
-    prev_coeff_idx = -1;
-    prev_row = -1;
-    prev_col = -1;
-  }
-  const int count = get_nz_count(tcoeffs, bwl, height, row, col,
-                                 coeff_is_byte_flag, prev_row, prev_col);
-#else
-#if CONFIG_EOB_FIRST
+
   int tx_class = get_tx_class(tx_type);
   int count = get_nz_count(tcoeffs, bwl, height, row, col, tx_class,
                            coeff_is_byte_flag);
-#else
-  int count = get_nz_count(tcoeffs, bwl, height, row, col, coeff_is_byte_flag);
-#endif
-#endif
-  return get_nz_map_ctx_from_count(count, coeff_idx, bwl,
-#if CONFIG_EOB_FIRST
-                                   height,
-#endif
-                                   tx_type);
+  return get_nz_map_ctx_from_count(count, coeff_idx, bwl, height, tx_type);
 }
 
 static INLINE int get_eob_ctx(const int coeff_idx,  // raster order
diff --git a/av1/decoder/decodetxb.c b/av1/decoder/decodetxb.c
index 625767a..4d5edd7 100644
--- a/av1/decoder/decodetxb.c
+++ b/av1/decoder/decodetxb.c
@@ -255,7 +255,6 @@
 }
 #endif
 
-#if CONFIG_EOB_FIRST
 static INLINE int rec_eob_pos(int16_t eob_token, int16_t extra) {
   int eob = k_eob_group_start[eob_token];
   if (eob > 2) {
@@ -263,7 +262,6 @@
   }
   return eob;
 }
-#endif
 
 uint8_t av1_read_coeffs_txb(const AV1_COMMON *const cm, MACROBLOCKD *xd,
                             aom_reader *r, int blk_row, int blk_col, int block,
@@ -316,8 +314,6 @@
   const SCAN_ORDER *const scan_order = get_scan(cm, tx_size, tx_type, mbmi);
   const int16_t *scan = scan_order->scan;
 
-#if CONFIG_EOB_FIRST
-
   unsigned int(*nz_map_count)[SIG_COEF_CONTEXTS][2] =
       (counts) ? &counts->nz_map[txs_ctx][plane_type] : NULL;
   int16_t dummy;
@@ -389,42 +385,7 @@
 
     if (counts) ++(*nz_map_count)[coeff_ctx][is_nz];
   }
-#else
 
-#if CONFIG_CTX1D
-  const int16_t *iscan = scan_order->iscan;
-  TX_CLASS tx_class = get_tx_class(tx_type);
-  if (tx_class == TX_CLASS_2D) {
-    *eob =
-        read_nz_map(r, levels, plane, scan, tx_size, tx_type, ec_ctx, counts);
-  } else {
-#if LV_MAP_PROB
-    const int eob_mode = av1_read_record_bin(
-        counts, r, ec_ctx->eob_mode_cdf[txs_ctx][plane_type][tx_class], 2,
-        ACCT_STR);
-#else
-    const int eob_mode =
-        aom_read(r, ec_ctx->eob_mode[txs_ctx][plane_type][tx_class], ACCT_STR);
-#endif
-    if (counts) ++counts->eob_mode[txs_ctx][plane_type][tx_class][eob_mode];
-    if (eob_mode == 0) {
-      *eob =
-          read_nz_map(r, levels, plane, scan, tx_size, tx_type, ec_ctx, counts);
-    } else {
-      assert(tx_class == TX_CLASS_VERT || tx_class == TX_CLASS_HORIZ);
-      if (tx_class == TX_CLASS_VERT)
-        *eob = read_nz_map_vert(r, levels, plane, scan, iscan, tx_size, tx_type,
-                                ec_ctx, counts);
-      else
-        *eob = read_nz_map_horiz(r, levels, plane, scan, iscan, tx_size,
-                                 tx_type, ec_ctx, counts);
-    }
-  }
-#else
-  *eob = read_nz_map(r, levels, plane, scan, tx_size, tx_type, ec_ctx, counts);
-#endif
-
-#endif
   *max_scan_line = *eob;
 
   int i;
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 611bad3..049fa83 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -60,9 +60,7 @@
   int txb_skip_cost[TXB_SKIP_CONTEXTS][2];
   int nz_map_cost[SIG_COEF_CONTEXTS][2];
   int eob_cost[EOB_COEF_CONTEXTS][2];
-#if CONFIG_EOB_FIRST
   int eob_extra_cost[EOB_COEF_CONTEXTS][2];
-#endif
   int dc_sign_cost[DC_SIGN_CONTEXTS][2];
   int base_cost[NUM_BASE_LEVELS][COEFF_BASE_CONTEXTS][2];
   int lps_cost[LEVEL_CONTEXTS][COEFF_BASE_RANGE + 1];
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 33c14c8..e567dd7 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -27,7 +27,6 @@
   int update;
   tran_low_t low_qc;
   tran_low_t low_dqc;
-#if CONFIG_EOB_FIRST
   int64_t dist0;
   int rate;
   int rate_low;
@@ -36,7 +35,6 @@
   int64_t rd;
   int64_t rd_low;
   int nz_rate;  // for eob
-#endif
   int64_t rd_diff;
   int cost_diff;
   int64_t dist_diff;
@@ -132,7 +130,6 @@
   return error;
 }
 
-#if CONFIG_EOB_FIRST
 void av1_update_eob_context(int eob, int seg_eob, TX_SIZE txsize,
                             PLANE_TYPE plane, FRAME_CONTEXT *ec_ctx,
                             FRAME_COUNTS *counts) {
@@ -246,43 +243,6 @@
   txb_info->dqcoeff[coeff_idx] = qcoeff_to_dqcoeff(qc, dqv, txb_info->shift);
 }
 
-#endif
-
-static INLINE void write_nz_map(aom_writer *w, const tran_low_t *tcoeff,
-                                uint16_t eob, int plane, const int16_t *scan,
-                                TX_SIZE tx_size, TX_TYPE tx_type,
-                                FRAME_CONTEXT *fc) {
-  const PLANE_TYPE plane_type = get_plane_type(plane);
-  const TX_SIZE txs_ctx = get_txsize_context(tx_size);
-  const int bwl = b_width_log2_lookup[txsize_to_bsize[tx_size]] + 2;
-  const int height = tx_size_high[tx_size];
-#if CONFIG_CTX1D
-  const int width = tx_size_wide[tx_size];
-  const int eob_offset = width + height;
-  const TX_CLASS tx_class = get_tx_class(tx_type);
-  const int seg_eob =
-      (tx_class == TX_CLASS_2D) ? tx_size_2d[tx_size] : eob_offset;
-#else
-  const int seg_eob = tx_size_2d[tx_size];
-#endif
-
-  for (int c = 0; c < eob; ++c) {
-    int coeff_ctx = get_nz_map_ctx(tcoeff, c, scan, bwl, height, tx_type, 0);
-    int eob_ctx = get_eob_ctx(scan[c], txs_ctx, tx_type);
-
-    tran_low_t v = tcoeff[scan[c]];
-    int is_nz = (v != 0);
-
-    if (c == seg_eob - 1) break;
-
-    aom_write_bin(w, is_nz, fc->nz_map_cdf[txs_ctx][plane_type][coeff_ctx], 2);
-
-    if (is_nz)
-      aom_write_bin(w, c == (eob - 1),
-                    fc->eob_flag_cdf[txs_ctx][plane_type][eob_ctx], 2);
-  }
-}
-
 #if CONFIG_CTX1D
 static INLINE void write_nz_map_vert(aom_writer *w, const tran_low_t *tcoeff,
                                      uint16_t eob, int plane,
@@ -441,7 +401,6 @@
                     get_min_tx_size(tx_size), w);
 #endif
 
-#if CONFIG_EOB_FIRST
   int16_t eob_extra;
   int16_t eob_pt = get_eob_pos_token(eob, &eob_extra);
   int16_t dummy;
@@ -484,41 +443,6 @@
                   2);
   }
 
-#else  // CONFIG_EOB_FIRST
-
-#if CONFIG_CTX1D
-  TX_CLASS tx_class = get_tx_class(tx_type);
-  if (tx_class == TX_CLASS_2D) {
-    write_nz_map(w, tcoeff, eob, plane, scan, tx_size, tx_type, ec_ctx);
-  } else {
-    const int width = tx_size_wide[tx_size];
-    const int eob_offset = width + height;
-    const int eob_mode = eob > eob_offset;
-#if LV_MAP_PROB
-    aom_write_bin(w, eob_mode,
-                  ec_ctx->eob_mode_cdf[txs_ctx][plane_type][tx_class], 2);
-#else
-    aom_write(w, eob_mode, ec_ctx->eob_mode[txs_ctx][plane_type][tx_class]);
-#endif
-    if (eob_mode == 0) {
-      write_nz_map(w, tcoeff, eob, plane, scan, tx_size, tx_type, ec_ctx);
-    } else {
-      const int16_t *iscan = scan_order->iscan;
-      assert(tx_class == TX_CLASS_VERT || tx_class == TX_CLASS_HORIZ);
-      if (tx_class == TX_CLASS_VERT)
-        write_nz_map_vert(w, tcoeff, eob, plane, scan, iscan, tx_size, tx_type,
-                          ec_ctx);
-      else
-        write_nz_map_horiz(w, tcoeff, eob, plane, scan, iscan, tx_size, tx_type,
-                           ec_ctx);
-    }
-  }
-#else
-  write_nz_map(w, tcoeff, eob, plane, scan, tx_size, tx_type, ec_ctx);
-#endif  // CONFIG_CTX1D
-
-#endif  // CONFIG_EOB_FIRST
-
   for (int i = 0; i < NUM_BASE_LEVELS; ++i) {
     update_eob = 0;
     for (c = eob - 1; c >= 0; --c) {
@@ -846,7 +770,6 @@
   cost += av1_tx_type_cost(cm, x, xd, mbmi->sb_type, plane, tx_size, tx_type);
 #endif
 
-#if CONFIG_EOB_FIRST
   const int seg_eob = tx_size_2d[tx_size];
   int eob_cost = get_eob_cost(eob, seg_eob, coeff_costs);
 
@@ -915,107 +838,6 @@
       }
     }
   }
-
-#else  // CONFIG_EOB_FIRST
-
-#if CONFIG_CTX1D
-  TX_CLASS tx_class = get_tx_class(tx_type);
-  if (tx_class == TX_CLASS_2D) {
-    cost += get_nz_eob_map_cost(coeff_costs, qcoeff, eob, plane, scan, tx_size,
-                                tx_type);
-  } else {
-    const int width = tx_size_wide[tx_size];
-    const int eob_offset = width + height;
-    const int eob_mode = eob > eob_offset;
-    cost += coeff_costs->eob_mode_cost[tx_class][eob_mode];
-    if (eob_mode == 0) {
-      cost += get_nz_eob_map_cost(coeff_costs, qcoeff, eob, plane, scan,
-                                  tx_size, tx_type);
-    } else {
-      const int16_t *iscan = scan_order->iscan;
-      assert(tx_class == TX_CLASS_VERT || tx_class == TX_CLASS_HORIZ);
-      if (tx_class == TX_CLASS_VERT)
-        cost += get_nz_eob_map_cost_vert(coeff_costs, qcoeff, eob, plane, scan,
-                                         iscan, tx_size, tx_type);
-      else
-        cost += get_nz_eob_map_cost_horiz(coeff_costs, qcoeff, eob, plane, scan,
-                                          iscan, tx_size, tx_type);
-    }
-  }
-#else   // CONFIG_CTX1D
-  cost += get_nz_eob_map_cost(coeff_costs, qcoeff, eob, plane, scan, tx_size,
-                              tx_type);
-#endif  // CONFIG_CTX1D
-  for (c = 0; c < eob; ++c) {
-    tran_low_t v = qcoeff[scan[c]];
-    int is_nz = (v != 0);
-    int level = abs(v);
-
-    if (is_nz) {
-      int ctx_ls[NUM_BASE_LEVELS] = { 0 };
-      int sign = (v < 0) ? 1 : 0;
-
-      // sign bit cost
-      if (c == 0) {
-        int dc_sign_ctx = txb_ctx->dc_sign_ctx;
-        cost += coeff_costs->dc_sign_cost[dc_sign_ctx][sign];
-      } else {
-        cost += av1_cost_bit(128, sign);
-      }
-
-      get_base_ctx_set(qcoeff, scan[c], bwl, height, ctx_ls);
-
-      int i;
-      for (i = 0; i < NUM_BASE_LEVELS; ++i) {
-        if (level <= i) continue;
-
-        if (level == i + 1) {
-          cost += coeff_costs->base_cost[i][ctx_ls[i]][1];
-          continue;
-        }
-        cost += coeff_costs->base_cost[i][ctx_ls[i]][0];
-      }
-
-      if (level > NUM_BASE_LEVELS) {
-        int ctx;
-        ctx = get_br_ctx_coeff(qcoeff, scan[c], bwl, height);
-#if BR_NODE
-        int base_range = level - 1 - NUM_BASE_LEVELS;
-        if (base_range < COEFF_BASE_RANGE) {
-          cost += coeff_costs->lps_cost[ctx][base_range];
-        } else {
-          cost += coeff_costs->lps_cost[ctx][COEFF_BASE_RANGE];
-        }
-
-#else
-        for (int idx = 0; idx < COEFF_BASE_RANGE; ++idx) {
-          if (level == (idx + 1 + NUM_BASE_LEVELS)) {
-            cost += coeff_costs->lps_cost[ctx][1];
-            break;
-          }
-          cost += coeff_costs->lps_cost[ctx][0];
-        }
-#endif
-        if (level >= 1 + NUM_BASE_LEVELS + COEFF_BASE_RANGE) {
-          // residual cost
-          int r = level - COEFF_BASE_RANGE - NUM_BASE_LEVELS;
-          int ri = r;
-          int length = 0;
-
-          while (ri) {
-            ri >>= 1;
-            ++length;
-          }
-
-          for (ri = 0; ri < length - 1; ++ri) cost += av1_cost_bit(128, 0);
-
-          for (ri = length - 1; ri >= 0; --ri)
-            cost += av1_cost_bit(128, (r >> ri) & 0x01);
-        }
-      }
-    }
-  }
-#endif
   return cost;
 }
 
@@ -1069,39 +891,13 @@
     const int coeff_idx = scan[c];  // raster order
     const int row = coeff_idx >> bwl;
     const int col = coeff_idx - (row << bwl);
-#if REDUCE_CONTEXT_DEPENDENCY
-    int prev_coeff_idx;
-    int prev_row;
-    int prev_col;
-    if (c > MIN_SCAN_IDX_REDUCE_CONTEXT_DEPENDENCY) {
-      prev_coeff_idx = scan[c - 1];  // raster order
-      prev_row = prev_coeff_idx >> bwl;
-      prev_col = prev_coeff_idx - (prev_row << bwl);
-    } else {
-      prev_coeff_idx = -1;
-      prev_row = -1;
-      prev_col = -1;
-    }
-    txb_cache->nz_count_arr[coeff_idx] =
-        get_nz_count(qcoeff, bwl, height, row, col, 0, prev_row, prev_col);
-#else
-    txb_cache->nz_count_arr[coeff_idx] =
-        get_nz_count(qcoeff, bwl, height, row, col
-#if CONFIG_EOB_FIRST
-                     ,
-                     get_tx_class(txb_info->tx_type)
-#endif
-                         ,
-                     0);
-#endif
+
+    txb_cache->nz_count_arr[coeff_idx] = get_nz_count(
+        qcoeff, bwl, height, row, col, get_tx_class(txb_info->tx_type), 0);
 
     const int nz_count = txb_cache->nz_count_arr[coeff_idx];
-    txb_cache->nz_ctx_arr[coeff_idx] =
-        get_nz_map_ctx_from_count(nz_count, coeff_idx, bwl,
-#if CONFIG_EOB_FIRST
-                                  height,
-#endif
-                                  txb_info->tx_type);
+    txb_cache->nz_ctx_arr[coeff_idx] = get_nz_map_ctx_from_count(
+        nz_count, coeff_idx, bwl, height, txb_info->tx_type);
 
     // gen_base_count_mag_arr
     if (!has_base(qcoeff[coeff_idx], 0)) continue;
@@ -1302,10 +1098,7 @@
     txb_info->qcoeff[nb_coeff_idx] = get_lower_coeff(nb_coeff);
     const int new_ctx =
         get_nz_map_ctx_from_count(count - 1, coeff_idx, txb_info->bwl,
-#if CONFIG_EOB_FIRST
-                                  txb_info->height,
-#endif
-                                  txb_info->tx_type);
+                                  txb_info->height, txb_info->tx_type);
     txb_info->qcoeff[nb_coeff_idx] = nb_coeff;
     const int ctx = txb_cache->nz_ctx_arr[coeff_idx];
     const int is_nz = abs_qc > 0;
@@ -1336,11 +1129,8 @@
         get_level_prob(abs_qc, coeff_idx, txb_cache, txb_costs);
     const int *low_level_cost =
         get_level_prob(abs(*low_coeff), coeff_idx, txb_cache, txb_costs);
-#if CONFIG_EOB_FIRST
+
     if (scan_idx < txb_info->eob - 1) {
-#else
-    if (scan_idx < txb_info->seg_eob) {
-#endif
       // When level-0, we code the binary of abs_qc > level
       // but when level-k k > 0 we code the binary of abs_qc == level
       // That's why wee need this special treatment for level-0 map
@@ -1350,15 +1140,6 @@
       cost_diff = -level_cost[1];
     }
 
-#if !CONFIG_EOB_FIRST
-    if (scan_idx < txb_info->seg_eob) {
-      const int eob_ctx =
-          get_eob_ctx(coeff_idx, txb_info->txs_ctx, txb_info->tx_type);
-      cost_diff -=
-          txb_costs->eob_cost[eob_ctx][scan_idx == (txb_info->eob - 1)];
-    }
-#endif
-
     const int sign_cost = get_sign_bit_cost(
         qc, coeff_idx, txb_costs->dc_sign_cost, txb_info->txb_ctx->dc_sign_ctx);
     cost_diff -= sign_cost;
@@ -1569,11 +1350,8 @@
   assert(abs_qc <= 1);
   int cost = 0;
   const int scan_idx = txb_info->scan_order->iscan[coeff_idx];
-#if CONFIG_EOB_FIRST
+
   if (scan_idx < txb_info->eob - 1) {
-#else
-  if (scan_idx < txb_info->seg_eob) {
-#endif
     const int *level_cost = get_level_prob(0, coeff_idx, txb_cache, txb_costs);
     cost += level_cost[qc != 0];
   }
@@ -1583,13 +1361,6 @@
     const int ctx = txb_cache->base_ctx_arr[base_idx][coeff_idx];
     cost += get_base_cost(abs_qc, ctx, txb_costs->base_cost[base_idx][ctx],
                           base_idx);
-#if !CONFIG_EOB_FIRST
-    if (scan_idx < txb_info->seg_eob) {
-      const int eob_ctx =
-          get_eob_ctx(coeff_idx, txb_info->txs_ctx, txb_info->tx_type);
-      cost += txb_costs->eob_cost[eob_ctx][scan_idx == (txb_info->eob - 1)];
-    }
-#endif
     cost += get_sign_bit_cost(qc, coeff_idx, txb_costs->dc_sign_cost,
                               txb_info->txb_ctx->dc_sign_ctx);
   }
@@ -1598,11 +1369,7 @@
 
 static INLINE void set_eob(TxbInfo *txb_info, int eob) {
   txb_info->eob = eob;
-#if CONFIG_EOB_FIRST
   txb_info->seg_eob = tx_size_2d[txb_info->tx_size];
-#else
-  txb_info->seg_eob = AOMMIN(eob, tx_size_2d[txb_info->tx_size] - 1);
-#endif
 }
 
 // TODO(angiebird): add static to this function once it's called
@@ -1696,10 +1463,7 @@
         const int count = txb_cache->nz_count_arr[nb_coeff_idx];
         txb_cache->nz_ctx_arr[nb_coeff_idx] =
             get_nz_map_ctx_from_count(count, nb_coeff_idx, txb_info->bwl,
-#if CONFIG_EOB_FIRST
-                                      txb_info->height,
-#endif
-                                      txb_info->tx_type);
+                                      txb_info->height, txb_info->tx_type);
         // int ref_ctx = get_nz_map_ctx(txb_info->qcoeff, nb_coeff_idx,
         // txb_info->bwl, tx_type, 0);
         // if (ref_ctx != txb_cache->nz_ctx_arr[nb_coeff_idx])
@@ -1789,11 +1553,7 @@
   const tran_low_t abs_qc = abs(qc);
   int cost = 0;
   const int16_t *scan = txb_info->scan_order->scan;
-#if CONFIG_EOB_FIRST
   if (scan_idx < txb_info->eob - 1) {
-#else
-  if (scan_idx < txb_info->seg_eob) {
-#endif
     int coeff_ctx =
         get_nz_map_ctx(txb_info->qcoeff, scan_idx, scan, txb_info->bwl,
                        txb_info->height, txb_info->tx_type, 0);
@@ -1820,13 +1580,6 @@
       cost += get_br_cost(abs_qc, ctx, txb_costs->lps_cost[ctx]);
       cost += get_golomb_cost(abs_qc);
     }
-#if !CONFIG_EOB_FIRST
-    if (scan_idx < txb_info->seg_eob) {
-      int eob_ctx =
-          get_eob_ctx(scan[scan_idx], txb_info->txs_ctx, txb_info->tx_type);
-      cost += txb_costs->eob_cost[eob_ctx][scan_idx == (txb_info->eob - 1)];
-    }
-#endif
   }
   return cost;
 }
@@ -2003,7 +1756,7 @@
   return;
 }
 
-#if CONFIG_EOB_FIRST
+#if 1
 static int optimize_txb(TxbInfo *txb_info, const LV_MAP_COEFF_COST *txb_costs,
                         TxbCache *txb_cache, int dry_run, int fast_mode) {
   (void)fast_mode;
@@ -2260,11 +2013,7 @@
   tran_low_t *dqcoeff = BLOCK_OFFSET(pd->dqcoeff, block);
   const tran_low_t *tcoeff = BLOCK_OFFSET(p->coeff, block);
   const int16_t *dequant = pd->dequant;
-#if CONFIG_EOB_FIRST
   const int seg_eob = tx_size_2d[tx_size];
-#else
-  const int seg_eob = AOMMIN(eob, tx_size_2d[tx_size] - 1);
-#endif
   const int bwl = b_width_log2_lookup[txsize_to_bsize[tx_size]] + 2;
   const int stride = 1 << bwl;
   const int height = tx_size_high[tx_size];
@@ -2294,15 +2043,8 @@
                        rdmult,
                        &cm->coeff_ctx_table };
 
-#if CONFIG_EOB_FIRST
   const int update = optimize_txb(&txb_info, &txb_costs, NULL, 0, fast_mode);
-#else
-  TxbCache txb_cache;
-  gen_txb_cache(&txb_cache, &txb_info);
 
-  const int update =
-      optimize_txb(&txb_info, &txb_costs, &txb_cache, 0, fast_mode);
-#endif
   if (update) p->eobs[block] = txb_info.eob;
   return txb_info.eob;
 }
@@ -2548,7 +2290,6 @@
                            mbmi->sb_type, get_min_tx_size(tx_size), td->counts);
 #endif
 
-#if CONFIG_EOB_FIRST
   unsigned int(*nz_map_count)[SIG_COEF_CONTEXTS][2] =
       &(td->counts->nz_map[txsize_ctx][plane_type]);
   av1_update_eob_context(eob, seg_eob, txsize_ctx, plane_type, ec_ctx,
@@ -2563,42 +2304,6 @@
     ++(*nz_map_count)[coeff_ctx][is_nz];
     update_cdf(ec_ctx->nz_map_cdf[txsize_ctx][plane_type][coeff_ctx], is_nz, 2);
   }
-#else  // CONFIG_EOB_FIRST
-#if CONFIG_CTX1D
-  TX_CLASS tx_class = get_tx_class(tx_type);
-  if (tx_class == TX_CLASS_2D) {
-    av1_update_nz_eob_counts(ec_ctx, td->counts, eob, tcoeff, plane, tx_size,
-                             tx_type, scan);
-  } else {
-    const int width = tx_size_wide[tx_size];
-    const int eob_offset = width + height;
-    const int eob_mode = eob > eob_offset;
-    const TX_SIZE txs_ctx = get_txsize_context(tx_size);
-    ++td->counts->eob_mode[txs_ctx][plane_type][tx_class][eob_mode];
-#if LV_MAP_PROB
-    update_bin(ec_ctx->eob_mode_cdf[txs_ctx][plane_type][tx_class], eob_mode,
-               2);
-#endif
-    if (eob_mode == 0) {
-      av1_update_nz_eob_counts(ec_ctx, td->counts, eob, tcoeff, plane, tx_size,
-                               tx_type, scan);
-    } else {
-      const int16_t *iscan = scan_order->iscan;
-      assert(tx_class == TX_CLASS_VERT || tx_class == TX_CLASS_HORIZ);
-      if (tx_class == TX_CLASS_VERT)
-        av1_update_nz_eob_counts_vert(ec_ctx, td->counts, eob, tcoeff, plane,
-                                      tx_size, tx_type, scan, iscan);
-      else
-        av1_update_nz_eob_counts_horiz(ec_ctx, td->counts, eob, tcoeff, plane,
-                                       tx_size, tx_type, scan, iscan);
-    }
-  }
-#else   // CONFIG_CTX1D
-  av1_update_nz_eob_counts(ec_ctx, td->counts, eob, tcoeff, plane, tx_size,
-                           tx_type, scan);
-#endif  // CONFIG_CTX1D
-
-#endif  // CONFIG_EOB_FIRST
 
   // Reverse process order to handle coefficient level and sign.
   for (i = 0; i < NUM_BASE_LEVELS; ++i) {
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index a6fc108..622a36a 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -595,11 +595,9 @@
         av1_cost_tokens_from_cdf(pcost->eob_cost[ctx],
                                  fc->eob_flag_cdf[tx_size][plane][ctx], NULL);
 
-#if CONFIG_EOB_FIRST
       for (int ctx = 0; ctx < EOB_COEF_CONTEXTS; ++ctx)
         av1_cost_tokens_from_cdf(pcost->eob_extra_cost[ctx],
                                  fc->eob_extra_cdf[tx_size][plane][ctx], NULL);
-#endif
 
       for (int ctx = 0; ctx < DC_SIGN_CONTEXTS; ++ctx)
         av1_cost_tokens_from_cdf(pcost->dc_sign_cost[ctx],