ref: 267e9331e24b98fb3260d99cffc049b4855a36ba
parent: c208cd67f4f4aa00ccd13aa2e1e4412981eba2b2
parent: 8e392959349dc4cb48b3e3f289be8b052ff433e5
author: Dmitry Kovalev <[email protected]>
date: Wed May 8 12:37:34 EDT 2013
Merge "Using 4-iteration loop for extra_mb_col inside loopfilter function." into experimental
--- a/vp9/common/vp9_loopfilter.c
+++ b/vp9/common/vp9_loopfilter.c
@@ -462,54 +462,21 @@
}
if (extra_mb_col) {
// process 4 MB in the extra MB col
- // process 1st MB
- mi = mode_info_context;
- do_left_v = (mb_col > 0);
- do_above_h = (mb_row > 0);
- do_left_v_mbuv = 1;
- do_above_h_mbuv = 1;
- lpf_mb(cm, mi, do_left_v, do_above_h,
- do_left_v_mbuv, do_above_h_mbuv,
- y_ptr,
- y_only? 0 : u_ptr,
- y_only? 0 : v_ptr,
- y_stride, uv_stride, dering);
- // process 2nd MB
- mi = mode_info_context + (mis << 1);
- do_left_v = (mb_col > 0);
- do_above_h = 1;
- do_left_v_mbuv = 1;
- do_above_h_mbuv = 1;
- lpf_mb(cm, mi, do_left_v, do_above_h,
- do_left_v_mbuv, do_above_h_mbuv,
- y_ptr + 16 * y_stride,
- y_only ? 0 : (u_ptr + 8 * uv_stride),
- y_only ? 0 : (v_ptr + 8 * uv_stride),
- y_stride, uv_stride, dering);
- // process 3nd MB
- mi = mode_info_context + (mis << 1) * 2;
- do_left_v = (mb_col > 0);
- do_above_h = 1;
- do_left_v_mbuv = 1;
- do_above_h_mbuv = 1;
- lpf_mb(cm, mi, do_left_v, do_above_h,
- do_left_v_mbuv, do_above_h_mbuv,
- y_ptr + 32 * y_stride,
- y_only ? 0 : (u_ptr + 16 * uv_stride),
- y_only ? 0 : (v_ptr + 16 * uv_stride),
- y_stride, uv_stride, dering);
- // process 4th MB
- mi = mode_info_context + (mis << 1) * 3;
- do_left_v = (mb_col > 0);
- do_above_h = 1;
- do_left_v_mbuv = 1;
- do_above_h_mbuv = 1;
- lpf_mb(cm, mi, do_left_v, do_above_h,
- do_left_v_mbuv, do_above_h_mbuv,
- y_ptr + 48 * y_stride,
- y_only ? 0 : (u_ptr + 24 * uv_stride),
- y_only ? 0 : (v_ptr + 24 * uv_stride),
- y_stride, uv_stride, dering);
+ int k;
+ for (k = 0; k < 4; ++k) {
+ mi = mode_info_context + (mis << 1) * k;
+ do_left_v = (mb_col > 0);
+ do_above_h = k == 0 ? mb_row > 0 : 1;
+ do_left_v_mbuv = 1;
+ do_above_h_mbuv = 1;
+ lpf_mb(cm, mi, do_left_v, do_above_h,
+ do_left_v_mbuv, do_above_h_mbuv,
+ y_ptr + (k * 16) * y_stride,
+ y_only ? 0 : (u_ptr + (k * 8) * uv_stride),
+ y_only ? 0 : (v_ptr + (k * 8) * uv_stride),
+ y_stride, uv_stride, dering);
+ }
+
y_ptr += 16;
u_ptr = y_only? 0 : u_ptr + 8;
v_ptr = y_only? 0 : v_ptr + 8;