fixed an issue related to 2nd order size due to merge artifacts.
authorYaowu Xu <yaowu@google.com>
Fri, 10 Feb 2012 19:49:22 +0000 (11:49 -0800)
committerYaowu Xu <yaowu@google.com>
Fri, 10 Feb 2012 19:49:22 +0000 (11:49 -0800)
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

vp8/decoder/detokenize.c
vp8/encoder/quantize.c
vp8/encoder/tokenize.c

index 313e00d..394ed89 100644 (file)
@@ -346,14 +346,14 @@ BLOCK_LOOP_8x8:
           seg_eob = get_segdata( x, segment_id, SEG_LVL_EOB );
       }
       else
-          seg_eob = 64;
+          seg_eob = 4;
     }
     else
     {
       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 @@ BLOCK_LOOP_8x8:
     Prob += v * ENTROPY_NODES;
 
 DO_WHILE_8x8:
-//#if CONFIG_SEGFEATURES
     if ( c == seg_eob )
         goto BLOCK_FINISHED_8x8;
 
index 04939c7..300c407 100644 (file)
@@ -1222,7 +1222,7 @@ void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x)
     {
         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
     }
 
index d753bb1..aa9dd8e 100644 (file)
@@ -124,7 +124,7 @@ static void tokenize2nd_order_b_8x8
     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 ) )