From ba24a28f699526c9f046ec869474dead2110ac97 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 1 May 2013 22:26:08 -0700 Subject: [PATCH] Fix bug in sb8x8 partition context Fix the issue that causes array bound excess in getting partition context. Change-Id: I66166f047f0bcaefebb0bcf441c5b1f777d8da44 --- vp9/common/vp9_blockd.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index 4f07afc..fb0d2d0 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -498,7 +498,7 @@ static INLINE void update_partition_context(MACROBLOCKD *xd, static INLINE int partition_plane_context(MACROBLOCKD *xd, BLOCK_SIZE_TYPE sb_type) { - int bsl = mi_width_log2(sb_type), bs = 1 << bsl; + int bsl = mi_width_log2(sb_type), bs; int above = 0, left = 0, i; int boffset = mi_width_log2(BLOCK_SIZE_SB64X64) - bsl; @@ -506,6 +506,12 @@ static INLINE int partition_plane_context(MACROBLOCKD *xd, assert(bsl >= 0); assert(boffset >= 0); +#if CONFIG_SB8X8 + bs = 1 << (bsl - 1); +#else + bs = 1 << bsl; +#endif + for (i = 0; i < bs; i++) above |= (xd->above_seg_context[i] & (1 << boffset)); for (i = 0; i < bs; i++) -- 2.7.4