Remove CONFIG_LOOPFILTERING_ACROSS_TILES

The tool is not noving forward.

Change-Id: Id5f8b5c4645df3873b1c4ea0bbe8abf010298e8c
diff --git a/aomenc.c b/aomenc.c
index 7276bc5..e15b2d1 100644
--- a/aomenc.c
+++ b/aomenc.c
@@ -434,19 +434,6 @@
 static const arg_def_t tile_height =
     ARG_DEF(NULL, "tile-height", 1, "Tile heights (command separated)");
 #endif
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-static const arg_def_t tile_loopfilter_v =
-    ARG_DEF(NULL, "tile-loopfilter-v", 1,
-            "Enable loop filter across vertical tile boundary");
-static const arg_def_t tile_loopfilter_h =
-    ARG_DEF(NULL, "tile-loopfilter-h", 1,
-            "Enable loop filter across horizontal tile boundary");
-#else
-static const arg_def_t tile_loopfilter = ARG_DEF(
-    NULL, "tile-loopfilter", 1, "Enable loop filter across tile boundary");
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
 static const arg_def_t lossless =
     ARG_DEF(NULL, "lossless", 1, "Lossless mode (0: false (default), 1: true)");
 static const arg_def_t enable_cdef =
@@ -639,14 +626,6 @@
                                        &single_tile_decoding,
                                        &tile_cols,
                                        &tile_rows,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-                                       &tile_loopfilter_v,
-                                       &tile_loopfilter_h,
-#else
-                                       &tile_loopfilter,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
                                        &arnr_maxframes,
                                        &arnr_strength,
                                        &tune_metric,
@@ -701,14 +680,6 @@
                                         AV1E_SET_SINGLE_TILE_DECODING,
                                         AV1E_SET_TILE_COLUMNS,
                                         AV1E_SET_TILE_ROWS,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-                                        AV1E_SET_TILE_LOOPFILTER_V,
-                                        AV1E_SET_TILE_LOOPFILTER_H,
-#else
-                                        AV1E_SET_TILE_LOOPFILTER,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
                                         AOME_SET_ARNR_MAXFRAMES,
                                         AOME_SET_ARNR_STRENGTH,
                                         AOME_SET_TUNING,
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 354464d..4cf359e 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -41,14 +41,6 @@
   unsigned int static_thresh;
   unsigned int tile_columns;  // log2 number of tile columns
   unsigned int tile_rows;     // log2 number of tile rows
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  unsigned int loop_filter_across_tiles_v_enabled;
-  unsigned int loop_filter_across_tiles_h_enabled;
-#else
-  unsigned int loop_filter_across_tiles_enabled;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
   unsigned int arnr_max_frames;
   unsigned int arnr_strength;
   unsigned int min_gf_interval;
@@ -107,23 +99,15 @@
 };
 
 static struct av1_extracfg default_extra_cfg = {
-  0,  // cpu_used
-  0,  // dev_sf
-  1,  // enable_auto_alt_ref
-  0,  // enable_auto_bwd_ref
-  0,  // noise_sensitivity
-  0,  // sharpness
-  0,  // static_thresh
-  0,  // tile_columns
-  0,  // tile_rows
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  1,  // loop_filter_across_tiles_v_enabled
-  1,  // loop_filter_across_tiles_h_enabled
-#else
-  1,  // loop_filter_across_tiles_enabled
-#endif            // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif            // CONFIG_LOOPFILTERING_ACROSS_TILES
+  0,              // cpu_used
+  0,              // dev_sf
+  1,              // enable_auto_alt_ref
+  0,              // enable_auto_bwd_ref
+  0,              // noise_sensitivity
+  0,              // sharpness
+  0,              // static_thresh
+  0,              // tile_columns
+  0,              // tile_rows
   7,              // arnr_max_frames
   5,              // arnr_strength
   0,              // min_gf_interval; 0 -> default decision
@@ -345,14 +329,6 @@
         "Adaptive quantization are not supported in large scale tile "
         "coding.");
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  RANGE_CHECK_HI(extra_cfg, loop_filter_across_tiles_v_enabled, 1);
-  RANGE_CHECK_HI(extra_cfg, loop_filter_across_tiles_h_enabled, 1);
-#else
-  RANGE_CHECK_HI(extra_cfg, loop_filter_across_tiles_enabled, 1);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
   RANGE_CHECK_HI(extra_cfg, sharpness, 7);
   RANGE_CHECK_HI(extra_cfg, arnr_max_frames, 15);
   RANGE_CHECK_HI(extra_cfg, arnr_strength, 6);
@@ -680,17 +656,6 @@
     oxcf->tile_heights[i] = AOMMAX(cfg->tile_heights[i], 1);
   }
 #endif
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  oxcf->loop_filter_across_tiles_v_enabled =
-      extra_cfg->loop_filter_across_tiles_v_enabled;
-  oxcf->loop_filter_across_tiles_h_enabled =
-      extra_cfg->loop_filter_across_tiles_h_enabled;
-#else
-  oxcf->loop_filter_across_tiles_enabled =
-      extra_cfg->loop_filter_across_tiles_enabled;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
   oxcf->error_resilient_mode = cfg->g_error_resilient;
   oxcf->frame_parallel_decoding_mode = extra_cfg->frame_parallel_decoding_mode;
 
