From 365e644a71b4cfa26c8aa7b64bbb35d80e6df90a Mon Sep 17 00:00:00 2001 From: Sebastien Alaiwan <sebastien.alaiwan@allegrodvt.com> Date: Mon, 16 Oct 2017 11:35:00 +0200 Subject: [PATCH] Remove compile guards for CONFIG_EXT_REFS This experiment has been adopted, we can simplify the code by dropping the associated preprocessor conditionals. Change-Id: I4705652ac8231ee25f960e8096dc97c2aeed1d20 --- aom/aomcx.h | 1 - av1/av1_cx_iface.c | 33 +--- av1/common/av1_loopfilter.h | 4 +- av1/common/entropy.c | 2 - av1/common/entropymode.c | 48 ----- av1/common/entropymode.h | 12 -- av1/common/enums.h | 16 -- av1/common/mvref_common.c | 40 +--- av1/common/mvref_common.h | 4 - av1/common/onyxc_int.h | 15 +- av1/common/pred_common.c | 253 -------------------------- av1/common/pred_common.h | 6 - av1/decoder/decodeframe.c | 35 ---- av1/decoder/decodemv.c | 26 +-- av1/decoder/decoder.c | 5 +- av1/decoder/decoder.h | 2 - av1/decoder/dthread.c | 4 +- av1/encoder/bgsprite.c | 2 - av1/encoder/bitstream.c | 78 -------- av1/encoder/bitstream.h | 5 - av1/encoder/encodeframe.c | 45 +---- av1/encoder/encoder.c | 188 ++----------------- av1/encoder/encoder.h | 30 --- av1/encoder/firstpass.c | 216 ++-------------------- av1/encoder/firstpass.h | 12 -- av1/encoder/ratectrl.c | 85 ++------- av1/encoder/ratectrl.h | 13 -- av1/encoder/rd.c | 69 +------ av1/encoder/rd.h | 36 ---- av1/encoder/rdopt.c | 140 +++----------- av1/encoder/speed_features.c | 11 +- av1/encoder/temporal_filter.c | 12 +- build/cmake/aom_config_defaults.cmake | 1 - build/cmake/aom_experiment_deps.cmake | 5 - configure | 4 - examples/inspect.c | 7 +- test/arf_freq_test.cc | 6 - test/superframe_test.cc | 4 - tools/aom_entropy_optimizer.c | 15 -- 39 files changed, 103 insertions(+), 1387 deletions(-) diff --git a/aom/aomcx.h b/aom/aomcx.h index e573f986d1..9b45bd92c5 100644 --- a/aom/aomcx.h +++ b/aom/aomcx.h @@ -412,7 +412,6 @@ enum aome_enc_control_id { /*!\brief Codec control function to enable automatic set and use * bwd-pred frames. * - * Experiment: EXT_REFS */ AOME_SET_ENABLEAUTOBWDREF, diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c index 0f6c1c4d73..63f003555e 100644 --- a/av1/av1_cx_iface.c +++ b/av1/av1_cx_iface.c @@ -28,9 +28,7 @@ struct av1_extracfg { int cpu_used; // available cpu percentage in 1/16 unsigned int enable_auto_alt_ref; -#if CONFIG_EXT_REFS unsigned int enable_auto_bwd_ref; -#endif // CONFIG_EXT_REFS unsigned int noise_sensitivity; unsigned int sharpness; unsigned int static_thresh; @@ -93,14 +91,12 @@ struct av1_extracfg { static struct av1_extracfg default_extra_cfg = { 0, // cpu_used 1, // enable_auto_alt_ref -#if CONFIG_EXT_REFS - 0, // enable_auto_bwd_ref -#endif // CONFIG_EXT_REFS - 0, // noise_sensitivity - 0, // sharpness - 0, // static_thresh - 0, // tile_columns - 0, // tile_rows + 0, // enable_auto_bwd_ref + 0, // noise_sensitivity + 0, // sharpness + 0, // static_thresh + 0, // tile_columns + 0, // tile_rows #if CONFIG_DEPENDENT_HORZTILES 0, // Dependent Horizontal tiles #endif @@ -275,9 +271,7 @@ static aom_codec_err_t validate_config(aom_codec_alg_priv_t *ctx, RANGE_CHECK_HI(extra_cfg, motion_vector_unit_test, 2); RANGE_CHECK_HI(extra_cfg, enable_auto_alt_ref, 2); -#if CONFIG_EXT_REFS RANGE_CHECK_HI(extra_cfg, enable_auto_bwd_ref, 2); -#endif // CONFIG_EXT_REFS RANGE_CHECK(extra_cfg, cpu_used, 0, 8); RANGE_CHECK_HI(extra_cfg, noise_sensitivity, 6); RANGE_CHECK(extra_cfg, superblock_size, AOM_SUPERBLOCK_SIZE_64X64, @@ -561,9 +555,7 @@ static aom_codec_err_t set_encoder_config( oxcf->speed = extra_cfg->cpu_used; oxcf->enable_auto_arf = extra_cfg->enable_auto_alt_ref; -#if CONFIG_EXT_REFS oxcf->enable_auto_brf = extra_cfg->enable_auto_bwd_ref; -#endif // CONFIG_EXT_REFS oxcf->noise_sensitivity = extra_cfg->noise_sensitivity; oxcf->sharpness = extra_cfg->sharpness; @@ -741,14 +733,12 @@ static aom_codec_err_t ctrl_set_enable_auto_alt_ref(aom_codec_alg_priv_t *ctx, return update_extra_cfg(ctx, &extra_cfg); } -#if CONFIG_EXT_REFS static aom_codec_err_t ctrl_set_enable_auto_bwd_ref(aom_codec_alg_priv_t *ctx, va_list args) { struct av1_extracfg extra_cfg = ctx->extra_cfg; extra_cfg.enable_auto_bwd_ref = CAST(AOME_SET_ENABLEAUTOBWDREF, args); return update_extra_cfg(ctx, &extra_cfg); } -#endif // CONFIG_EXT_REFS static aom_codec_err_t ctrl_set_noise_sensitivity(aom_codec_alg_priv_t *ctx, va_list args) { @@ -1163,17 +1153,8 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx, // TODO(jzern) the checks related to cpi's validity should be treated as a // failure condition, encoder setup is done fully in init() currently. if (res == AOM_CODEC_OK) { -#if CONFIG_EXT_REFS size_t data_sz = ALIGN_POWER_OF_TWO(ctx->cfg.g_w, 5) * ALIGN_POWER_OF_TWO(ctx->cfg.g_h, 5) * get_image_bps(img); -#else - // There's no codec control for multiple alt-refs so check the encoder - // instance for its status to determine the compressed data size. - size_t data_sz = ALIGN_POWER_OF_TWO(ctx->cfg.g_w, 5) * - ALIGN_POWER_OF_TWO(ctx->cfg.g_h, 5) * - get_image_bps(img) / 8 * - (cpi->multi_arf_allowed ? 8 : 2); -#endif // CONFIG_EXT_REFS if (data_sz < kMinCompressedSize) data_sz = kMinCompressedSize; if (ctx->cx_data == NULL || ctx->cx_data_sz < data_sz) { ctx->cx_data_sz = data_sz; @@ -1558,9 +1539,7 @@ static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { { AOME_SET_SCALEMODE, ctrl_set_scale_mode }, { AOME_SET_CPUUSED, ctrl_set_cpuused }, { AOME_SET_ENABLEAUTOALTREF, ctrl_set_enable_auto_alt_ref }, -#if CONFIG_EXT_REFS { AOME_SET_ENABLEAUTOBWDREF, ctrl_set_enable_auto_bwd_ref }, -#endif // CONFIG_EXT_REFS { AOME_SET_SHARPNESS, ctrl_set_sharpness }, { AOME_SET_STATIC_THRESHOLD, ctrl_set_static_thresh }, { AV1E_SET_TILE_COLUMNS, ctrl_set_tile_columns }, diff --git a/av1/common/av1_loopfilter.h b/av1/common/av1_loopfilter.h index ee32c368c5..75dda7d3fb 100644 --- a/av1/common/av1_loopfilter.h +++ b/av1/common/av1_loopfilter.h @@ -50,8 +50,8 @@ struct loopfilter { uint8_t mode_ref_delta_enabled; uint8_t mode_ref_delta_update; - // 0 = Intra, Last, Last2+Last3(CONFIG_EXT_REFS), - // GF, BRF(CONFIG_EXT_REFS), ARF2(CONFIG_EXT_REFS), ARF + // 0 = Intra, Last, Last2+Last3, + // GF, BRF, ARF2, ARF int8_t ref_deltas[TOTAL_REFS_PER_FRAME]; int8_t last_ref_deltas[TOTAL_REFS_PER_FRAME]; diff --git a/av1/common/entropy.c b/av1/common/entropy.c index e64e7be25b..b44df9a3c7 100644 --- a/av1/common/entropy.c +++ b/av1/common/entropy.c @@ -2339,11 +2339,9 @@ void av1_average_tile_inter_cdfs(AV1_COMMON *cm, FRAME_CONTEXT *fc, #if CONFIG_NEW_MULTISYMBOL AVERAGE_TILE_CDFS(comp_inter_cdf) -#if CONFIG_EXT_REFS AVERAGE_TILE_CDFS(comp_ref_cdf) AVERAGE_TILE_CDFS(comp_bwdref_cdf) #endif -#endif #if CONFIG_NEW_MULTISYMBOL AVERAGE_TILE_CDFS(single_ref_cdf) diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index ac7fa041c4..0cd7096f0f 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c @@ -1844,7 +1844,6 @@ static const aom_cdf_prob #endif // CONFIG_NEW_MULTISYMBOL #endif // CONFIG_EXT_COMP_REFS -#if CONFIG_EXT_REFS static const aom_prob default_comp_ref_p[REF_CONTEXTS][FWD_REFS - 1] = { { 28, 10, 8 }, { 77, 27, 26 }, @@ -1892,39 +1891,17 @@ static const aom_cdf_prob }; #endif // CONFIG_NEW_MULTISYMBOL -#else // !CONFIG_EXT_REFS - -static const aom_prob default_comp_ref_p[REF_CONTEXTS][COMP_REFS - 1] = { - { 43 }, { 100 }, { 137 }, { 212 }, { 229 }, -}; -#if CONFIG_NEW_MULTISYMBOL -static const aom_cdf_prob - default_comp_ref_cdf[REF_CONTEXTS][COMP_REFS - 1][CDF_SIZE(2)] = { - { { AOM_ICDF(43 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(100 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(137 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(212 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(229 * 128), AOM_ICDF(32768), 0 } } - }; -#endif // CONFIG_NEW_MULTISYMBOL -#endif // CONFIG_EXT_REFS - static const aom_prob default_single_ref_p[REF_CONTEXTS][SINGLE_REFS - 1] = { -#if CONFIG_EXT_REFS { 36, 16, 32, 57, 11, 14 }, { 68, 128, 73, 128, 49, 124 }, { 136, 236, 127, 170, 81, 238 }, { 128, 128, 191, 211, 115, 128 }, { 224, 128, 230, 242, 208, 128 } -#else // !CONFIG_EXT_REFS - { 31, 25 }, { 72, 80 }, { 147, 148 }, { 197, 191 }, { 235, 247 }, -#endif // CONFIG_EXT_REFS }; #if CONFIG_NEW_MULTISYMBOL static const aom_cdf_prob default_single_ref_cdf[REF_CONTEXTS][SINGLE_REFS - 1][CDF_SIZE(2)] = { -#if CONFIG_EXT_REFS { { AOM_ICDF(4623), AOM_ICDF(32768), 0 }, { AOM_ICDF(2110), AOM_ICDF(32768), 0 }, { AOM_ICDF(4132), AOM_ICDF(32768), 0 }, @@ -1955,18 +1932,6 @@ static const aom_cdf_prob { AOM_ICDF(30969), AOM_ICDF(32768), 0 }, { AOM_ICDF(26676), AOM_ICDF(32768), 0 }, { AOM_ICDF(32768), AOM_ICDF(32768), 0 } } -#else // !CONFIG_EXT_REFS - { { AOM_ICDF(31 * 128), AOM_ICDF(32768), 0 }, - { AOM_ICDF(25 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(72 * 128), AOM_ICDF(32768), 0 }, - { AOM_ICDF(80 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(147 * 128), AOM_ICDF(32768), 0 }, - { AOM_ICDF(148 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(197 * 128), AOM_ICDF(32768), 0 }, - { AOM_ICDF(191 * 128), AOM_ICDF(32768), 0 } }, - { { AOM_ICDF(235 * 128), AOM_ICDF(32768), 0 }, - { AOM_ICDF(247 * 128), AOM_ICDF(32768), 0 } } -#endif // CONFIG_EXT_REFS }; #endif // CONFIG_NEW_MULTISYMBOL @@ -6526,12 +6491,10 @@ static void init_mode_probs(FRAME_CONTEXT *fc) { av1_init_txb_probs(fc); #endif // LV_MAP_PROB #endif -#if CONFIG_EXT_REFS av1_copy(fc->comp_bwdref_prob, default_comp_bwdref_p); #if CONFIG_NEW_MULTISYMBOL av1_copy(fc->comp_bwdref_cdf, default_comp_bwdref_cdf); #endif -#endif // CONFIG_EXT_REFS av1_copy(fc->single_ref_prob, default_single_ref_p); #if CONFIG_NEW_MULTISYMBOL av1_copy(fc->single_ref_cdf, default_single_ref_cdf); @@ -6685,7 +6648,6 @@ void av1_adapt_inter_frame_probs(AV1_COMMON *cm) { pre_fc->uni_comp_ref_prob[i][j], counts->uni_comp_ref[i][j]); #endif // CONFIG_EXT_COMP_REFS -#if CONFIG_EXT_REFS for (i = 0; i < REF_CONTEXTS; i++) for (j = 0; j < (FWD_REFS - 1); j++) fc->comp_ref_prob[i][j] = mode_mv_merge_probs(pre_fc->comp_ref_prob[i][j], @@ -6694,12 +6656,6 @@ void av1_adapt_inter_frame_probs(AV1_COMMON *cm) { for (j = 0; j < (BWD_REFS - 1); j++) fc->comp_bwdref_prob[i][j] = mode_mv_merge_probs( pre_fc->comp_bwdref_prob[i][j], counts->comp_bwdref[i][j]); -#else - for (i = 0; i < REF_CONTEXTS; i++) - for (j = 0; j < (COMP_REFS - 1); j++) - fc->comp_ref_prob[i][j] = mode_mv_merge_probs(pre_fc->comp_ref_prob[i][j], - counts->comp_ref[i][j]); -#endif // CONFIG_EXT_REFS for (i = 0; i < REF_CONTEXTS; i++) for (j = 0; j < (SINGLE_REFS - 1); j++) @@ -6920,15 +6876,11 @@ static void set_default_lf_deltas(struct loopfilter *lf) { lf->ref_deltas[INTRA_FRAME] = 1; lf->ref_deltas[LAST_FRAME] = 0; -#if CONFIG_EXT_REFS lf->ref_deltas[LAST2_FRAME] = lf->ref_deltas[LAST_FRAME]; lf->ref_deltas[LAST3_FRAME] = lf->ref_deltas[LAST_FRAME]; lf->ref_deltas[BWDREF_FRAME] = lf->ref_deltas[LAST_FRAME]; -#endif // CONFIG_EXT_REFS lf->ref_deltas[GOLDEN_FRAME] = -1; -#if CONFIG_EXT_REFS lf->ref_deltas[ALTREF2_FRAME] = -1; -#endif // CONFIG_EXT_REFS lf->ref_deltas[ALTREF_FRAME] = -1; lf->mode_deltas[0] = 0; diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index 8a5730fe4a..ae23384bf6 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h @@ -294,19 +294,11 @@ typedef struct frame_contexts { #endif // CONFIG_NEW_MULTISYMBOL #endif // CONFIG_EXT_COMP_REFS aom_prob single_ref_prob[REF_CONTEXTS][SINGLE_REFS - 1]; -#if CONFIG_EXT_REFS aom_prob comp_ref_prob[REF_CONTEXTS][FWD_REFS - 1]; aom_prob comp_bwdref_prob[REF_CONTEXTS][BWD_REFS - 1]; -#else - aom_prob comp_ref_prob[REF_CONTEXTS][COMP_REFS - 1]; -#endif // CONFIG_EXT_REFS #if CONFIG_NEW_MULTISYMBOL -#if CONFIG_EXT_REFS aom_cdf_prob comp_ref_cdf[REF_CONTEXTS][FWD_REFS - 1][CDF_SIZE(2)]; aom_cdf_prob comp_bwdref_cdf[REF_CONTEXTS][BWD_REFS - 1][CDF_SIZE(2)]; -#else - aom_cdf_prob comp_ref_cdf[REF_CONTEXTS][COMP_REFS - 1][CDF_SIZE(2)]; -#endif // CONFIG_EXT_REFS #endif #if CONFIG_COMPOUND_SINGLEREF aom_prob comp_inter_mode_prob[COMP_INTER_MODE_CONTEXTS]; @@ -505,12 +497,8 @@ typedef struct FRAME_COUNTS { unsigned int uni_comp_ref[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1][2]; #endif // CONFIG_EXT_COMP_REFS unsigned int single_ref[REF_CONTEXTS][SINGLE_REFS - 1][2]; -#if CONFIG_EXT_REFS unsigned int comp_ref[REF_CONTEXTS][FWD_REFS - 1][2]; unsigned int comp_bwdref[REF_CONTEXTS][BWD_REFS - 1][2]; -#else - unsigned int comp_ref[REF_CONTEXTS][COMP_REFS - 1][2]; -#endif // CONFIG_EXT_REFS #if CONFIG_COMPOUND_SINGLEREF unsigned int comp_inter_mode[COMP_INTER_MODE_CONTEXTS][2]; #endif // CONFIG_COMPOUND_SINGLEREF diff --git a/av1/common/enums.h b/av1/common/enums.h index 6f3fdd2fe0..b04b21e046 100644 --- a/av1/common/enums.h +++ b/av1/common/enums.h @@ -389,7 +389,6 @@ typedef enum { typedef enum { AOM_LAST_FLAG = 1 << 0, -#if CONFIG_EXT_REFS AOM_LAST2_FLAG = 1 << 1, AOM_LAST3_FLAG = 1 << 2, AOM_GOLD_FLAG = 1 << 3, @@ -397,11 +396,6 @@ typedef enum { AOM_ALT2_FLAG = 1 << 5, AOM_ALT_FLAG = 1 << 6, AOM_REFFRAME_ALL = (1 << 7) - 1 -#else // !CONFIG_EXT_REFS - AOM_GOLD_FLAG = 1 << 1, - AOM_ALT_FLAG = 1 << 2, - AOM_REFFRAME_ALL = (1 << 3) - 1 -#endif // CONFIG_EXT_REFS } AOM_REFFRAME; #if CONFIG_EXT_COMP_REFS @@ -686,7 +680,6 @@ typedef uint8_t TXFM_CONTEXT; #define INTRA_FRAME 0 #define LAST_FRAME 1 -#if CONFIG_EXT_REFS #define LAST2_FRAME 2 #define LAST3_FRAME 3 #define GOLDEN_FRAME 4 @@ -694,23 +687,14 @@ typedef uint8_t TXFM_CONTEXT; #define ALTREF2_FRAME 6 #define ALTREF_FRAME 7 #define LAST_REF_FRAMES (LAST3_FRAME - LAST_FRAME + 1) -#else // !CONFIG_EXT_REFS -#define GOLDEN_FRAME 2 -#define ALTREF_FRAME 3 -#endif // CONFIG_EXT_REFS #define INTER_REFS_PER_FRAME (ALTREF_FRAME - LAST_FRAME + 1) #define TOTAL_REFS_PER_FRAME (ALTREF_FRAME - INTRA_FRAME + 1) #define FWD_REFS (GOLDEN_FRAME - LAST_FRAME + 1) #define FWD_RF_OFFSET(ref) (ref - LAST_FRAME) -#if CONFIG_EXT_REFS #define BWD_REFS (ALTREF_FRAME - BWDREF_FRAME + 1) #define BWD_RF_OFFSET(ref) (ref - BWDREF_FRAME) -#else -#define BWD_REFS 1 -#define BWD_RF_OFFSET(ref) (ref - ALTREF_FRAME) -#endif // CONFIG_EXT_REFS #define SINGLE_REFS (FWD_REFS + BWD_REFS) #if CONFIG_EXT_COMP_REFS diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c index 354c3b6dcc..8c65d392d2 100644 --- a/av1/common/mvref_common.c +++ b/av1/common/mvref_common.c @@ -1534,12 +1534,10 @@ void av1_setup_frame_buf_refs(AV1_COMMON *cm) { int lst_buf_idx = cm->frame_refs[LAST_FRAME - LAST_FRAME].idx; int gld_buf_idx = cm->frame_refs[GOLDEN_FRAME - LAST_FRAME].idx; -#if CONFIG_EXT_REFS int lst2_buf_idx = cm->frame_refs[LAST2_FRAME - LAST_FRAME].idx; int lst3_buf_idx = cm->frame_refs[LAST3_FRAME - LAST_FRAME].idx; int bwd_buf_idx = cm->frame_refs[BWDREF_FRAME - LAST_FRAME].idx; int alt2_buf_idx = cm->frame_refs[ALTREF2_FRAME - LAST_FRAME].idx; -#endif if (alt_buf_idx >= 0) cm->cur_frame->alt_frame_offset = @@ -1553,7 +1551,6 @@ void av1_setup_frame_buf_refs(AV1_COMMON *cm) { cm->cur_frame->gld_frame_offset = cm->buffer_pool->frame_bufs[gld_buf_idx].cur_frame_offset; -#if CONFIG_EXT_REFS if (lst2_buf_idx >= 0) cm->cur_frame->lst2_frame_offset = cm->buffer_pool->frame_bufs[lst2_buf_idx].cur_frame_offset; @@ -1569,7 +1566,6 @@ void av1_setup_frame_buf_refs(AV1_COMMON *cm) { if (alt2_buf_idx >= 0) cm->cur_frame->alt2_frame_offset = cm->buffer_pool->frame_bufs[alt2_buf_idx].cur_frame_offset; -#endif } #if CONFIG_FRAME_SIGN_BIAS @@ -1643,10 +1639,8 @@ static uint32_t mv_sign_reverse(int_mv ref) { void av1_setup_motion_field(AV1_COMMON *cm) { int cur_frame_index = cm->cur_frame->cur_frame_offset; int lst_frame_index = 0, alt_frame_index = 0, gld_frame_index = 0; -#if CONFIG_EXT_REFS int lst2_frame_index = 0, lst3_frame_index = 0; int bwd_frame_index = 0, alt2_frame_index = 0; -#endif TPL_MV_REF *tpl_mvs_base = cm->tpl_mvs; for (int ref_frame = 0; ref_frame < INTER_REFS_PER_FRAME; ++ref_frame) { @@ -1660,12 +1654,10 @@ void av1_setup_motion_field(AV1_COMMON *cm) { int alt_buf_idx = cm->frame_refs[ALTREF_FRAME - LAST_FRAME].idx; int lst_buf_idx = cm->frame_refs[LAST_FRAME - LAST_FRAME].idx; int gld_buf_idx = cm->frame_refs[GOLDEN_FRAME - LAST_FRAME].idx; -#if CONFIG_EXT_REFS int lst2_buf_idx = cm->frame_refs[LAST2_FRAME - LAST_FRAME].idx; int lst3_buf_idx = cm->frame_refs[LAST3_FRAME - LAST_FRAME].idx; int bwd_buf_idx = cm->frame_refs[BWDREF_FRAME - LAST_FRAME].idx; int alt2_buf_idx = cm->frame_refs[ALTREF2_FRAME - LAST_FRAME].idx; -#endif if (alt_buf_idx >= 0) alt_frame_index = cm->buffer_pool->frame_bufs[alt_buf_idx].cur_frame_offset; @@ -1676,7 +1668,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { if (gld_buf_idx >= 0) gld_frame_index = cm->buffer_pool->frame_bufs[gld_buf_idx].cur_frame_offset; -#if CONFIG_EXT_REFS if (lst2_buf_idx >= 0) lst2_frame_index = cm->buffer_pool->frame_bufs[lst2_buf_idx].cur_frame_offset; @@ -1691,7 +1682,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { if (alt2_buf_idx >= 0) alt2_frame_index = cm->buffer_pool->frame_bufs[alt2_buf_idx].cur_frame_offset; -#endif if (alt_frame_index < cur_frame_index) return; @@ -1706,7 +1696,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { cm->buffer_pool->frame_bufs[lst_buf_idx].alt_frame_offset; const int gld_frame_idx = cm->buffer_pool->frame_bufs[lst_buf_idx].gld_frame_offset; -#if CONFIG_EXT_REFS const int lst2_frame_idx = cm->buffer_pool->frame_bufs[lst_buf_idx].lst2_frame_offset; const int lst3_frame_idx = @@ -1715,7 +1704,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { cm->buffer_pool->frame_bufs[lst_buf_idx].bwd_frame_offset; const int alt2_frame_idx = cm->buffer_pool->frame_bufs[lst_buf_idx].alt2_frame_offset; -#endif int alt_offset = AOMMAX(1, alt_frame_idx - lst_frame_index); int lst_offset = AOMMAX(1, lst_frame_index - lst_frame_idx); @@ -1724,7 +1712,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { int cur_to_alt = alt_frame_index - cur_frame_index; int cur_to_gld = cur_frame_index - gld_frame_index; -#if CONFIG_EXT_REFS int bwd_offset = AOMMAX(1, bwd_frame_idx - lst_frame_index); int alt2_offset = AOMMAX(1, alt2_frame_idx - lst_frame_index); int lst2_offset = AOMMAX(1, lst_frame_index - lst2_frame_idx); @@ -1733,17 +1720,12 @@ void av1_setup_motion_field(AV1_COMMON *cm) { int cur_to_lst3 = cur_frame_index - lst3_frame_index; int cur_to_bwd = bwd_frame_index - cur_frame_index; int cur_to_alt2 = alt2_frame_index - cur_frame_index; -#endif const int is_lst_overlay = (alt_frame_idx == gld_frame_index); // clang-format off const int ref_frame_offset_buffer[TOTAL_REFS_PER_FRAME] = { -#if CONFIG_EXT_REFS 0, lst_offset, lst2_offset, lst3_offset, gld_offset, bwd_offset, alt2_offset, alt_offset -#else - 0, lst_offset, gld_offset, alt_offset -#endif }; // clang-format on @@ -1774,7 +1756,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(LAST_FRAME)][0].as_int = this_mv.as_int; -#if CONFIG_EXT_REFS get_mv_projection(&this_mv.as_mv, fwd_mv, cur_to_lst2, ref_frame_offset); tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(LAST2_FRAME)][0].as_int = @@ -1784,7 +1765,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { ref_frame_offset); tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(LAST3_FRAME)][0].as_int = this_mv.as_int; -#endif get_mv_projection(&this_mv.as_mv, fwd_mv, cur_to_gld, ref_frame_offset); tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(GOLDEN_FRAME)] @@ -1813,7 +1793,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(ALTREF_FRAME)] [0].as_int = this_mv.as_int; -#if CONFIG_EXT_REFS get_mv_projection(&this_mv.as_mv, fwd_mv, cur_to_bwd, ref_frame_offset); tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(BWDREF_FRAME)] @@ -1822,7 +1801,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { ref_frame_offset); tpl_mvs_base[mi_offset].mfmv[FWD_RF_OFFSET(ALTREF2_FRAME)] [0].as_int = this_mv.as_int; -#endif } } } @@ -1838,7 +1816,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { cm->buffer_pool->frame_bufs[alt_buf_idx].lst_frame_offset; const int gld_frame_idx = cm->buffer_pool->frame_bufs[alt_buf_idx].gld_frame_offset; -#if CONFIG_EXT_REFS const int lst2_frame_idx = cm->buffer_pool->frame_bufs[alt_buf_idx].lst2_frame_offset; const int lst3_frame_idx = @@ -1847,14 +1824,12 @@ void av1_setup_motion_field(AV1_COMMON *cm) { cm->buffer_pool->frame_bufs[alt_buf_idx].bwd_frame_offset; const int alt2_frame_idx = cm->buffer_pool->frame_bufs[alt_buf_idx].alt2_frame_offset; -#endif int lst_offset = AOMMAX(1, alt_frame_index - lst_frame_idx); int gld_offset = AOMMAX(1, alt_frame_index - gld_frame_idx); int cur_to_alt = alt_frame_index - cur_frame_index; int cur_to_lst = cur_frame_index - lst_frame_index; int cur_to_gld = cur_frame_index - gld_frame_index; -#if CONFIG_EXT_REFS int bwd_offset = AOMMAX(1, alt_frame_index - bwd_frame_idx); int alt2_offset = AOMMAX(1, alt_frame_index - alt2_frame_idx); int lst2_offset = AOMMAX(1, alt_frame_index - lst2_frame_idx); @@ -1863,16 +1838,11 @@ void av1_setup_motion_field(AV1_COMMON *cm) { int cur_to_lst3 = cur_frame_index - lst3_frame_index; int cur_to_bwd = bwd_frame_index - cur_frame_index; int cur_to_alt2 = alt2_frame_index - cur_frame_index; -#endif const int ref_stamp = FWD_RF_OFFSET(ALTREF_FRAME); // clang-format off const int ref_frame_offset_buffer[TOTAL_REFS_PER_FRAME] = { -#if CONFIG_EXT_REFS 0, lst_offset, lst2_offset, lst3_offset, gld_offset, bwd_offset, alt2_offset, 0, -#else - 0, lst_offset, gld_offset, 0, -#endif }; // clang-format on const int mvs_rows = (cm->mi_rows + 1) >> 1; @@ -1908,7 +1878,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { .mfmv[FWD_RF_OFFSET(LAST_FRAME)][ref_stamp] .as_int = this_mv.as_int; -#if CONFIG_EXT_REFS get_mv_projection(&this_mv.as_mv, fwd_mv, cur_to_bwd, ref_frame_offset); tpl_mvs_base[mi_offset] @@ -1936,7 +1905,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { .mfmv[FWD_RF_OFFSET(LAST3_FRAME)][ref_stamp] .as_int = this_mv.as_int; } -#endif if (ref_frame[0] >= GOLDEN_FRAME) { get_mv_projection(&this_mv.as_mv, fwd_mv, cur_to_gld, ref_frame_offset); @@ -1950,10 +1918,9 @@ void av1_setup_motion_field(AV1_COMMON *cm) { } } -// ========================================== -// Process BWD reference frame -// ========================================== -#if CONFIG_EXT_REFS + // ========================================== + // Process BWD reference frame + // ========================================== if (bwd_buf_idx >= 0) { MV_REF *mv_ref_base = cm->buffer_pool->frame_bufs[bwd_buf_idx].mvs; const int lst_frame_idx = @@ -2053,7 +2020,6 @@ void av1_setup_motion_field(AV1_COMMON *cm) { } } } -#endif } #endif // CONFIG_MFMV diff --git a/av1/common/mvref_common.h b/av1/common/mvref_common.h index 6b964dc295..c5c2a2b19e 100644 --- a/av1/common/mvref_common.h +++ b/av1/common/mvref_common.h @@ -309,7 +309,6 @@ static INLINE int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) { // clang-format off static MV_REFERENCE_FRAME ref_frame_map[COMP_REFS][2] = { -#if CONFIG_EXT_REFS { LAST_FRAME, BWDREF_FRAME }, { LAST2_FRAME, BWDREF_FRAME }, { LAST3_FRAME, BWDREF_FRAME }, { GOLDEN_FRAME, BWDREF_FRAME }, @@ -326,9 +325,6 @@ static MV_REFERENCE_FRAME ref_frame_map[COMP_REFS][2] = { // TODO(zoeliu): When ALTREF2 is enabled, we may add: // {BWDREF_FRAME, ALTREF2_FRAME} #endif // CONFIG_EXT_COMP_REFS -#else // !CONFIG_EXT_REFS - { LAST_FRAME, ALTREF_FRAME }, { GOLDEN_FRAME, ALTREF_FRAME } -#endif // CONFIG_EXT_REFS }; // clang-format on diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h index 614f0d4334..98b66e3c2b 100644 --- a/av1/common/onyxc_int.h +++ b/av1/common/onyxc_int.h @@ -72,11 +72,7 @@ extern "C" { #define FRAME_CONTEXT_DEFAULTS (FRAME_CONTEXTS - 1) #else -#if CONFIG_EXT_REFS #define FRAME_CONTEXTS_LOG2 3 -#else -#define FRAME_CONTEXTS_LOG2 2 -#endif #define FRAME_CONTEXTS (1 << FRAME_CONTEXTS_LOG2) #endif // CONFIG_NO_FRAME_CONTEXT_SIGNALING @@ -133,12 +129,10 @@ typedef struct { int lst_frame_offset; int alt_frame_offset; int gld_frame_offset; -#if CONFIG_EXT_REFS int lst2_frame_offset; int lst3_frame_offset; int bwd_frame_offset; int alt2_frame_offset; -#endif #endif // CONFIG_FRAME_MARKER MV_REF *mvs; @@ -262,10 +256,8 @@ typedef struct AV1Common { int show_frame; int last_show_frame; int show_existing_frame; -#if CONFIG_EXT_REFS // Flag for a frame used as a reference - not written to the bitstream int is_reference_frame; -#endif // CONFIG_EXT_REFS // Flag signaling that the frame is encoded using only INTRA modes. uint8_t intra_only; @@ -393,14 +385,9 @@ typedef struct AV1Common { int reduced_tx_set_used; #endif // CONFIG_EXT_TX -// Context probabilities for reference frame prediction -#if CONFIG_EXT_REFS + // Context probabilities for reference frame prediction MV_REFERENCE_FRAME comp_fwd_ref[FWD_REFS]; MV_REFERENCE_FRAME comp_bwd_ref[BWD_REFS]; -#else - MV_REFERENCE_FRAME comp_fixed_ref; - MV_REFERENCE_FRAME comp_var_ref[COMP_REFS]; -#endif // CONFIG_EXT_REFS REFERENCE_MODE reference_mode; FRAME_CONTEXT *fc; /* this frame entropy */ diff --git a/av1/common/pred_common.c b/av1/common/pred_common.c index 8e045a53c4..6ac927ab90 100644 --- a/av1/common/pred_common.c +++ b/av1/common/pred_common.c @@ -208,13 +208,9 @@ int av1_get_inter_mode_context(const MACROBLOCKD *xd) { } #endif // CONFIG_COMPOUND_SINGLEREF -#if CONFIG_EXT_REFS #define CHECK_BACKWARD_REFS(ref_frame) \ (((ref_frame) >= BWDREF_FRAME) && ((ref_frame) <= ALTREF_FRAME)) #define IS_BACKWARD_REF_FRAME(ref_frame) CHECK_BACKWARD_REFS(ref_frame) -#else -#define IS_BACKWARD_REF_FRAME(ref_frame) ((ref_frame) == cm->comp_fixed_ref) -#endif // CONFIG_EXT_REFS #define CHECK_GOLDEN_OR_LAST3(ref_frame) \ (((ref_frame) == GOLDEN_FRAME) || ((ref_frame) == LAST3_FRAME)) @@ -227,9 +223,7 @@ int av1_get_reference_mode_context(const AV1_COMMON *cm, const int has_above = xd->up_available; const int has_left = xd->left_available; -#if CONFIG_EXT_REFS (void)cm; -#endif // CONFIG_EXT_REFS // Note: // The mode info data structure has a one element border above and to the @@ -505,8 +499,6 @@ int av1_get_pred_context_uni_comp_ref_p2(const MACROBLOCKD *xd) { } #endif // CONFIG_EXT_COMP_REFS -#if CONFIG_EXT_REFS - // TODO(zoeliu): Future work will be conducted to optimize the context design // for the coding of the reference frames. @@ -937,95 +929,6 @@ int av1_get_pred_context_comp_bwdref_p1(const AV1_COMMON *cm, return av1_get_pred_context_brf_or_arf2(xd); } -#else // !CONFIG_EXT_REFS - -// Returns a context number for the given MB prediction signal -int av1_get_pred_context_comp_ref_p(const AV1_COMMON *cm, - const MACROBLOCKD *xd) { - int pred_context; - const MB_MODE_INFO *const above_mbmi = xd->above_mbmi; - const MB_MODE_INFO *const left_mbmi = xd->left_mbmi; - const int above_in_image = xd->up_available; - const int left_in_image = xd->left_available; - - // Note: - // The mode info data structure has a one element border above and to the - // left of the entries corresponding to real macroblocks. - // The prediction flags in these dummy entries are initialized to 0. - const int fix_ref_idx = cm->ref_frame_sign_bias[cm->comp_fixed_ref]; - const int var_ref_idx = !fix_ref_idx; - - if (above_in_image && left_in_image) { // both edges available - const int above_intra = !is_inter_block(above_mbmi); - const int left_intra = !is_inter_block(left_mbmi); - - if (above_intra && left_intra) { // intra/intra (2) - pred_context = 2; - } else if (above_intra || left_intra) { // intra/inter - const MB_MODE_INFO *edge_mbmi = above_intra ? left_mbmi : above_mbmi; - - if (!has_second_ref(edge_mbmi)) // single pred (1/3) - pred_context = 1 + 2 * (edge_mbmi->ref_frame[0] != cm->comp_var_ref[1]); - else // comp pred (1/3) - pred_context = - 1 + 2 * (edge_mbmi->ref_frame[var_ref_idx] != cm->comp_var_ref[1]); - } else { // inter/inter - const int l_sg = !has_second_ref(left_mbmi); - const int a_sg = !has_second_ref(above_mbmi); - const MV_REFERENCE_FRAME vrfa = - a_sg ? above_mbmi->ref_frame[0] : above_mbmi->ref_frame[var_ref_idx]; - const MV_REFERENCE_FRAME vrfl = - l_sg ? left_mbmi->ref_frame[0] : left_mbmi->ref_frame[var_ref_idx]; - - if (vrfa == vrfl && cm->comp_var_ref[1] == vrfa) { - pred_context = 0; - } else if (l_sg && a_sg) { // single/single - if ((vrfa == cm->comp_fixed_ref && vrfl == cm->comp_var_ref[0]) || - (vrfl == cm->comp_fixed_ref && vrfa == cm->comp_var_ref[0])) - pred_context = 4; - else if (vrfa == vrfl) - pred_context = 3; - else - pred_context = 1; - } else if (l_sg || a_sg) { // single/comp - const MV_REFERENCE_FRAME vrfc = l_sg ? vrfa : vrfl; - const MV_REFERENCE_FRAME rfs = a_sg ? vrfa : vrfl; - if (vrfc == cm->comp_var_ref[1] && rfs != cm->comp_var_ref[1]) - pred_context = 1; - else if (rfs == cm->comp_var_ref[1] && vrfc != cm->comp_var_ref[1]) - pred_context = 2; - else - pred_context = 4; - } else if (vrfa == vrfl) { // comp/comp - pred_context = 4; - } else { - pred_context = 2; - } - } - } else if (above_in_image || left_in_image) { // one edge available - const MB_MODE_INFO *edge_mbmi = above_in_image ? above_mbmi : left_mbmi; - - if (!is_inter_block(edge_mbmi)) { - pred_context = 2; - } else { - if (has_second_ref(edge_mbmi)) - pred_context = - 4 * (edge_mbmi->ref_frame[var_ref_idx] != cm->comp_var_ref[1]); - else - pred_context = 3 * (edge_mbmi->ref_frame[0] != cm->comp_var_ref[1]); - } - } else { // no edges available (2) - pred_context = 2; - } - assert(pred_context >= 0 && pred_context < REF_CONTEXTS); - - return pred_context; -} - -#endif // CONFIG_EXT_REFS - -#if CONFIG_EXT_REFS - // For the bit to signal whether the single reference is a forward reference // frame or a backward reference frame. int av1_get_pred_context_single_ref_p1(const MACROBLOCKD *xd) { @@ -1378,159 +1281,3 @@ int av1_get_pred_context_single_ref_p5(const MACROBLOCKD *xd) { int av1_get_pred_context_single_ref_p6(const MACROBLOCKD *xd) { return av1_get_pred_context_brf_or_arf2(xd); } - -#else // !CONFIG_EXT_REFS - -int av1_get_pred_context_single_ref_p1(const MACROBLOCKD *xd) { - int pred_context; - const MB_MODE_INFO *const above_mbmi = xd->above_mbmi; - const MB_MODE_INFO *const left_mbmi = xd->left_mbmi; - const int has_above = xd->up_available; - const int has_left = xd->left_available; - // Note: - // The mode info data structure has a one element border above and to the - // left of the entries corresponding to real macroblocks. - // The prediction flags in these dummy entries are initialized to 0. - if (has_above && has_left) { // both edges available - const int above_intra = !is_inter_block(above_mbmi); - const int left_intra = !is_inter_block(left_mbmi); - - if (above_intra && left_intra) { // intra/intra - pred_context = 2; - } else if (above_intra || left_intra) { // intra/inter or inter/intra - const MB_MODE_INFO *edge_mbmi = above_intra ? left_mbmi : above_mbmi; - if (!has_second_ref(edge_mbmi)) - pred_context = 4 * (edge_mbmi->ref_frame[0] == LAST_FRAME); - else - pred_context = 1 + (edge_mbmi->ref_frame[0] == LAST_FRAME || - edge_mbmi->ref_frame[1] == LAST_FRAME); - } else { // inter/inter - const int above_has_second = has_second_ref(above_mbmi); - const int left_has_second = has_second_ref(left_mbmi); - const MV_REFERENCE_FRAME above0 = above_mbmi->ref_frame[0]; - const MV_REFERENCE_FRAME above1 = above_mbmi->ref_frame[1]; - const MV_REFERENCE_FRAME left0 = left_mbmi->ref_frame[0]; - const MV_REFERENCE_FRAME left1 = left_mbmi->ref_frame[1]; - - if (above_has_second && left_has_second) { - pred_context = 1 + (above0 == LAST_FRAME || above1 == LAST_FRAME || - left0 == LAST_FRAME || left1 == LAST_FRAME); - } else if (above_has_second || left_has_second) { - const MV_REFERENCE_FRAME rfs = !above_has_second ? above0 : left0; - const MV_REFERENCE_FRAME crf1 = above_has_second ? above0 : left0; - const MV_REFERENCE_FRAME crf2 = above_has_second ? above1 : left1; - - if (rfs == LAST_FRAME) - pred_context = 3 + (crf1 == LAST_FRAME || crf2 == LAST_FRAME); - else - pred_context = (crf1 == LAST_FRAME || crf2 == LAST_FRAME); - } else { - pred_context = 2 * (above0 == LAST_FRAME) + 2 * (left0 == LAST_FRAME); - } - } - } else if (has_above || has_left) { // one edge available - const MB_MODE_INFO *edge_mbmi = has_above ? above_mbmi : left_mbmi; - if (!is_inter_block(edge_mbmi)) { // intra - pred_context = 2; - } else { // inter - if (!has_second_ref(edge_mbmi)) - pred_context = 4 * (edge_mbmi->ref_frame[0] == LAST_FRAME); - else - pred_context = 1 + (edge_mbmi->ref_frame[0] == LAST_FRAME || - edge_mbmi->ref_frame[1] == LAST_FRAME); - } - } else { // no edges available - pred_context = 2; - } - - assert(pred_context >= 0 && pred_context < REF_CONTEXTS); - return pred_context; -} - -int av1_get_pred_context_single_ref_p2(const MACROBLOCKD *xd) { - int pred_context; - const MB_MODE_INFO *const above_mbmi = xd->above_mbmi; - const MB_MODE_INFO *const left_mbmi = xd->left_mbmi; - const int has_above = xd->up_available; - const int has_left = xd->left_available; - - // Note: - // The mode info data structure has a one element border above and to the - // left of the entries corresponding to real macroblocks. - // The prediction flags in these dummy entries are initialized to 0. - if (has_above && has_left) { // both edges available - const int above_intra = !is_inter_block(above_mbmi); - const int left_intra = !is_inter_block(left_mbmi); - - if (above_intra && left_intra) { // intra/intra - pred_context = 2; - } else if (above_intra || left_intra) { // intra/inter or inter/intra - const MB_MODE_INFO *edge_mbmi = above_intra ? left_mbmi : above_mbmi; - if (!has_second_ref(edge_mbmi)) { - if (edge_mbmi->ref_frame[0] == LAST_FRAME) - pred_context = 3; - else - pred_context = 4 * (edge_mbmi->ref_frame[0] == GOLDEN_FRAME); - } else { - pred_context = 1 + - 2 * (edge_mbmi->ref_frame[0] == GOLDEN_FRAME || - edge_mbmi->ref_frame[1] == GOLDEN_FRAME); - } - } else { // inter/inter - const int above_has_second = has_second_ref(above_mbmi); - const int left_has_second = has_second_ref(left_mbmi); - const MV_REFERENCE_FRAME above0 = above_mbmi->ref_frame[0]; - const MV_REFERENCE_FRAME above1 = above_mbmi->ref_frame[1]; - const MV_REFERENCE_FRAME left0 = left_mbmi->ref_frame[0]; - const MV_REFERENCE_FRAME left1 = left_mbmi->ref_frame[1]; - - if (above_has_second && left_has_second) { - if (above0 == left0 && above1 == left1) - pred_context = - 3 * (above0 == GOLDEN_FRAME || above1 == GOLDEN_FRAME || - left0 == GOLDEN_FRAME || left1 == GOLDEN_FRAME); - else - pred_context = 2; - } else if (above_has_second || left_has_second) { - const MV_REFERENCE_FRAME rfs = !above_has_second ? above0 : left0; - const MV_REFERENCE_FRAME crf1 = above_has_second ? above0 : left0; - const MV_REFERENCE_FRAME crf2 = above_has_second ? above1 : left1; - - if (rfs == GOLDEN_FRAME) - pred_context = 3 + (crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME); - else if (rfs != GOLDEN_FRAME && rfs != LAST_FRAME) - pred_context = crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME; - else - pred_context = 1 + 2 * (crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME); - } else { - if (above0 == LAST_FRAME && left0 == LAST_FRAME) { - pred_context = 3; - } else if (above0 == LAST_FRAME || left0 == LAST_FRAME) { - const MV_REFERENCE_FRAME edge0 = - (above0 == LAST_FRAME) ? left0 : above0; - pred_context = 4 * (edge0 == GOLDEN_FRAME); - } else { - pred_context = - 2 * (above0 == GOLDEN_FRAME) + 2 * (left0 == GOLDEN_FRAME); - } - } - } - } else if (has_above || has_left) { // one edge available - const MB_MODE_INFO *edge_mbmi = has_above ? above_mbmi : left_mbmi; - - if (!is_inter_block(edge_mbmi) || - (edge_mbmi->ref_frame[0] == LAST_FRAME && !has_second_ref(edge_mbmi))) - pred_context = 2; - else if (!has_second_ref(edge_mbmi)) - pred_context = 4 * (edge_mbmi->ref_frame[0] == GOLDEN_FRAME); - else - pred_context = 3 * (edge_mbmi->ref_frame[0] == GOLDEN_FRAME || - edge_mbmi->ref_frame[1] == GOLDEN_FRAME); - } else { // no edges available (2) - pred_context = 2; - } - assert(pred_context >= 0 && pred_context < REF_CONTEXTS); - return pred_context; -} - -#endif // CONFIG_EXT_REFS diff --git a/av1/common/pred_common.h b/av1/common/pred_common.h index 8a2d1fb9b9..6a46b07e22 100644 --- a/av1/common/pred_common.h +++ b/av1/common/pred_common.h @@ -185,7 +185,6 @@ static INLINE aom_prob av1_get_pred_prob_comp_ref_p(const AV1_COMMON *cm, return cm->fc->comp_ref_prob[pred_context][0]; } -#if CONFIG_EXT_REFS int av1_get_pred_context_comp_ref_p1(const AV1_COMMON *cm, const MACROBLOCKD *xd); @@ -253,7 +252,6 @@ static INLINE aom_prob av1_get_pred_prob_comp_bwdref_p1(const AV1_COMMON *cm, const int pred_context = av1_get_pred_context_comp_bwdref_p1(cm, xd); return cm->fc->comp_bwdref_prob[pred_context][1]; } -#endif // CONFIG_EXT_REFS int av1_get_pred_context_single_ref_p1(const MACROBLOCKD *xd); @@ -269,7 +267,6 @@ static INLINE aom_prob av1_get_pred_prob_single_ref_p2(const AV1_COMMON *cm, return cm->fc->single_ref_prob[av1_get_pred_context_single_ref_p2(xd)][1]; } -#if CONFIG_EXT_REFS int av1_get_pred_context_single_ref_p3(const MACROBLOCKD *xd); static INLINE aom_prob av1_get_pred_prob_single_ref_p3(const AV1_COMMON *cm, @@ -297,7 +294,6 @@ static INLINE aom_prob av1_get_pred_prob_single_ref_p6(const AV1_COMMON *cm, const MACROBLOCKD *xd) { return cm->fc->single_ref_prob[av1_get_pred_context_single_ref_p6(xd)][5]; } -#endif // CONFIG_EXT_REFS #if CONFIG_NEW_MULTISYMBOL static INLINE aom_cdf_prob *av1_get_pred_cdf_single_ref_p1( @@ -312,7 +308,6 @@ static INLINE aom_cdf_prob *av1_get_pred_cdf_single_ref_p2( return xd->tile_ctx ->single_ref_cdf[av1_get_pred_context_single_ref_p2(xd)][1]; } -#if CONFIG_EXT_REFS static INLINE aom_cdf_prob *av1_get_pred_cdf_single_ref_p3( const AV1_COMMON *cm, const MACROBLOCKD *xd) { (void)cm; @@ -337,7 +332,6 @@ static INLINE aom_cdf_prob *av1_get_pred_cdf_single_ref_p6( return xd->tile_ctx ->single_ref_cdf[av1_get_pred_context_single_ref_p6(xd)][5]; } -#endif // CONFIG_EXT_REFS #endif // CONFIG_NEW_MULTISYMBOL #if CONFIG_COMPOUND_SINGLEREF diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index 002f4ef4ef..f3a5126879 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c @@ -120,7 +120,6 @@ static int is_compound_reference_allowed(const AV1_COMMON *cm) { } static void setup_compound_reference_mode(AV1_COMMON *cm) { -#if CONFIG_EXT_REFS cm->comp_fwd_ref[0] = LAST_FRAME; cm->comp_fwd_ref[1] = LAST2_FRAME; cm->comp_fwd_ref[2] = LAST3_FRAME; @@ -129,23 +128,6 @@ static void setup_compound_reference_mode(AV1_COMMON *cm) { cm->comp_bwd_ref[0] = BWDREF_FRAME; cm->comp_bwd_ref[1] = ALTREF2_FRAME; cm->comp_bwd_ref[2] = ALTREF_FRAME; -#else // !CONFIG_EXT_REFS - if (cm->ref_frame_sign_bias[LAST_FRAME] == - cm->ref_frame_sign_bias[GOLDEN_FRAME]) { - cm->comp_fixed_ref = ALTREF_FRAME; - cm->comp_var_ref[0] = LAST_FRAME; - cm->comp_var_ref[1] = GOLDEN_FRAME; - } else if (cm->ref_frame_sign_bias[LAST_FRAME] == - cm->ref_frame_sign_bias[ALTREF_FRAME]) { - cm->comp_fixed_ref = GOLDEN_FRAME; - cm->comp_var_ref[0] = LAST_FRAME; - cm->comp_var_ref[1] = ALTREF_FRAME; - } else { - cm->comp_fixed_ref = LAST_FRAME; - cm->comp_var_ref[0] = GOLDEN_FRAME; - cm->comp_var_ref[1] = ALTREF_FRAME; - } -#endif // CONFIG_EXT_REFS } static int read_is_valid(const uint8_t *start, size_t len, const uint8_t *end) { @@ -237,15 +219,10 @@ static void read_frame_reference_mode_probs(AV1_COMMON *cm, aom_reader *r) { for (i = 0; i < REF_CONTEXTS; ++i) { int j; -#if CONFIG_EXT_REFS for (j = 0; j < (FWD_REFS - 1); ++j) av1_diff_update_prob(r, &fc->comp_ref_prob[i][j], ACCT_STR); for (j = 0; j < (BWD_REFS - 1); ++j) av1_diff_update_prob(r, &fc->comp_bwdref_prob[i][j], ACCT_STR); -#else - for (j = 0; j < (COMP_REFS - 1); ++j) - av1_diff_update_prob(r, &fc->comp_ref_prob[i][j], ACCT_STR); -#endif // CONFIG_EXT_REFS } } } @@ -4678,10 +4655,8 @@ static size_t read_uncompressed_header(AV1Decoder *pbi, cm->last_frame_type = cm->frame_type; cm->last_intra_only = cm->intra_only; -#if CONFIG_EXT_REFS // NOTE: By default all coded frames to be used as a reference cm->is_reference_frame = 1; -#endif // CONFIG_EXT_REFS #if !CONFIG_OBU if (aom_rb_read_literal(rb, 2) != AOM_FRAME_MARKER) @@ -4897,13 +4872,11 @@ static size_t read_uncompressed_header(AV1Decoder *pbi, pbi->refresh_frame_flags = aom_rb_read_literal(rb, REF_FRAMES); #endif -#if CONFIG_EXT_REFS if (!pbi->refresh_frame_flags) { // NOTE: "pbi->refresh_frame_flags == 0" indicates that the coded frame // will not be used as a reference cm->is_reference_frame = 0; } -#endif // CONFIG_EXT_REFS for (i = 0; i < INTER_REFS_PER_FRAME; ++i) { const int ref = aom_rb_read_literal(rb, REF_FRAMES_LOG2); @@ -5192,7 +5165,6 @@ static size_t read_uncompressed_header(AV1Decoder *pbi, if (cm->use_adapt_scan == 0) av1_init_scan_order(cm); #endif // CONFIG_ADAPT_SCAN -#if CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING // NOTE(zoeliu): As cm->prev_frame can take neither a frame of // show_exisiting_frame=1, nor can it take a frame not used as // a reference, it is probable that by the time it is being @@ -5211,7 +5183,6 @@ static size_t read_uncompressed_header(AV1Decoder *pbi, ->frame_bufs[cm->frame_refs[LAST_FRAME - LAST_FRAME].idx] : NULL; } -#endif // CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING #if CONFIG_TEMPMV_SIGNALING if (cm->use_prev_frame_mvs && !frame_can_use_prev_frame_mvs(cm)) { @@ -5424,10 +5395,8 @@ static void debug_check_frame_counts(const AV1_COMMON *const cm) { sizeof(cm->counts.single_ref))); assert(!memcmp(cm->counts.comp_ref, zero_counts.comp_ref, sizeof(cm->counts.comp_ref))); -#if CONFIG_EXT_REFS assert(!memcmp(cm->counts.comp_bwdref, zero_counts.comp_bwdref, sizeof(cm->counts.comp_bwdref))); -#endif // CONFIG_EXT_REFS assert(!memcmp(&cm->counts.tx_size, &zero_counts.tx_size, sizeof(cm->counts.tx_size))); assert(!memcmp(cm->counts.skip, zero_counts.skip, sizeof(cm->counts.skip))); @@ -5522,9 +5491,7 @@ size_t av1_decode_frame_headers_and_setup(AV1Decoder *pbi, const uint8_t *data, uint8_t clear_data[MAX_AV1_HEADER_SIZE]; size_t first_partition_size; YV12_BUFFER_CONFIG *new_fb; -#if CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING RefBuffer *last_fb_ref_buf = &cm->frame_refs[LAST_FRAME - LAST_FRAME]; -#endif // CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING #if CONFIG_ADAPT_SCAN av1_deliver_eob_threshold(cm, xd); @@ -5586,7 +5553,6 @@ size_t av1_decode_frame_headers_and_setup(AV1Decoder *pbi, const uint8_t *data, cm->setup_mi(cm); -#if CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING // NOTE(zoeliu): As cm->prev_frame can take neither a frame of // show_exisiting_frame=1, nor can it take a frame not used as // a reference, it is probable that by the time it is being @@ -5603,7 +5569,6 @@ size_t av1_decode_frame_headers_and_setup(AV1Decoder *pbi, const uint8_t *data, ? &cm->buffer_pool->frame_bufs[last_fb_ref_buf->idx] : NULL; } -#endif // CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING #if CONFIG_TEMPMV_SIGNALING if (cm->use_prev_frame_mvs && !frame_can_use_prev_frame_mvs(cm)) { diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 0a754fd5b0..a5f59c90bd 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c @@ -1595,12 +1595,8 @@ static void read_ref_frames(AV1_COMMON *const cm, MACROBLOCKD *const xd, // Normative in decoder (for low delay) #if CONFIG_ONE_SIDED_COMPOUND || CONFIG_FRAME_SIGN_BIAS const int idx = 1; -#else // !(CONFIG_ONE_SIDED_COMPOUND || CONFIG_FRAME_SIGN_BIAS) -#if CONFIG_EXT_REFS +#else // !(CONFIG_ONE_SIDED_COMPOUND || CONFIG_FRAME_SIGN_BIAS) const int idx = cm->ref_frame_sign_bias[cm->comp_bwd_ref[0]]; -#else // !CONFIG_EXT_REFS - const int idx = cm->ref_frame_sign_bias[cm->comp_fixed_ref]; -#endif // CONFIG_EXT_REFS #endif // CONFIG_ONE_SIDED_COMPOUND || CONFIG_FRAME_SIGN_BIAS) const int ctx = av1_get_pred_context_comp_ref_p(cm, xd); @@ -1616,7 +1612,6 @@ static void read_ref_frames(AV1_COMMON *const cm, MACROBLOCKD *const xd, #endif // CONFIG_VAR_REFS if (counts) ++counts->comp_ref[ctx][0][bit]; -#if CONFIG_EXT_REFS // Decode forward references. if (!bit) { const int ctx1 = av1_get_pred_context_comp_ref_p1(cm, xd); @@ -1678,12 +1673,7 @@ static void read_ref_frames(AV1_COMMON *const cm, MACROBLOCKD *const xd, } else { ref_frame[idx] = cm->comp_bwd_ref[2]; } -#else // !CONFIG_EXT_REFS - ref_frame[!idx] = cm->comp_var_ref[bit]; - ref_frame[idx] = cm->comp_fixed_ref; -#endif // CONFIG_EXT_REFS } else if (mode == SINGLE_REFERENCE) { -#if CONFIG_EXT_REFS const int ctx0 = av1_get_pred_context_single_ref_p1(xd); #if CONFIG_VAR_REFS int bit0; @@ -1772,20 +1762,6 @@ static void read_ref_frames(AV1_COMMON *const cm, MACROBLOCKD *const xd, ref_frame[0] = bit3 ? LAST2_FRAME : LAST_FRAME; } } -#else // !CONFIG_EXT_REFS - const int ctx0 = av1_get_pred_context_single_ref_p1(xd); - const int bit0 = READ_REF_BIT(single_ref_p1); - if (counts) ++counts->single_ref[ctx0][0][bit0]; - - if (bit0) { - const int ctx1 = av1_get_pred_context_single_ref_p2(xd); - const int bit1 = READ_REF_BIT(single_ref_p2); - if (counts) ++counts->single_ref[ctx1][1][bit1]; - ref_frame[0] = bit1 ? ALTREF_FRAME : GOLDEN_FRAME; - } else { - ref_frame[0] = LAST_FRAME; - } -#endif // CONFIG_EXT_REFS ref_frame[1] = NONE_FRAME; } else { diff --git a/av1/decoder/decoder.c b/av1/decoder/decoder.c index cd82d5b53e..c9bc612ca8 100644 --- a/av1/decoder/decoder.c +++ b/av1/decoder/decoder.c @@ -393,11 +393,8 @@ int av1_receive_compressed_data(AV1Decoder *pbi, size_t size, if (!cm->show_existing_frame) { cm->last_show_frame = cm->show_frame; -#if CONFIG_EXT_REFS // NOTE: It is not supposed to ref to any frame not used as reference - if (cm->is_reference_frame) -#endif // CONFIG_EXT_REFS - cm->prev_frame = cm->cur_frame; + if (cm->is_reference_frame) cm->prev_frame = cm->cur_frame; if (cm->seg.enabled && !cm->frame_parallel_decode) av1_swap_current_and_last_seg_map(cm); diff --git a/av1/decoder/decoder.h b/av1/decoder/decoder.h index 20129b6693..08719952dc 100644 --- a/av1/decoder/decoder.h +++ b/av1/decoder/decoder.h @@ -196,7 +196,6 @@ static INLINE void decrease_ref_count(int idx, RefCntBuffer *const frame_bufs, } } -#if CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING static INLINE int dec_is_ref_frame_buf(AV1Decoder *const pbi, RefCntBuffer *frame_buf) { AV1_COMMON *const cm = &pbi->common; @@ -208,7 +207,6 @@ static INLINE int dec_is_ref_frame_buf(AV1Decoder *const pbi, } return (i < INTER_REFS_PER_FRAME); } -#endif // CONFIG_EXT_REFS #define ACCT_STR __func__ static INLINE int av1_read_uniform(aom_reader *r, int n) { diff --git a/av1/decoder/dthread.c b/av1/decoder/dthread.c index 7f16b233ca..531ea255e7 100644 --- a/av1/decoder/dthread.c +++ b/av1/decoder/dthread.c @@ -160,9 +160,7 @@ void av1_frameworker_copy_context(AVxWorker *const dst_worker, #if CONFIG_HIGHBITDEPTH dst_cm->use_highbitdepth = src_cm->use_highbitdepth; #endif -#if CONFIG_EXT_REFS -// TODO(zoeliu): To handle parallel decoding -#endif // CONFIG_EXT_REFS + // TODO(zoeliu): To handle parallel decoding dst_cm->prev_frame = src_cm->show_existing_frame ? src_cm->prev_frame : src_cm->cur_frame; dst_cm->last_width = diff --git a/av1/encoder/bgsprite.c b/av1/encoder/bgsprite.c index ae2cb1d409..ed314e1662 100644 --- a/av1/encoder/bgsprite.c +++ b/av1/encoder/bgsprite.c @@ -1136,7 +1136,6 @@ int av1_background_sprite(AV1_COMP *cpi, int distance) { if (frames_fwd > distance) frames_fwd = distance; frames_bwd = frames_fwd; -#if CONFIG_EXT_REFS const GF_GROUP *const gf_group = &cpi->twopass.gf_group; if (gf_group->rf_level[gf_group->index] == GF_ARF_LOW) { cpi->is_arf_filter_off[gf_group->arf_update_idx[gf_group->index]] = 1; @@ -1145,7 +1144,6 @@ int av1_background_sprite(AV1_COMP *cpi, int distance) { } else { cpi->is_arf_filter_off[gf_group->arf_update_idx[gf_group->index]] = 0; } -#endif // CONFIG_EXT_REFS const int start_frame = distance + frames_fwd; const int frames_to_stitch = frames_bwd + 1 + frames_fwd; diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index fecddcbab7..7a67092eac 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c @@ -1082,7 +1082,6 @@ static void write_ref_frames(const AV1_COMMON *cm, const MACROBLOCKD *xd, assert(comp_ref_type == BIDIR_COMP_REFERENCE); #endif // CONFIG_EXT_COMP_REFS -#if CONFIG_EXT_REFS const int bit = (mbmi->ref_frame[0] == GOLDEN_FRAME || mbmi->ref_frame[0] == LAST3_FRAME); #if CONFIG_VAR_REFS @@ -1132,12 +1131,7 @@ static void write_ref_frames(const AV1_COMMON *cm, const MACROBLOCKD *xd, } #endif // CONFIG_VAR_REFS -#else // !CONFIG_EXT_REFS - const int bit = mbmi->ref_frame[0] == GOLDEN_FRAME; - WRITE_REF_BIT(bit, comp_ref_p); -#endif // CONFIG_EXT_REFS } else { -#if CONFIG_EXT_REFS const int bit0 = (mbmi->ref_frame[0] <= ALTREF_FRAME && mbmi->ref_frame[0] >= BWDREF_FRAME); #if CONFIG_VAR_REFS @@ -1197,15 +1191,6 @@ static void write_ref_frames(const AV1_COMMON *cm, const MACROBLOCKD *xd, #endif // CONFIG_VAR_REFS } } -#else // !CONFIG_EXT_REFS - const int bit0 = mbmi->ref_frame[0] != LAST_FRAME; - WRITE_REF_BIT(bit0, single_ref_p1); - - if (bit0) { - const int bit1 = mbmi->ref_frame[0] != GOLDEN_FRAME; - WRITE_REF_BIT(bit1, single_ref_p2); - } -#endif // CONFIG_EXT_REFS } } } @@ -3821,7 +3806,6 @@ static void write_tile_info(const AV1_COMMON *const cm, #endif // CONFIG_LOOPFILTERING_ACROSS_TILES } -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER static int get_refresh_mask_gf16(AV1_COMP *cpi) { int refresh_mask = 0; @@ -3836,11 +3820,9 @@ static int get_refresh_mask_gf16(AV1_COMP *cpi) { return refresh_mask; } #endif // USE_GF16_MULTI_LAYER -#endif // CONFIG_EXT_REFS static int get_refresh_mask(AV1_COMP *cpi) { int refresh_mask = 0; -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER if (cpi->rc.baseline_gf_interval == 16) return get_refresh_mask_gf16(cpi); #endif // USE_GF16_MULTI_LAYER @@ -3858,9 +3840,6 @@ static int get_refresh_mask(AV1_COMP *cpi) { refresh_mask |= (cpi->refresh_bwd_ref_frame << cpi->bwd_fb_idx); refresh_mask |= (cpi->refresh_alt2_ref_frame << cpi->alt2_fb_idx); -#else // !CONFIG_EXT_REFS - refresh_mask |= (cpi->refresh_last_frame << cpi->lst_fb_idx); -#endif // CONFIG_EXT_REFS if (av1_preserve_existing_gf(cpi)) { // We have decided to preserve the previously existing golden frame as our @@ -3875,15 +3854,7 @@ static int get_refresh_mask(AV1_COMP *cpi) { // (like RTC/temporal scalability). return refresh_mask | (cpi->refresh_golden_frame << cpi->alt_fb_idx); } else { -#if CONFIG_EXT_REFS const int arf_idx = cpi->alt_fb_idx; -#else // !CONFIG_EXT_REFS - int arf_idx = cpi->alt_fb_idx; - if ((cpi->oxcf.pass == 2) && cpi->multi_arf_allowed) { - const GF_GROUP *const gf_group = &cpi->twopass.gf_group; - arf_idx = gf_group->arf_update_idx[gf_group->index]; - } -#endif // CONFIG_EXT_REFS return refresh_mask | (cpi->refresh_golden_frame << cpi->gld_fb_idx) | (cpi->refresh_alt_ref_frame << arf_idx); } @@ -4085,12 +4056,10 @@ static uint32_t write_tiles(AV1_COMP *const cpi, uint8_t *const dst, #endif // CONFIG_EXT_TILE write_uncompressed_header_frame(cpi, &wb); -#if CONFIG_EXT_REFS if (cm->show_existing_frame) { total_size = aom_wb_bytes_written(&wb); return (uint32_t)total_size; } -#endif // CONFIG_EXT_REFS // Write the tile length code tile_size_bytes_wb = wb; @@ -4578,7 +4547,6 @@ static void write_uncompressed_header_frame(AV1_COMP *cpi, aom_wb_write_literal(wb, cm->large_scale_tile, 1); #endif // CONFIG_EXT_TILE -#if CONFIG_EXT_REFS // NOTE: By default all coded frames to be used as a reference cm->is_reference_frame = 1; @@ -4610,11 +4578,8 @@ static void write_uncompressed_header_frame(AV1_COMP *cpi, return; } else { -#endif // CONFIG_EXT_REFS aom_wb_write_bit(wb, 0); // show_existing_frame -#if CONFIG_EXT_REFS } -#endif // CONFIG_EXT_REFS aom_wb_write_bit(wb, cm->frame_type); aom_wb_write_bit(wb, cm->show_frame); @@ -4671,18 +4636,12 @@ static void write_uncompressed_header_frame(AV1_COMP *cpi, } } #endif -#if CONFIG_EXT_REFS cpi->refresh_frame_mask = get_refresh_mask(cpi); -#endif // CONFIG_EXT_REFS if (cm->intra_only) { write_bitdepth_colorspace_sampling(cm, wb); -#if CONFIG_EXT_REFS aom_wb_write_literal(wb, cpi->refresh_frame_mask, REF_FRAMES); -#else - aom_wb_write_literal(wb, get_refresh_mask(cpi), REF_FRAMES); -#endif // CONFIG_EXT_REFS write_frame_size(cm, wb); #if CONFIG_ANS && ANS_MAX_SYMBOLS @@ -4693,19 +4652,13 @@ static void write_uncompressed_header_frame(AV1_COMP *cpi, } else { MV_REFERENCE_FRAME ref_frame; -#if CONFIG_EXT_REFS aom_wb_write_literal(wb, cpi->refresh_frame_mask, REF_FRAMES); -#else - aom_wb_write_literal(wb, get_refresh_mask(cpi), REF_FRAMES); -#endif // CONFIG_EXT_REFS -#if CONFIG_EXT_REFS if (!cpi->refresh_frame_mask) { // NOTE: "cpi->refresh_frame_mask == 0" indicates that the coded frame // will not be used as a reference cm->is_reference_frame = 0; } -#endif // CONFIG_EXT_REFS for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) { assert(get_ref_frame_map_idx(cpi, ref_frame) != INVALID_IDX); @@ -4764,12 +4717,10 @@ static void write_uncompressed_header_frame(AV1_COMP *cpi, int arf_offset = AOMMIN( (MAX_GF_INTERVAL - 1), cpi->twopass.gf_group.arf_src_offset[cpi->twopass.gf_group.index]); -#if CONFIG_EXT_REFS int brf_offset = cpi->twopass.gf_group.brf_src_offset[cpi->twopass.gf_group.index]; arf_offset = AOMMIN((MAX_GF_INTERVAL - 1), arf_offset + brf_offset); -#endif aom_wb_write_literal(wb, arf_offset, 4); } #endif @@ -4872,7 +4823,6 @@ static void write_uncompressed_header_obu(AV1_COMP *cpi, aom_wb_write_literal(wb, cm->large_scale_tile, 1); #endif // CONFIG_EXT_TILE -#if CONFIG_EXT_REFS // NOTE: By default all coded frames to be used as a reference cm->is_reference_frame = 1; @@ -4904,11 +4854,8 @@ static void write_uncompressed_header_obu(AV1_COMP *cpi, return; } else { -#endif // CONFIG_EXT_REFS aom_wb_write_bit(wb, 0); // show_existing_frame -#if CONFIG_EXT_REFS } -#endif // CONFIG_EXT_REFS cm->frame_type = cm->intra_only ? INTRA_ONLY_FRAME : cm->frame_type; aom_wb_write_literal(wb, cm->frame_type, 2); @@ -4955,16 +4902,10 @@ static void write_uncompressed_header_obu(AV1_COMP *cpi, } } #endif -#if CONFIG_EXT_REFS cpi->refresh_frame_mask = get_refresh_mask(cpi); -#endif // CONFIG_EXT_REFS if (cm->intra_only) { -#if CONFIG_EXT_REFS aom_wb_write_literal(wb, cpi->refresh_frame_mask, REF_FRAMES); -#else - aom_wb_write_literal(wb, get_refresh_mask(cpi), REF_FRAMES); -#endif // CONFIG_EXT_REFS write_frame_size(cm, wb); #if CONFIG_ANS && ANS_MAX_SYMBOLS @@ -4984,20 +4925,14 @@ static void write_uncompressed_header_obu(AV1_COMP *cpi, } #endif -#if CONFIG_EXT_REFS cpi->refresh_frame_mask = get_refresh_mask(cpi); aom_wb_write_literal(wb, cpi->refresh_frame_mask, REF_FRAMES); -#else - aom_wb_write_literal(wb, get_refresh_mask(cpi), REF_FRAMES); -#endif // CONFIG_EXT_REFS -#if CONFIG_EXT_REFS if (!cpi->refresh_frame_mask) { // NOTE: "cpi->refresh_frame_mask == 0" indicates that the coded frame // will not be used as a reference cm->is_reference_frame = 0; } -#endif // CONFIG_EXT_REFS for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) { assert(get_ref_frame_map_idx(cpi, ref_frame) != INVALID_IDX); @@ -5060,13 +4995,11 @@ static void write_uncompressed_header_obu(AV1_COMP *cpi, } #endif -#if CONFIG_EXT_REFS if (!cpi->refresh_frame_mask) { // NOTE: "cpi->refresh_frame_mask == 0" indicates that the coded frame // will not be used as a reference cm->is_reference_frame = 0; } -#endif // CONFIG_EXT_REFS for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) { assert(get_ref_frame_map_idx(cpi, ref_frame) != INVALID_IDX); @@ -5117,12 +5050,10 @@ static void write_uncompressed_header_obu(AV1_COMP *cpi, int arf_offset = AOMMIN( (MAX_GF_INTERVAL - 1), cpi->twopass.gf_group.arf_src_offset[cpi->twopass.gf_group.index]); -#if CONFIG_EXT_REFS int brf_offset = cpi->twopass.gf_group.brf_src_offset[cpi->twopass.gf_group.index]; arf_offset = AOMMIN((MAX_GF_INTERVAL - 1), arf_offset + brf_offset); -#endif aom_wb_write_literal(wb, arf_offset, 4); } #endif @@ -5319,7 +5250,6 @@ static uint32_t write_compressed_header(AV1_COMP *cpi, uint8_t *data) { #endif // CONFIG_EXT_COMP_REFS for (int i = 0; i < REF_CONTEXTS; i++) { -#if CONFIG_EXT_REFS for (int j = 0; j < (FWD_REFS - 1); j++) { av1_cond_prob_diff_update(header_bc, &fc->comp_ref_prob[i][j], counts->comp_ref[i][j], probwt); @@ -5328,12 +5258,6 @@ static uint32_t write_compressed_header(AV1_COMP *cpi, uint8_t *data) { av1_cond_prob_diff_update(header_bc, &fc->comp_bwdref_prob[i][j], counts->comp_bwdref[i][j], probwt); } -#else - for (int j = 0; j < (COMP_REFS - 1); j++) { - av1_cond_prob_diff_update(header_bc, &fc->comp_ref_prob[i][j], - counts->comp_ref[i][j], probwt); - } -#endif // CONFIG_EXT_REFS } } #endif // CONFIG_NEW_MULTISYMBOL @@ -5898,12 +5822,10 @@ void av1_pack_bitstream(AV1_COMP *const cpi, uint8_t *dst, size_t *size) { // Write the uncompressed header write_uncompressed_header_frame(cpi, &wb); -#if CONFIG_EXT_REFS if (cm->show_existing_frame) { *size = aom_wb_bytes_written(&wb); return; } -#endif // CONFIG_EXT_REFS // We do not know these in advance. Output placeholder bit. saved_wb = wb; diff --git a/av1/encoder/bitstream.h b/av1/encoder/bitstream.h index 76eb85116a..ec40a4ec27 100644 --- a/av1/encoder/bitstream.h +++ b/av1/encoder/bitstream.h @@ -30,14 +30,9 @@ void av1_pack_bitstream(AV1_COMP *const cpi, uint8_t *dest, size_t *size); void av1_encode_token_init(void); static INLINE int av1_preserve_existing_gf(AV1_COMP *cpi) { -#if CONFIG_EXT_REFS // Do not swap gf and arf indices for internal overlay frames return !cpi->multi_arf_allowed && cpi->rc.is_src_frame_alt_ref && !cpi->rc.is_src_frame_ext_arf; -#else - return !cpi->multi_arf_allowed && cpi->refresh_golden_frame && - cpi->rc.is_src_frame_alt_ref; -#endif // CONFIG_EXT_REFS } void av1_write_tx_type(const AV1_COMMON *const cm, const MACROBLOCKD *xd, diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 06261d1cb6..eefeeab4c3 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c @@ -1523,9 +1523,7 @@ static void rd_pick_sb_modes(const AV1_COMP *const cpi, TileDataEnc *tile_data, if ((rd_cost->rate != INT_MAX) && (aq_mode == COMPLEXITY_AQ) && (bsize >= BLOCK_16X16) && (cm->frame_type == KEY_FRAME || cpi->refresh_alt_ref_frame || -#if CONFIG_EXT_REFS cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS (cpi->refresh_golden_frame && !cpi->rc.is_src_frame_alt_ref))) { av1_caq_select_segment(cpi, x, bsize, mi_row, mi_col, rd_cost->rate); } @@ -1663,9 +1661,7 @@ static void update_stats(const AV1_COMMON *const cm, ThreadData *td, int mi_row, // the reference frame counts used to work out probabilities. if (inter_block) { const MV_REFERENCE_FRAME ref0 = mbmi->ref_frame[0]; -#if CONFIG_EXT_REFS const MV_REFERENCE_FRAME ref1 = mbmi->ref_frame[1]; -#endif // CONFIG_EXT_REFS if (cm->reference_mode == REFERENCE_MODE_SELECT) { if (has_second_ref(mbmi)) @@ -1711,7 +1707,6 @@ static void update_stats(const AV1_COMMON *const cm, ThreadData *td, int mi_row, } } else { #endif // CONFIG_EXT_COMP_REFS -#if CONFIG_EXT_REFS const int bit = (ref0 == GOLDEN_FRAME || ref0 == LAST3_FRAME); counts->comp_ref[av1_get_pred_context_comp_ref_p(cm, xd)][0][bit]++; @@ -1728,15 +1723,10 @@ static void update_stats(const AV1_COMMON *const cm, ThreadData *td, int mi_row, if (ref1 != ALTREF_FRAME) counts->comp_bwdref[av1_get_pred_context_comp_bwdref_p1(cm, xd)] [1][ref1 == ALTREF2_FRAME]++; -#else // !CONFIG_EXT_REFS - counts->comp_ref[av1_get_pred_context_comp_ref_p(cm, xd)][0] - [ref0 == GOLDEN_FRAME]++; -#endif // CONFIG_EXT_REFS #if CONFIG_EXT_COMP_REFS } #endif // CONFIG_EXT_COMP_REFS } else { -#if CONFIG_EXT_REFS const int bit = (ref0 >= BWDREF_FRAME); counts->single_ref[av1_get_pred_context_single_ref_p1(xd)][0][bit]++; @@ -1759,14 +1749,6 @@ static void update_stats(const AV1_COMMON *const cm, ThreadData *td, int mi_row, [ref0 != LAST3_FRAME]++; } } -#else // !CONFIG_EXT_REFS - counts->single_ref[av1_get_pred_context_single_ref_p1(xd)][0] - [ref0 != LAST_FRAME]++; - if (ref0 != LAST_FRAME) { - counts->single_ref[av1_get_pred_context_single_ref_p2(xd)][1] - [ref0 != GOLDEN_FRAME]++; - } -#endif // CONFIG_EXT_REFS } #if CONFIG_COMPOUND_SINGLEREF @@ -4817,10 +4799,8 @@ static int check_dual_ref_flags(AV1_COMP *cpi) { return 0; } else { return (!!(ref_flags & AOM_GOLD_FLAG) + !!(ref_flags & AOM_LAST_FLAG) + -#if CONFIG_EXT_REFS !!(ref_flags & AOM_LAST2_FLAG) + !!(ref_flags & AOM_LAST3_FLAG) + !!(ref_flags & AOM_BWD_FLAG) + !!(ref_flags & AOM_ALT2_FLAG) + -#endif // CONFIG_EXT_REFS !!(ref_flags & AOM_ALT_FLAG)) >= 2; } } @@ -4843,18 +4823,11 @@ static void reset_skip_tx_size(AV1_COMMON *cm, TX_SIZE max_tx_size) { static MV_REFERENCE_FRAME get_frame_type(const AV1_COMP *cpi) { if (frame_is_intra_only(&cpi->common)) return INTRA_FRAME; -#if CONFIG_EXT_REFS // We will not update the golden frame with an internal overlay frame else if ((cpi->rc.is_src_frame_alt_ref && cpi->refresh_golden_frame) || cpi->rc.is_src_frame_ext_arf) -#else - else if (cpi->rc.is_src_frame_alt_ref && cpi->refresh_golden_frame) -#endif // CONFIG_EXT_REFS return ALTREF_FRAME; - else if (cpi->refresh_golden_frame || -#if CONFIG_EXT_REFS - cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS + else if (cpi->refresh_golden_frame || cpi->refresh_alt2_ref_frame || cpi->refresh_alt_ref_frame) return GOLDEN_FRAME; else @@ -5170,11 +5143,7 @@ static int do_gm_search_logic(SPEED_FEATURES *const sf, int num_refs_using_gm, switch (sf->gm_search_type) { case GM_FULL_SEARCH: return 1; case GM_REDUCED_REF_SEARCH: -#if CONFIG_EXT_REFS return !(frame == LAST2_FRAME || frame == LAST3_FRAME); -#else - return (num_refs_using_gm < 2); -#endif // CONFIG_EXT_REFS case GM_DISABLE_SEARCH: return 0; default: assert(0); } @@ -5220,9 +5189,7 @@ static void encode_frame_internal(AV1_COMP *cpi) { MACROBLOCKD *const xd = &x->e_mbd; RD_COUNTS *const rdc = &cpi->td.rd_counts; int i; -#if CONFIG_TEMPMV_SIGNALING || CONFIG_EXT_REFS const int last_fb_buf_idx = get_ref_frame_buf_idx(cpi, LAST_FRAME); -#endif // CONFIG_TEMPMV_SIGNALING || CONFIG_EXT_REFS #if CONFIG_ADAPT_SCAN av1_deliver_eob_threshold(cm, xd); @@ -5488,7 +5455,6 @@ static void encode_frame_internal(AV1_COMP *cpi) { av1_initialize_me_consts(cpi, x, cm->base_qindex); init_encode_frame_mb_context(cpi); -#if CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING // NOTE(zoeliu): As cm->prev_frame can take neither a frame of // show_exisiting_frame=1, nor can it take a frame not used as // a reference, it is probable that by the time it is being @@ -5505,7 +5471,6 @@ static void encode_frame_internal(AV1_COMP *cpi) { ? &cm->buffer_pool->frame_bufs[last_fb_buf_idx] : NULL; } -#endif // CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING #if CONFIG_TEMPMV_SIGNALING cm->use_prev_frame_mvs &= frame_can_use_prev_frame_mvs(cm); @@ -5609,11 +5574,9 @@ void av1_encode_frame(AV1_COMP *cpi) { int arf_offset = AOMMIN( (MAX_GF_INTERVAL - 1), cpi->twopass.gf_group.arf_src_offset[cpi->twopass.gf_group.index]); -#if CONFIG_EXT_REFS int brf_offset = cpi->twopass.gf_group.brf_src_offset[cpi->twopass.gf_group.index]; arf_offset = AOMMIN((MAX_GF_INTERVAL - 1), arf_offset + brf_offset); -#endif // CONFIG_EXT_REFS cm->frame_offset = cm->current_video_frame + arf_offset; } else { cm->frame_offset = cm->current_video_frame; @@ -5640,7 +5603,6 @@ void av1_encode_frame(AV1_COMP *cpi) { } else { #endif // !CONFIG_ONE_SIDED_COMPOUND cpi->allow_comp_inter_inter = 1; -#if CONFIG_EXT_REFS cm->comp_fwd_ref[0] = LAST_FRAME; cm->comp_fwd_ref[1] = LAST2_FRAME; cm->comp_fwd_ref[2] = LAST3_FRAME; @@ -5648,11 +5610,6 @@ void av1_encode_frame(AV1_COMP *cpi) { cm->comp_bwd_ref[0] = BWDREF_FRAME; cm->comp_bwd_ref[1] = ALTREF2_FRAME; cm->comp_bwd_ref[2] = ALTREF_FRAME; -#else // !CONFIG_EXT_REFS - cm->comp_fixed_ref = ALTREF_FRAME; - cm->comp_var_ref[0] = LAST_FRAME; - cm->comp_var_ref[1] = GOLDEN_FRAME; -#endif // CONFIG_EXT_REFS #if !CONFIG_ONE_SIDED_COMPOUND // Normative in encoder } #endif // !CONFIG_ONE_SIDED_COMPOUND diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c index ecb41ff565..1208e4f1c5 100644 --- a/av1/encoder/encoder.c +++ b/av1/encoder/encoder.c @@ -341,23 +341,17 @@ static void setup_frame(AV1_COMP *cpi) { // Just use frame context from first signaled reference frame. // This will always be LAST_FRAME for now. #else -#if CONFIG_EXT_REFS const GF_GROUP *gf_group = &cpi->twopass.gf_group; if (gf_group->update_type[gf_group->index] == INTNL_ARF_UPDATE) cm->frame_context_idx = EXT_ARF_FRAME; else if (cpi->refresh_alt_ref_frame) cm->frame_context_idx = ARF_FRAME; -#else // !CONFIG_EXT_REFS - if (cpi->refresh_alt_ref_frame) cm->frame_context_idx = ARF_FRAME; -#endif // CONFIG_EXT_REFS else if (cpi->rc.is_src_frame_alt_ref) cm->frame_context_idx = OVERLAY_FRAME; else if (cpi->refresh_golden_frame) cm->frame_context_idx = GLD_FRAME; -#if CONFIG_EXT_REFS else if (cpi->refresh_bwd_ref_frame) cm->frame_context_idx = BRF_FRAME; -#endif // CONFIG_EXT_REFS else cm->frame_context_idx = REGULAR_FRAME; #endif // CONFIG_NO_FRAME_CONTEXT_SIGNALING @@ -384,7 +378,6 @@ static void setup_frame(AV1_COMP *cpi) { #endif // CONFIG_NO_FRAME_CONTEXT_SIGNALING av1_zero(cpi->interp_filter_selected[0]); } -#if CONFIG_EXT_REFS #if CONFIG_ONE_SIDED_COMPOUND && \ !CONFIG_EXT_COMP_REFS // No change to bitstream if (cpi->sf.recode_loop == DISALLOW_RECODE) { @@ -392,7 +385,6 @@ static void setup_frame(AV1_COMP *cpi) { cpi->rc.is_bipred_frame = 1; } #endif // CONFIG_ONE_SIDED_COMPOUND && !CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS #if CONFIG_NO_FRAME_CONTEXT_SIGNALING if (frame_is_intra_only(cm) || cm->error_resilient_mode || cm->frame_refs[0].idx < 0) { @@ -1093,7 +1085,6 @@ static void update_frame_size(AV1_COMP *cpi) { } static void init_buffer_indices(AV1_COMP *cpi) { -#if CONFIG_EXT_REFS int fb_idx; for (fb_idx = 0; fb_idx < LAST_REF_FRAMES; ++fb_idx) cpi->lst_fb_idxes[fb_idx] = fb_idx; @@ -1104,11 +1095,6 @@ static void init_buffer_indices(AV1_COMP *cpi) { cpi->ext_fb_idx = LAST_REF_FRAMES + 4; for (fb_idx = 0; fb_idx < MAX_EXT_ARFS + 1; ++fb_idx) cpi->arf_map[fb_idx] = LAST_REF_FRAMES + 2 + fb_idx; -#else // !CONFIG_EXT_REFS - cpi->lst_fb_idx = 0; - cpi->gld_fb_idx = 1; - cpi->alt_fb_idx = 2; -#endif // CONFIG_EXT_REFS #if CONFIG_AMVR cpi->rate_index = 0; cpi->rate_size = 0; @@ -2525,10 +2511,8 @@ void av1_change_config(struct AV1_COMP *cpi, const AV1EncoderConfig *oxcf) { cpi->refresh_last_frame = 1; cpi->refresh_golden_frame = 0; -#if CONFIG_EXT_REFS cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS cm->refresh_frame_context = (oxcf->error_resilient_mode || oxcf->frame_parallel_decoding_mode) @@ -2590,11 +2574,9 @@ void av1_change_config(struct AV1_COMP *cpi, const AV1EncoderConfig *oxcf) { cpi->alt_ref_source = NULL; rc->is_src_frame_alt_ref = 0; -#if CONFIG_EXT_REFS rc->is_bwd_ref_frame = 0; rc->is_last_bipred_frame = 0; rc->is_bipred_frame = 0; -#endif // CONFIG_EXT_REFS #if 0 // Experimental RD Code @@ -3356,7 +3338,7 @@ void aom_write_yuv_frame_420(YV12_BUFFER_CONFIG *s, FILE *f) { } #endif -#if CONFIG_EXT_REFS && !CONFIG_XIPHRC +#if !CONFIG_XIPHRC #if USE_GF16_MULTI_LAYER static void check_show_existing_frame_gf16(AV1_COMP *cpi) { const GF_GROUP *const gf_group = &cpi->twopass.gf_group; @@ -3433,7 +3415,7 @@ static void check_show_existing_frame(AV1_COMP *cpi) { } cpi->rc.is_src_frame_ext_arf = 0; } -#endif // CONFIG_EXT_REFS && !CONFIG_XIPHRC +#endif // !CONFIG_XIPHRC #ifdef OUTPUT_YUV_REC void aom_write_one_yuv_frame(AV1_COMMON *cm, YV12_BUFFER_CONFIG *s) { @@ -3597,7 +3579,6 @@ static void dump_ref_frame_images(AV1_COMP *cpi) { } #endif // DUMP_REF_FRAME_IMAGES == 1 -#if CONFIG_EXT_REFS // This function is used to shift the virtual indices of last reference frames // as follows: // LAST_FRAME -> LAST2_FRAME -> LAST3_FRAME @@ -3616,7 +3597,6 @@ static INLINE void shift_last_ref_frames(AV1_COMP *cpi) { } } } -#endif // CONFIG_EXT_REFS #if CONFIG_VAR_REFS static void enc_check_valid_ref_frames(AV1_COMP *const cpi) { @@ -3654,7 +3634,6 @@ static void enc_check_valid_ref_frames(AV1_COMP *const cpi) { } #endif // CONFIG_VAR_REFS -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER static void update_reference_frames_gf16(AV1_COMP *cpi) { AV1_COMMON *const cm = &cpi->common; @@ -3698,7 +3677,6 @@ static void update_reference_frames_gf16(AV1_COMP *cpi) { #endif // DUMP_REF_FRAME_IMAGES } #endif // USE_GF16_MULTI_LAYER -#endif // CONFIG_EXT_REFS static void update_reference_frames(AV1_COMP *cpi) { AV1_COMMON *const cm = &cpi->common; @@ -3707,14 +3685,12 @@ static void update_reference_frames(AV1_COMP *cpi) { // for the purpose to verify no mismatch between encoder and decoder. if (cm->show_frame) cpi->last_show_frame_buf_idx = cm->new_fb_idx; -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER if (cpi->rc.baseline_gf_interval == 16) { update_reference_frames_gf16(cpi); return; } #endif // USE_GF16_MULTI_LAYER -#endif // CONFIG_EXT_REFS BufferPool *const pool = cm->buffer_pool; // At this point the new frame has been encoded. @@ -3722,12 +3698,10 @@ static void update_reference_frames(AV1_COMP *cpi) { if (cm->frame_type == KEY_FRAME) { ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->gld_fb_idx], cm->new_fb_idx); -#if CONFIG_EXT_REFS ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->bwd_fb_idx], cm->new_fb_idx); ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->alt2_fb_idx], cm->new_fb_idx); -#endif // CONFIG_EXT_REFS ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->alt_fb_idx], cm->new_fb_idx); } else if (av1_preserve_existing_gf(cpi)) { @@ -3747,13 +3721,10 @@ static void update_reference_frames(AV1_COMP *cpi) { cpi->alt_fb_idx = cpi->gld_fb_idx; cpi->gld_fb_idx = tmp; -#if CONFIG_EXT_REFS // We need to modify the mapping accordingly cpi->arf_map[0] = cpi->alt_fb_idx; -#endif // CONFIG_EXT_REFS -// TODO(zoeliu): Do we need to copy cpi->interp_filter_selected[0] over to -// cpi->interp_filter_selected[GOLDEN_FRAME]? -#if CONFIG_EXT_REFS + // TODO(zoeliu): Do we need to copy cpi->interp_filter_selected[0] over to + // cpi->interp_filter_selected[GOLDEN_FRAME]? } else if (cpi->rc.is_src_frame_ext_arf && cm->show_existing_frame) { // Deal with the special case for showing existing internal ALTREF_FRAME // Refresh the LAST_FRAME with the ALTREF_FRAME and retire the LAST3_FRAME @@ -3773,18 +3744,11 @@ static void update_reference_frames(AV1_COMP *cpi) { memcpy(cpi->interp_filter_selected[LAST_FRAME], cpi->interp_filter_selected[ALTREF2_FRAME], sizeof(cpi->interp_filter_selected[ALTREF2_FRAME])); -#endif // CONFIG_EXT_REFS } else { /* For non key/golden frames */ // === ALTREF_FRAME === if (cpi->refresh_alt_ref_frame) { int arf_idx = cpi->alt_fb_idx; int which_arf = 0; -#if !CONFIG_EXT_REFS - if ((cpi->oxcf.pass == 2) && cpi->multi_arf_allowed) { - const GF_GROUP *const gf_group = &cpi->twopass.gf_group; - arf_idx = gf_group->arf_update_idx[gf_group->index]; - } -#endif // !CONFIG_EXT_REFS ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[arf_idx], cm->new_fb_idx); memcpy(cpi->interp_filter_selected[ALTREF_FRAME + which_arf], @@ -3797,15 +3761,11 @@ static void update_reference_frames(AV1_COMP *cpi) { ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->gld_fb_idx], cm->new_fb_idx); -#if !CONFIG_EXT_REFS - if (!cpi->rc.is_src_frame_alt_ref) -#endif // !CONFIG_EXT_REFS - memcpy(cpi->interp_filter_selected[GOLDEN_FRAME], - cpi->interp_filter_selected[0], - sizeof(cpi->interp_filter_selected[0])); + memcpy(cpi->interp_filter_selected[GOLDEN_FRAME], + cpi->interp_filter_selected[0], + sizeof(cpi->interp_filter_selected[0])); } -#if CONFIG_EXT_REFS // === BWDREF_FRAME === if (cpi->refresh_bwd_ref_frame) { ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->bwd_fb_idx], @@ -3825,11 +3785,9 @@ static void update_reference_frames(AV1_COMP *cpi) { cpi->interp_filter_selected[0], sizeof(cpi->interp_filter_selected[0])); } -#endif // CONFIG_EXT_REFS } if (cpi->refresh_last_frame) { -#if CONFIG_EXT_REFS // NOTE(zoeliu): We have two layers of mapping (1) from the per-frame // reference to the reference frame buffer virtual index; and then (2) from // the virtual index to the reference frame buffer physical index: @@ -3905,15 +3863,6 @@ static void update_reference_frames(AV1_COMP *cpi) { sizeof(cpi->interp_filter_selected[BWDREF_FRAME])); } } -#else // !CONFIG_EXT_REFS - ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->lst_fb_idx], - cm->new_fb_idx); - if (!cpi->rc.is_src_frame_alt_ref) { - memcpy(cpi->interp_filter_selected[LAST_FRAME], - cpi->interp_filter_selected[0], - sizeof(cpi->interp_filter_selected[0])); - } -#endif // CONFIG_EXT_REFS } #if DUMP_REF_FRAME_IMAGES == 1 @@ -3934,17 +3883,8 @@ static void scale_references(AV1_COMP *cpi) { AV1_COMMON *cm = &cpi->common; MV_REFERENCE_FRAME ref_frame; const AOM_REFFRAME ref_mask[INTER_REFS_PER_FRAME] = { - AOM_LAST_FLAG, -#if CONFIG_EXT_REFS - AOM_LAST2_FLAG, - AOM_LAST3_FLAG, -#endif // CONFIG_EXT_REFS - AOM_GOLD_FLAG, -#if CONFIG_EXT_REFS - AOM_BWD_FLAG, - AOM_ALT2_FLAG, -#endif // CONFIG_EXT_REFS - AOM_ALT_FLAG + AOM_LAST_FLAG, AOM_LAST2_FLAG, AOM_LAST3_FLAG, AOM_GOLD_FLAG, + AOM_BWD_FLAG, AOM_ALT2_FLAG, AOM_ALT_FLAG }; for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) { @@ -4029,16 +3969,11 @@ static void release_scaled_references(AV1_COMP *cpi) { // if reference will be updated, or if scaled reference has same resolution. int refresh[INTER_REFS_PER_FRAME]; refresh[0] = (cpi->refresh_last_frame) ? 1 : 0; -#if CONFIG_EXT_REFS refresh[1] = refresh[2] = 0; refresh[3] = (cpi->refresh_golden_frame) ? 1 : 0; refresh[4] = (cpi->refresh_bwd_ref_frame) ? 1 : 0; refresh[5] = (cpi->refresh_alt2_ref_frame) ? 1 : 0; refresh[6] = (cpi->refresh_alt_ref_frame) ? 1 : 0; -#else // !CONFIG_EXT_REFS - refresh[1] = (cpi->refresh_golden_frame) ? 1 : 0; - refresh[2] = (cpi->refresh_alt_ref_frame) ? 1 : 0; -#endif // CONFIG_EXT_REFS for (i = LAST_FRAME; i <= ALTREF_FRAME; ++i) { const int idx = cpi->scaled_ref_idx[i - 1]; RefCntBuffer *const buf = @@ -5099,7 +5034,6 @@ static void encode_with_recode_loop(AV1_COMP *cpi, size_t *size, static int get_ref_frame_flags(const AV1_COMP *cpi) { const int *const map = cpi->common.ref_frame_map; -#if CONFIG_EXT_REFS const int last2_is_last = map[cpi->lst_fb_idxes[1]] == map[cpi->lst_fb_idxes[0]]; const int last3_is_last = @@ -5137,11 +5071,6 @@ static int get_ref_frame_flags(const AV1_COMP *cpi) { const int gld_is_alt = map[cpi->gld_fb_idx] == map[cpi->alt_fb_idx]; const int bwd_is_alt = map[cpi->bwd_fb_idx] == map[cpi->alt_fb_idx]; const int alt2_is_alt = map[cpi->alt2_fb_idx] == map[cpi->alt_fb_idx]; -#else // !CONFIG_EXT_REFS - const int gld_is_last = map[cpi->gld_fb_idx] == map[cpi->lst_fb_idx]; - const int gld_is_alt = map[cpi->gld_fb_idx] == map[cpi->alt_fb_idx]; - const int alt_is_last = map[cpi->alt_fb_idx] == map[cpi->lst_fb_idx]; -#endif // CONFIG_EXT_REFS int flags = AOM_REFFRAME_ALL; @@ -5151,7 +5080,6 @@ static int get_ref_frame_flags(const AV1_COMP *cpi) { if (alt_is_last) flags &= ~AOM_ALT_FLAG; -#if CONFIG_EXT_REFS if (last2_is_last || last2_is_alt) flags &= ~AOM_LAST2_FLAG; if (last3_is_last || last3_is_last2 || last3_is_alt) flags &= ~AOM_LAST3_FLAG; @@ -5173,7 +5101,6 @@ static int get_ref_frame_flags(const AV1_COMP *cpi) { alt2_is_bwd || alt2_is_alt) && (flags & AOM_ALT2_FLAG)) flags &= ~AOM_ALT2_FLAG; -#endif // CONFIG_EXT_REFS return flags; } @@ -5199,30 +5126,16 @@ static void set_ext_overrides(AV1_COMP *cpi) { static void set_arf_sign_bias(AV1_COMP *cpi) { AV1_COMMON *const cm = &cpi->common; int arf_sign_bias; -#if CONFIG_EXT_REFS const GF_GROUP *const gf_group = &cpi->twopass.gf_group; // The arf_sign_bias will be one for internal ARFs' arf_sign_bias = cpi->rc.source_alt_ref_active && (!cpi->refresh_alt_ref_frame || gf_group->update_type[gf_group->index] == INTNL_ARF_UPDATE); -#else // !CONFIG_EXT_REFS - if ((cpi->oxcf.pass == 2) && cpi->multi_arf_allowed) { - const GF_GROUP *const gf_group = &cpi->twopass.gf_group; - arf_sign_bias = cpi->rc.source_alt_ref_active && - (!cpi->refresh_alt_ref_frame || - (gf_group->rf_level[gf_group->index] == GF_ARF_LOW)); - } else { - arf_sign_bias = - (cpi->rc.source_alt_ref_active && !cpi->refresh_alt_ref_frame); - } -#endif // CONFIG_EXT_REFS cm->ref_frame_sign_bias[ALTREF_FRAME] = arf_sign_bias; -#if CONFIG_EXT_REFS cm->ref_frame_sign_bias[BWDREF_FRAME] = cm->ref_frame_sign_bias[ALTREF_FRAME]; cm->ref_frame_sign_bias[ALTREF2_FRAME] = cm->ref_frame_sign_bias[ALTREF_FRAME]; -#endif // CONFIG_EXT_REFS } #endif // !CONFIG_FRAME_SIGN_BIAS @@ -5233,12 +5146,8 @@ static int setup_interp_filter_search_mask(AV1_COMP *cpi) { int mask = 0; int arf_idx = ALTREF_FRAME; -#if CONFIG_EXT_REFS if (cpi->common.last_frame_type == KEY_FRAME || cpi->refresh_alt_ref_frame || cpi->refresh_alt2_ref_frame) -#else // !CONFIG_EXT_REFS - if (cpi->common.last_frame_type == KEY_FRAME || cpi->refresh_alt_ref_frame) -#endif // CONFIG_EXT_REFS return mask; for (ref = LAST_FRAME; ref <= ALTREF_FRAME; ++ref) @@ -5248,25 +5157,21 @@ static int setup_interp_filter_search_mask(AV1_COMP *cpi) { for (ifilter = EIGHTTAP_REGULAR; ifilter < SWITCHABLE_FILTERS; ++ifilter) { if ((ref_total[LAST_FRAME] && cpi->interp_filter_selected[LAST_FRAME][ifilter] == 0) && -#if CONFIG_EXT_REFS (ref_total[LAST2_FRAME] == 0 || cpi->interp_filter_selected[LAST2_FRAME][ifilter] * 50 < ref_total[LAST2_FRAME]) && (ref_total[LAST3_FRAME] == 0 || cpi->interp_filter_selected[LAST3_FRAME][ifilter] * 50 < ref_total[LAST3_FRAME]) && -#endif // CONFIG_EXT_REFS (ref_total[GOLDEN_FRAME] == 0 || cpi->interp_filter_selected[GOLDEN_FRAME][ifilter] * 50 < ref_total[GOLDEN_FRAME]) && -#if CONFIG_EXT_REFS (ref_total[BWDREF_FRAME] == 0 || cpi->interp_filter_selected[BWDREF_FRAME][ifilter] * 50 < ref_total[BWDREF_FRAME]) && (ref_total[ALTREF2_FRAME] == 0 || cpi->interp_filter_selected[ALTREF2_FRAME][ifilter] * 50 < ref_total[ALTREF2_FRAME]) && -#endif // CONFIG_EXT_REFS (ref_total[ALTREF_FRAME] == 0 || cpi->interp_filter_selected[arf_idx][ifilter] * 50 < ref_total[ALTREF_FRAME])) @@ -5390,7 +5295,6 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, !cpi->oxcf.disable_tempmv && !cm->cur_frame->intra_only; #endif -#if CONFIG_EXT_REFS // NOTE: // (1) Move the setup of the ref_frame_flags upfront as it would be // determined by the current frame properties; @@ -5474,7 +5378,6 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, aom_free(cdf_ptrs); return; } -#endif // CONFIG_EXT_REFS // Set default state for segment based loop filter update flags. cm->lf.mode_ref_delta_update = 0; @@ -5634,10 +5537,8 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, cm->frame_to_show->render_width = cm->render_width; cm->frame_to_show->render_height = cm->render_height; -#if CONFIG_EXT_REFS -// TODO(zoeliu): For non-ref frames, loop filtering may need to be turned -// off. -#endif // CONFIG_EXT_REFS + // TODO(zoeliu): For non-ref frames, loop filtering may need to be turned + // off. // Pick the loop filter level for the frame. loopfilter_frame(cpi, cm); @@ -5729,16 +5630,10 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, else cpi->frame_flags &= ~FRAMEFLAGS_ALTREF; -#if CONFIG_EXT_REFS if (cpi->refresh_bwd_ref_frame == 1) cpi->frame_flags |= FRAMEFLAGS_BWDREF; else cpi->frame_flags &= ~FRAMEFLAGS_BWDREF; -#endif // CONFIG_EXT_REFS - -#if !CONFIG_EXT_REFS - cpi->ref_frame_flags = get_ref_frame_flags(cpi); -#endif // !CONFIG_EXT_REFS cm->last_frame_type = cm->frame_type; @@ -5777,20 +5672,16 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, cm->lf.mode_ref_delta_update = 0; if (cm->show_frame) { -#if CONFIG_EXT_REFS -// TODO(zoeliu): We may only swamp mi and prev_mi for those frames that are -// being used as reference. -#endif // CONFIG_EXT_REFS + // TODO(zoeliu): We may only swamp mi and prev_mi for those frames that are + // being used as reference. swap_mi_and_prev_mi(cm); // Don't increment frame counters if this was an altref buffer // update not a real frame ++cm->current_video_frame; } -#if CONFIG_EXT_REFS // NOTE: Shall not refer to any frame not used as reference. if (cm->is_reference_frame) { -#endif // CONFIG_EXT_REFS cm->prev_frame = cm->cur_frame; // keep track of the last coded dimensions cm->last_width = cm->width; @@ -5798,9 +5689,7 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, // reset to normal state now that we are done. cm->last_show_frame = cm->show_frame; -#if CONFIG_EXT_REFS } -#endif // CONFIG_EXT_REFS aom_free(tile_ctxs); aom_free(cdf_ptrs); @@ -5848,7 +5737,6 @@ static void Pass2Encode(AV1_COMP *cpi, size_t *size, uint8_t *dest, unsigned int *frame_flags) { encode_frame_to_data_rate(cpi, size, dest, 0, frame_flags); -#if CONFIG_EXT_REFS // Do not do post-encoding update for those frames that do not have a spot in // a gf group, but note that an OVERLAY frame always has a spot in a gf group, // even when show_existing_frame is used. @@ -5856,9 +5744,6 @@ static void Pass2Encode(AV1_COMP *cpi, size_t *size, uint8_t *dest, av1_twopass_postencode_update(cpi); } check_show_existing_frame(cpi); -#else - av1_twopass_postencode_update(cpi); -#endif // CONFIG_EXT_REFS } #endif @@ -5911,13 +5796,10 @@ static int frame_is_reference(const AV1_COMP *cpi) { const AV1_COMMON *cm = &cpi->common; return cm->frame_type == KEY_FRAME || cpi->refresh_last_frame || - cpi->refresh_golden_frame || -#if CONFIG_EXT_REFS - cpi->refresh_bwd_ref_frame || cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS - cpi->refresh_alt_ref_frame || !cm->error_resilient_mode || - cm->lf.mode_ref_delta_update || cm->seg.update_map || - cm->seg.update_data; + cpi->refresh_golden_frame || cpi->refresh_bwd_ref_frame || + cpi->refresh_alt2_ref_frame || cpi->refresh_alt_ref_frame || + !cm->error_resilient_mode || cm->lf.mode_ref_delta_update || + cm->seg.update_map || cm->seg.update_data; } static void adjust_frame_rate(AV1_COMP *cpi, @@ -5977,7 +5859,6 @@ static int get_arf_src_index(AV1_COMP *cpi) { return arf_src_index; } -#if CONFIG_EXT_REFS static int get_brf_src_index(AV1_COMP *cpi) { int brf_src_index = 0; const GF_GROUP *const gf_group = &cpi->twopass.gf_group; @@ -6011,7 +5892,6 @@ static int get_arf2_src_index(AV1_COMP *cpi) { } return arf2_src_index; } -#endif // CONFIG_EXT_REFS static void check_src_altref(AV1_COMP *cpi, const struct lookahead_entry *source) { @@ -6023,14 +5903,10 @@ static void check_src_altref(AV1_COMP *cpi, if (cpi->oxcf.pass == 2) { const GF_GROUP *const gf_group = &cpi->twopass.gf_group; rc->is_src_frame_alt_ref = -#if CONFIG_EXT_REFS (gf_group->update_type[gf_group->index] == INTNL_OVERLAY_UPDATE) || -#endif // CONFIG_EXT_REFS (gf_group->update_type[gf_group->index] == OVERLAY_UPDATE); -#if CONFIG_EXT_REFS rc->is_src_frame_ext_arf = gf_group->update_type[gf_group->index] == INTNL_OVERLAY_UPDATE; -#endif // CONFIG_EXT_REFS } else { rc->is_src_frame_alt_ref = cpi->alt_ref_source && (source == cpi->alt_ref_source); @@ -6040,20 +5916,16 @@ static void check_src_altref(AV1_COMP *cpi, // Current frame is an ARF overlay frame. cpi->alt_ref_source = NULL; -#if CONFIG_EXT_REFS if (rc->is_src_frame_ext_arf && !cpi->common.show_existing_frame) { // For INTNL_OVERLAY, when show_existing_frame == 0, they do need to // refresh the LAST_FRAME, i.e. LAST3 gets retired, LAST2 becomes LAST3, // LAST becomes LAST2, and INTNL_OVERLAY becomes LAST. cpi->refresh_last_frame = 1; } else { -#endif // CONFIG_EXT_REFS // Don't refresh the last buffer for an ARF overlay frame. It will // become the GF so preserve last as an alternative prediction option. cpi->refresh_last_frame = 0; -#if CONFIG_EXT_REFS } -#endif // CONFIG_EXT_REFS } } @@ -6305,9 +6177,7 @@ int av1_get_compressed_data(AV1_COMP *cpi, unsigned int *frame_flags, struct lookahead_entry *last_source = NULL; struct lookahead_entry *source = NULL; int arf_src_index; -#if CONFIG_EXT_REFS int brf_src_index; -#endif // CONFIG_EXT_REFS int i; #if CONFIG_XIPHRC @@ -6347,13 +6217,11 @@ int av1_get_compressed_data(AV1_COMP *cpi, unsigned int *frame_flags, cpi->refresh_last_frame = 1; cpi->refresh_golden_frame = 0; -#if CONFIG_EXT_REFS cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS cpi->refresh_alt_ref_frame = 0; -#if CONFIG_EXT_REFS && !CONFIG_XIPHRC +#if !CONFIG_XIPHRC if (oxcf->pass == 2 && cm->show_existing_frame) { // Manage the source buffer and flush out the source frame that has been // coded already; Also get prepared for PSNR calculation if needed. @@ -6402,7 +6270,7 @@ int av1_get_compressed_data(AV1_COMP *cpi, unsigned int *frame_flags, cm->show_existing_frame = 0; return 0; } -#endif // CONFIG_EXT_REFS && !CONFIG_XIPHRC +#endif // !CONFIG_XIPHRC // Should we encode an arf frame. arf_src_index = get_arf_src_index(cpi); @@ -6447,16 +6315,13 @@ int av1_get_compressed_data(AV1_COMP *cpi, unsigned int *frame_flags, cpi->refresh_alt_ref_frame = 1; cpi->refresh_last_frame = 0; cpi->refresh_golden_frame = 0; -#if CONFIG_EXT_REFS cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS rc->is_src_frame_alt_ref = 0; } rc->source_alt_ref_pending = 0; } -#if CONFIG_EXT_REFS // Should we encode an arf2 frame. arf_src_index = get_arf2_src_index(cpi); if (arf_src_index) { @@ -6520,7 +6385,6 @@ int av1_get_compressed_data(AV1_COMP *cpi, unsigned int *frame_flags, rc->is_bwd_ref_frame = 1; } } -#endif // CONFIG_EXT_REFS if (!source) { // Get last frame source. @@ -6586,16 +6450,6 @@ int av1_get_compressed_data(AV1_COMP *cpi, unsigned int *frame_flags, #if CONFIG_HIGHBITDEPTH && CONFIG_GLOBAL_MOTION cm->cur_frame->buf.buf_8bit_valid = 0; #endif -#if !CONFIG_EXT_REFS - if (cpi->multi_arf_allowed) { - if (cm->frame_type == KEY_FRAME) { - init_buffer_indices(cpi); - } else if (oxcf->pass == 2) { - const GF_GROUP *const gf_group = &cpi->twopass.gf_group; - cpi->alt_fb_idx = gf_group->arf_ref_idx[gf_group->index]; - } - } -#endif // !CONFIG_EXT_REFS // Start with a 0 size frame. *size = 0; @@ -6789,10 +6643,8 @@ void av1_apply_encoding_flags(AV1_COMP *cpi, aom_enc_frame_flags_t flags) { if (flags & AOM_EFLAG_NO_REF_LAST) { ref ^= AOM_LAST_FLAG; -#if CONFIG_EXT_REFS ref ^= AOM_LAST2_FLAG; ref ^= AOM_LAST3_FLAG; -#endif // CONFIG_EXT_REFS } if (flags & AOM_EFLAG_NO_REF_GF) ref ^= AOM_GOLD_FLAG; @@ -6809,10 +6661,8 @@ void av1_apply_encoding_flags(AV1_COMP *cpi, aom_enc_frame_flags_t flags) { if (flags & AOM_EFLAG_NO_UPD_LAST) { upd ^= AOM_LAST_FLAG; -#if CONFIG_EXT_REFS upd ^= AOM_LAST2_FLAG; upd ^= AOM_LAST3_FLAG; -#endif // CONFIG_EXT_REFS } if (flags & AOM_EFLAG_NO_UPD_GF) upd ^= AOM_GOLD_FLAG; diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h index 426867e2e0..f95cd88d72 100644 --- a/av1/encoder/encoder.h +++ b/av1/encoder/encoder.h @@ -76,12 +76,10 @@ typedef enum { OVERLAY_FRAME = 2, // golden frame GLD_FRAME = 3, -#if CONFIG_EXT_REFS // backward reference frame BRF_FRAME = 4, // extra alternate reference frame EXT_ARF_FRAME = 5 -#endif } FRAME_CONTEXT_INDEX; #endif @@ -101,13 +99,9 @@ typedef enum { typedef enum { FRAMEFLAGS_KEY = 1 << 0, FRAMEFLAGS_GOLDEN = 1 << 1, -#if CONFIG_EXT_REFS FRAMEFLAGS_BWDREF = 1 << 2, // TODO(zoeliu): To determine whether a frame flag is needed for ALTREF2_FRAME FRAMEFLAGS_ALTREF = 1 << 3, -#else // !CONFIG_EXT_REFS - FRAMEFLAGS_ALTREF = 1 << 2, -#endif // CONFIG_EXT_REFS } FRAMETYPE_FLAGS; typedef enum { @@ -241,9 +235,7 @@ typedef struct AV1EncoderConfig { // ---------------------------------------------------------------- int enable_auto_arf; -#if CONFIG_EXT_REFS int enable_auto_brf; // (b)ackward (r)ef (f)rame -#endif // CONFIG_EXT_REFS /* Bitfield defining the error resiliency features to enable. * Can provide decodable frames after losses in previous @@ -422,30 +414,20 @@ typedef struct AV1_COMP { #endif int scaled_ref_idx[TOTAL_REFS_PER_FRAME]; -#if CONFIG_EXT_REFS int lst_fb_idxes[LAST_REF_FRAMES]; -#else - int lst_fb_idx; -#endif // CONFIG_EXT_REFS int gld_fb_idx; -#if CONFIG_EXT_REFS int bwd_fb_idx; // BWDREF_FRAME int alt2_fb_idx; // ALTREF2_FRAME -#endif // CONFIG_EXT_REFS int alt_fb_idx; -#if CONFIG_EXT_REFS int ext_fb_idx; // extra ref frame buffer index int refresh_fb_idx; // ref frame buffer index to refresh -#endif // CONFIG_EXT_REFS int last_show_frame_buf_idx; // last show frame buffer index int refresh_last_frame; int refresh_golden_frame; -#if CONFIG_EXT_REFS int refresh_bwd_ref_frame; int refresh_alt2_ref_frame; -#endif // CONFIG_EXT_REFS int refresh_alt_ref_frame; int ext_refresh_frame_flags_pending; @@ -607,7 +589,6 @@ typedef struct AV1_COMP { #if CONFIG_ANS struct BufAnsCoder buf_ans; #endif -#if CONFIG_EXT_REFS int refresh_frame_mask; int existing_fb_idx_to_show; int is_arf_filter_off[MAX_EXT_ARFS + 1]; @@ -615,7 +596,6 @@ typedef struct AV1_COMP { int arf_map[MAX_EXT_ARFS + 1]; int arf_pos_in_gf[MAX_EXT_ARFS + 1]; int arf_pos_for_ovrly[MAX_EXT_ARFS + 1]; -#endif // CONFIG_EXT_REFS #if CONFIG_GLOBAL_MOTION int global_motion_search_done; #endif @@ -623,10 +603,8 @@ typedef struct AV1_COMP { tran_low_t *tcoeff_buf[MAX_MB_PLANE]; #endif -#if CONFIG_EXT_REFS int extra_arf_allowed; int bwd_ref_allowed; -#endif // CONFIG_EXT_REFS #if CONFIG_BGSPRITE int bgsprite_allowed; @@ -681,20 +659,14 @@ static INLINE int frame_is_kf_gf_arf(const AV1_COMP *cpi) { static INLINE int get_ref_frame_map_idx(const AV1_COMP *cpi, MV_REFERENCE_FRAME ref_frame) { -#if CONFIG_EXT_REFS if (ref_frame >= LAST_FRAME && ref_frame <= LAST3_FRAME) return cpi->lst_fb_idxes[ref_frame - 1]; -#else - if (ref_frame == LAST_FRAME) return cpi->lst_fb_idx; -#endif // CONFIG_EXT_REFS else if (ref_frame == GOLDEN_FRAME) return cpi->gld_fb_idx; -#if CONFIG_EXT_REFS else if (ref_frame == BWDREF_FRAME) return cpi->bwd_fb_idx; else if (ref_frame == ALTREF2_FRAME) return cpi->alt2_fb_idx; -#endif // CONFIG_EXT_REFS else return cpi->alt_fb_idx; } @@ -725,7 +697,6 @@ static INLINE YV12_BUFFER_CONFIG *get_ref_frame_buffer( : NULL; } -#if CONFIG_EXT_REFS || CONFIG_TEMPMV_SIGNALING static INLINE int enc_is_ref_frame_buf(AV1_COMP *cpi, RefCntBuffer *frame_buf) { MV_REFERENCE_FRAME ref_frame; AV1_COMMON *const cm = &cpi->common; @@ -736,7 +707,6 @@ static INLINE int enc_is_ref_frame_buf(AV1_COMP *cpi, RefCntBuffer *frame_buf) { } return (ref_frame <= ALTREF_FRAME); } -#endif // CONFIG_EXT_REFS static INLINE unsigned int get_token_alloc(int mb_rows, int mb_cols) { // We assume 3 planes all at full resolution. We assume up to 1 token per diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c index 0e718b62f2..9525ad329a 100644 --- a/av1/encoder/firstpass.c +++ b/av1/encoder/firstpass.c @@ -459,7 +459,6 @@ static void set_first_pass_params(AV1_COMP *cpi) { cpi->rc.frames_to_key = INT_MAX; } -#if CONFIG_EXT_REFS static double raw_motion_error_stdev(int *raw_motion_err_list, int raw_motion_err_counts) { int64_t sum_raw_err = 0; @@ -482,7 +481,6 @@ static double raw_motion_error_stdev(int *raw_motion_err_list, raw_err_stdev = sqrt(raw_err_stdev / raw_motion_err_counts); return raw_err_stdev; } -#endif // CONFIG_EXT_REFS #define UL_INTRA_THRESH 50 #define INVALID_ROW -1 @@ -534,13 +532,11 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { od_adapt_ctx pvq_context; #endif -#if CONFIG_EXT_REFS int *raw_motion_err_list; int raw_motion_err_counts = 0; CHECK_MEM_ERROR( cm, raw_motion_err_list, aom_calloc(cm->mb_rows * cm->mb_cols, sizeof(*raw_motion_err_list))); -#endif // CONFIG_EXT_REFS // First pass code requires valid last and new frame buffers. assert(new_yv12 != NULL); assert(frame_is_intra_only(cm) || (lst_yv12 != NULL)); @@ -1006,9 +1002,7 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { } } } -#if CONFIG_EXT_REFS raw_motion_err_list[raw_motion_err_counts++] = raw_motion_error; -#endif // CONFIG_EXT_REFS } else { sr_coded_error += (int64_t)this_error; } @@ -1031,11 +1025,9 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { aom_clear_system_state(); } -#if CONFIG_EXT_REFS const double raw_err_stdev = raw_motion_error_stdev(raw_motion_err_list, raw_motion_err_counts); aom_free(raw_motion_err_list); -#endif // CONFIG_EXT_REFS #if CONFIG_PVQ #if !CONFIG_ANS @@ -1090,9 +1082,7 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { fps.intra_skip_pct = (double)intra_skip_count / num_mbs; fps.inactive_zone_rows = (double)image_data_start_row; fps.inactive_zone_cols = (double)0; // TODO(paulwilkins): fix -#if CONFIG_EXT_REFS fps.raw_error_stdev = raw_err_stdev; -#endif // CONFIG_EXT_REFS if (mvcount > 0) { fps.MVr = (double)sum_mvr / mvcount; @@ -1144,13 +1134,8 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { ((twopass->this_frame_stats.intra_error / DOUBLE_DIVIDE_CHECK(twopass->this_frame_stats.coded_error)) > 2.0))) { if (gld_yv12 != NULL) { -#if CONFIG_EXT_REFS ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->gld_fb_idx], cm->ref_frame_map[cpi->lst_fb_idxes[LAST_FRAME - LAST_FRAME]]); -#else - ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->gld_fb_idx], - cm->ref_frame_map[cpi->lst_fb_idx]); -#endif // CONFIG_EXT_REFS } twopass->sr_update_lag = 1; } else { @@ -1159,26 +1144,16 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { aom_extend_frame_borders(new_yv12); -// The frame we just compressed now becomes the last frame. -#if CONFIG_EXT_REFS + // The frame we just compressed now becomes the last frame. ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->lst_fb_idxes[LAST_FRAME - LAST_FRAME]], cm->new_fb_idx); -#else - ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->lst_fb_idx], - cm->new_fb_idx); -#endif // CONFIG_EXT_REFS // Special case for the first frame. Copy into the GF buffer as a second // reference. if (cm->current_video_frame == 0 && cpi->gld_fb_idx != INVALID_IDX) { -#if CONFIG_EXT_REFS ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->gld_fb_idx], cm->ref_frame_map[cpi->lst_fb_idxes[LAST_FRAME - LAST_FRAME]]); -#else - ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[cpi->gld_fb_idx], - cm->ref_frame_map[cpi->lst_fb_idx]); -#endif // CONFIG_EXT_REFS } // Use this to see what the first pass reconstruction looks like. @@ -1662,21 +1637,6 @@ static int calculate_boost_bits(int frame_count, int boost, 0); } -#if !CONFIG_EXT_REFS -// Current limit on maximum number of active arfs in a GF/ARF group. -#define MAX_ACTIVE_ARFS 2 -#define ARF_SLOT1 2 -#define ARF_SLOT2 3 -// This function indirects the choice of buffers for arfs. -// At the moment the values are fixed but this may change as part of -// the integration process with other codec features that swap buffers around. -static void get_arf_buffer_indices(unsigned char *arf_buffer_indices) { - arf_buffer_indices[0] = ARF_SLOT1; - arf_buffer_indices[1] = ARF_SLOT2; -} -#endif // !CONFIG_EXT_REFS - -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER // === GF Group of 16 === #define GF_INTERVAL_16 16 @@ -2247,19 +2207,16 @@ static void define_gf_group_structure_16(AV1_COMP *cpi) { } } #endif // USE_GF16_MULTI_LAYER -#endif // CONFIG_EXT_REFS static void define_gf_group_structure(AV1_COMP *cpi) { RATE_CONTROL *const rc = &cpi->rc; -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER if (rc->baseline_gf_interval == 16) { define_gf_group_structure_16(cpi); return; } #endif // USE_GF16_MULTI_LAYER -#endif // CONFIG_EXT_REFS TWO_PASS *const twopass = &cpi->twopass; GF_GROUP *const gf_group = &twopass->gf_group; @@ -2267,7 +2224,6 @@ static void define_gf_group_structure(AV1_COMP *cpi) { int frame_index = 0; const int key_frame = cpi->common.frame_type == KEY_FRAME; -#if CONFIG_EXT_REFS // The use of bi-predictive frames are only enabled when following 3 // conditions are met: // (1) ALTREF is enabled; @@ -2288,14 +2244,6 @@ static void define_gf_group_structure(AV1_COMP *cpi) { int subgroup_interval[MAX_EXT_ARFS + 1]; int is_sg_bipred_enabled = is_bipred_enabled; int accumulative_subgroup_interval = 0; -#else - int mid_frame_idx; - unsigned char arf_buffer_indices[MAX_ACTIVE_ARFS]; -#endif // CONFIG_EXT_REFS - -#if !CONFIG_EXT_REFS - get_arf_buffer_indices(arf_buffer_indices); -#endif // !CONFIG_EXT_REFS // For key frames the frame target rate is already set and it // is also the golden frame. @@ -2308,25 +2256,16 @@ static void define_gf_group_structure(AV1_COMP *cpi) { gf_group->update_type[frame_index] = GF_UPDATE; gf_group->rf_level[frame_index] = GF_ARF_STD; } -#if CONFIG_EXT_REFS gf_group->arf_update_idx[frame_index] = 0; gf_group->arf_ref_idx[frame_index] = 0; -#else - gf_group->arf_update_idx[frame_index] = arf_buffer_indices[0]; - gf_group->arf_ref_idx[frame_index] = arf_buffer_indices[0]; -#endif // CONFIG_EXT_REFS } -#if CONFIG_EXT_REFS gf_group->bidir_pred_enabled[frame_index] = 0; gf_group->brf_src_offset[frame_index] = 0; -#endif // CONFIG_EXT_REFS frame_index++; -#if CONFIG_EXT_REFS bipred_frame_index++; -#endif // CONFIG_EXT_REFS // === [frame_index == 1] === if (rc->source_alt_ref_pending) { @@ -2335,21 +2274,13 @@ static void define_gf_group_structure(AV1_COMP *cpi) { gf_group->arf_src_offset[frame_index] = (unsigned char)(rc->baseline_gf_interval - 1); -#if CONFIG_EXT_REFS gf_group->arf_update_idx[frame_index] = 0; gf_group->arf_ref_idx[frame_index] = 0; gf_group->bidir_pred_enabled[frame_index] = 0; gf_group->brf_src_offset[frame_index] = 0; -// NOTE: "bidir_pred_frame_index" stays unchanged for ARF_UPDATE frames. -#else - gf_group->arf_update_idx[frame_index] = arf_buffer_indices[0]; - gf_group->arf_ref_idx[frame_index] = - arf_buffer_indices[cpi->multi_arf_last_grp_enabled && - rc->source_alt_ref_active]; -#endif // CONFIG_EXT_REFS + // NOTE: "bidir_pred_frame_index" stays unchanged for ARF_UPDATE frames. -#if CONFIG_EXT_REFS // Work out the ARFs' positions in this gf group // NOTE(weitinglin): ALT_REFs' are indexed inversely, but coded in display // order (except for the original ARF). In the example of three ALT_REF's, @@ -2370,11 +2301,9 @@ static void define_gf_group_structure(AV1_COMP *cpi) { subgroup_interval[cpi->num_extra_arfs] = cpi->arf_pos_for_ovrly[cpi->num_extra_arfs] - frame_index - (cpi->num_extra_arfs == 0 ? 1 : 2); -#endif // CONFIG_EXT_REFS ++frame_index; -#if CONFIG_EXT_REFS // Insert an extra ARF // === [frame_index == 2] === if (cpi->num_extra_arfs) { @@ -2387,43 +2316,12 @@ static void define_gf_group_structure(AV1_COMP *cpi) { ++frame_index; } accumulative_subgroup_interval += subgroup_interval[cpi->num_extra_arfs]; -#else // !CONFIG_EXT_ARFS - if (cpi->multi_arf_enabled) { - // Set aside a slot for a level 1 arf. - gf_group->update_type[frame_index] = ARF_UPDATE; - gf_group->rf_level[frame_index] = GF_ARF_LOW; - gf_group->arf_src_offset[frame_index] = - (unsigned char)((rc->baseline_gf_interval >> 1) - 1); - gf_group->arf_update_idx[frame_index] = arf_buffer_indices[1]; - gf_group->arf_ref_idx[frame_index] = arf_buffer_indices[0]; - ++frame_index; - } -#endif // CONFIG_EXT_ARFS } -#if !CONFIG_EXT_REFS - // Define middle frame - mid_frame_idx = frame_index + (rc->baseline_gf_interval >> 1) - 1; -#endif // !CONFIG_EXT_REFS - for (i = 0; i < rc->baseline_gf_interval - rc->source_alt_ref_pending; ++i) { -#if !CONFIG_EXT_REFS - int arf_idx = 0; - - if (rc->source_alt_ref_pending && cpi->multi_arf_enabled) { - if (frame_index <= mid_frame_idx) arf_idx = 1; - } -#endif // !CONFIG_EXT_REFS - -#if CONFIG_EXT_REFS gf_group->arf_update_idx[frame_index] = which_arf; gf_group->arf_ref_idx[frame_index] = which_arf; -#else - gf_group->arf_update_idx[frame_index] = arf_buffer_indices[arf_idx]; - gf_group->arf_ref_idx[frame_index] = arf_buffer_indices[arf_idx]; -#endif // CONFIG_EXT_REFS -#if CONFIG_EXT_REFS // If we are going to have ARFs, check whether we can have BWDREF in this // subgroup, and further, whether we can have ARF subgroup which contains // the BWDREF subgroup but contained within the GF group: @@ -2472,18 +2370,14 @@ static void define_gf_group_structure(AV1_COMP *cpi) { bipred_group_end = 1; } } else { -#endif // CONFIG_EXT_REFS gf_group->update_type[frame_index] = LF_UPDATE; gf_group->rf_level[frame_index] = INTER_NORMAL; -#if CONFIG_EXT_REFS gf_group->bidir_pred_enabled[frame_index] = 0; gf_group->brf_src_offset[frame_index] = 0; } -#endif // CONFIG_EXT_REFS ++frame_index; -#if CONFIG_EXT_REFS // Check if we need to update the ARF. if (is_sg_bipred_enabled && cpi->num_extra_arfs && which_arf > 0 && frame_index > cpi->arf_pos_for_ovrly[which_arf]) { @@ -2503,25 +2397,19 @@ static void define_gf_group_structure(AV1_COMP *cpi) { ++frame_index; } } -#endif // CONFIG_EXT_REFS } -// NOTE: We need to configure the frame at the end of the sequence + 1 that will -// be the start frame for the next group. Otherwise prior to the call to -// av1_rc_get_second_pass_params() the data will be undefined. -#if CONFIG_EXT_REFS + // NOTE: We need to configure the frame at the end of the sequence + 1 that + // will + // be the start frame for the next group. Otherwise prior to the call to + // av1_rc_get_second_pass_params() the data will be undefined. gf_group->arf_update_idx[frame_index] = 0; gf_group->arf_ref_idx[frame_index] = 0; -#else - gf_group->arf_update_idx[frame_index] = arf_buffer_indices[0]; - gf_group->arf_ref_idx[frame_index] = arf_buffer_indices[0]; -#endif // CONFIG_EXT_REFS if (rc->source_alt_ref_pending) { gf_group->update_type[frame_index] = OVERLAY_UPDATE; gf_group->rf_level[frame_index] = INTER_NORMAL; -#if CONFIG_EXT_REFS cpi->arf_pos_in_gf[0] = 1; if (cpi->num_extra_arfs) { // Overwrite the update_type for extra-ARF's corresponding internal @@ -2534,21 +2422,13 @@ static void define_gf_group_structure(AV1_COMP *cpi) { gf_group->rf_level[cpi->arf_pos_for_ovrly[i]] = INTER_NORMAL; } } -#else - // Final setup for second arf and its overlay. - if (cpi->multi_arf_enabled) { - gf_group->update_type[mid_frame_idx] = OVERLAY_UPDATE; - } -#endif // CONFIG_EXT_REFS } else { gf_group->update_type[frame_index] = GF_UPDATE; gf_group->rf_level[frame_index] = GF_ARF_STD; } -#if CONFIG_EXT_REFS gf_group->bidir_pred_enabled[frame_index] = 0; gf_group->brf_src_offset[frame_index] = 0; -#endif // CONFIG_EXT_REFS } static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, @@ -2567,17 +2447,11 @@ static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, double modified_err = 0.0; double err_fraction; int mid_boost_bits = 0; -#if CONFIG_EXT_REFS int ext_arf_boost[MAX_EXT_ARFS]; -#else - int mid_frame_idx; -#endif // CONFIG_EXT_REFS define_gf_group_structure(cpi); -#if CONFIG_EXT_REFS av1_zero_array(ext_arf_boost, MAX_EXT_ARFS); -#endif // CONFIG_EXT_REFS key_frame = cpi->common.frame_type == KEY_FRAME; @@ -2607,24 +2481,14 @@ static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, ++frame_index; -#if CONFIG_EXT_REFS // Skip all the extra-ARF's right after ARF at the starting segment of // the current GF group. if (cpi->num_extra_arfs) { while (gf_group->update_type[frame_index] == INTNL_ARF_UPDATE) ++frame_index; } -#else // !CONFIG_EXT_ARFS - // Set aside a slot for a level 1 arf. - if (cpi->multi_arf_enabled) ++frame_index; -#endif // CONFIG_EXT_ARFS } -#if !CONFIG_EXT_REFS - // Define middle frame - mid_frame_idx = frame_index + (rc->baseline_gf_interval >> 1) - 1; -#endif // !CONFIG_EXT_REFS - // Allocate bits to the other frames in the group. for (i = 0; i < rc->baseline_gf_interval - rc->source_alt_ref_pending; ++i) { if (EOF == input_stats(twopass, &frame_stats)) break; @@ -2646,7 +2510,6 @@ static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, target_frame_size = clamp(target_frame_size, 0, AOMMIN(max_bits, (int)total_group_bits)); -#if CONFIG_EXT_REFS if (gf_group->update_type[frame_index] == BRF_UPDATE) { // Boost up the allocated bits on BWDREF_FRAME gf_group->bit_allocation[frame_index] = @@ -2662,28 +2525,22 @@ static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, } else { assert(gf_group->update_type[frame_index] == LF_UPDATE || gf_group->update_type[frame_index] == INTNL_OVERLAY_UPDATE); -#endif // CONFIG_EXT_REFS gf_group->bit_allocation[frame_index] = target_frame_size; -#if CONFIG_EXT_REFS } -#endif // CONFIG_EXT_REFS ++frame_index; -#if CONFIG_EXT_REFS // Skip all the extra-ARF's. if (cpi->num_extra_arfs) { while (gf_group->update_type[frame_index] == INTNL_ARF_UPDATE) ++frame_index; } -#endif // CONFIG_EXT_REFS } // NOTE: We need to configure the frame at the end of the sequence + 1 that // will be the start frame for the next group. Otherwise prior to the // call to av1_rc_get_second_pass_params() the data will be undefined. if (rc->source_alt_ref_pending) { -#if CONFIG_EXT_REFS if (cpi->num_extra_arfs) { // NOTE: For bit allocation, move the allocated bits associated with // INTNL_OVERLAY_UPDATE to the corresponding INTNL_ARF_UPDATE. @@ -2702,14 +2559,6 @@ static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, gf_group->bit_allocation[cpi->arf_pos_for_ovrly[i]] = 0; } } -#else - // Final setup for second arf and its overlay. - if (cpi->multi_arf_enabled) { - gf_group->bit_allocation[2] = - gf_group->bit_allocation[mid_frame_idx] + mid_boost_bits; - gf_group->bit_allocation[mid_frame_idx] = 0; - } -#endif // CONFIG_EXT_REFS } // Note whether multi-arf was enabled this group for next time. @@ -2761,10 +2610,8 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { const int is_key_frame = frame_is_intra_only(cm); const int arf_active_or_kf = is_key_frame || rc->source_alt_ref_active; -#if CONFIG_EXT_REFS cpi->extra_arf_allowed = 1; cpi->bwd_ref_allowed = 1; -#endif // CONFIG_EXT_REFS // Reset the GF group data structures unless this is a key // frame in which case it will already have been done. @@ -2826,11 +2673,9 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { } } -#if CONFIG_EXT_REFS || CONFIG_BGSPRITE double avg_sr_coded_error = 0; double avg_raw_err_stdev = 0; int non_zero_stdev_count = 0; -#endif // CONFIG_EXT_REFS || CONFIG_BGSPRITE #if CONFIG_BGSPRITE double avg_pcnt_second_ref = 0; int non_zero_pcnt_second_ref_count = 0; @@ -2859,14 +2704,12 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { accumulate_frame_motion_stats( &next_frame, &this_frame_mv_in_out, &mv_in_out_accumulator, &abs_mv_in_out_accumulator, &mv_ratio_accumulator); -#if CONFIG_EXT_REFS || CONFIG_BGSPRITE // sum up the metric values of current gf group avg_sr_coded_error += next_frame.sr_coded_error; if (fabs(next_frame.raw_error_stdev) > 0.000001) { non_zero_stdev_count++; avg_raw_err_stdev += next_frame.raw_error_stdev; } -#endif // CONFIG_EXT_REFS || CONFIG_BGSPRITE #if CONFIG_BGSPRITE if (this_frame->pcnt_second_ref) { avg_pcnt_second_ref += this_frame->pcnt_second_ref; @@ -2912,18 +2755,14 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { (abs_mv_in_out_accumulator > 3.0) || (mv_in_out_accumulator < -2.0) || ((boost_score - old_boost_score) < BOOST_BREAKOUT)))) { -#if CONFIG_EXT_REFS // If GF group interval is < 12, we force it to be 8. Otherwise, // if it is >= 12, we keep it as is. // NOTE: 'i' is 1 more than the GF group interval candidate that is being // checked. if (i == (8 + 1) || i >= (12 + 1)) { -#endif // CONFIG_EXT_REFS boost_score = old_boost_score; break; -#if CONFIG_EXT_REFS } -#endif // CONFIG_EXT_REFS } *this_frame = next_frame; @@ -2934,12 +2773,10 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { // Was the group length constrained by the requirement for a new KF? rc->constrained_gf_group = (i >= rc->frames_to_key) ? 1 : 0; -#if CONFIG_EXT_REFS || CONFIG_BGSPRITE const int num_mbs = (cpi->oxcf.resize_mode != RESIZE_NONE) ? cpi->initial_mbs : cpi->common.MBs; assert(num_mbs > 0); if (i) avg_sr_coded_error /= i; -#endif // CONFIG_EXT_REFS || CONFIG_BGSPRITE // Should we use the alternate reference frame. if (allow_alt_ref && (i < cpi->oxcf.lag_in_frames) && @@ -2973,7 +2810,6 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { // Set the interval until the next gf. rc->baseline_gf_interval = i - (is_key_frame || rc->source_alt_ref_pending); -#if CONFIG_EXT_REFS if (non_zero_stdev_count) avg_raw_err_stdev /= non_zero_stdev_count; // Disable extra altrefs and backward refs for "still" gf group: @@ -2998,15 +2834,12 @@ static void define_gf_group(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { } // Currently at maximum two extra ARFs' are allowed assert(cpi->num_extra_arfs <= MAX_EXT_ARFS); -#endif // CONFIG_EXT_REFS rc->frames_till_gf_update_due = rc->baseline_gf_interval; -#if CONFIG_EXT_REFS rc->bipred_group_interval = BFG_INTERVAL; // The minimum bi-predictive frame group interval is 2. if (rc->bipred_group_interval < 2) rc->bipred_group_interval = 0; -#endif // CONFIG_EXT_REFS // Reset the file position. reset_fpf_position(twopass, start_pos); @@ -3424,7 +3257,7 @@ static void find_next_key_frame(AV1_COMP *cpi, FIRSTPASS_STATS *this_frame) { twopass->modified_error_left -= kf_group_err; } -#if CONFIG_EXT_REFS && USE_GF16_MULTI_LAYER +#if USE_GF16_MULTI_LAYER // === GF Group of 16 === void av1_ref_frame_map_idx_updates(AV1_COMP *cpi, int gf_frame_index) { TWO_PASS *const twopass = &cpi->twopass; @@ -3569,7 +3402,7 @@ static void configure_buffer_updates_16(AV1_COMP *cpi) { default: break; } } -#endif // CONFIG_EXT_REFS && USE_GF16_MULTI_LAYER +#endif // USE_GF16_MULTI_LAYER // Define the reference buffers that will be updated post encode. static void configure_buffer_updates(AV1_COMP *cpi) { @@ -3579,7 +3412,6 @@ static void configure_buffer_updates(AV1_COMP *cpi) { // cpi->rc.is_$Source_Type to make this function as it is in the comment? cpi->rc.is_src_frame_alt_ref = 0; -#if CONFIG_EXT_REFS cpi->rc.is_bwd_ref_frame = 0; cpi->rc.is_last_bipred_frame = 0; cpi->rc.is_bipred_frame = 0; @@ -3592,22 +3424,21 @@ static void configure_buffer_updates(AV1_COMP *cpi) { return; } #endif // USE_GF16_MULTI_LAYER -#endif // CONFIG_EXT_REFS switch (twopass->gf_group.update_type[twopass->gf_group.index]) { - case KF_UPDATE: cpi->refresh_last_frame = 1; cpi->refresh_golden_frame = 1; -#if CONFIG_EXT_REFS + case KF_UPDATE: + cpi->refresh_last_frame = 1; + cpi->refresh_golden_frame = 1; cpi->refresh_bwd_ref_frame = 1; cpi->refresh_alt2_ref_frame = 1; -#endif // CONFIG_EXT_REFS cpi->refresh_alt_ref_frame = 1; break; - case LF_UPDATE: cpi->refresh_last_frame = 1; cpi->refresh_golden_frame = 0; -#if CONFIG_EXT_REFS + case LF_UPDATE: + cpi->refresh_last_frame = 1; + cpi->refresh_golden_frame = 0; cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS cpi->refresh_alt_ref_frame = 0; break; @@ -3616,35 +3447,30 @@ static void configure_buffer_updates(AV1_COMP *cpi) { // needed. cpi->refresh_last_frame = 1; cpi->refresh_golden_frame = 1; -#if CONFIG_EXT_REFS cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS cpi->refresh_alt_ref_frame = 0; break; case OVERLAY_UPDATE: cpi->refresh_last_frame = 0; cpi->refresh_golden_frame = 1; -#if CONFIG_EXT_REFS cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS cpi->refresh_alt_ref_frame = 0; cpi->rc.is_src_frame_alt_ref = 1; break; - case ARF_UPDATE: cpi->refresh_last_frame = 0; cpi->refresh_golden_frame = 0; -#if CONFIG_EXT_REFS + case ARF_UPDATE: + cpi->refresh_last_frame = 0; + cpi->refresh_golden_frame = 0; // NOTE: BWDREF does not get updated along with ALTREF_FRAME. cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 0; -#endif // CONFIG_EXT_REFS cpi->refresh_alt_ref_frame = 1; break; -#if CONFIG_EXT_REFS case BRF_UPDATE: cpi->refresh_last_frame = 0; cpi->refresh_golden_frame = 0; @@ -3693,7 +3519,6 @@ static void configure_buffer_updates(AV1_COMP *cpi) { cpi->refresh_alt2_ref_frame = 1; cpi->refresh_alt_ref_frame = 0; break; -#endif // CONFIG_EXT_REFS default: assert(0); break; } @@ -3734,11 +3559,8 @@ void av1_rc_get_second_pass_params(AV1_COMP *cpi) { // If this is an arf frame then we dont want to read the stats file or // advance the input pointer as we already have what we need. - if (gf_group->update_type[gf_group->index] == ARF_UPDATE -#if CONFIG_EXT_REFS - || gf_group->update_type[gf_group->index] == INTNL_ARF_UPDATE -#endif // CONFIG_EXT_REFS - ) { + if (gf_group->update_type[gf_group->index] == ARF_UPDATE || + gf_group->update_type[gf_group->index] == INTNL_ARF_UPDATE) { configure_buffer_updates(cpi); target_rate = gf_group->bit_allocation[gf_group->index]; target_rate = av1_rc_clamp_pframe_target_size(cpi, target_rate); diff --git a/av1/encoder/firstpass.h b/av1/encoder/firstpass.h index 9ac542bf32..ee21b65f42 100644 --- a/av1/encoder/firstpass.h +++ b/av1/encoder/firstpass.h @@ -42,7 +42,6 @@ typedef struct { } FIRSTPASS_MB_STATS; #endif -#if CONFIG_EXT_REFS // Length of the bi-predictive frame group (BFG) // NOTE: Currently each BFG contains one backward ref (BWF) frame plus a certain // number of bi-predictive frames. @@ -64,7 +63,6 @@ typedef struct { #define MAX_SR_CODED_ERROR 40 #define MAX_RAW_ERR_VAR 2000 #define MIN_MV_IN_OUT 0.4 -#endif // CONFIG_EXT_REFS #define VLOW_MOTION_THRESHOLD 950 @@ -91,10 +89,8 @@ typedef struct { double new_mv_count; double duration; double count; -#if CONFIG_EXT_REFS || CONFIG_BGSPRITE // standard deviation for (0, 0) motion prediction error double raw_error_stdev; -#endif // CONFIG_EXT_REFS } FIRSTPASS_STATS; typedef enum { @@ -103,16 +99,12 @@ typedef enum { GF_UPDATE = 2, ARF_UPDATE = 3, OVERLAY_UPDATE = 4, -#if CONFIG_EXT_REFS BRF_UPDATE = 5, // Backward Reference Frame LAST_BIPRED_UPDATE = 6, // Last Bi-predictive Frame BIPRED_UPDATE = 7, // Bi-predictive Frame, but not the last one INTNL_OVERLAY_UPDATE = 8, // Internal Overlay Frame INTNL_ARF_UPDATE = 9, // Internal Altref Frame (candidate for ALTREF2) FRAME_UPDATE_TYPES = 10 -#else // !CONFIG_EXT_REFS - FRAME_UPDATE_TYPES = 5 -#endif // CONFIG_EXT_REFS } FRAME_UPDATE_TYPE; #define FC_ANIMATION_THRESH 0.15 @@ -129,13 +121,11 @@ typedef struct { unsigned char arf_src_offset[(MAX_LAG_BUFFERS * 2) + 1]; unsigned char arf_update_idx[(MAX_LAG_BUFFERS * 2) + 1]; unsigned char arf_ref_idx[(MAX_LAG_BUFFERS * 2) + 1]; -#if CONFIG_EXT_REFS unsigned char brf_src_offset[(MAX_LAG_BUFFERS * 2) + 1]; unsigned char bidir_pred_enabled[(MAX_LAG_BUFFERS * 2) + 1]; unsigned char ref_fb_idx_map[(MAX_LAG_BUFFERS * 2) + 1][REF_FRAMES]; unsigned char refresh_idx[(MAX_LAG_BUFFERS * 2) + 1]; unsigned char refresh_flag[(MAX_LAG_BUFFERS * 2) + 1]; -#endif // CONFIG_EXT_REFS int bit_allocation[(MAX_LAG_BUFFERS * 2) + 1]; } GF_GROUP; @@ -198,7 +188,6 @@ void av1_rc_get_second_pass_params(struct AV1_COMP *cpi); // Post encode update of the rate control parameters for 2-pass void av1_twopass_postencode_update(struct AV1_COMP *cpi); -#if CONFIG_EXT_REFS #if USE_GF16_MULTI_LAYER void av1_ref_frame_map_idx_updates(struct AV1_COMP *cpi, int gf_frame_index); #endif // USE_GF16_MULTI_LAYER @@ -213,7 +202,6 @@ static INLINE int get_number_of_extra_arfs(int interval, int arf_pending) { else return 0; } -#endif // CONFIG_EXT_REFS #ifdef __cplusplus } // extern "C" diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c index a90cb880ee..c431f65e88 100644 --- a/av1/encoder/ratectrl.c +++ b/av1/encoder/ratectrl.c @@ -196,12 +196,8 @@ int av1_rc_clamp_pframe_target_size(const AV1_COMP *const cpi, int target) { const AV1EncoderConfig *oxcf = &cpi->oxcf; const int min_frame_target = AOMMAX(rc->min_frame_bandwidth, rc->avg_frame_bandwidth >> 5); -// Clip the frame target to the minimum setup value. -#if CONFIG_EXT_REFS + // Clip the frame target to the minimum setup value. if (cpi->rc.is_src_frame_alt_ref) { -#else - if (cpi->refresh_golden_frame && rc->is_src_frame_alt_ref) { -#endif // CONFIG_EXT_REFS // If there is an active ARF at this location use the minimum // bits on this frame even if it is a constructed arf. // The active maximum quantizer insures that an appropriate @@ -239,14 +235,10 @@ static void update_buffer_level(AV1_COMP *cpi, int encoded_frame_size) { const AV1_COMMON *const cm = &cpi->common; RATE_CONTROL *const rc = &cpi->rc; -// Non-viewable frames are a special case and are treated as pure overhead. -#if CONFIG_EXT_REFS + // Non-viewable frames are a special case and are treated as pure overhead. // TODO(zoeliu): To further explore whether we should treat BWDREF_FRAME // differently, since it is a no-show frame. if (!cm->show_frame && !rc->is_bwd_ref_frame) -#else - if (!cm->show_frame) -#endif // CONFIG_EXT_REFS rc->bits_off_target -= encoded_frame_size; else rc->bits_off_target += rc->avg_frame_bandwidth - encoded_frame_size; @@ -590,11 +582,9 @@ static int calc_active_worst_quality_one_pass_vbr(const AV1_COMP *cpi) { active_worst_quality = curr_frame == 0 ? rc->worst_quality : rc->last_q[KEY_FRAME] * 2; } else { - if (!rc->is_src_frame_alt_ref && (cpi->refresh_golden_frame || -#if CONFIG_EXT_REFS - cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS - cpi->refresh_alt_ref_frame)) { + if (!rc->is_src_frame_alt_ref && + (cpi->refresh_golden_frame || cpi->refresh_alt2_ref_frame || + cpi->refresh_alt_ref_frame)) { active_worst_quality = curr_frame == 1 ? rc->last_q[KEY_FRAME] * 5 / 4 : rc->last_q[INTER_FRAME]; } else { @@ -933,24 +923,15 @@ static int rc_pick_q_and_bounds_one_pass_vbr(const AV1_COMP *cpi, int width, int av1_frame_type_qdelta(const AV1_COMP *cpi, int rf_level, int q) { static const double rate_factor_deltas[RATE_FACTOR_LEVELS] = { 1.00, // INTER_NORMAL -#if CONFIG_EXT_REFS 0.80, // INTER_LOW 1.50, // INTER_HIGH 1.25, // GF_ARF_LOW -#else - 1.00, // INTER_HIGH - 1.50, // GF_ARF_LOW -#endif // CONFIG_EXT_REFS 2.00, // GF_ARF_STD 2.00, // KF_STD }; - static const FRAME_TYPE frame_type[RATE_FACTOR_LEVELS] = -#if CONFIG_EXT_REFS - { INTER_FRAME, INTER_FRAME, INTER_FRAME, - INTER_FRAME, INTER_FRAME, KEY_FRAME }; -#else - { INTER_FRAME, INTER_FRAME, INTER_FRAME, INTER_FRAME, KEY_FRAME }; -#endif // CONFIG_EXT_REFS + static const FRAME_TYPE frame_type[RATE_FACTOR_LEVELS] = { + INTER_FRAME, INTER_FRAME, INTER_FRAME, INTER_FRAME, INTER_FRAME, KEY_FRAME + }; const AV1_COMMON *const cm = &cpi->common; int qdelta = av1_compute_qdelta_by_rate(&cpi->rc, frame_type[rf_level], q, @@ -1020,11 +1001,9 @@ static int rc_pick_q_and_bounds_two_pass(const AV1_COMP *cpi, int width, active_best_quality += av1_compute_qdelta(rc, q_val, q_val * q_adj_factor, cm->bit_depth); } - } else if (!rc->is_src_frame_alt_ref && (cpi->refresh_golden_frame || -#if CONFIG_EXT_REFS - cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS - cpi->refresh_alt_ref_frame)) { + } else if (!rc->is_src_frame_alt_ref && + (cpi->refresh_golden_frame || cpi->refresh_alt2_ref_frame || + cpi->refresh_alt_ref_frame)) { // Use the lower of active_worst_quality and recent // average Q as basis for GF/ARF best Q limit unless last frame was // a key frame. @@ -1044,11 +1023,7 @@ static int rc_pick_q_and_bounds_two_pass(const AV1_COMP *cpi, int width, active_best_quality = active_best_quality * 15 / 16; } else if (oxcf->rc_mode == AOM_Q) { -#if CONFIG_EXT_REFS if (!cpi->refresh_alt_ref_frame && !cpi->refresh_alt2_ref_frame) { -#else - if (!cpi->refresh_alt_ref_frame) { -#endif // CONFIG_EXT_REFS active_best_quality = cq_level; } else { active_best_quality = get_gf_active_quality(rc, q, cm->bit_depth); @@ -1080,11 +1055,9 @@ static int rc_pick_q_and_bounds_two_pass(const AV1_COMP *cpi, int width, if ((cpi->oxcf.rc_mode != AOM_Q) && (cpi->twopass.gf_zeromotion_pct < VLOW_MOTION_THRESHOLD)) { if (frame_is_intra_only(cm) || - (!rc->is_src_frame_alt_ref && (cpi->refresh_golden_frame || -#if CONFIG_EXT_REFS - cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS - cpi->refresh_alt_ref_frame))) { + (!rc->is_src_frame_alt_ref && + (cpi->refresh_golden_frame || cpi->refresh_alt2_ref_frame || + cpi->refresh_alt_ref_frame))) { active_best_quality -= (cpi->twopass.extend_minq + cpi->twopass.extend_minq_fast); active_worst_quality += (cpi->twopass.extend_maxq / 2); @@ -1217,21 +1190,13 @@ static void update_alt_ref_frame_stats(AV1_COMP *cpi) { static void update_golden_frame_stats(AV1_COMP *cpi) { RATE_CONTROL *const rc = &cpi->rc; -#if CONFIG_EXT_REFS // Update the Golden frame usage counts. // NOTE(weitinglin): If we use show_existing_frame for an OVERLAY frame, // only the virtual indices for the reference frame will be // updated and cpi->refresh_golden_frame will still be zero. if (cpi->refresh_golden_frame || rc->is_src_frame_alt_ref) { -#else // !CONFIG_EXT_REFS - // Update the Golden frame usage counts. - if (cpi->refresh_golden_frame) { -#endif // CONFIG_EXT_REFS - -#if CONFIG_EXT_REFS // We will not use internal overlay frames to replace the golden frame if (!rc->is_src_frame_ext_arf) -#endif // CONFIG_EXT_REFS // this frame refreshes means next frames don't unless specified by user rc->frames_since_golden = 0; @@ -1248,11 +1213,7 @@ static void update_golden_frame_stats(AV1_COMP *cpi) { // Decrement count down till next gf if (rc->frames_till_gf_update_due > 0) rc->frames_till_gf_update_due--; -#if CONFIG_EXT_REFS } else if (!cpi->refresh_alt_ref_frame && !cpi->refresh_alt2_ref_frame) { -#else - } else if (!cpi->refresh_alt_ref_frame) { -#endif // CONFIG_EXT_REFS // Decrement count down till next gf if (rc->frames_till_gf_update_due > 0) rc->frames_till_gf_update_due--; @@ -1282,10 +1243,7 @@ void av1_rc_postencode_update(AV1_COMP *cpi, uint64_t bytes_used) { ROUND_POWER_OF_TWO(3 * rc->avg_frame_qindex[KEY_FRAME] + qindex, 2); } else { if (!rc->is_src_frame_alt_ref && - !(cpi->refresh_golden_frame || -#if CONFIG_EXT_REFS - cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS + !(cpi->refresh_golden_frame || cpi->refresh_alt2_ref_frame || cpi->refresh_alt_ref_frame)) { rc->last_q[INTER_FRAME] = qindex; rc->avg_frame_qindex[INTER_FRAME] = @@ -1307,10 +1265,7 @@ void av1_rc_postencode_update(AV1_COMP *cpi, uint64_t bytes_used) { // This is used to help set quality in forced key frames to reduce popping if ((qindex < rc->last_boosted_qindex) || (cm->frame_type == KEY_FRAME) || (!rc->constrained_gf_group && - (cpi->refresh_alt_ref_frame || -#if CONFIG_EXT_REFS - cpi->refresh_alt2_ref_frame || -#endif // CONFIG_EXT_REFS + (cpi->refresh_alt_ref_frame || cpi->refresh_alt2_ref_frame || (cpi->refresh_golden_frame && !rc->is_src_frame_alt_ref)))) { rc->last_boosted_qindex = qindex; } @@ -1337,14 +1292,10 @@ void av1_rc_postencode_update(AV1_COMP *cpi, uint64_t bytes_used) { // Actual bits spent rc->total_actual_bits += rc->projected_frame_size; -#if CONFIG_EXT_REFS // TODO(zoeliu): To investigate whether we should treat BWDREF_FRAME // differently here for rc->avg_frame_bandwidth. rc->total_target_bits += (cm->show_frame || rc->is_bwd_ref_frame) ? rc->avg_frame_bandwidth : 0; -#else - rc->total_target_bits += cm->show_frame ? rc->avg_frame_bandwidth : 0; -#endif // CONFIG_EXT_REFS rc->total_target_vs_actual = rc->total_actual_bits - rc->total_target_bits; @@ -1358,13 +1309,9 @@ void av1_rc_postencode_update(AV1_COMP *cpi, uint64_t bytes_used) { if (cm->frame_type == KEY_FRAME) rc->frames_since_key = 0; -#if CONFIG_EXT_REFS // TODO(zoeliu): To investigate whether we should treat BWDREF_FRAME // differently here for rc->avg_frame_bandwidth. if (cm->show_frame || rc->is_bwd_ref_frame) { -#else - if (cm->show_frame) { -#endif // CONFIG_EXT_REFS rc->frames_since_key++; rc->frames_to_key--; } diff --git a/av1/encoder/ratectrl.h b/av1/encoder/ratectrl.h index 8b410e7785..6562de10af 100644 --- a/av1/encoder/ratectrl.h +++ b/av1/encoder/ratectrl.h @@ -28,7 +28,6 @@ extern "C" { #define MAX_GF_INTERVAL 16 #define FIXED_GF_INTERVAL 8 // Used in some testing modes only -#if CONFIG_EXT_REFS typedef enum { INTER_NORMAL = 0, INTER_LOW = 1, @@ -38,16 +37,6 @@ typedef enum { KF_STD = 5, RATE_FACTOR_LEVELS = 6 } RATE_FACTOR_LEVEL; -#else -typedef enum { - INTER_NORMAL = 0, - INTER_HIGH = 1, - GF_ARF_LOW = 2, - GF_ARF_STD = 3, - KF_STD = 4, - RATE_FACTOR_LEVELS = 5 -} RATE_FACTOR_LEVEL; -#endif // CONFIG_EXT_REFS typedef struct { int resize_width; @@ -89,7 +78,6 @@ typedef struct { int source_alt_ref_active; int is_src_frame_alt_ref; -#if CONFIG_EXT_REFS // Length of the bi-predictive frame group interval int bipred_group_interval; @@ -99,7 +87,6 @@ typedef struct { int is_last_bipred_frame; int is_bipred_frame; int is_src_frame_ext_arf; -#endif // CONFIG_EXT_REFS int avg_frame_bandwidth; // Average frame size target for clip int min_frame_bandwidth; // Minimum allocation used for any frame diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c index cac0105a17..e9e68ad063 100644 --- a/av1/encoder/rd.c +++ b/av1/encoder/rd.c @@ -404,14 +404,12 @@ static const int rd_boost_factor[16] = { 64, 32, 32, 32, 24, 16, 12, 12, 8, 8, 4, 4, 2, 2, 1, 0 }; static const int rd_frame_type_factor[FRAME_UPDATE_TYPES] = { 128, 144, 128, 128, 144, -#if CONFIG_EXT_REFS // TODO(zoeliu): To adjust further following factor values. 128, 128, 128, // TODO(weitinglin): We should investigate if the values should be the same // as the value used by OVERLAY frame 144, // INTNL_OVERLAY_UPDATE 128 // INTNL_ARF_UPDATE -#endif // CONFIG_EXT_REFS }; int av1_compute_rd_mult(const AV1_COMP *cpi, int qindex) { @@ -1273,22 +1271,18 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { if (sf->adaptive_rd_thresh) { rd->thresh_mult[THR_NEARESTMV] = 300; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_NEARESTL2] = 300; rd->thresh_mult[THR_NEARESTL3] = 300; rd->thresh_mult[THR_NEARESTB] = 300; rd->thresh_mult[THR_NEARESTA2] = 300; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_NEARESTA] = 300; rd->thresh_mult[THR_NEARESTG] = 300; } else { rd->thresh_mult[THR_NEARESTMV] = 0; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_NEARESTL2] = 0; rd->thresh_mult[THR_NEARESTL3] = 0; rd->thresh_mult[THR_NEARESTB] = 0; rd->thresh_mult[THR_NEARESTA2] = 0; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_NEARESTA] = 0; rd->thresh_mult[THR_NEARESTG] = 0; } @@ -1296,32 +1290,26 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_DC] += 1000; rd->thresh_mult[THR_NEWMV] += 1000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_NEWL2] += 1000; rd->thresh_mult[THR_NEWL3] += 1000; rd->thresh_mult[THR_NEWB] += 1000; rd->thresh_mult[THR_NEWA2] = 1000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_NEWA] += 1000; rd->thresh_mult[THR_NEWG] += 1000; rd->thresh_mult[THR_NEARMV] += 1000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_NEARL2] += 1000; rd->thresh_mult[THR_NEARL3] += 1000; rd->thresh_mult[THR_NEARB] += 1000; rd->thresh_mult[THR_NEARA2] = 1000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_NEARA] += 1000; rd->thresh_mult[THR_NEARG] += 1000; rd->thresh_mult[THR_ZEROMV] += 2000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_ZEROL2] += 2000; rd->thresh_mult[THR_ZEROL3] += 2000; rd->thresh_mult[THR_ZEROB] += 2000; rd->thresh_mult[THR_ZEROA2] = 2000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_ZEROG] += 2000; rd->thresh_mult[THR_ZEROA] += 2000; @@ -1329,59 +1317,46 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { #if CONFIG_COMPOUND_SINGLEREF rd->thresh_mult[THR_SR_NEAREST_NEARMV] += 1200; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEAREST_NEARL2] += 1200; rd->thresh_mult[THR_SR_NEAREST_NEARL3] += 1200; rd->thresh_mult[THR_SR_NEAREST_NEARB] += 1200; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEAREST_NEARA] += 1200; rd->thresh_mult[THR_SR_NEAREST_NEARG] += 1200; /* rd->thresh_mult[THR_SR_NEAREST_NEWMV] += 1200; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEAREST_NEWL2] += 1200; rd->thresh_mult[THR_SR_NEAREST_NEWL3] += 1200; rd->thresh_mult[THR_SR_NEAREST_NEWB] += 1200; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEAREST_NEWA] += 1200; rd->thresh_mult[THR_SR_NEAREST_NEWG] += 1200;*/ rd->thresh_mult[THR_SR_NEAR_NEWMV] += 1500; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEAR_NEWL2] += 1500; rd->thresh_mult[THR_SR_NEAR_NEWL3] += 1500; rd->thresh_mult[THR_SR_NEAR_NEWB] += 1500; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEAR_NEWA] += 1500; rd->thresh_mult[THR_SR_NEAR_NEWG] += 1500; rd->thresh_mult[THR_SR_ZERO_NEWMV] += 2000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_SR_ZERO_NEWL2] += 2000; rd->thresh_mult[THR_SR_ZERO_NEWL3] += 2000; rd->thresh_mult[THR_SR_ZERO_NEWB] += 2000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_SR_ZERO_NEWA] += 2000; rd->thresh_mult[THR_SR_ZERO_NEWG] += 2000; rd->thresh_mult[THR_SR_NEW_NEWMV] += 1700; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEW_NEWL2] += 1700; rd->thresh_mult[THR_SR_NEW_NEWL3] += 1700; rd->thresh_mult[THR_SR_NEW_NEWB] += 1700; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_SR_NEW_NEWA] += 1700; rd->thresh_mult[THR_SR_NEW_NEWG] += 1700; #endif // CONFIG_COMPOUND_SINGLEREF rd->thresh_mult[THR_COMP_NEAREST_NEARESTLA] += 1000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAREST_NEARESTL2A] += 1000; rd->thresh_mult[THR_COMP_NEAREST_NEARESTL3A] += 1000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAREST_NEARESTGA] += 1000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAREST_NEARESTLB] += 1000; rd->thresh_mult[THR_COMP_NEAREST_NEARESTL2B] += 1000; rd->thresh_mult[THR_COMP_NEAREST_NEARESTL3B] += 1000; @@ -1397,7 +1372,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_NEAREST_NEARESTLG] += 1000; rd->thresh_mult[THR_COMP_NEAREST_NEARESTBA] += 1000; #endif // CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAR_NEARLA] += 1200; rd->thresh_mult[THR_COMP_NEAREST_NEWLA] += 1500; @@ -1407,7 +1381,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_NEW_NEWLA] += 2000; rd->thresh_mult[THR_COMP_ZERO_ZEROLA] += 2500; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAR_NEARL2A] += 1200; rd->thresh_mult[THR_COMP_NEAREST_NEWL2A] += 1500; rd->thresh_mult[THR_COMP_NEW_NEARESTL2A] += 1500; @@ -1423,7 +1396,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_NEW_NEARL3A] += 1700; rd->thresh_mult[THR_COMP_NEW_NEWL3A] += 2000; rd->thresh_mult[THR_COMP_ZERO_ZEROL3A] += 2500; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAR_NEARGA] += 1200; rd->thresh_mult[THR_COMP_NEAREST_NEWGA] += 1500; @@ -1433,7 +1405,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_NEW_NEWGA] += 2000; rd->thresh_mult[THR_COMP_ZERO_ZEROGA] += 2500; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_NEAR_NEARLB] += 1200; rd->thresh_mult[THR_COMP_NEAREST_NEWLB] += 1500; rd->thresh_mult[THR_COMP_NEW_NEARESTLB] += 1500; @@ -1531,7 +1502,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_NEW_NEWBA] += 2000; rd->thresh_mult[THR_COMP_ZERO_ZEROBA] += 2500; #endif // CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_H_PRED] += 2000; rd->thresh_mult[THR_V_PRED] += 2000; @@ -1547,7 +1517,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_INTERINTRA_NEARL] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEWL] += 2000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_INTERINTRA_ZEROL2] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTL2] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARL2] += 1500; @@ -1557,14 +1526,12 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTL3] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARL3] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEWL3] += 2000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_INTERINTRA_ZEROG] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTG] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARG] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEWG] += 2000; -#if CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_INTERINTRA_ZEROB] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTB] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARB] += 1500; @@ -1574,7 +1541,6 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTA2] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARA2] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEWA2] += 2000; -#endif // CONFIG_EXT_REFS rd->thresh_mult[THR_COMP_INTERINTRA_ZEROA] += 1500; rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTA] += 1500; @@ -1583,37 +1549,10 @@ void av1_set_rd_speed_thresholds(AV1_COMP *cpi) { } void av1_set_rd_speed_thresholds_sub8x8(AV1_COMP *cpi) { - static const int thresh_mult[MAX_REFS] = { -#if CONFIG_EXT_REFS - 2500, - 2500, - 2500, - 2500, - 2500, - 2500, - 2500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 4500, - 2500 -#else // !CONFIG_EXT_REFS - 2500, - 2500, - 2500, - 4500, - 4500, - 2500 -#endif // CONFIG_EXT_REFS - }; + static const int thresh_mult[MAX_REFS] = { 2500, 2500, 2500, 2500, 2500, + 2500, 2500, 4500, 4500, 4500, + 4500, 4500, 4500, 4500, 4500, + 4500, 4500, 4500, 4500, 2500 }; RD_OPT *const rd = &cpi->rd; memcpy(rd->thresh_mult_sub8x8, thresh_mult, sizeof(thresh_mult)); } diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h index f57a8de101..7651a009d9 100644 --- a/av1/encoder/rd.h +++ b/av1/encoder/rd.h @@ -50,102 +50,81 @@ extern "C" { // const MODE_DEFINITION av1_mode_order[MAX_MODES] used in the rd code. typedef enum { THR_NEARESTMV, -#if CONFIG_EXT_REFS THR_NEARESTL2, THR_NEARESTL3, THR_NEARESTB, THR_NEARESTA2, -#endif // CONFIG_EXT_REFS THR_NEARESTA, THR_NEARESTG, THR_DC, THR_NEWMV, -#if CONFIG_EXT_REFS THR_NEWL2, THR_NEWL3, THR_NEWB, THR_NEWA2, -#endif // CONFIG_EXT_REFS THR_NEWA, THR_NEWG, THR_NEARMV, -#if CONFIG_EXT_REFS THR_NEARL2, THR_NEARL3, THR_NEARB, THR_NEARA2, -#endif // CONFIG_EXT_REFS THR_NEARA, THR_NEARG, THR_ZEROMV, -#if CONFIG_EXT_REFS THR_ZEROL2, THR_ZEROL3, THR_ZEROB, THR_ZEROA2, -#endif // CONFIG_EXT_REFS THR_ZEROA, THR_ZEROG, #if CONFIG_COMPOUND_SINGLEREF THR_SR_NEAREST_NEARMV, -#if CONFIG_EXT_REFS THR_SR_NEAREST_NEARL2, THR_SR_NEAREST_NEARL3, THR_SR_NEAREST_NEARB, -#endif // CONFIG_EXT_REFS THR_SR_NEAREST_NEARG, THR_SR_NEAREST_NEARA, /* THR_SR_NEAREST_NEWMV, -#if CONFIG_EXT_REFS THR_SR_NEAREST_NEWL2, THR_SR_NEAREST_NEWL3, THR_SR_NEAREST_NEWB, -#endif // CONFIG_EXT_REFS THR_SR_NEAREST_NEWG, THR_SR_NEAREST_NEWA,*/ THR_SR_NEAR_NEWMV, -#if CONFIG_EXT_REFS THR_SR_NEAR_NEWL2, THR_SR_NEAR_NEWL3, THR_SR_NEAR_NEWB, -#endif // CONFIG_EXT_REFS THR_SR_NEAR_NEWG, THR_SR_NEAR_NEWA, THR_SR_ZERO_NEWMV, -#if CONFIG_EXT_REFS THR_SR_ZERO_NEWL2, THR_SR_ZERO_NEWL3, THR_SR_ZERO_NEWB, -#endif // CONFIG_EXT_REFS THR_SR_ZERO_NEWG, THR_SR_ZERO_NEWA, THR_SR_NEW_NEWMV, -#if CONFIG_EXT_REFS THR_SR_NEW_NEWL2, THR_SR_NEW_NEWL3, THR_SR_NEW_NEWB, -#endif // CONFIG_EXT_REFS THR_SR_NEW_NEWG, THR_SR_NEW_NEWA, #endif // CONFIG_COMPOUND_SINGLEREF THR_COMP_NEAREST_NEARESTLA, -#if CONFIG_EXT_REFS THR_COMP_NEAREST_NEARESTL2A, THR_COMP_NEAREST_NEARESTL3A, -#endif // CONFIG_EXT_REFS THR_COMP_NEAREST_NEARESTGA, -#if CONFIG_EXT_REFS THR_COMP_NEAREST_NEARESTLB, THR_COMP_NEAREST_NEARESTL2B, THR_COMP_NEAREST_NEARESTL3B, @@ -160,7 +139,6 @@ typedef enum { THR_COMP_NEAREST_NEARESTLG, THR_COMP_NEAREST_NEARESTBA, #endif // CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS THR_PAETH, @@ -178,7 +156,6 @@ typedef enum { THR_COMP_NEW_NEWLA, THR_COMP_ZERO_ZEROLA, -#if CONFIG_EXT_REFS THR_COMP_NEAR_NEARL2A, THR_COMP_NEW_NEARESTL2A, THR_COMP_NEAREST_NEWL2A, @@ -194,7 +171,6 @@ typedef enum { THR_COMP_NEAR_NEWL3A, THR_COMP_NEW_NEWL3A, THR_COMP_ZERO_ZEROL3A, -#endif // CONFIG_EXT_REFS THR_COMP_NEAR_NEARGA, THR_COMP_NEW_NEARESTGA, @@ -204,7 +180,6 @@ typedef enum { THR_COMP_NEW_NEWGA, THR_COMP_ZERO_ZEROGA, -#if CONFIG_EXT_REFS THR_COMP_NEAR_NEARLB, THR_COMP_NEW_NEARESTLB, THR_COMP_NEAREST_NEWLB, @@ -302,7 +277,6 @@ typedef enum { THR_COMP_NEW_NEWBA, THR_COMP_ZERO_ZEROBA, #endif // CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS THR_H_PRED, THR_V_PRED, @@ -318,7 +292,6 @@ typedef enum { THR_COMP_INTERINTRA_NEARL, THR_COMP_INTERINTRA_NEWL, -#if CONFIG_EXT_REFS THR_COMP_INTERINTRA_ZEROL2, THR_COMP_INTERINTRA_NEARESTL2, THR_COMP_INTERINTRA_NEARL2, @@ -328,14 +301,12 @@ typedef enum { THR_COMP_INTERINTRA_NEARESTL3, THR_COMP_INTERINTRA_NEARL3, THR_COMP_INTERINTRA_NEWL3, -#endif // CONFIG_EXT_REFS THR_COMP_INTERINTRA_ZEROG, THR_COMP_INTERINTRA_NEARESTG, THR_COMP_INTERINTRA_NEARG, THR_COMP_INTERINTRA_NEWG, -#if CONFIG_EXT_REFS THR_COMP_INTERINTRA_ZEROB, THR_COMP_INTERINTRA_NEARESTB, THR_COMP_INTERINTRA_NEARB, @@ -345,7 +316,6 @@ typedef enum { THR_COMP_INTERINTRA_NEARESTA2, THR_COMP_INTERINTRA_NEARA2, THR_COMP_INTERINTRA_NEWA2, -#endif // CONFIG_EXT_REFS THR_COMP_INTERINTRA_ZEROA, THR_COMP_INTERINTRA_NEARESTA, @@ -356,23 +326,18 @@ typedef enum { typedef enum { THR_LAST, -#if CONFIG_EXT_REFS THR_LAST2, THR_LAST3, THR_BWDR, THR_ALTR2, -#endif // CONFIG_EXT_REFS THR_GOLD, THR_ALTR, THR_COMP_LA, -#if CONFIG_EXT_REFS THR_COMP_L2A, THR_COMP_L3A, -#endif // CONFIG_EXT_REFS THR_COMP_GA, -#if CONFIG_EXT_REFS THR_COMP_LB, THR_COMP_L2B, THR_COMP_L3B, @@ -382,7 +347,6 @@ typedef enum { THR_COMP_L2A2, THR_COMP_L3A2, THR_COMP_GA2, -#endif // CONFIG_EXT_REFS THR_INTRA, diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index f1e3f167fa..639803da08 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c @@ -80,8 +80,6 @@ static const int filter_sets[DUAL_FILTER_SET_SIZE][2] = { #endif // USE_EXTRA_FILTER #endif // CONFIG_DUAL_FILTER -#if CONFIG_EXT_REFS - #define LAST_FRAME_MODE_MASK \ ((1 << INTRA_FRAME) | (1 << LAST2_FRAME) | (1 << LAST3_FRAME) | \ (1 << GOLDEN_FRAME) | (1 << BWDREF_FRAME) | (1 << ALTREF2_FRAME) | \ @@ -111,18 +109,6 @@ static const int filter_sets[DUAL_FILTER_SET_SIZE][2] = { (1 << LAST3_FRAME) | (1 << GOLDEN_FRAME) | (1 << BWDREF_FRAME) | \ (1 << ALTREF2_FRAME)) -#else // !CONFIG_EXT_REFS - -#define LAST_FRAME_MODE_MASK \ - ((1 << GOLDEN_FRAME) | (1 << ALTREF_FRAME) | (1 << INTRA_FRAME)) -#define GOLDEN_FRAME_MODE_MASK \ - ((1 << LAST_FRAME) | (1 << ALTREF_FRAME) | (1 << INTRA_FRAME)) -#define ALTREF_FRAME_MODE_MASK \ - ((1 << LAST_FRAME) | (1 << GOLDEN_FRAME) | (1 << INTRA_FRAME)) - -#endif // CONFIG_EXT_REFS - -#if CONFIG_EXT_REFS #if CONFIG_EXT_COMP_REFS #define SECOND_REF_FRAME_MASK \ ((1 << ALTREF_FRAME) | (1 << ALTREF2_FRAME) | (1 << BWDREF_FRAME) | \ @@ -131,9 +117,6 @@ static const int filter_sets[DUAL_FILTER_SET_SIZE][2] = { #define SECOND_REF_FRAME_MASK \ ((1 << ALTREF_FRAME) | (1 << ALTREF2_FRAME) | (1 << BWDREF_FRAME) | 0x01) #endif // CONFIG_EXT_COMP_REFS -#else // !CONFIG_EXT_REFS -#define SECOND_REF_FRAME_MASK ((1 << ALTREF_FRAME) | 0x01) -#endif // CONFIG_EXT_REFS #define MIN_EARLY_TERM_INDEX 3 #define NEW_MV_DISCOUNT_FACTOR 8 @@ -179,44 +162,36 @@ struct rdcost_block_args { #define LAST_NEW_MV_INDEX 6 static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEARESTMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { NEARESTMV, { LAST2_FRAME, NONE_FRAME } }, { NEARESTMV, { LAST3_FRAME, NONE_FRAME } }, { NEARESTMV, { BWDREF_FRAME, NONE_FRAME } }, { NEARESTMV, { ALTREF2_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { NEARESTMV, { ALTREF_FRAME, NONE_FRAME } }, { NEARESTMV, { GOLDEN_FRAME, NONE_FRAME } }, { DC_PRED, { INTRA_FRAME, NONE_FRAME } }, { NEWMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { NEWMV, { LAST2_FRAME, NONE_FRAME } }, { NEWMV, { LAST3_FRAME, NONE_FRAME } }, { NEWMV, { BWDREF_FRAME, NONE_FRAME } }, { NEWMV, { ALTREF2_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { NEWMV, { ALTREF_FRAME, NONE_FRAME } }, { NEWMV, { GOLDEN_FRAME, NONE_FRAME } }, { NEARMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { NEARMV, { LAST2_FRAME, NONE_FRAME } }, { NEARMV, { LAST3_FRAME, NONE_FRAME } }, { NEARMV, { BWDREF_FRAME, NONE_FRAME } }, { NEARMV, { ALTREF2_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { NEARMV, { ALTREF_FRAME, NONE_FRAME } }, { NEARMV, { GOLDEN_FRAME, NONE_FRAME } }, { ZEROMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { ZEROMV, { LAST2_FRAME, NONE_FRAME } }, { ZEROMV, { LAST3_FRAME, NONE_FRAME } }, { ZEROMV, { BWDREF_FRAME, NONE_FRAME } }, { ZEROMV, { ALTREF2_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { ZEROMV, { GOLDEN_FRAME, NONE_FRAME } }, { ZEROMV, { ALTREF_FRAME, NONE_FRAME } }, @@ -225,59 +200,46 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { #if CONFIG_COMPOUND_SINGLEREF // Single ref comp mode { SR_NEAREST_NEARMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { SR_NEAREST_NEARMV, { LAST2_FRAME, NONE_FRAME } }, { SR_NEAREST_NEARMV, { LAST3_FRAME, NONE_FRAME } }, { SR_NEAREST_NEARMV, { BWDREF_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { SR_NEAREST_NEARMV, { GOLDEN_FRAME, NONE_FRAME } }, { SR_NEAREST_NEARMV, { ALTREF_FRAME, NONE_FRAME } }, /* { SR_NEAREST_NEWMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { SR_NEAREST_NEWMV, { LAST2_FRAME, NONE_FRAME } }, { SR_NEAREST_NEWMV, { LAST3_FRAME, NONE_FRAME } }, { SR_NEAREST_NEWMV, { BWDREF_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { SR_NEAREST_NEWMV, { GOLDEN_FRAME, NONE_FRAME } }, { SR_NEAREST_NEWMV, { ALTREF_FRAME, NONE_FRAME } },*/ { SR_NEAR_NEWMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { SR_NEAR_NEWMV, { LAST2_FRAME, NONE_FRAME } }, { SR_NEAR_NEWMV, { LAST3_FRAME, NONE_FRAME } }, { SR_NEAR_NEWMV, { BWDREF_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { SR_NEAR_NEWMV, { GOLDEN_FRAME, NONE_FRAME } }, { SR_NEAR_NEWMV, { ALTREF_FRAME, NONE_FRAME } }, { SR_ZERO_NEWMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { SR_ZERO_NEWMV, { LAST2_FRAME, NONE_FRAME } }, { SR_ZERO_NEWMV, { LAST3_FRAME, NONE_FRAME } }, { SR_ZERO_NEWMV, { BWDREF_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { SR_ZERO_NEWMV, { GOLDEN_FRAME, NONE_FRAME } }, { SR_ZERO_NEWMV, { ALTREF_FRAME, NONE_FRAME } }, { SR_NEW_NEWMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS { SR_NEW_NEWMV, { LAST2_FRAME, NONE_FRAME } }, { SR_NEW_NEWMV, { LAST3_FRAME, NONE_FRAME } }, { SR_NEW_NEWMV, { BWDREF_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS { SR_NEW_NEWMV, { GOLDEN_FRAME, NONE_FRAME } }, { SR_NEW_NEWMV, { ALTREF_FRAME, NONE_FRAME } }, #endif // CONFIG_COMPOUND_SINGLEREF { NEAREST_NEARESTMV, { LAST_FRAME, ALTREF_FRAME } }, -#if CONFIG_EXT_REFS { NEAREST_NEARESTMV, { LAST2_FRAME, ALTREF_FRAME } }, { NEAREST_NEARESTMV, { LAST3_FRAME, ALTREF_FRAME } }, -#endif // CONFIG_EXT_REFS { NEAREST_NEARESTMV, { GOLDEN_FRAME, ALTREF_FRAME } }, -#if CONFIG_EXT_REFS { NEAREST_NEARESTMV, { LAST_FRAME, BWDREF_FRAME } }, { NEAREST_NEARESTMV, { LAST2_FRAME, BWDREF_FRAME } }, { NEAREST_NEARESTMV, { LAST3_FRAME, BWDREF_FRAME } }, @@ -293,7 +255,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEAREST_NEARESTMV, { LAST_FRAME, GOLDEN_FRAME } }, { NEAREST_NEARESTMV, { BWDREF_FRAME, ALTREF_FRAME } }, #endif // CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS { PAETH_PRED, { INTRA_FRAME, NONE_FRAME } }, @@ -311,7 +272,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEW_NEWMV, { LAST_FRAME, ALTREF_FRAME } }, { ZERO_ZEROMV, { LAST_FRAME, ALTREF_FRAME } }, -#if CONFIG_EXT_REFS { NEAR_NEARMV, { LAST2_FRAME, ALTREF_FRAME } }, { NEW_NEARESTMV, { LAST2_FRAME, ALTREF_FRAME } }, { NEAREST_NEWMV, { LAST2_FRAME, ALTREF_FRAME } }, @@ -327,7 +287,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEAR_NEWMV, { LAST3_FRAME, ALTREF_FRAME } }, { NEW_NEWMV, { LAST3_FRAME, ALTREF_FRAME } }, { ZERO_ZEROMV, { LAST3_FRAME, ALTREF_FRAME } }, -#endif // CONFIG_EXT_REFS { NEAR_NEARMV, { GOLDEN_FRAME, ALTREF_FRAME } }, { NEW_NEARESTMV, { GOLDEN_FRAME, ALTREF_FRAME } }, @@ -337,7 +296,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEW_NEWMV, { GOLDEN_FRAME, ALTREF_FRAME } }, { ZERO_ZEROMV, { GOLDEN_FRAME, ALTREF_FRAME } }, -#if CONFIG_EXT_REFS { NEAR_NEARMV, { LAST_FRAME, BWDREF_FRAME } }, { NEW_NEARESTMV, { LAST_FRAME, BWDREF_FRAME } }, { NEAREST_NEWMV, { LAST_FRAME, BWDREF_FRAME } }, @@ -435,7 +393,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEW_NEWMV, { BWDREF_FRAME, ALTREF_FRAME } }, { ZERO_ZEROMV, { BWDREF_FRAME, ALTREF_FRAME } }, #endif // CONFIG_EXT_COMP_REFS -#endif // CONFIG_EXT_REFS { H_PRED, { INTRA_FRAME, NONE_FRAME } }, { V_PRED, { INTRA_FRAME, NONE_FRAME } }, @@ -451,7 +408,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEARMV, { LAST_FRAME, INTRA_FRAME } }, { NEWMV, { LAST_FRAME, INTRA_FRAME } }, -#if CONFIG_EXT_REFS { ZEROMV, { LAST2_FRAME, INTRA_FRAME } }, { NEARESTMV, { LAST2_FRAME, INTRA_FRAME } }, { NEARMV, { LAST2_FRAME, INTRA_FRAME } }, @@ -461,14 +417,12 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEARESTMV, { LAST3_FRAME, INTRA_FRAME } }, { NEARMV, { LAST3_FRAME, INTRA_FRAME } }, { NEWMV, { LAST3_FRAME, INTRA_FRAME } }, -#endif // CONFIG_EXT_REFS { ZEROMV, { GOLDEN_FRAME, INTRA_FRAME } }, { NEARESTMV, { GOLDEN_FRAME, INTRA_FRAME } }, { NEARMV, { GOLDEN_FRAME, INTRA_FRAME } }, { NEWMV, { GOLDEN_FRAME, INTRA_FRAME } }, -#if CONFIG_EXT_REFS { ZEROMV, { BWDREF_FRAME, INTRA_FRAME } }, { NEARESTMV, { BWDREF_FRAME, INTRA_FRAME } }, { NEARMV, { BWDREF_FRAME, INTRA_FRAME } }, @@ -478,7 +432,6 @@ static const MODE_DEFINITION av1_mode_order[MAX_MODES] = { { NEARESTMV, { ALTREF2_FRAME, INTRA_FRAME } }, { NEARMV, { ALTREF2_FRAME, INTRA_FRAME } }, { NEWMV, { ALTREF2_FRAME, INTRA_FRAME } }, -#endif // CONFIG_EXT_REFS { ZEROMV, { ALTREF_FRAME, INTRA_FRAME } }, { NEARESTMV, { ALTREF_FRAME, INTRA_FRAME } }, @@ -6955,24 +6908,18 @@ static void estimate_ref_frame_costs( if (cm->reference_mode != COMPOUND_REFERENCE) { aom_prob ref_single_p1 = av1_get_pred_prob_single_ref_p1(cm, xd); aom_prob ref_single_p2 = av1_get_pred_prob_single_ref_p2(cm, xd); -#if CONFIG_EXT_REFS aom_prob ref_single_p3 = av1_get_pred_prob_single_ref_p3(cm, xd); aom_prob ref_single_p4 = av1_get_pred_prob_single_ref_p4(cm, xd); aom_prob ref_single_p5 = av1_get_pred_prob_single_ref_p5(cm, xd); aom_prob ref_single_p6 = av1_get_pred_prob_single_ref_p6(cm, xd); -#endif // CONFIG_EXT_REFS unsigned int base_cost = av1_cost_bit(intra_inter_p, 1); - ref_costs_single[LAST_FRAME] = -#if CONFIG_EXT_REFS - ref_costs_single[LAST2_FRAME] = ref_costs_single[LAST3_FRAME] = - ref_costs_single[BWDREF_FRAME] = ref_costs_single[ALTREF2_FRAME] = -#endif // CONFIG_EXT_REFS - ref_costs_single[GOLDEN_FRAME] = - ref_costs_single[ALTREF_FRAME] = base_cost; + ref_costs_single[LAST_FRAME] = ref_costs_single[LAST2_FRAME] = + ref_costs_single[LAST3_FRAME] = ref_costs_single[BWDREF_FRAME] = + ref_costs_single[ALTREF2_FRAME] = ref_costs_single[GOLDEN_FRAME] = + ref_costs_single[ALTREF_FRAME] = base_cost; -#if CONFIG_EXT_REFS ref_costs_single[LAST_FRAME] += av1_cost_bit(ref_single_p1, 0); ref_costs_single[LAST2_FRAME] += av1_cost_bit(ref_single_p1, 0); ref_costs_single[LAST3_FRAME] += av1_cost_bit(ref_single_p1, 0); @@ -6998,34 +6945,22 @@ static void estimate_ref_frame_costs( ref_costs_single[BWDREF_FRAME] += av1_cost_bit(ref_single_p6, 0); ref_costs_single[ALTREF2_FRAME] += av1_cost_bit(ref_single_p6, 1); -#else // !CONFIG_EXT_REFS - ref_costs_single[LAST_FRAME] += av1_cost_bit(ref_single_p1, 0); - ref_costs_single[GOLDEN_FRAME] += av1_cost_bit(ref_single_p1, 1); - ref_costs_single[ALTREF_FRAME] += av1_cost_bit(ref_single_p1, 1); - - ref_costs_single[GOLDEN_FRAME] += av1_cost_bit(ref_single_p2, 0); - ref_costs_single[ALTREF_FRAME] += av1_cost_bit(ref_single_p2, 1); -#endif // CONFIG_EXT_REFS } else { ref_costs_single[LAST_FRAME] = 512; -#if CONFIG_EXT_REFS ref_costs_single[LAST2_FRAME] = 512; ref_costs_single[LAST3_FRAME] = 512; ref_costs_single[BWDREF_FRAME] = 512; ref_costs_single[ALTREF2_FRAME] = 512; -#endif // CONFIG_EXT_REFS ref_costs_single[GOLDEN_FRAME] = 512; ref_costs_single[ALTREF_FRAME] = 512; } if (cm->reference_mode != SINGLE_REFERENCE) { aom_prob ref_comp_p = av1_get_pred_prob_comp_ref_p(cm, xd); -#if CONFIG_EXT_REFS aom_prob ref_comp_p1 = av1_get_pred_prob_comp_ref_p1(cm, xd); aom_prob ref_comp_p2 = av1_get_pred_prob_comp_ref_p2(cm, xd); aom_prob bwdref_comp_p = av1_get_pred_prob_comp_bwdref_p(cm, xd); aom_prob bwdref_comp_p1 = av1_get_pred_prob_comp_bwdref_p1(cm, xd); -#endif // CONFIG_EXT_REFS unsigned int base_cost = av1_cost_bit(intra_inter_p, 1); @@ -7089,20 +7024,15 @@ static void estimate_ref_frame_costs( base_cost + av1_cost_bit(comp_ref_type_p, 0) + av1_cost_bit(uni_comp_ref_p, 1); -#else // !CONFIG_EXT_COMP_REFS +#else // !CONFIG_EXT_COMP_REFS - ref_costs_comp[LAST_FRAME] = -#if CONFIG_EXT_REFS - ref_costs_comp[LAST2_FRAME] = ref_costs_comp[LAST3_FRAME] = -#endif // CONFIG_EXT_REFS - ref_costs_comp[GOLDEN_FRAME] = base_cost; + ref_costs_comp[LAST_FRAME] = ref_costs_comp[LAST2_FRAME] = + ref_costs_comp[LAST3_FRAME] = ref_costs_comp[GOLDEN_FRAME] = + base_cost; -#if CONFIG_EXT_REFS ref_costs_comp[BWDREF_FRAME] = ref_costs_comp[ALTREF2_FRAME] = ref_costs_comp[ALTREF_FRAME] = 0; -#endif // CONFIG_EXT_REFS -#if CONFIG_EXT_REFS ref_costs_comp[LAST_FRAME] += av1_cost_bit(ref_comp_p, 0); ref_costs_comp[LAST2_FRAME] += av1_cost_bit(ref_comp_p, 0); ref_costs_comp[LAST3_FRAME] += av1_cost_bit(ref_comp_p, 1); @@ -7122,10 +7052,6 @@ static void estimate_ref_frame_costs( ref_costs_comp[BWDREF_FRAME] += av1_cost_bit(bwdref_comp_p1, 0); ref_costs_comp[ALTREF2_FRAME] += av1_cost_bit(bwdref_comp_p1, 1); -#else // !CONFIG_EXT_REFS - ref_costs_comp[LAST_FRAME] += av1_cost_bit(ref_comp_p, 0); - ref_costs_comp[GOLDEN_FRAME] += av1_cost_bit(ref_comp_p, 1); -#endif // CONFIG_EXT_REFS #endif // CONFIG_EXT_COMP_REFS } else { #if CONFIG_EXT_COMP_REFS @@ -7138,15 +7064,13 @@ static void estimate_ref_frame_costs( ref_costs_comp[LAST_FRAME][LAST3_FRAME] = 512; ref_costs_comp[LAST_FRAME][GOLDEN_FRAME] = 512; ref_costs_comp[BWDREF_FRAME][ALTREF_FRAME] = 512; -#else // !CONFIG_EXT_COMP_REFS +#else // !CONFIG_EXT_COMP_REFS ref_costs_comp[LAST_FRAME] = 512; -#if CONFIG_EXT_REFS ref_costs_comp[LAST2_FRAME] = 512; ref_costs_comp[LAST3_FRAME] = 512; ref_costs_comp[BWDREF_FRAME] = 512; ref_costs_comp[ALTREF2_FRAME] = 512; ref_costs_comp[ALTREF_FRAME] = 512; -#endif // CONFIG_EXT_REFS ref_costs_comp[GOLDEN_FRAME] = 512; #endif // CONFIG_EXT_COMP_REFS } @@ -10330,20 +10254,14 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, int_mv single_newmv[TOTAL_REFS_PER_FRAME] = { { 0 } }; int single_newmv_rate[TOTAL_REFS_PER_FRAME] = { 0 }; int64_t modelled_rd[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME]; - static const int flag_list[TOTAL_REFS_PER_FRAME] = { - 0, - AOM_LAST_FLAG, -#if CONFIG_EXT_REFS - AOM_LAST2_FLAG, - AOM_LAST3_FLAG, -#endif // CONFIG_EXT_REFS - AOM_GOLD_FLAG, -#if CONFIG_EXT_REFS - AOM_BWD_FLAG, - AOM_ALT2_FLAG, -#endif // CONFIG_EXT_REFS - AOM_ALT_FLAG - }; + static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0, + AOM_LAST_FLAG, + AOM_LAST2_FLAG, + AOM_LAST3_FLAG, + AOM_GOLD_FLAG, + AOM_BWD_FLAG, + AOM_ALT2_FLAG, + AOM_ALT_FLAG }; int64_t best_rd = best_rd_so_far; int best_rate_y = INT_MAX, best_rate_uv = INT_MAX; int64_t best_pred_diff[REFERENCE_MODES]; @@ -10595,12 +10513,9 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, // because they may result in zero-zero MVs but be cheaper. if (cpi->rc.is_src_frame_alt_ref && (cpi->oxcf.arnr_max_frames == 0)) { int_mv zeromv; - ref_frame_skip_mask[0] = (1 << LAST_FRAME) | -#if CONFIG_EXT_REFS - (1 << LAST2_FRAME) | (1 << LAST3_FRAME) | - (1 << BWDREF_FRAME) | (1 << ALTREF2_FRAME) | -#endif // CONFIG_EXT_REFS - (1 << GOLDEN_FRAME); + ref_frame_skip_mask[0] = (1 << LAST_FRAME) | (1 << LAST2_FRAME) | + (1 << LAST3_FRAME) | (1 << BWDREF_FRAME) | + (1 << ALTREF2_FRAME) | (1 << GOLDEN_FRAME); ref_frame_skip_mask[1] = SECOND_REF_FRAME_MASK; // TODO(zoeliu): To further explore whether following needs to be done for // BWDREF_FRAME as well. @@ -10748,7 +10663,6 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, ref_frame_skip_mask[0] |= LAST_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; break; -#if CONFIG_EXT_REFS case LAST2_FRAME: ref_frame_skip_mask[0] |= LAST2_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; @@ -10757,12 +10671,10 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, ref_frame_skip_mask[0] |= LAST3_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; break; -#endif // CONFIG_EXT_REFS case GOLDEN_FRAME: ref_frame_skip_mask[0] |= GOLDEN_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; break; -#if CONFIG_EXT_REFS case BWDREF_FRAME: ref_frame_skip_mask[0] |= BWDREF_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; @@ -10771,11 +10683,9 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, ref_frame_skip_mask[0] |= ALTREF2_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; break; -#endif // CONFIG_EXT_REFS - case ALTREF_FRAME: ref_frame_skip_mask[0] |= ALTREF_FRAME_MODE_MASK; -#if CONFIG_EXT_REFS + case ALTREF_FRAME: + ref_frame_skip_mask[0] |= ALTREF_FRAME_MODE_MASK; ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; -#endif // CONFIG_EXT_REFS break; case NONE_FRAME: case TOTAL_REFS_PER_FRAME: @@ -10828,7 +10738,6 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, if (cpi->oxcf.motion_vector_unit_test && ref_frame == INTRA_FRAME) continue; #if CONFIG_ONE_SIDED_COMPOUND && !CONFIG_EXT_COMP_REFS // Changes LL bitstream -#if CONFIG_EXT_REFS if (cpi->oxcf.pass == 0) { // Complexity-compression trade-offs // if (ref_frame == ALTREF_FRAME) continue; @@ -10836,7 +10745,6 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, if (second_ref_frame == ALTREF_FRAME) continue; // if (second_ref_frame == BWDREF_FRAME) continue; } -#endif // CONFIG_EXT_REFS #endif // CONFIG_ONE_SIDED_COMPOUND && !CONFIG_EXT_COMP_REFS comp_pred = second_ref_frame > INTRA_FRAME; if (comp_pred) { @@ -11450,11 +11358,9 @@ void av1_rd_pick_inter_mode_sb(const AV1_COMP *cpi, TileDataEnc *tile_data, if (comp_pred) { #if CONFIG_EXT_COMP_REFS rate2 += ref_costs_comp[ref_frame][second_ref_frame]; -#else // !CONFIG_EXT_COMP_REFS +#else // !CONFIG_EXT_COMP_REFS rate2 += ref_costs_comp[ref_frame]; -#if CONFIG_EXT_REFS rate2 += ref_costs_comp[second_ref_frame]; -#endif // CONFIG_EXT_REFS #endif // CONFIG_EXT_COMP_REFS } else { rate2 += ref_costs_single[ref_frame]; diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c index 5608d031e3..4e7c8dfc2e 100644 --- a/av1/encoder/speed_features.c +++ b/av1/encoder/speed_features.c @@ -328,8 +328,7 @@ void av1_set_speed_features_framesize_dependent(AV1_COMP *cpi) { RD_OPT *const rd = &cpi->rd; int i; -// Limit memory usage for high resolutions -#if CONFIG_EXT_REFS + // Limit memory usage for high resolutions // TODO(zoeliu): Temporary solution to resolve the insufficient RAM issue for // ext-refs. Need to work with @yunqingwang to have a more // effective solution. @@ -340,14 +339,6 @@ void av1_set_speed_features_framesize_dependent(AV1_COMP *cpi) { (oxcf->profile != PROFILE_0)) { sf->use_upsampled_references = 0; } -#else - if (AOMMIN(cm->width, cm->height) > 1080) { - sf->use_upsampled_references = 0; - } else if ((AOMMIN(cm->width, cm->height) > 720) && - (oxcf->profile != PROFILE_0)) { - sf->use_upsampled_references = 0; - } -#endif // CONFIG_EXT_REFS if (oxcf->mode == GOOD) { set_good_speed_feature_framesize_dependent(cpi, sf, oxcf->speed); diff --git a/av1/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c index daa6476894..61fd75d8e6 100644 --- a/av1/encoder/temporal_filter.c +++ b/av1/encoder/temporal_filter.c @@ -647,17 +647,14 @@ void av1_temporal_filter(AV1_COMP *cpi, int frames_to_blur_forward; struct scale_factors sf; YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS] = { NULL }; -#if CONFIG_EXT_REFS const GF_GROUP *const gf_group = &cpi->twopass.gf_group; -#endif // CONFIG_EXT_REFS // Apply context specific adjustments to the arnr filter parameters. adjust_arnr_filter(cpi, distance, rc->gfu_boost, &frames_to_blur, &strength); -// TODO(weitinglin): Currently, we enforce the filtering strength on -// extra ARFs' to be zeros. We should investigate in which -// case it is more beneficial to use non-zero strength -// filtering. -#if CONFIG_EXT_REFS + // TODO(weitinglin): Currently, we enforce the filtering strength on + // extra ARFs' to be zeros. We should investigate in which + // case it is more beneficial to use non-zero strength + // filtering. if (gf_group->update_type[gf_group->index] == INTNL_ARF_UPDATE) { strength = 0; frames_to_blur = 1; @@ -685,7 +682,6 @@ void av1_temporal_filter(AV1_COMP *cpi, cpi->is_arf_filter_off[which_arf] = 1; else cpi->is_arf_filter_off[which_arf] = 0; -#endif // CONFIG_EXT_REFS frames_to_blur_backward = (frames_to_blur / 2); frames_to_blur_forward = ((frames_to_blur - 1) / 2); diff --git a/build/cmake/aom_config_defaults.cmake b/build/cmake/aom_config_defaults.cmake index a241004813..fe1fe0e282 100644 --- a/build/cmake/aom_config_defaults.cmake +++ b/build/cmake/aom_config_defaults.cmake @@ -141,7 +141,6 @@ set(CONFIG_EXT_INTRA 1 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_EXT_PARTITION 1 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_EXT_PARTITION_TYPES 1 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_EXT_PARTITION_TYPES_AB 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_REFS 1 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_EXT_SKIP 0 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_EXT_TILE 0 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_EXT_TX 1 CACHE NUMBER "AV1 experiment flag.") diff --git a/build/cmake/aom_experiment_deps.cmake b/build/cmake/aom_experiment_deps.cmake index fe772a2f4f..7776aeeb37 100644 --- a/build/cmake/aom_experiment_deps.cmake +++ b/build/cmake/aom_experiment_deps.cmake @@ -68,11 +68,6 @@ macro (fix_experiment_configs) endif () endif () - if (CONFIG_EXT_COMP_REFS) - if (NOT CONFIG_EXT_REFS) - change_config_and_warn(CONFIG_EXT_REFS 1 CONFIG_EXT_COMP_REFS) - endif () - endif () if (CONFIG_STRIPED_LOOP_RESTORATION) if (NOT CONFIG_LOOP_RESTORATION) diff --git a/configure b/configure index e74748475c..fce2ec8e65 100755 --- a/configure +++ b/configure @@ -265,7 +265,6 @@ EXPERIMENT_LIST=" interintra wedge compound_segment - ext_refs global_motion new_quant supertx @@ -520,7 +519,6 @@ post_process_cmdline() { soft_enable ext_intra soft_enable intra_edge soft_enable mv_compress - soft_enable ext_refs soft_enable dual_filter soft_enable motion_var soft_enable warped_motion @@ -578,7 +576,6 @@ post_process_cmdline() { enabled chroma_sub8x8 && enable_feature cb4x4 enabled ncobmc_adapt_weight && enable_feature motion_var enabled bgsprite && enable_feature global_motion - enabled ext_comp_refs && enable_feature ext_refs enabled ext_comp_refs && enable_feature one_sided_compound enabled rect_tx_ext && enable_feature rect_tx enabled lgt_from_pred && enable_feature ext_tx @@ -591,7 +588,6 @@ post_process_cmdline() { enabled frame_sign_bias && enable_feature frame_marker enabled txmg && enable_feature highbitdepth enabled ext_skip && enable_feature frame_marker - enabled ext_skip && enable_feature ext_refs enabled horzonly_frame_superres && enable_feature frame_superres enabled ext_warped_motion && enable_feature warped_motion diff --git a/examples/inspect.c b/examples/inspect.c index 595cb0242a..a2226c1fb1 100644 --- a/examples/inspect.c +++ b/examples/inspect.c @@ -128,14 +128,9 @@ typedef struct map_entry { } map_entry; const map_entry refs_map[] = { ENUM(INTRA_FRAME), ENUM(LAST_FRAME), -#if CONFIG_EXT_REFS ENUM(LAST2_FRAME), ENUM(LAST3_FRAME), ENUM(GOLDEN_FRAME), ENUM(BWDREF_FRAME), - ENUM(ALTREF_FRAME), -#else - ENUM(GOLDEN_FRAME), ENUM(ALTREF_FRAME), -#endif - LAST_ENUM }; + ENUM(ALTREF_FRAME), LAST_ENUM }; const map_entry block_size_map[] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 diff --git a/test/arf_freq_test.cc b/test/arf_freq_test.cc index b4b17c9abd..4e0a62a647 100644 --- a/test/arf_freq_test.cc +++ b/test/arf_freq_test.cc @@ -208,7 +208,6 @@ TEST_P(ArfFreqTestLarge, MinArfFreqTest) { } } -#if CONFIG_HIGHBITDEPTH || CONFIG_EXT_REFS #if CONFIG_AV1_ENCODER // TODO(angiebird): 25-29 fail in high bitdepth mode. // TODO(zoeliu): This ArfFreqTest does not work with BWDREF_FRAME, as @@ -223,9 +222,4 @@ INSTANTIATE_TEST_CASE_P( ::testing::ValuesIn(kTestVectors), ::testing::ValuesIn(kEncodeVectors), ::testing::ValuesIn(kMinArfVectors))); #endif // CONFIG_AV1_ENCODER -#else -AV1_INSTANTIATE_TEST_CASE(ArfFreqTestLarge, ::testing::ValuesIn(kTestVectors), - ::testing::ValuesIn(kEncodeVectors), - ::testing::ValuesIn(kMinArfVectors)); -#endif // CONFIG_HIGHBITDEPTH || CONFIG_EXT_REFS } // namespace diff --git a/test/superframe_test.cc b/test/superframe_test.cc index c8f663e5c7..33dabd26ba 100644 --- a/test/superframe_test.cc +++ b/test/superframe_test.cc @@ -106,13 +106,9 @@ TEST_P(SuperframeTest, TestSuperframeIndexIsOptional) { ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288, 30, 1, 0, 40); ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); -#if CONFIG_EXT_REFS // NOTE: The use of BWDREF_FRAME will enable the coding of more non-show // frames besides ALTREF_FRAME. EXPECT_GE(sf_count_, 1); -#else - EXPECT_EQ(sf_count_, 1); -#endif // CONFIG_EXT_REFS } // The superframe index is currently mandatory with both ANS and DAALA_EC due diff --git a/tools/aom_entropy_optimizer.c b/tools/aom_entropy_optimizer.c index 798f519878..1a3b17e23b 100644 --- a/tools/aom_entropy_optimizer.c +++ b/tools/aom_entropy_optimizer.c @@ -609,7 +609,6 @@ int main(int argc, const char **argv) { "static const aom_cdf_prob\n" "default_single_ref_cdf[REF_CONTEXTS][SINGLE_REFS - 1][CDF_SIZE(2)]"); -#if CONFIG_EXT_REFS /* ext_refs experiment */ cts_each_dim[0] = REF_CONTEXTS; cts_each_dim[1] = FWD_REFS - 1; @@ -633,20 +632,6 @@ int main(int argc, const char **argv) { &fc.comp_bwdref[0][0][0], probsfile, 3, cts_each_dim, "static const aom_cdf_prob\n" "default_comp_bwdref_cdf[REF_CONTEXTS][BWD_REFS - 1][CDF_SIZE(2)]"); -#else - /* Reference frame (compound refs) */ - cts_each_dim[0] = REF_CONTEXTS; - cts_each_dim[1] = COMP_REFS - 1; - cts_each_dim[2] = 2; - optimize_entropy_table( - &fc.comp_ref[0][0][0], probsfile, 3, cts_each_dim, NULL, 1, - "static const aom_prob default_comp_ref_p[REF_CONTEXTS]" - "[COMP_REFS - 1]"); - optimize_cdf_table( - &fc.comp_ref[0][0][0], probsfile, 3, cts_each_dim, - "static const aom_cdf_prob\n" - "default_comp_ref_cdf[REF_CONTEXTS][COMP_REFS - 1][CDF_SIZE(2)]"); -#endif // CONFIG_EXT_REFS /* Compound single ref inter mode */ #if CONFIG_COMPOUND_SINGLEREF -- GitLab