Change chroma loopfilter to skip inner SB edges for tx16x16 also.
authorRonald S. Bultje <rbultje@google.com>
Tue, 23 Apr 2013 21:12:08 +0000 (14:12 -0700)
committerRonald S. Bultje <rbultje@google.com>
Wed, 24 Apr 2013 16:45:43 +0000 (09:45 -0700)
Change-Id: I6ea9e110b5c5b07ab7d092886dbd51a6eccc0217

vp9/common/vp9_loopfilter.c

index 0ce41be..0bb7968 100644 (file)
@@ -308,7 +308,8 @@ static void lpf_sb32(VP9_COMMON *cm, const MODE_INFO *mode_info_context,
   do_left_v = !(wbl >= 3 /* 32x16 or >=32x32 */ && (tx_size >= TX_32X32 ||
       sb_mb_lf_skip(mode_info_context, mi)));
   do_above_h = (mb_row > 0);
-  do_left_v_mbuv = do_left_v;
+  do_left_v_mbuv = !(wbl >= 3 /* 32x16 or >=32x32 */ && (tx_size >= TX_16X16 ||
+      sb_mb_lf_skip(mode_info_context, mi)));
   do_above_h_mbuv = !(sb_type >= BLOCK_SIZE_SB64X64 &&
       tx_size >= TX_32X32 && (mb_row & 2));
   lpf_mb(cm, mi, do_left_v, do_above_h,
@@ -325,7 +326,8 @@ static void lpf_sb32(VP9_COMMON *cm, const MODE_INFO *mode_info_context,
       sb_mb_lf_skip(mode_info_context, mi)));
   do_left_v_mbuv = !(sb_type >= BLOCK_SIZE_SB64X64 &&
       tx_size >= TX_32X32 && (mb_col & 2));
-  do_above_h_mbuv = do_above_h;
+  do_above_h_mbuv = !(hbl >= 3 /* 16x32 or >=32x32 */ && (tx_size >= TX_16X16 ||
+      sb_mb_lf_skip(mode_info_context, mi)));
   lpf_mb(cm, mi, do_left_v, do_above_h,
       do_left_v_mbuv, do_above_h_mbuv,
       y_ptr + 16 * y_stride,
@@ -339,8 +341,10 @@ static void lpf_sb32(VP9_COMMON *cm, const MODE_INFO *mode_info_context,
       sb_mb_lf_skip(mi - 1, mi)));
   do_above_h = !(hbl >= 3 /* 16x32 or >=32x32 */ && (tx_size >= TX_32X32 ||
       sb_mb_lf_skip(mode_info_context + 1, mi)));
-  do_left_v_mbuv = do_left_v;
-  do_above_h_mbuv = do_above_h;
+  do_left_v_mbuv = (wbl >= 3 /* 32x16 or >=32x32 */ && (tx_size >= TX_16X16 ||
+      sb_mb_lf_skip(mi - 1, mi)));
+  do_above_h_mbuv = !(hbl >= 3 /* 16x32 or >=32x32 */ && (tx_size >= TX_16X16 ||
+      sb_mb_lf_skip(mode_info_context + 1, mi)));
   lpf_mb(cm, mi, do_left_v, do_above_h,
       do_left_v_mbuv, do_above_h_mbuv,
       y_ptr + 16 * y_stride + 16,