summaryrefslogtreecommitdiff
path: root/vp9/decoder
diff options
context:
space:
mode:
Diffstat (limited to 'vp9/decoder')
-rw-r--r--vp9/decoder/vp9_decodemv.c167
-rw-r--r--vp9/decoder/vp9_decodframe.c188
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);
}
}