@@ -829,33 +794,6 @@
   return update_extra_cfg(ctx, &extra_cfg);
 }
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-static aom_codec_err_t ctrl_set_tile_loopfilter_v(aom_codec_alg_priv_t *ctx,
-                                                  va_list args) {
-  struct av1_extracfg extra_cfg = ctx->extra_cfg;
-  extra_cfg.loop_filter_across_tiles_v_enabled =
-      CAST(AV1E_SET_TILE_LOOPFILTER_V, args);
-  return update_extra_cfg(ctx, &extra_cfg);
-}
-static aom_codec_err_t ctrl_set_tile_loopfilter_h(aom_codec_alg_priv_t *ctx,
-                                                  va_list args) {
-  struct av1_extracfg extra_cfg = ctx->extra_cfg;
-  extra_cfg.loop_filter_across_tiles_h_enabled =
-      CAST(AV1E_SET_TILE_LOOPFILTER_H, args);
-  return update_extra_cfg(ctx, &extra_cfg);
-}
-#else
-static aom_codec_err_t ctrl_set_tile_loopfilter(aom_codec_alg_priv_t *ctx,
-                                                va_list args) {
-  struct av1_extracfg extra_cfg = ctx->extra_cfg;
-  extra_cfg.loop_filter_across_tiles_enabled =
-      CAST(AV1E_SET_TILE_LOOPFILTER, args);
-  return update_extra_cfg(ctx, &extra_cfg);
-}
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
 static aom_codec_err_t ctrl_set_arnr_max_frames(aom_codec_alg_priv_t *ctx,
                                                 va_list args) {
   struct av1_extracfg extra_cfg = ctx->extra_cfg;
@@ -1636,14 +1574,6 @@
   { AOME_SET_STATIC_THRESHOLD, ctrl_set_static_thresh },
   { AV1E_SET_TILE_COLUMNS, ctrl_set_tile_columns },
   { AV1E_SET_TILE_ROWS, ctrl_set_tile_rows },
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  { AV1E_SET_TILE_LOOPFILTER_V, ctrl_set_tile_loopfilter_v },
-  { AV1E_SET_TILE_LOOPFILTER_H, ctrl_set_tile_loopfilter_h },
-#else
-  { AV1E_SET_TILE_LOOPFILTER, ctrl_set_tile_loopfilter },
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
   { AOME_SET_ARNR_MAXFRAMES, ctrl_set_arnr_max_frames },
   { AOME_SET_ARNR_STRENGTH, ctrl_set_arnr_strength },
   { AOME_SET_TUNING, ctrl_set_tuning },
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index 937dc5b..a9c3734 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -1653,35 +1653,6 @@
     *int_4x4_y |= (size_mask[block_size] & 0xffffffffffffffffULL) << shift_y;
 }
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-// This function update the bit masks for the entire 64x64 region represented
-// by mi_row, mi_col. In case one of the edge is a tile boundary, loop filtering
-// for that edge is disabled. This function only check the tile boundary info
-// for the top left corner mi to determine the boundary information for the
-// top and left edge of the whole super block
-static void update_tile_boundary_filter_mask(AV1_COMMON *const cm,
-                                             const int mi_row, const int mi_col,
-                                             LOOP_FILTER_MASK *lfm) {
-  int i;
-  const BOUNDARY_TYPE *const bi =
-      cm->boundary_info + mi_row * cm->mi_stride + mi_col;
-
-  if (*bi & TILE_LEFT_BOUNDARY) {
-    for (i = 0; i <= TX_32X32; i++) {
-      lfm->left_y[i] &= 0xfefefefefefefefeULL;
-      lfm->left_uv[i] &= 0xeeee;
-    }
-  }
-
-  if (*bi & TILE_ABOVE_BOUNDARY) {
-    for (i = 0; i <= TX_32X32; i++) {
-      lfm->above_y[i] &= 0xffffffffffffff00ULL;
-      lfm->above_uv[i] &= 0xfff0;
-    }
-  }
-}
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
 // This function sets up the bit masks for the entire 64x64 region represented
 // by mi_row, mi_col.
 // TODO(JBB): This function only works for yv12.
@@ -1915,12 +1886,6 @@
     }
   }
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (av1_disable_loopfilter_on_tile_boundary(cm)) {
-    update_tile_boundary_filter_mask(cm, mi_row, mi_col, lfm);
-  }
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
   // Assert if we try to apply 2 different loop filters at the same position.
   assert(!(lfm->left_y[TX_16X16] & lfm->left_y[TX_8X8]));
   assert(!(lfm->left_y[TX_16X16] & lfm->left_y[TX_4X4]));
