diff options
Diffstat (limited to 'vp9/decoder')
-rw-r--r-- | vp9/decoder/vp9_decodemv.c | 167 | ||||
-rw-r--r-- | vp9/decoder/vp9_decodframe.c | 188 |
2 files changed, 24 insertions, 331 deletions
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c index c66324432..6eaa4d542 100644 --- a/vp9/decoder/vp9_decodemv.c +++ b/vp9/decoder/vp9_decodemv.c @@ -65,12 +65,6 @@ static MB_PREDICTION_MODE read_kf_mb_ymode(vp9_reader *r, const vp9_prob *p) { return (MB_PREDICTION_MODE)treed_read(r, vp9_kf_ymode_tree, p); } -#if !CONFIG_SB8X8 -static int read_i8x8_mode(vp9_reader *r, const vp9_prob *p) { - return treed_read(r, vp9_i8x8_mode_tree, p); -} -#endif - static MB_PREDICTION_MODE read_uv_mode(vp9_reader *r, const vp9_prob *p) { return (MB_PREDICTION_MODE)treed_read(r, vp9_uv_mode_tree, p); } @@ -130,11 +124,7 @@ static void kfread_modes(VP9D_COMP *pbi, MODE_INFO *m, m->mbmi.mb_skip_coeff = vp9_read(r, vp9_get_pred_prob(cm, xd, PRED_MBSKIP)); // luma mode -#if CONFIG_SB8X8 m->mbmi.mode = m->mbmi.sb_type > BLOCK_SIZE_SB8X8 ? -#else - m->mbmi.mode = m->mbmi.sb_type > BLOCK_SIZE_MB16X16 ? -#endif read_kf_sb_ymode(r, cm->sb_kf_ymode_prob[cm->kf_ymode_probs_index]): read_kf_mb_ymode(r, cm->kf_ymode_prob[cm->kf_ymode_probs_index]); @@ -142,58 +132,27 @@ static void kfread_modes(VP9D_COMP *pbi, MODE_INFO *m, if (m->mbmi.mode == I4X4_PRED) { int i; - for (i = 0; i < (16 >> (2 * CONFIG_SB8X8)); ++i) { + for (i = 0; i < 4; ++i) { const B_PREDICTION_MODE a = above_block_mode(m, i, mis); const B_PREDICTION_MODE l = xd->left_available || - (i & (3 >> CONFIG_SB8X8)) ? + (i & 1) ? left_block_mode(m, i) : B_DC_PRED; m->bmi[i].as_mode.first = read_kf_bmode(r, cm->kf_bmode_prob[a][l]); } } -#if !CONFIG_SB8X8 - if (m->mbmi.mode == I8X8_PRED) { - int i; - for (i = 0; i < 4; ++i) { - const int ib = vp9_i8x8_block[i]; - const int mode8x8 = read_i8x8_mode(r, cm->fc.i8x8_mode_prob); - - m->bmi[ib + 0].as_mode.first = mode8x8; - m->bmi[ib + 1].as_mode.first = mode8x8; - m->bmi[ib + 4].as_mode.first = mode8x8; - m->bmi[ib + 5].as_mode.first = mode8x8; - } - } - - // chroma mode - if (m->mbmi.mode != I8X8_PRED) -#endif - { - m->mbmi.uv_mode = read_uv_mode(r, cm->kf_uv_mode_prob[m->mbmi.mode]); - } + m->mbmi.uv_mode = read_uv_mode(r, cm->kf_uv_mode_prob[m->mbmi.mode]); if (cm->txfm_mode == TX_MODE_SELECT && - !m->mbmi.mb_skip_coeff && -#if CONFIG_SB8X8 - m->mbmi.mode != I4X4_PRED -#else - m->mbmi.mode <= I8X8_PRED -#endif - ) { -#if CONFIG_SB8X8 + !m->mbmi.mb_skip_coeff && m->mbmi.mode != I4X4_PRED) { const int allow_16x16 = m->mbmi.sb_type >= BLOCK_SIZE_MB16X16; -#else - const int allow_16x16 = m->mbmi.mode != I8X8_PRED; -#endif const int allow_32x32 = m->mbmi.sb_type >= BLOCK_SIZE_SB32X32; m->mbmi.txfm_size = select_txfm_size(cm, r, allow_16x16, allow_32x32); } else if (cm->txfm_mode >= ALLOW_32X32 && m->mbmi.sb_type >= BLOCK_SIZE_SB32X32) { m->mbmi.txfm_size = TX_32X32; } else if (cm->txfm_mode >= ALLOW_16X16 && -#if CONFIG_SB8X8 m->mbmi.sb_type >= BLOCK_SIZE_MB16X16 && -#endif m->mbmi.mode <= TM_PRED) { m->mbmi.txfm_size = TX_16X16; } else if (cm->txfm_mode >= ALLOW_8X8 && m->mbmi.mode != I4X4_PRED) { @@ -677,12 +636,7 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, if (vp9_segfeature_active(xd, mbmi->segment_id, SEG_LVL_SKIP)) { mbmi->mode = ZEROMV; } else { - mbmi->mode = -#if CONFIG_SB8X8 - mbmi->sb_type > BLOCK_SIZE_SB8X8 ? -#else - mbmi->sb_type > BLOCK_SIZE_MB16X16 ? -#endif + mbmi->mode = mbmi->sb_type > BLOCK_SIZE_SB8X8 ? read_sb_mv_ref(r, mv_ref_p) : read_mv_ref(r, mv_ref_p); vp9_accum_mv_refs(cm, mbmi->mode, mbmi->mb_mode_context[ref_frame]); @@ -776,29 +730,16 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, mbmi->uv_mode = DC_PRED; switch (mbmi->mode) { case SPLITMV: { -#if CONFIG_SB8X8 const int num_p = 4; -#else - const int s = treed_read(r, vp9_mbsplit_tree, cm->fc.mbsplit_prob); - const int num_p = vp9_mbsplit_count[s]; -#endif int j = 0; -#if !CONFIG_SB8X8 - cm->fc.mbsplit_counts[s]++; - mbmi->partitioning = s; -#endif mbmi->need_to_clamp_mvs = 0; do { // for each subset j int_mv leftmv, abovemv, second_leftmv, second_abovemv; int_mv blockmv, secondmv; int mv_contz; int blockmode; -#if CONFIG_SB8X8 int k = j; -#else - int k = vp9_mbsplit_offset[s][j]; // first block in subset j -#endif leftmv.as_int = left_block_mv(xd, mi, k); abovemv.as_int = above_block_mv(mi, k, mis); @@ -852,50 +793,14 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, default: break; } - - /* Commenting this section out, not sure why this was needed, and - * there are mismatches with this section in rare cases since it is - * not done in the encoder at all. - mbmi->need_to_clamp_mvs |= check_mv_bounds(&blockmv, - mb_to_left_edge, - mb_to_right_edge, - mb_to_top_edge, - mb_to_bottom_edge); - if (mbmi->second_ref_frame > 0) { - mbmi->need_to_clamp_mvs |= check_mv_bounds(&secondmv, - mb_to_left_edge, - mb_to_right_edge, - mb_to_top_edge, - mb_to_bottom_edge); - } - */ - -#if CONFIG_SB8X8 mi->bmi[j].as_mv[0].as_int = blockmv.as_int; if (mbmi->second_ref_frame > 0) mi->bmi[j].as_mv[1].as_int = secondmv.as_int; -#else - { - /* Fill (uniform) modes, mvs of jth subset. - Must do it here because ensuing subsets can - refer back to us via "left" or "above". */ - unsigned int fill_count = mbsplit_fill_count[s]; - const uint8_t *fill_offset = - &mbsplit_fill_offset[s][j * fill_count]; - - do { - mi->bmi[*fill_offset].as_mv[0].as_int = blockmv.as_int; - if (mbmi->second_ref_frame > 0) - mi->bmi[*fill_offset].as_mv[1].as_int = secondmv.as_int; - fill_offset++; - } while (--fill_count); - } -#endif } while (++j < num_p); } - mv0->as_int = mi->bmi[15 >> (2 * CONFIG_SB8X8)].as_mv[0].as_int; - mv1->as_int = mi->bmi[15 >> (2 * CONFIG_SB8X8)].as_mv[1].as_int; + mv0->as_int = mi->bmi[3].as_mv[0].as_int; + mv1->as_int = mi->bmi[3].as_mv[1].as_int; break; /* done with SPLITMV */ @@ -960,12 +865,7 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, // required for left and above block mv mv0->as_int = 0; -#if CONFIG_SB8X8 - if (mbmi->sb_type > BLOCK_SIZE_SB8X8) -#else - if (mbmi->sb_type > BLOCK_SIZE_MB16X16) -#endif - { + if (mbmi->sb_type > BLOCK_SIZE_SB8X8) { mbmi->mode = read_sb_ymode(r, cm->fc.sb_ymode_prob); cm->fc.sb_ymode_counts[mbmi->mode]++; } else { @@ -983,28 +883,11 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, if (m == B_CONTEXT_PRED) m -= CONTEXT_PRED_REPLACEMENTS; #endif cm->fc.bmode_counts[m]++; - } while (++j < (16 >> (2 * CONFIG_SB8X8))); + } while (++j < 4); } -#if !CONFIG_SB8X8 - if (mbmi->mode == I8X8_PRED) { - int i; - for (i = 0; i < 4; i++) { - const int ib = vp9_i8x8_block[i]; - const int mode8x8 = read_i8x8_mode(r, cm->fc.i8x8_mode_prob); - - mi->bmi[ib + 0].as_mode.first = mode8x8; - mi->bmi[ib + 1].as_mode.first = mode8x8; - mi->bmi[ib + 4].as_mode.first = mode8x8; - mi->bmi[ib + 5].as_mode.first = mode8x8; - cm->fc.i8x8_mode_counts[mode8x8]++; - } - } else -#endif - { - mbmi->uv_mode = read_uv_mode(r, cm->fc.uv_mode_prob[mbmi->mode]); - cm->fc.uv_mode_counts[mbmi->mode][mbmi->uv_mode]++; - } + mbmi->uv_mode = read_uv_mode(r, cm->fc.uv_mode_prob[mbmi->mode]); + cm->fc.uv_mode_counts[mbmi->mode][mbmi->uv_mode]++; } /* if (cm->current_video_frame == 1) @@ -1012,44 +895,22 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, */ if (cm->txfm_mode == TX_MODE_SELECT && mbmi->mb_skip_coeff == 0 && - ((mbmi->ref_frame == INTRA_FRAME && -#if CONFIG_SB8X8 - mbmi->mode != I4X4_PRED -#else - mbmi->mode <= I8X8_PRED -#endif - ) || - (mbmi->ref_frame != INTRA_FRAME && -#if CONFIG_SB8X8 - mbmi->mode != SPLITMV -#else - !(mbmi->mode == SPLITMV && mbmi->partitioning == PARTITIONING_4X4) -#endif - ))) { -#if CONFIG_SB8X8 + ((mbmi->ref_frame == INTRA_FRAME && mbmi->mode != I4X4_PRED) || + (mbmi->ref_frame != INTRA_FRAME && mbmi->mode != SPLITMV))) { const int allow_16x16 = mbmi->sb_type >= BLOCK_SIZE_MB16X16; -#else - const int allow_16x16 = mbmi->mode != I8X8_PRED && mbmi->mode != SPLITMV; -#endif const int allow_32x32 = mbmi->sb_type >= BLOCK_SIZE_SB32X32; mbmi->txfm_size = select_txfm_size(cm, r, allow_16x16, allow_32x32); } else if (mbmi->sb_type >= BLOCK_SIZE_SB32X32 && cm->txfm_mode >= ALLOW_32X32) { mbmi->txfm_size = TX_32X32; } else if (cm->txfm_mode >= ALLOW_16X16 && -#if CONFIG_SB8X8 mbmi->sb_type >= BLOCK_SIZE_MB16X16 && -#endif ((mbmi->ref_frame == INTRA_FRAME && mbmi->mode <= TM_PRED) || (mbmi->ref_frame != INTRA_FRAME && mbmi->mode != SPLITMV))) { mbmi->txfm_size = TX_16X16; } else if (cm->txfm_mode >= ALLOW_8X8 && (!(mbmi->ref_frame == INTRA_FRAME && mbmi->mode == I4X4_PRED) && - !(mbmi->ref_frame != INTRA_FRAME && mbmi->mode == SPLITMV -#if !CONFIG_SB8X8 - && mbmi->partitioning == PARTITIONING_4X4 -#endif - ))) { + !(mbmi->ref_frame != INTRA_FRAME && mbmi->mode == SPLITMV))) { mbmi->txfm_size = TX_8X8; } else { mbmi->txfm_size = TX_4X4; diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 72ebd937e..7396ab3c6 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -186,58 +186,6 @@ static void mb_init_dequantizer(VP9_COMMON *pc, MACROBLOCKD *xd) { xd->plane[i].dequant = pc->uv_dequant[xd->q_index]; } -#if !CONFIG_SB8X8 -static void decode_8x8(MACROBLOCKD *xd) { - const MB_PREDICTION_MODE mode = xd->mode_info_context->mbmi.mode; - // luma - // if the first one is DCT_DCT assume all the rest are as well - TX_TYPE tx_type = get_tx_type_8x8(xd, 0); - int i; - assert(mode == I8X8_PRED); - for (i = 0; i < 4; i++) { - int ib = vp9_i8x8_block[i]; - int idx = (ib & 0x02) ? (ib + 2) : ib; - int16_t *q = BLOCK_OFFSET(xd->plane[0].qcoeff, idx, 16); - uint8_t* const dst = - raster_block_offset_uint8(xd, BLOCK_SIZE_MB16X16, 0, ib, - xd->plane[0].dst.buf, - xd->plane[0].dst.stride); - int stride = xd->plane[0].dst.stride; - if (mode == I8X8_PRED) { - int i8x8mode = xd->mode_info_context->bmi[ib].as_mode.first; - vp9_intra8x8_predict(xd, ib, i8x8mode, dst, stride); - } - tx_type = get_tx_type_8x8(xd, ib); - vp9_iht_add_8x8_c(tx_type, q, dst, stride, xd->plane[0].eobs[idx]); - } - - // chroma - for (i = 0; i < 4; i++) { - int ib = vp9_i8x8_block[i]; - int i8x8mode = xd->mode_info_context->bmi[ib].as_mode.first; - uint8_t* dst; - - dst = raster_block_offset_uint8(xd, BLOCK_SIZE_MB16X16, 1, i, - xd->plane[1].dst.buf, - xd->plane[1].dst.stride); - vp9_intra_uv4x4_predict(xd, 16 + i, i8x8mode, - dst, xd->plane[1].dst.stride); - xd->itxm_add(BLOCK_OFFSET(xd->plane[1].qcoeff, i, 16), - dst, xd->plane[1].dst.stride, - xd->plane[1].eobs[i]); - - dst = raster_block_offset_uint8(xd, BLOCK_SIZE_MB16X16, 2, i, - xd->plane[2].dst.buf, - xd->plane[1].dst.stride); - vp9_intra_uv4x4_predict(xd, 20 + i, i8x8mode, - dst, xd->plane[1].dst.stride); - xd->itxm_add(BLOCK_OFFSET(xd->plane[2].qcoeff, i, 16), - dst, xd->plane[1].dst.stride, - xd->plane[2].eobs[i]); - } -} -#endif - static INLINE void dequant_add_y(MACROBLOCKD *xd, TX_TYPE tx_type, int idx, BLOCK_SIZE_TYPE bsize) { struct macroblockd_plane *const y = &xd->plane[0]; @@ -253,47 +201,6 @@ static INLINE void dequant_add_y(MACROBLOCKD *xd, TX_TYPE tx_type, int idx, } } -#if !CONFIG_SB8X8 -static void decode_4x4(VP9D_COMP *pbi, MACROBLOCKD *xd, vp9_reader *r) { - TX_TYPE tx_type; - int i = 0; - const MB_PREDICTION_MODE mode = xd->mode_info_context->mbmi.mode; - assert(mode == I8X8_PRED); - for (i = 0; i < 4; i++) { - int ib = vp9_i8x8_block[i]; - const int iblock[4] = {0, 1, 4, 5}; - int j; - uint8_t* dst; - int i8x8mode = xd->mode_info_context->bmi[ib].as_mode.first; - - dst = raster_block_offset_uint8(xd, BLOCK_SIZE_MB16X16, 0, ib, - xd->plane[0].dst.buf, - xd->plane[0].dst.stride); - vp9_intra8x8_predict(xd, ib, i8x8mode, dst, xd->plane[0].dst.stride); - for (j = 0; j < 4; j++) { - tx_type = get_tx_type_4x4(xd, ib + iblock[j]); - dequant_add_y(xd, tx_type, ib + iblock[j], BLOCK_SIZE_MB16X16); - } - dst = raster_block_offset_uint8(xd, BLOCK_SIZE_MB16X16, 1, i, - xd->plane[1].dst.buf, - xd->plane[1].dst.stride); - vp9_intra_uv4x4_predict(xd, 16 + i, i8x8mode, - dst, xd->plane[1].dst.stride); - xd->itxm_add(BLOCK_OFFSET(xd->plane[1].qcoeff, i, 16), - dst, xd->plane[1].dst.stride, - xd->plane[1].eobs[i]); - dst = raster_block_offset_uint8(xd, BLOCK_SIZE_MB16X16, 2, i, - xd->plane[2].dst.buf, - xd->plane[2].dst.stride); - vp9_intra_uv4x4_predict(xd, 20 + i, i8x8mode, - dst, xd->plane[1].dst.stride); - xd->itxm_add(BLOCK_OFFSET(xd->plane[2].qcoeff, i, 16), - dst, xd->plane[1].dst.stride, - xd->plane[2].eobs[i]); - } -} -#endif - static void decode_block(int plane, int block, BLOCK_SIZE_TYPE bsize, int ss_txfrm_size, void *arg) { MACROBLOCKD* const xd = arg; @@ -445,35 +352,6 @@ static void decode_sb(VP9D_COMP *pbi, MACROBLOCKD *xd, int mi_row, int mi_col, } } -#if !CONFIG_SB8X8 -// TODO(jingning): This only performs I8X8_PRED decoding process, which will be -// automatically covered by decode_sb, when SB8X8 is on. -static void decode_mb(VP9D_COMP *pbi, MACROBLOCKD *xd, - int mi_row, int mi_col, - vp9_reader *r) { - MB_MODE_INFO *const mbmi = &xd->mode_info_context->mbmi; - const int tx_size = mbmi->txfm_size; - - assert(mbmi->sb_type == BLOCK_SIZE_MB16X16); - - if (mbmi->mb_skip_coeff) { - vp9_reset_sb_tokens_context(xd, BLOCK_SIZE_MB16X16); - } else { - // re-initialize macroblock dequantizer before detokenization - if (xd->segmentation_enabled) - mb_init_dequantizer(&pbi->common, xd); - - if (!vp9_reader_has_error(r)) - vp9_decode_tokens(pbi, xd, r, BLOCK_SIZE_MB16X16); - } - - if (tx_size == TX_8X8) - decode_8x8(xd); - else - decode_4x4(pbi, xd, r); -} -#endif - static int get_delta_q(vp9_reader *r, int *dq) { const int old_value = *dq; @@ -507,12 +385,12 @@ static void set_offsets(VP9D_COMP *pbi, BLOCK_SIZE_TYPE bsize, for (i = 0; i < MAX_MB_PLANE; i++) { xd->plane[i].above_context = cm->above_context[i] + - (mi_col * 4 >> (xd->plane[i].subsampling_x + CONFIG_SB8X8)); + (mi_col * 2 >> xd->plane[i].subsampling_x); xd->plane[i].left_context = cm->left_context[i] + - (((mi_row * 4 >> CONFIG_SB8X8) & 15) >> xd->plane[i].subsampling_y); + (((mi_row * 2) & 15) >> xd->plane[i].subsampling_y); } - xd->above_seg_context = cm->above_seg_context + (mi_col >> CONFIG_SB8X8); - xd->left_seg_context = cm->left_seg_context + ((mi_row >> CONFIG_SB8X8) & 3); + xd->above_seg_context = cm->above_seg_context + (mi_col >> 1); + xd->left_seg_context = cm->left_seg_context + ((mi_row >> 1) & 3); // Distance of Mb to the various image edges. These are specified to 8th pel // as they are always compared to values that are in 1/8th pel units @@ -559,33 +437,12 @@ static void decode_modes_b(VP9D_COMP *pbi, int mi_row, int mi_col, vp9_decode_mb_mode_mv(pbi, xd, mi_row, mi_col, r); set_refs(pbi, mi_row, mi_col); -#if CONFIG_SB8X8 if (bsize == BLOCK_SIZE_SB8X8 && (xd->mode_info_context->mbmi.mode == SPLITMV || xd->mode_info_context->mbmi.mode == I4X4_PRED)) decode_atom(pbi, xd, mi_row, mi_col, r, bsize); else decode_sb(pbi, xd, mi_row, mi_col, r, bsize); -#else - // TODO(jingning): merge decode_sb_ and decode_mb_ - if (bsize > BLOCK_SIZE_MB16X16) { - decode_sb(pbi, xd, mi_row, mi_col, r, bsize); - } else { - // TODO(jingning): In transition of separating functionalities of decode_mb - // into decode_sb and decode_atom. Will remove decode_mb and clean this up - // when SB8X8 is on. - if (xd->mode_info_context->mbmi.mode == I4X4_PRED || - (xd->mode_info_context->mbmi.mode == SPLITMV && - xd->mode_info_context->mbmi.partitioning == PARTITIONING_4X4)) - decode_atom(pbi, xd, mi_row, mi_col, r, bsize); - else if (xd->mode_info_context->mbmi.mode != I8X8_PRED) - decode_sb(pbi, xd, mi_row, mi_col, r, bsize); - else - // TODO(jingning): decode_mb still carries deocding process of I8X8_PRED. - // This will be covered by decode_sb when SB8X8 is on. - decode_mb(pbi, xd, mi_row, mi_col, r); - } -#endif xd->corrupted |= vp9_reader_has_error(r); } @@ -602,16 +459,12 @@ static void decode_modes_sb(VP9D_COMP *pbi, int mi_row, int mi_col, if (mi_row >= pc->mi_rows || mi_col >= pc->mi_cols) return; -#if CONFIG_SB8X8 if (bsize > BLOCK_SIZE_SB8X8) { -#else - if (bsize > BLOCK_SIZE_MB16X16) { -#endif int pl; // read the partition information xd->left_seg_context = - pc->left_seg_context + ((mi_row >> CONFIG_SB8X8) & 3); - xd->above_seg_context = pc->above_seg_context + (mi_col >> CONFIG_SB8X8); + pc->left_seg_context + ((mi_row >> 1) & 3); + xd->above_seg_context = pc->above_seg_context + (mi_col >> 1); pl = partition_plane_context(xd, bsize); partition = treed_read(r, vp9_partition_tree, pc->fc.partition_prob[pl]); @@ -638,15 +491,10 @@ static void decode_modes_sb(VP9D_COMP *pbi, int mi_row, int mi_col, int j = n >> 1, i = n & 0x01; if (subsize == BLOCK_SIZE_SB32X32) xd->sb_index = n; -#if CONFIG_SB8X8 else if (subsize == BLOCK_SIZE_MB16X16) xd->mb_index = n; else xd->b_index = n; -#else - else - xd->mb_index = n; -#endif decode_modes_sb(pbi, mi_row + j * bs, mi_col + i * bs, r, subsize); } break; @@ -654,15 +502,11 @@ static void decode_modes_sb(VP9D_COMP *pbi, int mi_row, int mi_col, assert(0); } // update partition context -#if CONFIG_SB8X8 if ((partition == PARTITION_SPLIT) && (bsize > BLOCK_SIZE_MB16X16)) -#else - if ((partition == PARTITION_SPLIT) && (bsize > BLOCK_SIZE_SB32X32)) -#endif return; - xd->left_seg_context = pc->left_seg_context + ((mi_row >> CONFIG_SB8X8) & 3); - xd->above_seg_context = pc->above_seg_context + (mi_col >> CONFIG_SB8X8); + xd->left_seg_context = pc->left_seg_context + ((mi_row >> 1) & 3); + xd->above_seg_context = pc->above_seg_context + (mi_col >> 1); update_partition_context(xd, subsize, bsize); } @@ -1013,13 +857,7 @@ static void update_frame_context(FRAME_CONTEXT *fc) { vp9_copy(fc->pre_sb_ymode_prob, fc->sb_ymode_prob); vp9_copy(fc->pre_uv_mode_prob, fc->uv_mode_prob); vp9_copy(fc->pre_bmode_prob, fc->bmode_prob); -#if !CONFIG_SB8X8 - vp9_copy(fc->pre_i8x8_mode_prob, fc->i8x8_mode_prob); -#endif vp9_copy(fc->pre_sub_mv_ref_prob, fc->sub_mv_ref_prob); -#if !CONFIG_SB8X8 - vp9_copy(fc->pre_mbsplit_prob, fc->mbsplit_prob); -#endif vp9_copy(fc->pre_partition_prob, fc->partition_prob); fc->pre_nmvc = fc->nmvc; @@ -1032,13 +870,7 @@ static void update_frame_context(FRAME_CONTEXT *fc) { vp9_zero(fc->sb_ymode_counts); vp9_zero(fc->uv_mode_counts); vp9_zero(fc->bmode_counts); -#if !CONFIG_SB8X8 - vp9_zero(fc->i8x8_mode_counts); -#endif vp9_zero(fc->sub_mv_ref_counts); -#if !CONFIG_SB8X8 - vp9_zero(fc->mbsplit_counts); -#endif vp9_zero(fc->NMVcount); vp9_zero(fc->mv_ref_ct); vp9_zero(fc->partition_counts); @@ -1066,12 +898,12 @@ static void decode_tile(VP9D_COMP *pbi, vp9_reader *r) { int mi_row, mi_col; for (mi_row = pc->cur_tile_mi_row_start; - mi_row < pc->cur_tile_mi_row_end; mi_row += (4 << CONFIG_SB8X8)) { + mi_row < pc->cur_tile_mi_row_end; mi_row += 8) { // For a SB there are 2 left contexts, each pertaining to a MB row within vpx_memset(&pc->left_context, 0, sizeof(pc->left_context)); vpx_memset(pc->left_seg_context, 0, sizeof(pc->left_seg_context)); for (mi_col = pc->cur_tile_mi_col_start; - mi_col < pc->cur_tile_mi_col_end; mi_col += (4 << CONFIG_SB8X8)) { + mi_col < pc->cur_tile_mi_col_end; mi_col += 8) { decode_modes_sb(pbi, mi_row, mi_col, r, BLOCK_SIZE_SB64X64); } } |