Fix bugs in sb8x8 experiment/context prob update
authorJingning Han <jingning@google.com>
Wed, 1 May 2013 21:35:07 +0000 (14:35 -0700)
committerJingning Han <jingning@google.com>
Wed, 1 May 2013 22:16:50 +0000 (15:16 -0700)
Fix bugs occur in contextual partition probability update, when
sb8x8 is enabled.

Change-Id: I19e2cec8a54c2dafd2be2803bbfde7337a2ae45f

vp9/common/vp9_blockd.h

index 2a72034..4f07afc 100644 (file)
@@ -453,7 +453,7 @@ typedef struct macroblockd {
 static INLINE void update_partition_context(MACROBLOCKD *xd,
                                             BLOCK_SIZE_TYPE sb_type,
                                             BLOCK_SIZE_TYPE sb_size) {
-  int bsl = mi_width_log2(sb_size), bs = 1 << bsl;
+  int bsl = mi_width_log2(sb_size), bs;
   int bwl = mi_width_log2(sb_type);
   int bhl = mi_height_log2(sb_type);
   int boffset = mi_width_log2(BLOCK_SIZE_SB64X64) - bsl;
@@ -462,6 +462,12 @@ static INLINE void update_partition_context(MACROBLOCKD *xd,
   if (bsl == 0)
     return;
 
+#if CONFIG_SB8X8
+  bs = 1 << (bsl - 1);
+#else
+  bs = 1 << bsl;
+#endif
+
   // update the partition context at the end notes. set partition bits
   // of block sizes larger than the current one to be one, and partition
   // bits of smaller block sizes to be zero.