]> granicus.if.org Git - libvpx/commitdiff
Make variance based partitioning compatible with SEG_LVL_SKIP
authorGeza Lore <gezalore@gmail.com>
Fri, 17 Jun 2016 10:28:02 +0000 (11:28 +0100)
committerGeza Lore <gezalore@gmail.com>
Fri, 17 Jun 2016 19:31:05 +0000 (20:31 +0100)
Inter blocks that have SEG_LVL_SKIP active must be at least 8x8 in
size for bitstream conformance (see read_inter_block_mode_info in
decodemv.c).

This patch makes the variance based partitioning scheme stop at 8x8
blocks in inter frames. This satisfies the SEG_LVL_SKIP constraint
and is more in line with the original implementation of this function
(before it got extended for 128x128 superblocks).

BUG=webm:1234

Change-Id: I1fdd894569a9c0817713a77daabe4c8b8e1d00c0

vp10/encoder/encodeframe.c

index 014a874792516dcdba39dd8802fd71cb880b2a15..01de35dfd04d1d86cfb016610d8684251c78a348 100644 (file)
@@ -468,6 +468,11 @@ static void set_vt_partitioning(VP10_COMP *cpi,
 
   assert(hbh == hbw);
 
+  if (vt->bsize == BLOCK_8X8 && cm->frame_type != KEY_FRAME) {
+    set_block_size(cpi, x, xd, mi_row, mi_col, BLOCK_8X8);
+    return;
+  }
+
   if (vt->force_split || (!has_cols && !has_rows))
     goto split;