Some fixes in interintra expt

Removes some redundant information when supertx and interintra
both are used.

Change-Id: I40b0fddbc1ba54607c6e8068bde128c21c14d997
This commit is contained in:
Deb Mukherjee 2015-01-13 00:52:25 -08:00
parent b43beffc3c
commit cb165354e7
4 changed files with 19 additions and 20 deletions

View File

@ -1193,7 +1193,7 @@ void vp9_predict_intra_block(const MACROBLOCKD *xd, int block_idx, int bwl_in,
}
#if CONFIG_INTERINTRA
static INLINE TX_SIZE intra_size_log2_for_interintra(int bs) {
static INLINE TX_SIZE blocklen_to_txsize(int bs) {
switch (bs) {
case 4:
return TX_4X4;
@ -1498,11 +1498,11 @@ static void build_intra_predictors_for_interintra(
int right_available, int plane) {
if (bw == bh) {
build_intra_predictors(xd, src, src_stride, pred_ptr, stride,
mode, intra_size_log2_for_interintra(bw),
mode, blocklen_to_txsize(bw),
up_available, left_available, right_available,
0, 0, plane);
} else if (bw < bh) {
const TX_SIZE tx_size = intra_size_log2_for_interintra(bw);
const TX_SIZE tx_size = blocklen_to_txsize(bw);
uint8_t *src_bottom = src + bw * src_stride;
uint8_t *pred_ptr_bottom = pred_ptr + bw * stride;
build_intra_predictors(
@ -1514,7 +1514,7 @@ static void build_intra_predictors_for_interintra(
up_available, left_available, 0,
1, 0, bw, plane);
} else {
const TX_SIZE tx_size = intra_size_log2_for_interintra(bh);
const TX_SIZE tx_size = blocklen_to_txsize(bh);
uint8_t *src_right = src + bh;
uint8_t *pred_ptr_right = pred_ptr + bh;
build_intra_predictors(

View File

@ -448,7 +448,7 @@ static INLINE INTERP_FILTER read_switchable_interp_filter(
static void read_intra_block_mode_info(VP9_COMMON *const cm, MODE_INFO *mi,
#if CONFIG_FILTERINTRA
MACROBLOCKD *const xd,
MACROBLOCKD *const xd,
#endif
vp9_reader *r) {
MB_MODE_INFO *const mbmi = &mi->mbmi;
@ -619,6 +619,9 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm,
MACROBLOCKD *const xd,
const TileInfo *const tile,
MODE_INFO *const mi,
#if CONFIG_SUPERTX
int supertx_enabled,
#endif
int mi_row, int mi_col, vp9_reader *r) {
MB_MODE_INFO *const mbmi = &mi->mbmi;
const BLOCK_SIZE bsize = mbmi->sb_type;
@ -684,7 +687,10 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm,
#if CONFIG_INTERINTRA
if (is_interintra_allowed(bsize) &&
is_inter_mode(mbmi->mode) &&
(mbmi->ref_frame[1] <= INTRA_FRAME)) {
#if CONFIG_SUPERTX
!supertx_enabled &&
#endif
mbmi->ref_frame[1] <= INTRA_FRAME) {
mbmi->ref_frame[1] = vp9_read(r, cm->fc.interintra_prob[bsize]) ?
INTRA_FRAME : NONE;
cm->counts.interintra[bsize][mbmi->ref_frame[1] == INTRA_FRAME]++;
@ -899,6 +905,9 @@ static void read_inter_frame_mode_info(VP9_COMMON *const cm,
if (inter_block) {
read_inter_block_mode_info(cm, xd, tile, mi,
#if CONFIG_SUPERTX
supertx_enabled,
#endif
mi_row, mi_col, r);
} else {
read_intra_block_mode_info(cm, mi,

View File

@ -528,7 +528,10 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, const MODE_INFO *mi,
if (cpi->common.reference_mode != COMPOUND_REFERENCE &&
is_interintra_allowed(bsize) &&
is_inter_mode(mode) &&
(mbmi->ref_frame[1] <= INTRA_FRAME)) {
#if CONFIG_SUPERTX
!supertx_enabled &&
#endif
mbmi->ref_frame[1] <= INTRA_FRAME) {
vp9_write(w, mbmi->ref_frame[1] == INTRA_FRAME,
cm->fc.interintra_prob[bsize]);
if (mbmi->ref_frame[1] == INTRA_FRAME) {

View File

@ -971,19 +971,6 @@ static void update_state_supertx(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx,
const int ctx = vp9_get_pred_context_switchable_interp(xd);
++cm->counts.switchable_interp[ctx][mbmi->interp_filter];
}
#if CONFIG_INTERINTRA
if (is_interintra_allowed(bsize) &&
is_inter_mode(mbmi->mode) &&
(mbmi->ref_frame[1] <= INTRA_FRAME)) {
if (mbmi->ref_frame[1] == INTRA_FRAME) {
assert(0);
++cm->counts.y_mode[size_group_lookup[bsize]][mbmi->interintra_mode];
++cm->counts.interintra[bsize][1];
} else {
++cm->counts.interintra[bsize][0];
}
}
#endif // CONFIG_INTERINTRA
}
rd_opt->comp_pred_diff[SINGLE_REFERENCE] += ctx->single_pred_diff;