@@ -2331,22 +2296,6 @@
       const int curr_skipped = mbmi->skip && is_inter_block(mbmi);
       uint32_t level = curr_level;
       if (coord) {
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-        // Note: For sub8x8 blocks, we need to look at the top-left mi unit in
-        // order
-        // to extract the correct boundary information.
-        const int mi_row_bound = ((y << scale_vert) >> MI_SIZE_LOG2);
-        const int mi_col_bound = ((x << scale_horz) >> MI_SIZE_LOG2);
-        BOUNDARY_TYPE *const bi =
-            cm->boundary_info + mi_row_bound * cm->mi_stride + mi_col_bound;
-        // here, assuming bounfary_info is set correctly based on the
-        // loop_filter_across_tiles_enabled flag, i.e, tile boundary should
-        // only be set to true when this flag is set to 0.
-        int left_boundary = (*bi & TILE_LEFT_BOUNDARY);
-        int top_boundary = (*bi & TILE_ABOVE_BOUNDARY);
-        if (((VERT_EDGE == edge_dir) && (0 == left_boundary)) ||
-            ((HORZ_EDGE == edge_dir) && (0 == top_boundary)))
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
         {
           const MODE_INFO *const mi_prev = *(mi - mode_step);
           const int pv_row =
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index 067bfd1..6ccfedb 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -473,15 +473,6 @@
   unsigned int large_scale_tile;
   unsigned int single_tile_decoding;
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  int loop_filter_across_tiles_v_enabled;
-  int loop_filter_across_tiles_h_enabled;
-#else
-  int loop_filter_across_tiles_enabled;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
   int byte_alignment;
   int skip_loop_filter;
 
diff --git a/av1/common/resize.c b/av1/common/resize.c
index 7dfd033..761e5a8 100644
--- a/av1/common/resize.c
+++ b/av1/common/resize.c
@@ -1132,18 +1132,8 @@
     uint8_t *const dst_ptr = dst + upscaled_x0;
     const int dst_width = upscaled_x1 - upscaled_x0;
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    const int pad_left = (!cm->loop_filter_across_tiles_v_enabled || j == 0);
-    const int pad_right =
-        (!cm->loop_filter_across_tiles_v_enabled || j == cm->tile_cols - 1);
-#elif CONFIG_LOOPFILTERING_ACROSS_TILES
-    const int pad_left = (!cm->loop_filter_across_tiles_enabled || j == 0);
-    const int pad_right =
-        (!cm->loop_filter_across_tiles_enabled || j == cm->tile_cols - 1);
-#else
     const int pad_left = (j == 0);
     const int pad_right = (j == cm->tile_cols - 1);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES(_EXT)
 
     if (cm->use_highbitdepth)
       highbd_upscale_normative_rect(
diff --git a/av1/common/restoration.c b/av1/common/restoration.c
index 6c7db44..46211a7 100644
--- a/av1/common/restoration.c
+++ b/av1/common/restoration.c
@@ -205,45 +205,6 @@
 
 #define REAL_PTR(hbd, d) ((hbd) ? (uint8_t *)CONVERT_TO_SHORTPTR(d) : (d))
 
-// Helper function: Save one column of left/right context to the appropriate
-// column buffers, then extend the edge of the current tile into that column.
-//
-// Note: The height passed in should be the height of this processing unit,
-// but we actually save/restore an extra RESTORATION_BORDER pixels above and
-// below the stripe.
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-static void setup_boundary_column(const uint8_t *src8, int src_stride,
-                                  uint8_t *dst8, int dst_stride, uint16_t *buf,
-                                  int h, int use_highbd) {
-  if (use_highbd) {
-    const uint16_t *src16 = CONVERT_TO_SHORTPTR(src8);
-    uint16_t *dst16 = CONVERT_TO_SHORTPTR(dst8);
-    for (int i = -RESTORATION_BORDER; i < h + RESTORATION_BORDER; i++) {
-      buf[i + RESTORATION_BORDER] = dst16[i * dst_stride];
-      dst16[i * dst_stride] = src16[i * src_stride];
-    }
-  } else {
-    for (int i = -RESTORATION_BORDER; i < h + RESTORATION_BORDER; i++) {
-      buf[i + RESTORATION_BORDER] = dst8[i * dst_stride];
-      dst8[i * dst_stride] = src8[i * src_stride];
-    }
-  }
-}
-
-static void restore_boundary_column(uint8_t *dst8, int dst_stride,
-                                    const uint16_t *buf, int h,
-                                    int use_highbd) {
-  if (use_highbd) {
-    uint16_t *dst16 = CONVERT_TO_SHORTPTR(dst8);
-    for (int i = -RESTORATION_BORDER; i < h + RESTORATION_BORDER; i++)
-      dst16[i * dst_stride] = buf[i + RESTORATION_BORDER];
-  } else {
-    for (int i = -RESTORATION_BORDER; i < h + RESTORATION_BORDER; i++)
-      dst8[i * dst_stride] = (uint8_t)(buf[i + RESTORATION_BORDER]);
-  }
-}
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
 // With striped loop restoration, the filtering for each 64-pixel stripe gets
 // most of its input from the output of CDEF (stored in data8), but we need to
 // fill out a border of 3 pixels above/below the stripe according to the
@@ -280,38 +241,21 @@
 // to decide if we're overwriting the above/below boundary pixels or not.
 static void get_stripe_boundary_info(const RestorationTileLimits *limits,
                                      const AV1PixelRect *tile_rect, int ss_y,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-                                     int loop_filter_across_tiles_h_enabled,
-#else
-                                     int loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
                                      int *copy_above, int *copy_below) {
   *copy_above = 1;
   *copy_below = 1;
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (loop_filter_across_tiles_h_enabled) {
-#else
-  if (loop_filter_across_tiles_enabled) {
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-    const int full_stripe_height = RESTORATION_PROC_UNIT_SIZE >> ss_y;
-    const int runit_offset = RESTORATION_UNIT_OFFSET >> ss_y;
+  const int full_stripe_height = RESTORATION_PROC_UNIT_SIZE >> ss_y;
+  const int runit_offset = RESTORATION_UNIT_OFFSET >> ss_y;
 
-    const int first_stripe_in_tile = (limits->v_start == tile_rect->top);
-    const int this_stripe_height =
-        full_stripe_height - (first_stripe_in_tile ? runit_offset : 0);
-    const int last_stripe_in_tile =
-        (limits->v_start + this_stripe_height >= tile_rect->bottom);
+  const int first_stripe_in_tile = (limits->v_start == tile_rect->top);
+  const int this_stripe_height =
+      full_stripe_height - (first_stripe_in_tile ? runit_offset : 0);
+  const int last_stripe_in_tile =
+      (limits->v_start + this_stripe_height >= tile_rect->bottom);
 
-    if (first_stripe_in_tile) *copy_above = 0;
-    if (last_stripe_in_tile) *copy_below = 0;
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  }
-#endif
+  if (first_stripe_in_tile) *copy_above = 0;
+  if (last_stripe_in_tile) *copy_below = 0;
 }
 
 // Overwrite the border pixels around a processing stripe so that the conditions
@@ -329,16 +273,8 @@
 // index we get from limits into something we can look up in rsb).
 static void setup_processing_stripe_boundary(
     const RestorationTileLimits *limits, const RestorationStripeBoundaries *rsb,
-    int rsb_row, int use_highbd, int h,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    const AV1PixelRect *tile_rect, int loop_filter_across_tiles_v_enabled,
-#else
-    const AV1PixelRect *tile_rect, int loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-    uint8_t *data8, int data_stride, RestorationLineBuffers *rlbs,
-    int copy_above, int copy_below) {
+    int rsb_row, int use_highbd, int h, uint8_t *data8, int data_stride,
+    RestorationLineBuffers *rlbs, int copy_above, int copy_below) {
   // Offsets within the line buffers. The buffer logically starts at column
   // -RESTORATION_EXTRA_HORZ so the 1st column (at x0 - RESTORATION_EXTRA_HORZ)
   // has column x0 in the buffer.
@@ -394,59 +330,6 @@
       memcpy(REAL_PTR(use_highbd, dst8), src, line_size);
     }
   }
-
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (!loop_filter_across_tiles_v_enabled) {
-    // If loopfiltering across tiles is disabled, we need to check if we're at
-    // the edge of the current tile column. If we are, we need to extend the
-    // leftmost/rightmost column within the tile by 3 pixels, so that the output
-    // doesn't depend on pixels from the next column over.
-    // This applies to the top and bottom borders too, since those may have
-    // been filled out with data from the tile to the top-left (etc.) of us.
-    const int at_tile_left_border = (limits->h_start == tile_rect->left);
-    const int at_tile_right_border = (limits->h_end == tile_rect->right);
-
-    if (at_tile_left_border) {
-      uint8_t *dst8 = data8 + limits->h_start + limits->v_start * data_stride;
-      for (int j = -RESTORATION_BORDER; j < 0; j++)
-        setup_boundary_column(dst8, data_stride, dst8 + j, data_stride,
-                              rlbs->tmp_save_left[j + RESTORATION_BORDER], h,
-                              use_highbd);
-    }
-
-    if (at_tile_right_border) {
-      uint8_t *dst8 = data8 + limits->h_end + limits->v_start * data_stride;
-      for (int j = 0; j < RESTORATION_BORDER; j++)
-        setup_boundary_column(dst8 - 1, data_stride, dst8 + j, data_stride,
-                              rlbs->tmp_save_right[j], h, use_highbd);
-    }
-  }
-#else
-  if (!loop_filter_across_tiles_enabled) {
-    // If loopfiltering across tiles is disabled, we need to extend tile edges
-    // by 3 pixels, to ensure that we don't sample from the tiles to our left
-    // or right.
-    const int at_tile_left_border = (limits->h_start == tile_rect->left);
-    const int at_tile_right_border = (limits->h_end == tile_rect->right);
-
-    if (at_tile_left_border) {
-      uint8_t *dst8 = data8 + limits->h_start + limits->v_start * data_stride;
-      for (int j = -RESTORATION_BORDER; j < 0; j++)
-        setup_boundary_column(dst8, data_stride, dst8 + j, data_stride,
-                              rlbs->tmp_save_left[j + RESTORATION_BORDER], h,
-                              use_highbd);
-    }
-
-    if (at_tile_right_border) {
-      uint8_t *dst8 = data8 + limits->h_end + limits->v_start * data_stride;
-      for (int j = 0; j < RESTORATION_BORDER; j++)
-        setup_boundary_column(dst8 - 1, data_stride, dst8 + j, data_stride,
-                              rlbs->tmp_save_right[j], h, use_highbd);
-    }
-  }
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
 }
 
 // This function restores the boundary lines modified by
@@ -464,69 +347,14 @@
 // by the top/bottom borders.
 static void restore_processing_stripe_boundary(
     const RestorationTileLimits *limits, const RestorationLineBuffers *rlbs,
-    int use_highbd, int h,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    const AV1PixelRect *tile_rect, int loop_filter_across_tiles_v_enabled,
-#else
-    const AV1PixelRect *tile_rect, int loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-    uint8_t *data8, int data_stride, int copy_above, int copy_below) {
+    int use_highbd, int h, uint8_t *data8, int data_stride, int copy_above,
+    int copy_below) {
   const int line_width =
       (limits->h_end - limits->h_start) + 2 * RESTORATION_EXTRA_HORZ;
   const int line_size = line_width << use_highbd;
 
   const int data_x0 = limits->h_start - RESTORATION_EXTRA_HORZ;
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (!loop_filter_across_tiles_v_enabled) {
-    // Restore any pixels we overwrote at the left/right edge of this
-    // processing unit.
-    const int at_tile_left_border = (limits->h_start == tile_rect->left);
-    const int at_tile_right_border = (limits->h_end == tile_rect->right);
-
-    if (at_tile_left_border) {
-      uint8_t *dst8 = data8 + limits->h_start + limits->v_start * data_stride;
-      for (int j = -RESTORATION_BORDER; j < 0; j++)
-        restore_boundary_column(dst8 + j, data_stride,
-                                rlbs->tmp_save_left[j + RESTORATION_BORDER], h,
-                                use_highbd);
-    }
-
-    if (at_tile_right_border) {
-      uint8_t *dst8 = data8 + limits->h_end + limits->v_start * data_stride;
-      for (int j = 0; j < RESTORATION_BORDER; j++)
-        restore_boundary_column(dst8 + j, data_stride, rlbs->tmp_save_right[j],
-                                h, use_highbd);
-    }
-  }
-#else
-  if (!loop_filter_across_tiles_enabled) {
-    // Restore any pixels we overwrote at the left/right edge of this
-    // processing unit.
-    const int at_tile_left_border = (limits->h_start == tile_rect->left);
-    const int at_tile_right_border = (limits->h_end == tile_rect->right);
-
-    if (at_tile_left_border) {
-      uint8_t *dst8 = data8 + limits->h_start + limits->v_start * data_stride;
-      for (int j = -RESTORATION_BORDER; j < 0; j++)
-        restore_boundary_column(dst8 + j, data_stride,
-                                rlbs->tmp_save_left[j + RESTORATION_BORDER], h,
-                                use_highbd);
-    }
-
-    if (at_tile_right_border) {
-      uint8_t *dst8 = data8 + limits->h_end + limits->v_start * data_stride;
-      for (int j = 0; j < RESTORATION_BORDER; j++)
-        restore_boundary_column(dst8 + j, data_stride, rlbs->tmp_save_right[j],
-                                h, use_highbd);
-    }
-  }
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
   if (copy_above) {
     uint8_t *data8_tl = data8 + data_x0 + limits->v_start * data_stride;
     for (int i = -RESTORATION_BORDER; i < 0; ++i) {
@@ -1214,17 +1042,9 @@
 void av1_loop_restoration_filter_unit(
     const RestorationTileLimits *limits, const RestorationUnitInfo *rui,
     const RestorationStripeBoundaries *rsb, RestorationLineBuffers *rlbs,
-    const AV1PixelRect *tile_rect, int tile_stripe0,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    int loop_filter_across_tiles_v_enabled,
-    int loop_filter_across_tiles_h_enabled,
-#else
-    int loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-    int ss_x, int ss_y, int highbd, int bit_depth, uint8_t *data8, int stride,
-    uint8_t *dst8, int dst_stride, int32_t *tmpbuf) {
+    const AV1PixelRect *tile_rect, int tile_stripe0, int ss_x, int ss_y,
+    int highbd, int bit_depth, uint8_t *data8, int stride, uint8_t *dst8,
+    int dst_stride, int32_t *tmpbuf) {
   RestorationType unit_rtype = rui->restoration_type;
 
   int unit_h = limits->v_end - limits->v_start;
@@ -1250,15 +1070,8 @@
     int copy_above, copy_below;
     remaining_stripes.v_start = limits->v_start + i;
 
-    get_stripe_boundary_info(&remaining_stripes, tile_rect, ss_y,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-                             loop_filter_across_tiles_h_enabled,
-#else
-                             loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-                             &copy_above, &copy_below);
+    get_stripe_boundary_info(&remaining_stripes, tile_rect, ss_y, &copy_above,
+                             &copy_below);
 
     const int full_stripe_height = RESTORATION_PROC_UNIT_SIZE >> ss_y;
     const int runit_offset = RESTORATION_UNIT_OFFSET >> ss_y;
@@ -1279,30 +1092,14 @@
     const int h = AOMMIN(nominal_stripe_height,
                          remaining_stripes.v_end - remaining_stripes.v_start);
 
-    setup_processing_stripe_boundary(
-        &remaining_stripes, rsb, rsb_row, highbd, h,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-        tile_rect, loop_filter_across_tiles_v_enabled,
-#else
-        tile_rect, loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-        data8, stride, rlbs, copy_above, copy_below);
+    setup_processing_stripe_boundary(&remaining_stripes, rsb, rsb_row, highbd,
+                                     h, data8, stride, rlbs, copy_above,
+                                     copy_below);
 
     stripe_filter(rui, unit_w, h, procunit_width, data8_tl + i * stride, stride,
                   dst8_tl + i * dst_stride, dst_stride, tmpbuf, bit_depth);
 
     restore_processing_stripe_boundary(&remaining_stripes, rlbs, highbd, h,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-                                       tile_rect,
-                                       loop_filter_across_tiles_v_enabled,
-#else
-                                       tile_rect,
-                                       loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
                                        data8, stride, copy_above, copy_below);
 
     i += h;
@@ -1336,17 +1133,9 @@
 
   av1_loop_restoration_filter_unit(
       limits, &rsi->unit_info[rest_unit_idx], &rsi->boundaries, ctxt->rlbs,
-      tile_rect, ctxt->tile_stripe0,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      ctxt->cm->loop_filter_across_tiles_v_enabled,
-      ctxt->cm->loop_filter_across_tiles_h_enabled,
-#else
-      ctxt->cm->loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-      ctxt->ss_x, ctxt->ss_y, ctxt->highbd, ctxt->bit_depth, ctxt->data8,
-      ctxt->data_stride, ctxt->dst8, ctxt->dst_stride, ctxt->tmpbuf);
+      tile_rect, ctxt->tile_stripe0, ctxt->ss_x, ctxt->ss_y, ctxt->highbd,
+      ctxt->bit_depth, ctxt->data8, ctxt->data_stride, ctxt->dst8,
+      ctxt->dst_stride, ctxt->tmpbuf);
 }
 
 void av1_loop_restoration_filter_frame(YV12_BUFFER_CONFIG *frame,
@@ -1739,34 +1528,11 @@
     const int frame_stripe = stripe0 + tile_stripe;
 
     int use_deblock_above, use_deblock_below;
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    if (!cm->loop_filter_across_tiles_h_enabled) {
-      // In this case, we should use CDEF pixels for the above context
-      // of the topmost stripe in each region, and for the below context
-      // of the bottommost stripe in each tile. Dependent horizontal tile
-      // flag is ignored for this extension
-      use_deblock_above = (tile_stripe > 0);
-      use_deblock_below = (y1 < tile_rect.bottom);
-    } else {
-#else
-    if (!cm->loop_filter_across_tiles_enabled) {
-      // In this case, we should use CDEF pixels for the above context
-      // of the topmost stripe in each region, and for the below context
-      // of the bottommost stripe in each tile.
-      use_deblock_above = (tile_stripe > 0);
-      use_deblock_below = (y1 < tile_rect.bottom);
-    } else {
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-      // In this case, we should only use CDEF pixels at the top
-      // and bottom of the frame as a whole; internal tile boundaries
-      // can use deblocked pixels from adjacent tiles for context.
-      use_deblock_above = (frame_stripe > 0);
-      use_deblock_below = (y1 < plane_height);
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    }
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
+    // In this case, we should only use CDEF pixels at the top
+    // and bottom of the frame as a whole; internal tile boundaries
+    // can use deblocked pixels from adjacent tiles for context.
+    use_deblock_above = (frame_stripe > 0);
+    use_deblock_below = (y1 < plane_height);
 
     if (!after_cdef) {
       // Save deblocked context where needed.
diff --git a/av1/common/restoration.h b/av1/common/restoration.h
index ccfd3ea..932115d 100644
--- a/av1/common/restoration.h
+++ b/av1/common/restoration.h
@@ -201,16 +201,6 @@
   // stripe.
   uint16_t tmp_save_above[RESTORATION_BORDER][RESTORATION_LINEBUFFER_WIDTH];
   uint16_t tmp_save_below[RESTORATION_BORDER][RESTORATION_LINEBUFFER_WIDTH];
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  // Column buffers, for storing 3 pixels at the left/right of each tile
-  // when loopfiltering across tiles is disabled.
-  //
-  // Note: These arrays only need to store the pixels immediately left/right
-  // of each processing unit; the corner pixels (top-left, etc.) are always
-  // stored into the above/below arrays.
-  uint16_t tmp_save_left[RESTORATION_BORDER][RESTORATION_COLBUFFER_HEIGHT];
-  uint16_t tmp_save_right[RESTORATION_BORDER][RESTORATION_COLBUFFER_HEIGHT];
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
 } RestorationLineBuffers;
 
 typedef struct {
@@ -298,17 +288,9 @@
 void av1_loop_restoration_filter_unit(
     const RestorationTileLimits *limits, const RestorationUnitInfo *rui,
     const RestorationStripeBoundaries *rsb, RestorationLineBuffers *rlbs,
-    const AV1PixelRect *tile_rect, int tile_stripe0,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    int loop_filter_across_tiles_v_enabled,
-    int loop_filter_across_tiles_h_enabled,
-#else
-    int loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-    int ss_x, int ss_y, int highbd, int bit_depth, uint8_t *data8, int stride,
-    uint8_t *dst8, int dst_stride, int32_t *tmpbuf);
+    const AV1PixelRect *tile_rect, int tile_stripe0, int ss_x, int ss_y,
+    int highbd, int bit_depth, uint8_t *data8, int stride, uint8_t *dst8,
+    int dst_stride, int32_t *tmpbuf);
 
 void av1_loop_restoration_filter_frame(YV12_BUFFER_CONFIG *frame,
                                        struct AV1Common *cm);
diff --git a/av1/common/tile_common.c b/av1/common/tile_common.c
index 8835336..95b739e 100644
--- a/av1/common/tile_common.c
+++ b/av1/common/tile_common.c
@@ -250,81 +250,3 @@
 
   return r;
 }
-
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-// this function should only be called when loop_filter_across_tile flag is
-// set to 0
-void av1_setup_across_tile_boundary_info(const AV1_COMMON *const cm,
-                                         const TileInfo *const tile_info) {
-  if (cm->tile_cols * cm->tile_rows > 1) {
-    const int mi_row = tile_info->mi_row_start;
-    const int mi_col = tile_info->mi_col_start;
-    BOUNDARY_TYPE *const bi_start =
-        cm->boundary_info + mi_row * cm->mi_stride + mi_col;
-    // assert(mi_start < cm->mip + cm->mi_alloc_size);
-    BOUNDARY_TYPE *bi = 0;
-    const int row_diff = tile_info->mi_row_end - tile_info->mi_row_start;
-    const int col_diff = tile_info->mi_col_end - tile_info->mi_col_start;
-    int row, col;
-
-// when CONFIG_LOOPFILTERING_ACROSS_TILES_EXT is enabled, whether tile
-// is dependent horizontal tile or not is ignored. tile boundary is always
-// initialized based on the actual tile boundary.
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    if (cm->loop_filter_across_tiles_h_enabled == 0)
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    {
-      bi = bi_start;
-      for (col = 0; col < col_diff; ++col) {
-        *bi |= TILE_ABOVE_BOUNDARY;
-        bi += 1;
-      }
-    }
-
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    if (cm->loop_filter_across_tiles_v_enabled == 0)
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    {
-      bi = bi_start;
-      for (row = 0; row < row_diff; ++row) {
-        *bi |= TILE_LEFT_BOUNDARY;
-        bi += cm->mi_stride;
-      }
-    }
-
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    if (cm->loop_filter_across_tiles_h_enabled == 0)
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    {
-      bi = bi_start + (row_diff - 1) * cm->mi_stride;
-      // explicit bounds checking
-      // assert(mi + col_diff <= cm->mip + cm->mi_alloc_size);
-      for (col = 0; col < col_diff; ++col) {
-        *bi |= TILE_BOTTOM_BOUNDARY;
-        bi += 1;
-      }
-    }
-
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    if (cm->loop_filter_across_tiles_v_enabled == 0)
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    {
-      bi = bi_start + col_diff - 1;
-      for (row = 0; row < row_diff; ++row) {
-        *bi |= TILE_RIGHT_BOUNDARY;
-        bi += cm->mi_stride;
-      }
-    }
-  }  // end of cm->tile_cols * cm->tile_rows > 1
-}
-
-int av1_disable_loopfilter_on_tile_boundary(const struct AV1Common *cm) {
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  return ((!cm->loop_filter_across_tiles_v_enabled ||
-           !cm->loop_filter_across_tiles_h_enabled) &&
-#else
-  return (!cm->loop_filter_across_tiles_enabled &&
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-          (cm->tile_cols * cm->tile_rows > 1));
-}
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
diff --git a/av1/common/tile_common.h b/av1/common/tile_common.h
index 67105c5..5ffdafe 100644
--- a/av1/common/tile_common.h
+++ b/av1/common/tile_common.h
@@ -52,12 +52,6 @@
 AV1PixelRect av1_get_tile_rect(const TileInfo *tile_info,
                                const struct AV1Common *cm, int is_uv);
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-void av1_setup_across_tile_boundary_info(const struct AV1Common *const cm,
-                                         const TileInfo *const tile_info);
-int av1_disable_loopfilter_on_tile_boundary(const struct AV1Common *cm);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
 #if CONFIG_MAX_TILE
 
 // Define tile maximum width and area
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 9da3676..89ae7ed 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -1573,26 +1573,6 @@
     cm->tile_rows = 1;
     while (cm->tile_rows * cm->tile_height < cm->mi_rows) ++cm->tile_rows;
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-    if (cm->tile_cols > 1) {
-      cm->loop_filter_across_tiles_v_enabled = aom_rb_read_bit(rb);
-    } else {
-      cm->loop_filter_across_tiles_v_enabled = 1;
-    }
-    if (cm->tile_rows > 1) {
-      cm->loop_filter_across_tiles_h_enabled = aom_rb_read_bit(rb);
-    } else {
-      cm->loop_filter_across_tiles_h_enabled = 1;
-    }
-#else
-    if (cm->tile_cols * cm->tile_rows > 1)
-      cm->loop_filter_across_tiles_enabled = aom_rb_read_bit(rb);
-    else
-      cm->loop_filter_across_tiles_enabled = 1;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
     if (cm->tile_cols * cm->tile_rows > 1) {
       // Read the number of bytes used to store tile size
       pbi->tile_col_size_bytes = aom_rb_read_literal(rb, 2) + 1;
@@ -1636,25 +1616,6 @@
       get_tile_size(cm->mi_rows, cm->log2_tile_rows, &cm->tile_rows);
 
 #endif  // CONFIG_MAX_TILE
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (cm->tile_cols > 1) {
-    cm->loop_filter_across_tiles_v_enabled = aom_rb_read_bit(rb);
-  } else {
-    cm->loop_filter_across_tiles_v_enabled = 1;
-  }
-  if (cm->tile_rows > 1) {
-    cm->loop_filter_across_tiles_h_enabled = aom_rb_read_bit(rb);
-  } else {
-    cm->loop_filter_across_tiles_h_enabled = 1;
-  }
-#else
-  if (cm->tile_cols * cm->tile_rows > 1)
-    cm->loop_filter_across_tiles_enabled = aom_rb_read_bit(rb);
-  else
-    cm->loop_filter_across_tiles_enabled = 1;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
 
   if (cm->tile_rows * cm->tile_cols > 1) {
     // tile size magnitude
@@ -1875,23 +1836,6 @@
   }
 }
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-static void dec_setup_across_tile_boundary_info(
-    const AV1_COMMON *const cm, const TileInfo *const tile_info) {
-  if (tile_info->mi_row_start >= tile_info->mi_row_end ||
-      tile_info->mi_col_start >= tile_info->mi_col_end)
-    return;
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (!cm->loop_filter_across_tiles_v_enabled ||
-      !cm->loop_filter_across_tiles_h_enabled) {
-#else
-  if (!cm->loop_filter_across_tiles_enabled) {
-#endif
-    av1_setup_across_tile_boundary_info(cm, tile_info);
-  }
-}
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
 static const uint8_t *decode_tiles(AV1Decoder *pbi, const uint8_t *data,
                                    const uint8_t *data_end, int startTile,
                                    int endTile) {
@@ -2021,10 +1965,6 @@
       av1_zero_above_context(cm, tile_info.mi_col_start, tile_info.mi_col_end);
       av1_reset_loop_restoration(&td->xd, num_planes);
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES || CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      dec_setup_across_tile_boundary_info(cm, &tile_info);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
       for (mi_row = tile_info.mi_row_start; mi_row < tile_info.mi_row_end;
            mi_row += cm->seq_params.mib_size) {
         av1_zero_left_context(&td->xd);
@@ -3290,14 +3230,6 @@
 }
 
 static void dec_setup_frame_boundary_info(AV1_COMMON *const cm) {
-// Note: When LOOPFILTERING_ACROSS_TILES is enabled, we need to clear the
-// boundary information every frame, since the tile boundaries may
-// change every frame (particularly when dependent-horztiles is also
-// enabled); when it is disabled, the only information stored is the frame
-// boundaries, which only depend on the frame size.
-#if !CONFIG_LOOPFILTERING_ACROSS_TILES && !CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (cm->width != cm->last_width || cm->height != cm->last_height)
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
   {
     int row, col;
     for (row = 0; row < cm->mi_rows; ++row) {
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 20d8b4b..da68477 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2310,20 +2310,6 @@
 #endif
   }
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (cm->tile_cols > 1) {
-    aom_wb_write_bit(wb, cm->loop_filter_across_tiles_v_enabled);
-  }
-  if (cm->tile_rows > 1) {
-    aom_wb_write_bit(wb, cm->loop_filter_across_tiles_h_enabled);
-  }
-#else
-  if (cm->tile_cols * cm->tile_rows > 1)
-    aom_wb_write_bit(wb, cm->loop_filter_across_tiles_enabled);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
   *saved_wb = *wb;
   if (cm->large_scale_tile) {
     if (cm->tile_rows * cm->tile_cols > 1) {
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index f139898..cfe6984 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3754,17 +3754,6 @@
 
   cfl_init(&td->mb.e_mbd.cfl, cm);
 
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  if (!cm->loop_filter_across_tiles_v_enabled ||
-      !cm->loop_filter_across_tiles_h_enabled)
-    av1_setup_across_tile_boundary_info(cm, tile_info);
-#else
-  if (!cm->loop_filter_across_tiles_enabled)
-    av1_setup_across_tile_boundary_info(cm, tile_info);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
-
   av1_crc_calculator_init(&td->mb.mb_rd_record.crc_calculator, 24, 0x5D6DCB);
 
   td->intrabc_used_this_tile = 0;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index ec164bf..0f86b6b 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -919,18 +919,6 @@
         get_tile_size(cm->mi_rows, cm->log2_tile_rows, &cm->tile_rows);
 #endif  // CONFIG_MAX_TILE
   }
-
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  cm->loop_filter_across_tiles_v_enabled =
-      cpi->oxcf.loop_filter_across_tiles_v_enabled;
-  cm->loop_filter_across_tiles_h_enabled =
-      cpi->oxcf.loop_filter_across_tiles_h_enabled;
-#else
-  cm->loop_filter_across_tiles_enabled =
-      cpi->oxcf.loop_filter_across_tiles_enabled;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
 }
 
 static void update_frame_size(AV1_COMP *cpi) {
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 7a32c77..7f4887d 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -261,14 +261,6 @@
   int tile_widths[MAX_TILE_COLS];
   int tile_heights[MAX_TILE_ROWS];
 #endif
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-  int loop_filter_across_tiles_v_enabled;
-  int loop_filter_across_tiles_h_enabled;
-#else
-  int loop_filter_across_tiles_enabled;
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
 
   int max_threads;
 
diff --git a/av1/encoder/pickrst.c b/av1/encoder/pickrst.c
index c5754af..70e0d70 100644
--- a/av1/encoder/pickrst.c
+++ b/av1/encoder/pickrst.c
@@ -160,14 +160,6 @@
 
   av1_loop_restoration_filter_unit(
       limits, rui, &rsi->boundaries, &rlbs, tile_rect, rsc->tile_stripe0,
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      cm->loop_filter_across_tiles_v_enabled,
-      cm->loop_filter_across_tiles_h_enabled,
-#else
-      cm->loop_filter_across_tiles_enabled,
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
       is_uv && cm->subsampling_x, is_uv && cm->subsampling_y, highbd, bit_depth,
       fts->buffers[plane], fts->strides[is_uv], rsc->dst->buffers[plane],
       rsc->dst->strides[is_uv], cm->rst_tmpbuf);
diff --git a/build/cmake/aom_config_defaults.cmake b/build/cmake/aom_config_defaults.cmake
index ac657c8..361e742 100644
--- a/build/cmake/aom_config_defaults.cmake
+++ b/build/cmake/aom_config_defaults.cmake
@@ -102,8 +102,6 @@
 set(CONFIG_FWD_KF 1 CACHE NUMBER "AV1 experiment flag.")
 set(CONFIG_HASH_ME 0 CACHE NUMBER "AV1 experiment flag.")
 set(CONFIG_INTER_STATS_ONLY 0 CACHE NUMBER "AV1 experiment flag.")
-set(CONFIG_LOOPFILTERING_ACROSS_TILES 1 CACHE NUMBER "AV1 experiment flag.")
-set(CONFIG_LOOPFILTERING_ACROSS_TILES_EXT 1 CACHE NUMBER "AV1 experiment flag.")
 set(CONFIG_LOWPRECISION_BLEND 1 CACHE NUMBER "AV1 experiment flag.")
 set(CONFIG_MAX_TILE 1 CACHE NUMBER "AV1 experiment flag.")
 set(CONFIG_MONO_VIDEO 1 CACHE NUMBER "AV1 experiment flag.")
diff --git a/test/av1_ext_tile_test.cc b/test/av1_ext_tile_test.cc
index 8459c3c..6148cea 100644
--- a/test/av1_ext_tile_test.cc
+++ b/test/av1_ext_tile_test.cc
@@ -89,14 +89,6 @@
       encoder->Control(AV1E_SET_SINGLE_TILE_DECODING, 1);
       // Always use 64x64 max partition.
       encoder->Control(AV1E_SET_SUPERBLOCK_SIZE, AOM_SUPERBLOCK_SIZE_64X64);
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_V, 0);
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_H, 0);
-#else
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER, 0);
-#endif
-#endif
     }
 
     if (video->frame() == 1) {
diff --git a/test/ethread_test.cc b/test/ethread_test.cc
index 6c6fc01..d93967f 100644
--- a/test/ethread_test.cc
+++ b/test/ethread_test.cc
@@ -71,14 +71,6 @@
                                   ::libaom_test::Encoder *encoder) {
     if (!encoder_initialized_) {
       SetTileSize(encoder);
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_V, 0);
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_H, 0);
-#else
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER, 0);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
       encoder->Control(AOME_SET_CPUUSED, set_cpu_used_);
       if (encoding_mode_ != ::libaom_test::kRealTime) {
         encoder->Control(AOME_SET_ENABLEAUTOALTREF, 1);
diff --git a/test/superframe_test.cc b/test/superframe_test.cc
index 6a7bc39..8a3378d 100644
--- a/test/superframe_test.cc
+++ b/test/superframe_test.cc
@@ -50,14 +50,6 @@
       encoder->Control(AOME_SET_CPUUSED, 2);
       encoder->Control(AV1E_SET_TILE_COLUMNS, n_tile_cols_);
       encoder->Control(AV1E_SET_TILE_ROWS, n_tile_rows_);
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_V, 0);
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_H, 0);
-#else
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER, 0);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
     }
   }
 
diff --git a/test/tile_independence_test.cc b/test/tile_independence_test.cc
index 014ef97..a798262 100644
--- a/test/tile_independence_test.cc
+++ b/test/tile_independence_test.cc
@@ -63,14 +63,6 @@
     if (video->frame() == 1) {
       encoder->Control(AV1E_SET_TILE_COLUMNS, n_tile_cols_);
       encoder->Control(AV1E_SET_TILE_ROWS, n_tile_rows_);
-#if CONFIG_LOOPFILTERING_ACROSS_TILES
-#if CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_V, 0);
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER_H, 0);
-#else
-      encoder->Control(AV1E_SET_TILE_LOOPFILTER, 0);
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES_EXT
-#endif  // CONFIG_LOOPFILTERING_ACROSS_TILES
       SetCpuUsed(encoder);
     }
   }