]> granicus.if.org Git - libvpx/commitdiff
Move skip_block from BLOCK to MACROBLOCK
authorJohn Koleszar <jkoleszar@google.com>
Tue, 23 Apr 2013 22:25:46 +0000 (15:25 -0700)
committerJohn Koleszar <jkoleszar@google.com>
Wed, 24 Apr 2013 00:43:43 +0000 (17:43 -0700)
This data is fixed at the MB level, so move it to the common part
of MACROBLOCK.

Change-Id: Idd8c87118e501cdf0a202bd84c28b502a8234edf

vp9/encoder/vp9_block.h
vp9/encoder/vp9_quantize.c

index 29de2e2e0fb41250b4281b2ca1f62fcca6feb9b8..9d8abab33f35c70d343c497071a2f1800ca830ec 100644 (file)
@@ -28,8 +28,6 @@ typedef struct block {
   uint8_t **base_second_src;
   int src;
   int src_stride;
-
-  int skip_block;
 } BLOCK;
 
 typedef struct {
@@ -86,6 +84,7 @@ struct macroblock_plane {
 typedef struct macroblock MACROBLOCK;
 struct macroblock {
   struct macroblock_plane plane[MAX_MB_PLANE];
+  int skip_block;
   // 16 Y blocks, 4 U blocks, 4 V blocks,
   BLOCK block[24];
 
index ff48b2af023f9f09b1ad290fafb29b8615d07c3e..78ea78c77690dc201bd11b6ae567c5f7bc7b4416 100644 (file)
@@ -28,7 +28,6 @@ static INLINE int plane_idx(int plane) {
 
 void vp9_ht_quantize_b_4x4(MACROBLOCK *mb, int b_idx, TX_TYPE tx_type) {
   MACROBLOCKD *const xd = &mb->e_mbd;
-  BLOCK *const b = &mb->block[0];
   BLOCKD *const d = &xd->block[0];
   int i, rc, eob;
   int zbin;
@@ -51,7 +50,7 @@ void vp9_ht_quantize_b_4x4(MACROBLOCK *mb, int b_idx, TX_TYPE tx_type) {
 
   eob = -1;
 
-  if (!b->skip_block) {
+  if (!mb->skip_block) {
     for (i = 0; i < 16; i++) {
       rc   = pt_scan[i];
       z    = coeff_ptr[rc];
@@ -85,7 +84,6 @@ void vp9_regular_quantize_b_4x4(MACROBLOCK *mb, int b_idx, int y_blocks) {
   MACROBLOCKD *const xd = &mb->e_mbd;
   const struct plane_block_idx pb_idx = plane_block_idx(y_blocks, b_idx);
   const int c_idx = plane_idx(pb_idx.plane);
-  BLOCK *const b = &mb->block[c_idx];
   BLOCKD *const d = &xd->block[c_idx];
   int i, rc, eob;
   int zbin;
@@ -112,7 +110,7 @@ void vp9_regular_quantize_b_4x4(MACROBLOCK *mb, int b_idx, int y_blocks) {
 
   eob = -1;
 
-  if (!b->skip_block) {
+  if (!mb->skip_block) {
     for (i = 0; i < 16; i++) {
       rc   = vp9_default_zig_zag1d_4x4[i];
       z    = coeff_ptr[rc];
@@ -154,7 +152,6 @@ void vp9_regular_quantize_b_8x8(MACROBLOCK *mb, int b_idx, TX_TYPE tx_type,
                                       pb_idx.block, 16);
   int16_t *coeff_ptr = BLOCK_OFFSET(mb->plane[pb_idx.plane].coeff,
                                     pb_idx.block, 16);
-  BLOCK *const b = &mb->block[c_idx];
   BLOCKD *const d = &xd->block[c_idx];
   const int *pt_scan = get_scan_8x8(tx_type);
 
@@ -164,7 +161,7 @@ void vp9_regular_quantize_b_8x8(MACROBLOCK *mb, int b_idx, TX_TYPE tx_type,
   vpx_memset(qcoeff_ptr, 0, 64 * sizeof(int16_t));
   vpx_memset(dqcoeff_ptr, 0, 64 * sizeof(int16_t));
 
-  if (!b->skip_block) {
+  if (!mb->skip_block) {
     int i, rc, eob;
     int zbin;
     int x, y, z, sz;
@@ -289,7 +286,6 @@ void vp9_regular_quantize_b_16x16(MACROBLOCK *mb, int b_idx, TX_TYPE tx_type,
   MACROBLOCKD *const xd = &mb->e_mbd;
   const struct plane_block_idx pb_idx = plane_block_idx(y_blocks, b_idx);
   const int c_idx = plane_idx(pb_idx.plane);
-  BLOCK *const b = &mb->block[c_idx];
   BLOCKD *const d = &xd->block[c_idx];
   const int *pt_scan = get_scan_16x16(tx_type);
 
@@ -298,7 +294,7 @@ void vp9_regular_quantize_b_16x16(MACROBLOCK *mb, int b_idx, TX_TYPE tx_type,
   if (c_idx == 20) assert(pb_idx.plane == 2);
   quantize(mb->plane[pb_idx.plane].zrun_zbin_boost,
            BLOCK_OFFSET(mb->plane[pb_idx.plane].coeff, pb_idx.block, 16),
-           256, b->skip_block,
+           256, mb->skip_block,
            mb->plane[pb_idx.plane].zbin,
            mb->plane[pb_idx.plane].round,
            mb->plane[pb_idx.plane].quant,
@@ -315,7 +311,6 @@ void vp9_regular_quantize_b_32x32(MACROBLOCK *mb, int b_idx, int y_blocks) {
   MACROBLOCKD *const xd = &mb->e_mbd;
   const struct plane_block_idx pb_idx = plane_block_idx(y_blocks, b_idx);
   const int c_idx = plane_idx(pb_idx.plane);
-  BLOCK *const b = &mb->block[c_idx];
   BLOCKD *const d = &xd->block[c_idx];
 
   if (c_idx == 0) assert(pb_idx.plane == 0);
@@ -323,7 +318,7 @@ void vp9_regular_quantize_b_32x32(MACROBLOCK *mb, int b_idx, int y_blocks) {
   if (c_idx == 20) assert(pb_idx.plane == 2);
   quantize(mb->plane[pb_idx.plane].zrun_zbin_boost,
            BLOCK_OFFSET(mb->plane[pb_idx.plane].coeff, pb_idx.block, 16),
-           1024, b->skip_block,
+           1024, mb->skip_block,
            mb->plane[pb_idx.plane].zbin,
            mb->plane[pb_idx.plane].round,
            mb->plane[pb_idx.plane].quant,
@@ -505,7 +500,6 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
   MACROBLOCKD *xd = &x->e_mbd;
   int zbin_extra;
   int segment_id = xd->mode_info_context->mbmi.segment_id;
-  int skip_block;
 
   // Select the baseline MB Q index allowing for any segment level change.
   if (vp9_segfeature_active(xd, segment_id, SEG_LVL_ALT_Q)) {
@@ -552,11 +546,7 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
   for (i = 16; i < 24; i++)
     x->e_mbd.block[i].dequant = cpi->common.uv_dequant[qindex];
 
-  skip_block = vp9_segfeature_active(xd, segment_id, SEG_LVL_SKIP);
-  for (i = 0; i < 24; i++) {
-    // Segment skip feature.
-    x->block[i].skip_block = skip_block;
-  }
+  x->skip_block = vp9_segfeature_active(xd, segment_id, SEG_LVL_SKIP);
 
   /* save this macroblock QIndex for vp9_update_zbin_extra() */
   x->e_mbd.q_index = qindex;