ref: 9ded6e375a417c992ba6f55e3d31b8be74dca131
parent: 2615ca5d41388216ec65db9d9cb0f719efef855a
author: Yaowu Xu <yaowu@google.com>
date: Fri Feb 10 06:49:22 EST 2012
fixed an issue related to 2nd order size due to merge artifacts. For 8x8 transformed macroblock, the 2nd order transform is a 2x2 haar transform, here there is only 4 coefficients total. A previous merge changed these to 64, causing crashes when encoding with 8x8 transform enabled. (i.e. when input video image size > 640x360 ) This commit reverts them back to 4 and fixes the crashes. Change-Id: I3290b81f8c0d32c7efec03093a61ea57736c0550
--- a/vp8/decoder/detokenize.c
+++ b/vp8/decoder/detokenize.c
@@ -346,7 +346,7 @@
seg_eob = get_segdata( x, segment_id, SEG_LVL_EOB );
}
else
- seg_eob = 64;
+ seg_eob = 4;
}
else
{
@@ -353,7 +353,7 @@
VP8_COMBINEENTROPYCONTEXTS_8x8(v, *a, *l, *a1, *l1);
if ( segfeature_active( x, segment_id, SEG_LVL_EOB ) )
{
- seg_eob = get_segdata( x, segment_id, SEG_LVL_EOB );
+ seg_eob = get_segdata( x, segment_id, SE_LVL_EOB );
}
else
seg_eob = 64;
@@ -363,7 +363,6 @@
Prob += v * ENTROPY_NODES;
DO_WHILE_8x8:
-//#if CONFIG_SEGFEATURES
if ( c == seg_eob )
goto BLOCK_FINISHED_8x8;
--- a/vp8/encoder/quantize.c
+++ b/vp8/encoder/quantize.c
@@ -1222,7 +1222,7 @@
{
x->block[24].eob_max_offset = 16;
#if CONFIG_T8X8
- x->block[24].eob_max_offset_8x8 = 64;
+ x->block[24].eob_max_offset_8x8 = 4;
#endif
}
--- a/vp8/encoder/tokenize.c
+++ b/vp8/encoder/tokenize.c
@@ -124,7 +124,7 @@
int x;
const short *qcoeff_ptr = b->qcoeff;
- int seg_eob = 64;
+ int seg_eob = 4;
int segment_id = xd->mode_info_context->mbmi.segment_id;
if ( segfeature_active( xd, segment_id, SEG_LVL_EOB ) )