diff --git a/vp9/common/vp9_loopfilter.c b/vp9/common/vp9_loopfilter.c
index f2bcdb2c2d41c9b3de0ec86c6f146638b0d6d1d5..8700af252ae2b4a6e55bd32dd8a63086ebc28327 100644
--- a/vp9/common/vp9_loopfilter.c
+++ b/vp9/common/vp9_loopfilter.c
@@ -389,112 +389,3 @@ void vp9_loop_filter_frame(VP9_COMMON *cm,
 }
 
 
-void vp9_loop_filter_partial_frame(VP9_COMMON *cm, MACROBLOCKD *xd,
-                                   int default_filt_lvl) {
-  YV12_BUFFER_CONFIG *post = cm->frame_to_show;
-
-  uint8_t *y_ptr;
-  int mb_row;
-  int mb_col;
-  int mb_cols = post->y_width  >> 4;
-
-  int linestocopy, i;
-
-  loop_filter_info_n *lfi_n = &cm->lf_info;
-  struct loop_filter_info lfi;
-
-  int filter_level;
-  int alt_flt_enabled = xd->segmentation_enabled;
-  FRAME_TYPE frame_type = cm->frame_type;
-
-  const MODE_INFO *mode_info_context;
-
-  int lvl_seg[MAX_MB_SEGMENTS];
-
-  mode_info_context = cm->mi + (post->y_height >> 5) * (mb_cols + 1);
-
-  /* 3 is a magic number. 4 is probably magic too */
-  linestocopy = (post->y_height >> (4 + 3));
-
-  if (linestocopy < 1)
-    linestocopy = 1;
-
-  linestocopy <<= 4;
-
-  /* Note the baseline filter values for each segment */
-  /* See vp9_loop_filter_frame_init. Rather than call that for each change
-   * to default_filt_lvl, copy the relevant calculation here.
-   */
-  if (alt_flt_enabled) {
-    for (i = 0; i < MAX_MB_SEGMENTS; i++) {
-      if (xd->mb_segment_abs_delta == SEGMENT_ABSDATA) {
-        // Abs value
-        lvl_seg[i] = vp9_get_segdata(xd, i, SEG_LVL_ALT_LF);
-      } else {
-        // Delta Value
-        lvl_seg[i] = default_filt_lvl + vp9_get_segdata(xd, i, SEG_LVL_ALT_LF);
-        lvl_seg[i] = clamp(lvl_seg[i], 0, 63);
-      }
-    }
-  }
-
-  /* Set up the buffer pointers */
-  y_ptr = post->y_buffer + (post->y_height >> 5) * 16 * post->y_stride;
-
-  /* vp9_filter each macro block */
-  for (mb_row = 0; mb_row < (linestocopy >> 4); mb_row++) {
-    for (mb_col = 0; mb_col < mb_cols; mb_col++) {
-      int skip_lf = (mode_info_context->mbmi.mode != B_PRED &&
-                     mode_info_context->mbmi.mode != I8X8_PRED &&
-                     mode_info_context->mbmi.mode != SPLITMV &&
-                     mode_info_context->mbmi.mb_skip_coeff);
-
-      if (alt_flt_enabled)
-        filter_level = lvl_seg[mode_info_context->mbmi.segment_id];
-      else
-        filter_level = default_filt_lvl;
-
-      if (filter_level) {
-        if (cm->filter_type == NORMAL_LOOPFILTER) {
-          const int hev_index = lfi_n->hev_thr_lut[frame_type][filter_level];
-          lfi.mblim = lfi_n->mblim[filter_level];
-          lfi.blim = lfi_n->blim[filter_level];
-          lfi.lim = lfi_n->lim[filter_level];
-          lfi.hev_thr = lfi_n->hev_thr[hev_index];
-
-          if (mb_col > 0)
-            vp9_loop_filter_mbv(y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
-          if (!skip_lf)
-            vp9_loop_filter_bv(y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
-          vp9_loop_filter_mbh(y_ptr, 0, 0, post->y_stride, 0, &lfi);
-
-          if (!skip_lf)
-            vp9_loop_filter_bh(y_ptr, 0, 0, post->y_stride, 0, &lfi);
-        } else {
-          if (mb_col > 0)
-            vp9_loop_filter_simple_mbv (y_ptr, post->y_stride,
-                                        lfi_n->mblim[filter_level]);
-
-          if (!skip_lf)
-            vp9_loop_filter_simple_bv(y_ptr, post->y_stride,
-                                      lfi_n->blim[filter_level]);
-
-          vp9_loop_filter_simple_mbh(y_ptr, post->y_stride,
-                                     lfi_n->mblim[filter_level]);
-
-          if (!skip_lf)
-            vp9_loop_filter_simple_bh(y_ptr, post->y_stride,
-                                      lfi_n->blim[filter_level]);
-        }
-      }
-
-      y_ptr += 16;
-      mode_info_context += 1;      /* step to next MB */
-    }
-
-    y_ptr += post->y_stride  * 16 - post->y_width;
-    mode_info_context += 1;          /* Skip border mb */
-  }
-}
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index 35b18e73f5125d6adb9620986157ac4b7bbe80a7..aab072e65ae453aa0a81461447a7636c9085852a 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -2456,10 +2456,8 @@ static void loopfilter_frame(VP9_COMP *cpi, VP9_COMMON *cm) {
     vp9_clear_system_state();
 
     vpx_usec_timer_start(&timer);
-    if (cpi->sf.auto_filter == 0)
-      vp9_pick_filter_level_fast(cpi->Source, cpi);
-    else
-      vp9_pick_filter_level(cpi->Source, cpi);
+
+    vp9_pick_filter_level(cpi->Source, cpi);
 
     vpx_usec_timer_mark(&timer);
     cpi->time_pick_lpf += vpx_usec_timer_elapsed(&timer);
diff --git a/vp9/encoder/vp9_picklpf.c b/vp9/encoder/vp9_picklpf.c
index 645d66b258e0453a374cc0b57876b3035654429b..d69b3a3e326470df3025b9302ec413bc3492fbf8 100644
--- a/vp9/encoder/vp9_picklpf.c
+++ b/vp9/encoder/vp9_picklpf.c
@@ -120,111 +120,6 @@ static int get_max_filter_level(VP9_COMP *cpi, int base_qindex) {
   return max_filter_level;
 }
 
-void vp9_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi) {
-  VP9_COMMON *cm = &cpi->common;
-
-  int best_err = 0;
-  int filt_err = 0;
-  int min_filter_level = get_min_filter_level(cpi, cm->base_qindex);
-  int max_filter_level = get_max_filter_level(cpi, cm->base_qindex);
-  int filt_val;
-  int best_filt_val = cm->filter_level;
-
-  //  Make a copy of the unfiltered / processed recon buffer
-  vp9_yv12_copy_partial_frame(cm->frame_to_show, &cpi->last_frame_uf, 3);
-
-  if (cm->frame_type == KEY_FRAME)
-    cm->sharpness_level = 0;
-  else
-    cm->sharpness_level = cpi->oxcf.Sharpness;
-
-  if (cm->sharpness_level != cm->last_sharpness_level) {
-    vp9_loop_filter_update_sharpness(&cm->lf_info, cm->sharpness_level);
-    cm->last_sharpness_level = cm->sharpness_level;
-  }
-
-  // Start the search at the previous frame filter level unless it is now out of range.
-  if (cm->filter_level < min_filter_level)
-    cm->filter_level = min_filter_level;
-  else if (cm->filter_level > max_filter_level)
-    cm->filter_level = max_filter_level;
-
-  filt_val = cm->filter_level;
-  best_filt_val = filt_val;
-
-  // Get the err using the previous frame's filter value.
-  vp9_loop_filter_partial_frame(cm, &cpi->mb.e_mbd, filt_val);
-
-  best_err = calc_partial_ssl_err(sd, cm->frame_to_show, 3);
-
-  //  Re-instate the unfiltered frame
-  vp9_yv12_copy_partial_frame(&cpi->last_frame_uf, cm->frame_to_show, 3);
-
-  filt_val -= (1 + ((filt_val > 10) ? 1 : 0));
-
-  // Search lower filter levels
-  while (filt_val >= min_filter_level) {
-    // Apply the loop filter
-    vp9_loop_filter_partial_frame(cm, &cpi->mb.e_mbd, filt_val);
-
-    // Get the err for filtered frame
-    filt_err = calc_partial_ssl_err(sd, cm->frame_to_show, 3);
-
-    //  Re-instate the unfiltered frame
-    vp9_yv12_copy_partial_frame(&cpi->last_frame_uf, cm->frame_to_show, 3);
-
-
-    // Update the best case record or exit loop.
-    if (filt_err < best_err) {
-      best_err = filt_err;
-      best_filt_val = filt_val;
-    } else
-      break;
-
-    // Adjust filter level
-    filt_val -= (1 + ((filt_val > 10) ? 1 : 0));
-  }
-
-  // Search up (note that we have already done filt_val = cm->filter_level)
-  filt_val = cm->filter_level + (1 + ((filt_val > 10) ? 1 : 0));
-
-  if (best_filt_val == cm->filter_level) {
-    // Resist raising filter level for very small gains
-    best_err -= (best_err >> 10);
-
-    while (filt_val < max_filter_level) {
-      // Apply the loop filter
-      vp9_loop_filter_partial_frame(cm, &cpi->mb.e_mbd, filt_val);
-
-      // Get the err for filtered frame
-      filt_err = calc_partial_ssl_err(sd, cm->frame_to_show, 3);
-
-      //  Re-instate the unfiltered frame
-      vp9_yv12_copy_partial_frame(&cpi->last_frame_uf,
-                                      cm->frame_to_show, 3);
-
-      // Update the best case record or exit loop.
-      if (filt_err < best_err) {
-        // Do not raise filter level if improvement is < 1 part in 4096
-        best_err = filt_err - (filt_err >> 10);
-
-        best_filt_val = filt_val;
-      } else
-        break;
-
-      // Adjust filter level
-      filt_val += (1 + ((filt_val > 10) ? 1 : 0));
-    }
-  }
-
-  cm->filter_level = best_filt_val;
-
-  if (cm->filter_level < min_filter_level)
-    cm->filter_level = min_filter_level;
-
-  if (cm->filter_level > max_filter_level)
-    cm->filter_level = max_filter_level;
-}
 
 // Stub function for now Alt LF not used
 void vp9_set_alt_lf_level(VP9_COMP *cpi, int filt_val) {
diff --git a/vp9/encoder/vp9_picklpf.h b/vp9/encoder/vp9_picklpf.h
index ca3cab618009c108c122e9288c474f0c536ce97f..698cb8d0d63e3cb6a7f74d596c50cef156dc0a09 100644
--- a/vp9/encoder/vp9_picklpf.h
+++ b/vp9/encoder/vp9_picklpf.h
@@ -15,9 +15,6 @@
 struct yv12_buffer_config;
 struct VP9_COMP;
 
-void vp9_pick_filter_level_fast(struct yv12_buffer_config *sd,
-                                struct VP9_COMP *cpi);
-
 void vp9_set_alt_lf_level(struct VP9_COMP *cpi, int filt_val);
 
 void vp9_pick_filter_level(struct yv12_buffer_config *sd,