shithub: libvpx

Download patch

ref: 2e1fd0a4974f24a65721d3daeb4e7127edbd8c76
parent: c3f9b070ca02f492fd007bcad1eade9493807cf0
parent: 5c5223860a7cd0361ff8c6cb32e8f67cbb9734d9
author: Yaowu Xu <[email protected]>
date: Sun Jun 9 17:17:47 EDT 2013

Merge "Modified loop filter edge skipping" into experimental

--- a/vp9/common/vp9_loopfilter.c
+++ b/vp9/common/vp9_loopfilter.c
@@ -684,8 +684,14 @@
       const int skip_left =
           (c + mi_col > 0) ? mi[c - 1].mbmi.mb_skip_coeff : 0;
       const int skip_this = mi[c].mbmi.mb_skip_coeff;
-      const int skip_this_c = skip_this && skip_left;
-      const int skip_this_r = skip_this && skip_above;
+      // left edge of current unit is block/partition edge -> no skip
+      const int block_edge_left = b_width_log2(mi->mbmi.sb_type) ?
+          !(c & ((1 << (b_width_log2(mi->mbmi.sb_type)-1)) - 1)) : 1;
+      const int skip_this_c = skip_this && skip_left && !block_edge_left;
+      // top edge of current unit is block/partition edge -> no skip
+      const int block_edge_above = b_height_log2(mi->mbmi.sb_type) ?
+          !(r & ((1 << (b_height_log2(mi->mbmi.sb_type)-1)) - 1)) : 1;
+      const int skip_this_r = skip_this && skip_above && !block_edge_above;
       const TX_SIZE tx_size = plane ? get_uv_tx_size(xd) : mi[c].mbmi.txfm_size;
 
       // Filter level can vary per MI