changeset 10973:214adf5e303b libavcodec

Set edges based on cbp and mv partitioning, not just skiped MBs. This is faster for videos that have lots of MBs that fall in this category.
author michael
date Sat, 23 Jan 2010 15:28:34 +0000
parents 3dd1cb77cc60
children b1ccfdc1b409
files h264_loopfilter.c
diffstat 1 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/h264_loopfilter.c	Sat Jan 23 15:22:48 2010 +0000
+++ b/h264_loopfilter.c	Sat Jan 23 15:28:34 2010 +0000
@@ -425,12 +425,12 @@
     const int mbm_xy = dir == 0 ? mb_xy -1 : h->top_mb_xy;
     const int mbm_type = s->current_picture.mb_type[mbm_xy];
 
-    const int edges = (mb_type & (MB_TYPE_16x16|MB_TYPE_SKIP))
-                              == (MB_TYPE_16x16|MB_TYPE_SKIP) ? 1 : 4;
     // how often to recheck mv-based bS when iterating between edges
     static const uint8_t mask_edge_tab[2][8]={{0,3,3,3,1,1,1,1},
                                               {0,3,1,1,3,3,3,3}};
     const int mask_edge = mask_edge_tab[dir][(mb_type>>3)&7];
+    const int edges = mask_edge== 3 && !(h->cbp&15) ? 1 : 4;
+
     // how often to recheck mv-based bS when iterating along each edge
     const int mask_par0 = mb_type & (MB_TYPE_16x16 | (MB_TYPE_8x16 >> dir));
     int start =   h->slice_table[mbm_xy] == 0xFFFF