From: Yue Chen Date: Wed, 4 Sep 2013 00:15:25 +0000 (-0700) Subject: New flags for masked compound inter-inter/inter-intra X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ce9f36322f872c8211ebdac9fb2bea61beb328d;p=libvpx New flags for masked compound inter-inter/inter-intra Masked inter-inter will be enabled when CONFIG_MASKED_INTERINTER is on. Masked inter-intra will be enabled only when both CONFIG_MASKED_INTERINTRA and CONFIG_INTERINTRA are on. Change-Id: I57efcfe6a3ef2d53129ef703030366503dfa3762 --- diff --git a/configure b/configure index cf1ca20d5..493c7e1cb 100755 --- a/configure +++ b/configure @@ -252,7 +252,8 @@ EXPERIMENT_LIST=" alpha interintra filterintra - masked_compound + masked_interintra + masked_interinter " CONFIG_LIST=" external_build diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index 90d2f94fe..d92b517d4 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -164,7 +164,7 @@ static INLINE int is_interintra_allowed(BLOCK_SIZE_TYPE sb_type) { return ((sb_type >= BLOCK_8X8) && (sb_type < BLOCK_64X64)); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA #define MASK_BITS_SML_INTERINTRA 3 #define MASK_BITS_MED_INTERINTRA 4 #define MASK_BITS_BIG_INTERINTRA 5 @@ -182,7 +182,7 @@ static INLINE int get_mask_bits_interintra(BLOCK_SIZE_TYPE sb_type) { #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER #define MASK_BITS_SML 3 #define MASK_BITS_MED 4 #define MASK_BITS_BIG 5 @@ -198,13 +198,13 @@ static inline int get_mask_bits(BLOCK_SIZE_TYPE sb_type) { else return MASK_BITS_BIG; } -#endif // CONFIG_MASKED_COMPOUND +#endif typedef struct { MB_PREDICTION_MODE mode, uv_mode; #if CONFIG_INTERINTRA MB_PREDICTION_MODE interintra_mode, interintra_uv_mode; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int interintra_mask_index; int interintra_uv_mask_index; int use_masked_interintra; @@ -236,7 +236,7 @@ typedef struct { BLOCK_SIZE_TYPE sb_type; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER int use_masked_compound; int mask_index; #endif diff --git a/vp9/common/vp9_entropymode.c b/vp9/common/vp9_entropymode.c index e968c382b..aaac4d906 100644 --- a/vp9/common/vp9_entropymode.c +++ b/vp9/common/vp9_entropymode.c @@ -339,7 +339,7 @@ static const vp9_prob default_switchable_interp_prob[VP9_SWITCHABLE_FILTERS+1] static const vp9_prob default_interintra_prob[BLOCK_SIZE_TYPES] = { 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192 }; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA static const vp9_prob default_masked_interintra_prob[BLOCK_SIZE_TYPES] = { // 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192 @@ -347,7 +347,7 @@ static const vp9_prob default_masked_interintra_prob[BLOCK_SIZE_TYPES] = { #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER static const vp9_prob default_masked_interinter_prob[BLOCK_SIZE_TYPES] = { 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192 }; @@ -366,14 +366,14 @@ void vp9_init_mbmode_probs(VP9_COMMON *cm) { vp9_copy(cm->fc.mbskip_probs, default_mbskip_probs); #if CONFIG_INTERINTRA vp9_copy(cm->fc.interintra_prob, default_interintra_prob); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_copy(cm->fc.masked_interintra_prob, default_masked_interintra_prob); #endif #endif #if CONFIG_FILTERINTRA vp9_copy(cm->fc.filterintra_prob, vp9_default_filterintra_prob); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_copy(cm->fc.masked_compound_prob, default_masked_interinter_prob); #endif } @@ -505,7 +505,7 @@ void vp9_adapt_mode_probs(VP9_COMMON *cm) { fc->interintra_prob[i] = update_ct2(pre_fc->interintra_prob[i], counts->interintra[i]); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cm->use_masked_interintra) { for (i = 0; i < BLOCK_SIZE_TYPES; ++i) { if (is_interintra_allowed(i) && get_mask_bits_interintra(i)) @@ -523,7 +523,7 @@ void vp9_adapt_mode_probs(VP9_COMMON *cm) { fc->filterintra_prob[i][j] = update_ct2(pre_fc->filterintra_prob[i][j], counts->filterintra[i][j]); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (cm->use_masked_compound) { for (i = 0; i < BLOCK_SIZE_TYPES; ++i) { if (get_mask_bits(i)) diff --git a/vp9/common/vp9_entropymode.h b/vp9/common/vp9_entropymode.h index 4e6b9670b..1c24d230c 100644 --- a/vp9/common/vp9_entropymode.h +++ b/vp9/common/vp9_entropymode.h @@ -22,12 +22,12 @@ #if CONFIG_INTERINTRA #define VP9_UPD_INTERINTRA_PROB 248 #define SEPARATE_INTERINTRA_UV 0 -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA #define VP9_UPD_MASKED_INTERINTRA_PROB 248 #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER #define VP9_UPD_MASKED_COMPOUND_PROB 248 #endif diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h index 2a72f6204..f9a7844e3 100644 --- a/vp9/common/vp9_onyxc_int.h +++ b/vp9/common/vp9_onyxc_int.h @@ -55,14 +55,14 @@ typedef struct frame_contexts { nmv_context nmvc; #if CONFIG_INTERINTRA vp9_prob interintra_prob[BLOCK_SIZE_TYPES]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_prob masked_interintra_prob[BLOCK_SIZE_TYPES]; #endif #endif #if CONFIG_FILTERINTRA vp9_prob filterintra_prob[TX_SIZES][VP9_INTRA_MODES]; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_prob masked_compound_prob[BLOCK_SIZE_TYPES]; #endif } FRAME_CONTEXT; @@ -86,14 +86,14 @@ typedef struct { nmv_context_counts mv; #if CONFIG_INTERINTRA unsigned int interintra[BLOCK_SIZE_TYPES][2]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA unsigned int masked_interintra[BLOCK_SIZE_TYPES][2]; #endif #endif #if CONFIG_FILTERINTRA unsigned int filterintra[TX_SIZES][VP9_INTRA_MODES][2]; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER unsigned int masked_compound[BLOCK_SIZE_TYPES][2]; #endif } FRAME_COUNTS; @@ -228,12 +228,12 @@ typedef struct VP9Common { #if CONFIG_INTERINTRA int use_interintra; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int use_masked_interintra; #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER int use_masked_compound; #endif diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index fbba44721..e34691d20 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -261,7 +261,7 @@ MV clamp_mv_to_umv_border_sb(const MV *src_mv, return clamped_mv; } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER #define MASK_WEIGHT_BITS 6 static int get_masked_weight(int m) { @@ -617,7 +617,7 @@ static void build_inter_predictors(int plane, int block, xd->mb_to_bottom_edge); scale->set_scaled_offsets(scale, arg->y + y, arg->x + x); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (which_mv && xd->mode_info_context->mbmi.use_masked_compound) { uint8_t tmp_dst[4096]; vp9_build_inter_predictor(pre, pre_stride, @@ -638,7 +638,7 @@ static void build_inter_predictors(int plane, int block, &res_mv, &xd->scale_factor[which_mv], 4 << pred_w, 4 << pred_h, which_mv, &xd->subpix, MV_PRECISION_Q4); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER } #endif } diff --git a/vp9/common/vp9_reconinter.h b/vp9/common/vp9_reconinter.h index c8200421c..4c5002f21 100644 --- a/vp9/common/vp9_reconinter.h +++ b/vp9/common/vp9_reconinter.h @@ -107,7 +107,7 @@ static void set_scale_factors(MACROBLOCKD *xd, int ref0, int ref1, void vp9_setup_scale_factors(VP9_COMMON *cm, int i); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER void vp9_generate_masked_weight(int mask_index, BLOCK_SIZE_TYPE sb_type, int h, int w, uint8_t *mask, int stride); void vp9_generate_hard_mask(int mask_index, BLOCK_SIZE_TYPE sb_type, diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c index ba9dfe3e3..19f3645f0 100644 --- a/vp9/common/vp9_reconintra.c +++ b/vp9/common/vp9_reconintra.c @@ -602,7 +602,7 @@ static void build_intra_predictors_for_2nd_block_interintra } } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA #define MASK_WEIGHT_BITS_INTERINTRA 6 static int get_masked_weight_interintra(int m) { @@ -888,7 +888,7 @@ void vp9_generate_hard_mask_interintra(int mask_index, BLOCK_SIZE_TYPE sb_type, #endif static void combine_interintra(MB_PREDICTION_MODE mode, -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int use_masked_interintra, int mask_index, BLOCK_SIZE_TYPE bsize, @@ -919,7 +919,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, size == 8 ? 8 : 16); int i, j; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA uint8_t mask[4096]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) vp9_generate_masked_weight_interintra(mask_index, bsize, bh, bw, mask, bw); @@ -931,7 +931,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, for (j = 0; j < bw; ++j) { int k = i * interstride + j; int scale = weights1d[i * size_scale]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -954,7 +954,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, for (j = 0; j < bw; ++j) { int k = i * interstride + j; int scale = weights1d[j * size_scale]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -979,7 +979,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, int k = i * interstride + j; int scale = (weights1d[i * size_scale] * 3 + weights1d[j * size_scale]) >> 2; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -1004,7 +1004,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, int k = i * interstride + j; int scale = (weights1d[j * size_scale] * 3 + weights1d[i * size_scale]) >> 2; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -1027,7 +1027,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, for (j = 0; j < bw; ++j) { int k = i * interstride + j; int scale = weights1d[(i < j ? i : j) * size_scale]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -1051,7 +1051,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, int k = i * interstride + j; int scale = (weights1d[i * size_scale] + weights1d[j * size_scale]) >> 1; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -1075,7 +1075,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, for (i = 0; i < bh; ++i) { for (j = 0; j < bw; ++j) { int k = i * interstride + j; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA int m = mask[i * bw + j]; if (use_masked_interintra && get_mask_bits_interintra(bsize)) interpred[k] = (intrapred[i * intrastride + j] * m + @@ -1141,7 +1141,7 @@ void vp9_build_interintra_predictors_sby(MACROBLOCKD *xd, xd->mode_info_context->mbmi.interintra_mode, bw, bh, xd->up_available, xd->left_available, xd->right_available); combine_interintra(xd->mode_info_context->mbmi.interintra_mode, -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA xd->mode_info_context->mbmi.use_masked_interintra, xd->mode_info_context->mbmi.interintra_mask_index, bsize, @@ -1169,14 +1169,14 @@ void vp9_build_interintra_predictors_sbuv(MACROBLOCKD *xd, xd->mode_info_context->mbmi.interintra_uv_mode, bw, bh, xd->up_available, xd->left_available, xd->right_available); combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode, -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA xd->mode_info_context->mbmi.use_masked_interintra, xd->mode_info_context->mbmi.interintra_uv_mask_index, bsize, #endif upred, uvstride, uintrapredictor, bw, bw, bh); combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode, -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA xd->mode_info_context->mbmi.use_masked_interintra, xd->mode_info_context->mbmi.interintra_uv_mask_index, bsize, diff --git a/vp9/common/vp9_reconintra.h b/vp9/common/vp9_reconintra.h index 493512de1..31b1efa46 100644 --- a/vp9/common/vp9_reconintra.h +++ b/vp9/common/vp9_reconintra.h @@ -39,7 +39,7 @@ void vp9_build_interintra_predictors(MACROBLOCKD *xd, int ystride, int uvstride, BLOCK_SIZE_TYPE bsize); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA void vp9_generate_masked_weight_interintra(int mask_index, BLOCK_SIZE_TYPE sb_type, int h, int w, diff --git a/vp9/common/vp9_rtcd_defs.sh b/vp9/common/vp9_rtcd_defs.sh index 4625f9c96..e6ead00db 100644 --- a/vp9/common/vp9_rtcd_defs.sh +++ b/vp9/common/vp9_rtcd_defs.sh @@ -557,7 +557,7 @@ specialize vp9_sad4x8_avg $sse_x86inc prototype unsigned int vp9_sad4x4_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad" specialize vp9_sad4x4_avg $sse_x86inc -if [ "$CONFIG_MASKED_COMPOUND" = "yes" ]; then +if [ "$CONFIG_MASKED_INTERINTER" = "yes" ] || ([ "$CONFIG_MASKED_INTERINTRA" = "yes" ] && [ "$CONFIG_INTERINTRA" = "yes" ]); then prototype int vp9_masked_diamond_search_sad "struct macroblock *x, uint8_t *mask, int mask_stride, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct vp9_variance_vtable *fn_ptr, DEC_MVCOSTS, union int_mv *center_mv, int is_second" specialize vp9_masked_diamond_search_sad diff --git a/vp9/common/vp9_sadmxn.h b/vp9/common/vp9_sadmxn.h index b0f5d94c3..2bcb68e9e 100644 --- a/vp9/common/vp9_sadmxn.h +++ b/vp9/common/vp9_sadmxn.h @@ -35,7 +35,8 @@ static INLINE unsigned int sad_mx_n_c(const uint8_t *src_ptr, return sad; } -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) static INLINE unsigned int masked_sad_mx_n_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, diff --git a/vp9/common/vp9_subpelvar.h b/vp9/common/vp9_subpelvar.h index 8c6307053..d9e9b155d 100644 --- a/vp9/common/vp9_subpelvar.h +++ b/vp9/common/vp9_subpelvar.h @@ -39,7 +39,8 @@ static void variance(const uint8_t *src_ptr, } } -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) static void masked_variance(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c index 3142c17b0..b28c99837 100644 --- a/vp9/decoder/vp9_decodemv.c +++ b/vp9/decoder/vp9_decodemv.c @@ -511,7 +511,7 @@ static void read_inter_block_mode_info(VP9D_COMP *pbi, MODE_INFO *mi, uint8_t inter_mode_ctx; MV_REFERENCE_FRAME ref0, ref1; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER mbmi->use_masked_compound = 0; mbmi->mask_index = MASK_NONE; #endif @@ -564,7 +564,7 @@ static void read_inter_block_mode_info(VP9D_COMP *pbi, MODE_INFO *mi, 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]++; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA mbmi->use_masked_interintra = 0; #endif if (mbmi->ref_frame[1] == INTRA_FRAME) { @@ -578,7 +578,7 @@ static void read_inter_block_mode_info(VP9D_COMP *pbi, MODE_INFO *mi, #else mbmi->interintra_uv_mode = mbmi->interintra_mode; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cm->use_masked_interintra && get_mask_bits_interintra(bsize)) { mbmi->use_masked_interintra = vp9_read(r, cm->fc.masked_interintra_prob[bsize]); @@ -693,7 +693,7 @@ static void read_inter_block_mode_info(VP9D_COMP *pbi, MODE_INFO *mi, assert(!"Invalid inter mode value"); } } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER mbmi->use_masked_compound = 0; if (pbi->common.use_masked_compound && pbi->common.comp_pred_mode != SINGLE_PREDICTION_ONLY && @@ -741,7 +741,7 @@ static void read_comp_pred(VP9_COMMON *cm, vp9_reader *r) { if (vp9_read(r, VP9_MODE_UPDATE_PROB)) vp9_diff_update_prob(r, &cm->fc.comp_inter_prob[i]); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (cm->comp_pred_mode != SINGLE_PREDICTION_ONLY) { cm->use_masked_compound = vp9_read_bit(r); if (cm->use_masked_compound) { @@ -798,7 +798,7 @@ void vp9_prepare_read_mode_info(VP9D_COMP* pbi, vp9_reader *r) { if (vp9_read(r, VP9_UPD_INTERINTRA_PROB)) vp9_diff_update_prob(r, &cm->fc.interintra_prob[b]); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cm->use_masked_interintra) { int k; for (k = 0; k < BLOCK_SIZE_TYPES; ++k) { diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index e2efadadf..fa8675146 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -897,7 +897,7 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi, #if CONFIG_INTERINTRA cm->use_interintra = vp9_rb_read_bit(rb); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cm->use_interintra) { cm->use_masked_interintra = vp9_rb_read_bit(rb); } else { diff --git a/vp9/encoder/vp9_bitstream.c b/vp9/encoder/vp9_bitstream.c index c06ce4d0a..2c7e5d4f3 100644 --- a/vp9/encoder/vp9_bitstream.c +++ b/vp9/encoder/vp9_bitstream.c @@ -520,7 +520,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) { write_intra_mode(bc, mi->interintra_uv_mode, pc->fc.uv_mode_prob[mi->interintra_mode]); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (get_mask_bits_interintra(mi->sb_type) && pc->use_masked_interintra) { vp9_write(bc, mi->use_masked_interintra, @@ -576,7 +576,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) { vp9_encode_mv(cpi, bc, &mi->mv[1].as_mv, &mi->best_second_mv.as_mv, nmvc, allow_hp); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (cpi->common.use_masked_compound && cpi->common.comp_pred_mode != SINGLE_PREDICTION_ONLY && is_inter_mode(mode) && @@ -1421,7 +1421,7 @@ static void write_uncompressed_header(VP9_COMP *cpi, vp9_wb_write_bit(wb, cm->use_interintra); if (!cm->use_interintra) vp9_zero(cpi->interintra_count); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (!cpi->dummy_packing && cm->use_interintra && cm->use_masked_interintra) { int k; @@ -1501,7 +1501,7 @@ static size_t write_compressed_header(VP9_COMP *cpi, uint8_t *data) { VP9_UPD_INTERINTRA_PROB, cpi->interintra_count[b]); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cm->use_masked_interintra) { int k; for (k = 0; k < BLOCK_SIZE_TYPES; ++k) { @@ -1535,7 +1535,7 @@ static size_t write_compressed_header(VP9_COMP *cpi, uint8_t *data) { VP9_MODE_UPDATE_PROB, cpi->comp_inter_count[i]); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (use_compound_pred) { if (!cpi->dummy_packing && cm->use_masked_compound) { cm->use_masked_compound = 0; diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 3bb82b012..c0ab9eef1 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -447,7 +447,7 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, #if SEPARATE_INTERINTRA_UV ++cpi->uv_mode_count[mbmi->interintra_mode][mbmi->interintra_uv_mode]; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cm->use_masked_interintra && get_mask_bits_interintra(mbmi->sb_type)) ++cpi->masked_interintra_count[mbmi->sb_type] @@ -459,7 +459,7 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, } #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (cm->use_masked_compound && cm->comp_pred_mode != SINGLE_PREDICTION_ONLY && is_inter_mode(mbmi->mode) && @@ -2041,7 +2041,7 @@ static void init_encode_frame_mb_context(VP9_COMP *cpi) { #if CONFIG_INTERINTRA vp9_zero(cpi->interintra_count); vp9_zero(cpi->interintra_select_count); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_zero(cpi->masked_interintra_count); vp9_zero(cpi->masked_interintra_select_count); #endif @@ -2049,7 +2049,7 @@ static void init_encode_frame_mb_context(VP9_COMP *cpi) { #if CONFIG_FILTERINTRA vp9_zero(cm->counts.filterintra); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_zero(cpi->masked_compound_counts); vp9_zero(cpi->masked_compound_select_counts); #endif diff --git a/vp9/encoder/vp9_mcomp.c b/vp9/encoder/vp9_mcomp.c index f7b4a8335..af58f1c19 100644 --- a/vp9/encoder/vp9_mcomp.c +++ b/vp9/encoder/vp9_mcomp.c @@ -614,7 +614,8 @@ int vp9_find_best_sub_pixel_comp_iterative(MACROBLOCK *x, #undef DIST #undef IFMVCV #undef CHECK_BETTER -#if !CONFIG_MASKED_COMPOUND +#if !((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) #undef MIN #undef MAX #endif @@ -1167,7 +1168,8 @@ int vp9_diamond_search_sad_c(MACROBLOCK *x, mvcost, x->errorperbit); } -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) #define MVC(r, c) \ (mvcost ? \ @@ -1662,7 +1664,7 @@ int vp9_masked_full_pixel_diamond(VP9_COMP *cpi, MACROBLOCK *x, } return bestsme; } -#endif // CONFIG_MASKED_COMPOUND +#endif int vp9_diamond_search_sadx4(MACROBLOCK *x, int_mv *ref_mv, int_mv *best_mv, int search_param, diff --git a/vp9/encoder/vp9_mcomp.h b/vp9/encoder/vp9_mcomp.h index f6d3116c9..a84dbaf13 100644 --- a/vp9/encoder/vp9_mcomp.h +++ b/vp9/encoder/vp9_mcomp.h @@ -121,7 +121,8 @@ int vp9_refining_search_8p_c(MACROBLOCK *x, int_mv *center_mv, const uint8_t *second_pred, int w, int h); -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) int vp9_find_best_masked_sub_pixel_step_iteratively( MACROBLOCK *x, uint8_t *mask, int mask_stride, int_mv *bestmv, int_mv *ref_mv, int error_per_bit, const vp9_variance_fn_ptr_t *vfp, @@ -133,5 +134,5 @@ int vp9_masked_full_pixel_diamond( int_mv *mvp_full, int step_param, int sadpb, int further_steps, int do_refine, vp9_variance_fn_ptr_t *fn_ptr, int_mv *ref_mv, int_mv *dst_mv, int is_second); -#endif // CONFIG_MASKED_COMPOUND +#endif #endif // VP9_ENCODER_VP9_MCOMP_H_ diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 3da60af28..00a950b66 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -1726,7 +1726,8 @@ VP9_PTR vp9_create_compressor(VP9_CONFIG *oxcf) { vp9_sub_pixel_avg_variance4x4, NULL, NULL, NULL, vp9_sad4x4x3, vp9_sad4x4x8, vp9_sad4x4x4d) -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) #define MBFP(BT, MSDF, MVF, MSVF) \ cpi->fn_ptr[BT].msdf = MSDF; \ cpi->fn_ptr[BT].mvf = MVF; \ @@ -2530,7 +2531,7 @@ static void select_interintra_mode(VP9_COMP *cpi) { } } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA static void select_masked_interintra_mode(VP9_COMP *cpi) { static const double threshold = 1/100.0; VP9_COMMON *cm = &cpi->common; @@ -2544,7 +2545,7 @@ static void select_masked_interintra_mode(VP9_COMP *cpi) { #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER static void select_masked_compound_mode(VP9_COMP *cpi) { static const double threshold = 1/128.0; VP9_COMMON *cm = &cpi->common; @@ -2964,13 +2965,13 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, #if CONFIG_INTERINTRA if (cm->current_video_frame == 0) { cm->use_interintra = 1; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA cm->use_masked_interintra = 1; #endif } #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (cm->current_video_frame == 0) { cm->use_masked_compound = 0; } @@ -3315,11 +3316,11 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, counts->mv = cpi->NMVcount; #if CONFIG_INTERINTRA vp9_copy(counts->interintra, cpi->interintra_count); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_copy(counts->masked_interintra, cpi->masked_interintra_count); #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_copy(counts->masked_compound, cpi->masked_compound_counts); #endif if (!cpi->common.error_resilient_mode && @@ -3332,7 +3333,7 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, #if CONFIG_INTERINTRA if (cm->frame_type != KEY_FRAME) { select_interintra_mode(cpi); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (cpi->common.use_interintra) select_masked_interintra_mode(cpi); else @@ -3340,7 +3341,7 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, #endif } #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (cm->frame_type != KEY_FRAME) select_masked_compound_mode(cpi); #endif diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h index 37c590ffb..b4e7e3cac 100644 --- a/vp9/encoder/vp9_onyx_int.h +++ b/vp9/encoder/vp9_onyx_int.h @@ -98,14 +98,14 @@ typedef struct { #if CONFIG_INTERINTRA vp9_prob interintra_prob[BLOCK_SIZE_TYPES]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_prob masked_interintra_prob[BLOCK_SIZE_TYPES]; #endif #endif #if CONFIG_FILTERINTRA vp9_prob filterintra_prob[TX_SIZES][VP9_INTRA_MODES]; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_prob masked_compound_prob[BLOCK_SIZE_TYPES]; #endif } CODING_CONTEXT; @@ -505,12 +505,12 @@ typedef struct VP9_COMP { #if CONFIG_INTERINTRA unsigned int interintra_count[BLOCK_SIZE_TYPES][2]; unsigned int interintra_select_count[2]; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA unsigned int masked_interintra_count[BLOCK_SIZE_TYPES][2]; unsigned int masked_interintra_select_count[2]; #endif #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER unsigned int masked_compound_counts[BLOCK_SIZE_TYPES][2]; unsigned int masked_compound_select_counts[2]; #endif diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index aabb8e994..1e96ae0e5 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -108,14 +108,14 @@ void vp9_save_coding_context(VP9_COMP *cpi) { vp9_copy(cc->mbskip_probs, cm->fc.mbskip_probs); #if CONFIG_INTERINTRA vp9_copy(cc->interintra_prob, cm->fc.interintra_prob); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_copy(cc->masked_interintra_prob, cm->fc.masked_interintra_prob); #endif #endif #if CONFIG_FILTERINTRA vp9_copy(cc->filterintra_prob, cm->fc.filterintra_prob); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_copy(cc->masked_compound_prob, cm->fc.masked_compound_prob); #endif } @@ -159,14 +159,14 @@ void vp9_restore_coding_context(VP9_COMP *cpi) { vp9_copy(cm->fc.mbskip_probs, cc->mbskip_probs); #if CONFIG_INTERINTRA vp9_copy(cm->fc.interintra_prob, cc->interintra_prob); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA vp9_copy(cm->fc.masked_interintra_prob, cc->masked_interintra_prob); #endif #endif #if CONFIG_FILTERINTRA vp9_copy(cm->fc.filterintra_prob, cc->filterintra_prob); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER vp9_copy(cm->fc.masked_compound_prob, cc->masked_compound_prob); #endif } diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 79a75b287..d257482fa 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -2841,7 +2841,8 @@ static void joint_motion_search(VP9_COMP *cpi, MACROBLOCK *x, vpx_free(second_pred); } -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA)|| \ + CONFIG_MASKED_INTERINTER) static void do_masked_motion_search(VP9_COMP *cpi, MACROBLOCK *x, uint8_t *mask, int mask_stride, BLOCK_SIZE_TYPE bsize, @@ -2930,7 +2931,9 @@ static void do_masked_motion_search(VP9_COMP *cpi, MACROBLOCK *x, xd->plane[i].pre[is_second] = backup_yv12[i]; } } +#endif +#if CONFIG_MASKED_INTERINTER static void do_masked_motion_search_indexed(VP9_COMP *cpi, MACROBLOCK *x, int mask_index, BLOCK_SIZE_TYPE bsize, @@ -2974,7 +2977,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, #if CONFIG_INTERINTRA int *compmode_interintra_cost, #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER int *compmode_masked_cost, #endif int *rate_y, int64_t *distortion_y, @@ -2992,7 +2995,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, #if CONFIG_INTERINTRA const int is_comp_interintra_pred = (mbmi->ref_frame[1] == INTRA_FRAME); #endif -#if CONFIG_MASKED_COMPOUND || CONFIG_INTERINTRA +#if CONFIG_MASKED_INTERINTER || CONFIG_INTERINTRA int rate_mv_tmp = 0; #endif const int num_refs = is_comp_pred ? 2 : 1; @@ -3018,7 +3021,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, is_interintra_allowed(mbmi->sb_type)) { extend_for_interintra(xd, bsize); } -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA mbmi->use_masked_interintra = 0; mbmi->interintra_mask_index = 0; mbmi->interintra_uv_mask_index = 0; @@ -3046,20 +3049,20 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, if (frame_mv[refs[0]].as_int == INVALID_MV || frame_mv[refs[1]].as_int == INVALID_MV) return INT64_MAX; -#if !(CONFIG_MASKED_COMPOUND || CONFIG_INTERINTRA) +#if !(CONFIG_MASKED_INTERINTER || CONFIG_INTERINTRA) *rate2 += rate_mv; #endif } else { int_mv tmp_mv; single_motion_search(cpi, x, bsize, mi_row, mi_col, &tmp_mv, &rate_mv); -#if !(CONFIG_MASKED_COMPOUND || CONFIG_INTERINTRA) +#if !(CONFIG_MASKED_INTERINTER || CONFIG_INTERINTRA) *rate2 += rate_mv; #endif frame_mv[refs[0]].as_int = xd->mode_info_context->bmi[0].as_mv[0].as_int = tmp_mv.as_int; single_newmv[refs[0]].as_int = tmp_mv.as_int; } -#if CONFIG_MASKED_COMPOUND || CONFIG_INTERINTRA +#if CONFIG_MASKED_INTERINTER || CONFIG_INTERINTRA rate_mv_tmp = rate_mv; #endif } @@ -3256,7 +3259,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, int64_t best_interintra_rd = INT64_MAX; int rmode, rate_sum; int64_t dist_sum; -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA #define MASKED_INTERINTRA_REFINE_SEARCH int maskbits, mask_types, mask_index, best_mask_index = 0; int64_t best_interintra_rd_nomask, best_interintra_rd_mask = INT64_MAX; @@ -3288,7 +3291,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, #if !SEPARATE_INTERINTRA_UV mbmi->interintra_uv_mode = best_interintra_mode; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA maskbits = get_mask_bits_interintra(bsize); rmode = x->mbmode_cost[mbmi->interintra_mode]; if (maskbits) { @@ -3319,10 +3322,14 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, #ifdef MASKED_INTERINTRA_REFINE_SEARCH // Refine motion vector if (this_mode == NEWMV) { + int j; mbmi->interintra_mask_index = best_mask_index; mbmi->interintra_uv_mask_index = best_mask_index; vp9_generate_masked_weight_interintra(best_mask_index, bsize, bh, bw, mask, bw); + for (i = 0; i < bh; ++i) + for (j = 0; j < bw; ++j) + mask[i * bw + j] = 64 - mask[i * bw + j]; do_masked_motion_search(cpi, x, mask, bw, bsize, refs[0], mi_row, mi_col, &tmp_mv, &tmp_rate_mv, 0); mbmi->mv[0].as_int = tmp_mv.as_int; @@ -3366,7 +3373,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, #endif if (best_interintra_rd_mask < best_interintra_rd_nomask) { mbmi->use_masked_interintra = 1; - if (cm->use_masked_interintra) { + if (cm->use_interintra && cm->use_masked_interintra) { mbmi->interintra_mask_index = best_mask_index; mbmi->interintra_uv_mask_index = best_mask_index; #ifdef MASKED_INTERINTRA_REFINE_SEARCH @@ -3408,7 +3415,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, *compmode_interintra_cost += x->intra_uv_mode_cost[xd->frame_type][mbmi->interintra_uv_mode]; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA if (get_mask_bits_interintra(bsize) && cm->use_masked_interintra) { *compmode_interintra_cost += vp9_cost_bit( cm->fc.masked_interintra_prob[bsize], @@ -3422,7 +3429,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, } #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if (is_comp_pred && get_mask_bits(bsize)) { int mask_index, best_mask_index = -1, rs; int rate_sum; @@ -3562,9 +3569,9 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, *compmode_masked_cost = vp9_cost_bit(cm->fc.masked_compound_prob[bsize], 0); } -#endif // CONFIG_MASKED_COMPOUND +#endif // CONFIG_MASKED_INTERINTER -#if CONFIG_INTERINTRA || CONFIG_MASKED_COMPOUND +#if CONFIG_INTERINTRA || CONFIG_MASKED_INTERINTER *rate2 += rate_mv_tmp; #endif @@ -3835,7 +3842,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, int bhsl = b_height_log2(bsize); int bhs = (1 << bhsl) / 4; // mode_info step for subsize int best_skip2 = 0; -#if CONFIG_INTERINTRA || CONFIG_MASKED_COMPOUND +#if CONFIG_INTERINTRA || CONFIG_MASKED_INTERINTER int64_t best_overall_rd = INT64_MAX; #endif #if CONFIG_INTERINTRA @@ -3846,7 +3853,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, #endif int64_t best_intra16_rd = INT64_MAX; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER int is_best_masked_compound = 0; #endif @@ -3929,7 +3936,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, #if CONFIG_INTERINTRA int compmode_interintra_cost = 0; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER int compmode_masked_cost = 0; #endif int rate2 = 0, rate_y = 0, rate_uv = 0; @@ -4036,7 +4043,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, mbmi->interintra_mode = (MB_PREDICTION_MODE)(DC_PRED - 1); mbmi->interintra_uv_mode = (MB_PREDICTION_MODE)(DC_PRED - 1); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER mbmi->use_masked_compound = 0; mbmi->mask_index = MASK_NONE; #endif @@ -4437,7 +4444,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, #if CONFIG_INTERINTRA &compmode_interintra_cost, #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER &compmode_masked_cost, #endif &rate_y, &distortion_y, @@ -4455,7 +4462,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, rate2 += compmode_interintra_cost; } #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER if ((cpi->common.comp_pred_mode == HYBRID_PREDICTION || cpi->common.comp_pred_mode == COMP_PREDICTION_ONLY) && cpi->common.use_masked_compound) @@ -4566,13 +4573,13 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, best_filter_rd[i] = MIN(best_filter_rd[i], this_rd); } -#if CONFIG_INTERINTRA || CONFIG_MASKED_COMPOUND +#if CONFIG_INTERINTRA || CONFIG_MASKED_INTERINTER if (this_rd < best_overall_rd) { best_overall_rd = this_rd; #if CONFIG_INTERINTRA is_best_interintra = (second_ref_frame == INTRA_FRAME); #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER is_best_masked_compound = (mbmi->mask_index != MASK_NONE); #endif } @@ -4791,7 +4798,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, ++cpi->interintra_select_count[is_best_interintra]; #endif -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTER // diagnostics if ((cpi->common.comp_pred_mode == HYBRID_PREDICTION || cpi->common.comp_pred_mode == COMP_PREDICTION_ONLY) && diff --git a/vp9/encoder/vp9_sad_c.c b/vp9/encoder/vp9_sad_c.c index 6cc89c8a5..86a68789b 100644 --- a/vp9/encoder/vp9_sad_c.c +++ b/vp9/encoder/vp9_sad_c.c @@ -614,7 +614,8 @@ void vp9_sad4x4x4d_c(const uint8_t *src_ptr, ref_ptr[3], ref_stride, 0x7fffffff); } -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) unsigned int vp9_masked_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, diff --git a/vp9/encoder/vp9_variance.h b/vp9/encoder/vp9_variance.h index 7dd8d2589..9bef53047 100644 --- a/vp9/encoder/vp9_variance.h +++ b/vp9/encoder/vp9_variance.h @@ -67,7 +67,7 @@ typedef unsigned int (*vp9_subp_avg_variance_fn_t)(const uint8_t *src_ptr, unsigned int *sse, const uint8_t *second_pred); -#if CONFIG_MASKED_COMPOUND +#if CONFIG_MASKED_INTERINTRA || CONFIG_MASKED_INTERINTER typedef unsigned int(*vp9_masked_sad_fn_t)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, @@ -118,7 +118,8 @@ typedef struct vp9_variance_vtable { vp9_sad_multi_fn_t sdx3f; vp9_sad_multi1_fn_t sdx8f; vp9_sad_multi_d_fn_t sdx4df; -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) vp9_masked_sad_fn_t msdf; vp9_masked_variance_fn_t mvf; vp9_masked_subpixvariance_fn_t msvf; diff --git a/vp9/encoder/vp9_variance_c.c b/vp9/encoder/vp9_variance_c.c index 9bb24067b..ec473eac4 100644 --- a/vp9/encoder/vp9_variance_c.c +++ b/vp9/encoder/vp9_variance_c.c @@ -956,7 +956,8 @@ unsigned int vp9_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, return vp9_variance4x8(temp3, 4, dst_ptr, dst_pixels_per_line, sse); } -#if CONFIG_MASKED_COMPOUND +#if ((CONFIG_MASKED_INTERINTRA && CONFIG_INTERINTRA) || \ + CONFIG_MASKED_INTERINTER) unsigned int vp9_masked_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr,