diff --git a/av1/common/filter.h b/av1/common/filter.h
index 44d8d20..d7ef5c9 100644
--- a/av1/common/filter.h
+++ b/av1/common/filter.h
@@ -218,12 +218,13 @@
 
 static INLINE const InterpFilterParams *av1_get_filter(int subpel_search) {
   assert(subpel_search >= USE_2_TAPS);
-  return (subpel_search == USE_2_TAPS)
-             ? get_4tap_interp_filter_params(BILINEAR)
-             : ((subpel_search == USE_4_TAPS)
-                    ? get_4tap_interp_filter_params(EIGHTTAP_REGULAR)
-                    : av1_get_interp_filter_params_with_block_size(
-                          EIGHTTAP_REGULAR, 8));
+
+  switch (subpel_search) {
+    case USE_2_TAPS: return get_4tap_interp_filter_params(BILINEAR);
+    case USE_4_TAPS: return get_4tap_interp_filter_params(EIGHTTAP_REGULAR);
+    case USE_8_TAPS: return &av1_interp_filter_params_list[EIGHTTAP_REGULAR];
+    default: assert(0); return NULL;
+  }
 }
 
 #ifdef __cplusplus
diff --git a/av1/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c
index 35e520d..6fa88b7 100644
--- a/av1/encoder/temporal_filter.c
+++ b/av1/encoder/temporal_filter.c
@@ -263,7 +263,7 @@
         cpi->common.allow_high_precision_mv, x->errorperbit,
         &cpi->fn_ptr[BLOCK_16X16], 0, mv_sf->subpel_iters_per_step,
         cond_cost_list(cpi, cost_list), NULL, NULL, &distortion, &sse, NULL,
-        NULL, 0, 0, 16, 16, USE_2_TAPS_ORIG, 1);
+        NULL, 0, 0, 16, 16, USE_8_TAPS, 1);
   }
 
   x->e_mbd.mi[0]->mv[0] = x->best_mv;
@@ -278,8 +278,7 @@
 static void temporal_filter_iterate_c(AV1_COMP *cpi,
                                       YV12_BUFFER_CONFIG **frames,
                                       int frame_count, int alt_ref_index,
-                                      int strength,
-                                      struct scale_factors *scale) {
+                                      int strength, RefBuffer *ref_buf) {
   const AV1_COMMON *cm = &cpi->common;
   const int num_planes = av1_num_planes(cm);
   int byte;
@@ -310,6 +309,9 @@
     predictor = predictor8;
   }
 
+  mbd->block_refs[0] = ref_buf;
+  mbd->block_refs[1] = ref_buf;
+
   for (i = 0; i < num_planes; i++) input_buffer[i] = mbd->plane[i].pre[0].buf;
 
   for (mb_row = 0; mb_row < mb_rows; mb_row++) {
@@ -373,7 +375,7 @@
               frames[frame]->u_buffer + mb_uv_offset,
               frames[frame]->v_buffer + mb_uv_offset, frames[frame]->y_stride,
               mb_uv_width, mb_uv_height, mbd->mi[0]->mv[0].as_mv.row,
-              mbd->mi[0]->mv[0].as_mv.col, predictor, scale, mb_col * 16,
+              mbd->mi[0]->mv[0].as_mv.col, predictor, &ref_buf->sf, mb_col * 16,
               mb_row * 16, cm->allow_warped_motion, num_planes);
 
           // Apply the filter (YUV)
@@ -661,7 +663,11 @@
   int strength;
   int frames_to_blur_backward;
   int frames_to_blur_forward;
-  struct scale_factors sf;
+  RefBuffer ref_buf;
+  ref_buf.idx = INVALID_IDX;
+  ref_buf.idx = INVALID_IDX;
+  ref_buf.buf = NULL;
+
   YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS] = { NULL };
   const GF_GROUP *const gf_group = &cpi->twopass.gf_group;
   int rdmult = 0;
@@ -705,7 +711,7 @@
     // supported.
     // ARF is produced at the native frame size and resized when coded.
     av1_setup_scale_factors_for_frame(
-        &sf, frames[0]->y_crop_width, frames[0]->y_crop_height,
+        &ref_buf.sf, frames[0]->y_crop_width, frames[0]->y_crop_height,
         frames[0]->y_crop_width, frames[0]->y_crop_height);
   }
 
@@ -717,5 +723,5 @@
   av1_initialize_cost_tables(&cpi->common, &cpi->td.mb);
 
   temporal_filter_iterate_c(cpi, frames, frames_to_blur,
-                            frames_to_blur_backward, strength, &sf);
+                            frames_to_blur_backward, strength, &ref_buf);
 }
