Remove flag USE_SYMM_MULTI_LAYER BUG=aomedia:2306 Change-Id: Id37c3d4dd0871e0f7addd66c540cb799e77e4396
diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c index 3680a9a..3e02884 100644 --- a/av1/encoder/encode_strategy.c +++ b/av1/encoder/encode_strategy.c
@@ -86,41 +86,29 @@ AV1_COMMON *const cm = &cpi->common; const FRAME_UPDATE_TYPE next_frame_update_type = gf_group->update_type[gf_group->index]; -#if USE_SYMM_MULTI_LAYER const int which_arf = (cpi->new_bwdref_update_rule == 1) ? gf_group->arf_update_idx[gf_group->index] > 0 : gf_group->arf_update_idx[gf_group->index]; -#else - const int which_arf = gf_group->arf_update_idx[gf_group->index]; -#endif if (cm->show_existing_frame == 1) { cm->show_existing_frame = 0; } else if (cpi->rc.is_last_bipred_frame) { -#if USE_SYMM_MULTI_LAYER // NOTE: When new structure is used, every bwdref will have one overlay // frame. Therefore, there is no need to find out which frame to // show in advance. if (cpi->new_bwdref_update_rule == 0) { -#endif // NOTE: If the current frame is a last bi-predictive frame, it is // needed next to show the BWDREF_FRAME, which is pointed by // the last_fb_idxes[0] after reference frame buffer update cpi->rc.is_last_bipred_frame = 0; cm->show_existing_frame = 1; cpi->existing_fb_idx_to_show = cm->remapped_ref_idx[0]; -#if USE_SYMM_MULTI_LAYER } -#endif } else if (cpi->is_arf_filter_off[which_arf] && (next_frame_update_type == OVERLAY_UPDATE || next_frame_update_type == INTNL_OVERLAY_UPDATE)) { -#if USE_SYMM_MULTI_LAYER const int bwdref_to_show = (cpi->new_bwdref_update_rule == 1) ? BWDREF_FRAME : ALTREF2_FRAME; -#else - const int bwdref_to_show = ALTREF2_FRAME; -#endif // Other parameters related to OVERLAY_UPDATE will be taken care of // in av1_rc_get_second_pass_params(cpi) cm->show_existing_frame = 1; @@ -129,10 +117,9 @@ (next_frame_update_type == OVERLAY_UPDATE) ? get_ref_frame_map_idx(cm, ALTREF_FRAME) : get_ref_frame_map_idx(cm, bwdref_to_show); -#if USE_SYMM_MULTI_LAYER - if (cpi->new_bwdref_update_rule == 0) -#endif + if (cpi->new_bwdref_update_rule == 0) { cpi->is_arf_filter_off[which_arf] = 0; + } } cpi->rc.is_src_frame_ext_arf = 0; }
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c index 82fec7a..f6d612e 100644 --- a/av1/encoder/encoder.c +++ b/av1/encoder/encoder.c
@@ -3509,7 +3509,6 @@ } } -#if USE_SYMM_MULTI_LAYER // This function is used to shift the virtual indices of bwd reference // frames as follows: // BWD_REF -> ALT2_REF -> EXT_REF @@ -3549,7 +3548,6 @@ cpi->common.remapped_ref_idx[ordered_bwd[i + 1] - LAST_FRAME]; } } -#endif // USE_SYMM_MULTI_LAYER static void update_reference_frames(AV1_COMP *cpi) { AV1_COMMON *const cm = &cpi->common; @@ -3623,13 +3621,9 @@ #if CONFIG_DEBUG const GF_GROUP *const gf_group = &cpi->twopass.gf_group; assert(gf_group->update_type[gf_group->index] == INTNL_OVERLAY_UPDATE); -#endif -#if USE_SYMM_MULTI_LAYER +#endif // CONFIG_DEBUG const int bwdref_to_show = (cpi->new_bwdref_update_rule == 1) ? BWDREF_FRAME : ALTREF2_FRAME; -#else - const int bwdref_to_show = ALTREF2_FRAME; -#endif // Deal with the special case for showing existing internal ALTREF_FRAME // Refresh the LAST_FRAME with the ALTREF_FRAME and retire the LAST3_FRAME // by updating the virtual indices. @@ -3642,18 +3636,14 @@ memcpy(cpi->interp_filter_selected[LAST_FRAME], cpi->interp_filter_selected[bwdref_to_show], sizeof(cpi->interp_filter_selected[bwdref_to_show])); -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule == 1) { lshift_bwd_ref_frames(cpi); // pass outdated forward reference frame (previous LAST3) to the // spared space cm->remapped_ref_idx[EXTREF_FRAME - LAST_FRAME] = last3_remapped_idx; } else { -#endif cm->remapped_ref_idx[bwdref_to_show - LAST_FRAME] = last3_remapped_idx; -#if USE_SYMM_MULTI_LAYER } -#endif } else { /* For non key/golden frames */ // === ALTREF_FRAME === if (cpi->refresh_alt_ref_frame) { @@ -3678,7 +3668,6 @@ // === BWDREF_FRAME === if (cpi->refresh_bwd_ref_frame) { -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule) { // We shift the backward reference frame as follows: // BWDREF -> ALTREF2 -> EXTREF @@ -3690,13 +3679,10 @@ rshift_bwd_ref_frames(cpi); cm->remapped_ref_idx[BWDREF_FRAME - LAST_FRAME] = tmp; } else { -#endif // USE_SYMM_MULTI_LAYER assign_frame_buffer_p( &cm->ref_frame_map[get_ref_frame_map_idx(cm, BWDREF_FRAME)], cm->cur_frame); -#if USE_SYMM_MULTI_LAYER } -#endif memcpy(cpi->interp_filter_selected[BWDREF_FRAME], cpi->interp_filter_selected[0], sizeof(cpi->interp_filter_selected[0])); @@ -3762,11 +3748,7 @@ // If the new structure is used, we will always have overlay frames coupled // with bwdref frames. Therefore, we won't have to perform this update // in advance (we do this update when the overlay frame shows up). -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule == 0 && cpi->rc.is_last_bipred_frame) { -#else - if (cpi->rc.is_last_bipred_frame) { -#endif // Refresh the LAST_FRAME with the BWDREF_FRAME and retire the // LAST3_FRAME by updating the virtual indices. // @@ -4480,12 +4462,8 @@ refresh_mask |= (cpi->refresh_last_frame << get_ref_frame_map_idx(cm, LAST3_FRAME)); -#if USE_SYMM_MULTI_LAYER const int bwd_ref_frame = (cpi->new_bwdref_update_rule == 1) ? EXTREF_FRAME : BWDREF_FRAME; -#else - const int bwd_ref_frame = BWDREF_FRAME; -#endif refresh_mask |= (cpi->refresh_bwd_ref_frame << get_ref_frame_map_idx(cm, bwd_ref_frame));
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h index 7292525..1b4d7cd 100644 --- a/av1/encoder/encoder.h +++ b/av1/encoder/encoder.h
@@ -659,14 +659,12 @@ // frame of the same type as the current frame). int fb_of_context_type[REF_FRAMES]; -#if USE_SYMM_MULTI_LAYER // When true, a new rule for backward (future) reference frames is in effect: // - BWDREF_FRAME is always the closest future frame available // - ALTREF2_FRAME is always the 2nd closest future frame available // - 'refresh_bwd_ref_frame' flag is used for updating both the BWDREF_FRAME // and ALTREF2_FRAME. ('refresh_alt2_ref_frame' flag is irrelevant). int new_bwdref_update_rule; -#endif int ext_refresh_frame_flags_pending; int ext_refresh_last_frame;
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c index 383644b..55c0055 100644 --- a/av1/encoder/firstpass.c +++ b/av1/encoder/firstpass.c
@@ -1567,7 +1567,6 @@ 0); } -#if USE_SYMM_MULTI_LAYER // #define CHCEK_GF_PARAMETER #ifdef CHCEK_GF_PARAMETER void check_frame_params(GF_GROUP *const gf_group, int gf_interval, @@ -1923,12 +1922,10 @@ return gf_update_frames; } #endif // USE_MANUAL_GF4_STRUCT -#endif // USE_SYMM_MULTI_LAYER static void define_gf_group_structure(AV1_COMP *cpi) { RATE_CONTROL *const rc = &cpi->rc; -#if USE_SYMM_MULTI_LAYER const int max_pyr_height = cpi->oxcf.gf_max_pyr_height; const int valid_customized_gf_length = max_pyr_height >= MIN_PYRAMID_LVL && max_pyr_height <= MAX_PYRAMID_LVL && @@ -1948,7 +1945,6 @@ } else { cpi->new_bwdref_update_rule = 0; } -#endif TWO_PASS *const twopass = &cpi->twopass; GF_GROUP *const gf_group = &twopass->gf_group; @@ -2165,7 +2161,6 @@ gf_group->brf_src_offset[frame_index] = 0; } -#if USE_SYMM_MULTI_LAYER #define NEW_MULTI_LVL_BOOST_VBR_ALLOC 1 #if NEW_MULTI_LVL_BOOST_VBR_ALLOC @@ -2174,7 +2169,6 @@ { 1.0, 0.0, 0.0 }, { 0.6, 0.4, 0 }, { 0.45, 0.35, 0.20 } }; #endif // NEW_MULTI_LVL_BOOST_VBR_ALLOC -#endif // USE_SYMM_MULTI_LAYER static void allocate_gf_group_bits(AV1_COMP *cpi, int64_t gf_group_bits, double group_error, int gf_arf_bits) { RATE_CONTROL *const rc = &cpi->rc; @@ -2229,13 +2223,11 @@ } } -#if USE_SYMM_MULTI_LAYER #if NEW_MULTI_LVL_BOOST_VBR_ALLOC // Save. const int tmp_frame_index = frame_index; int budget_reduced_from_leaf_level = 0; #endif // NEW_MULTI_LVL_BOOST_VBR_ALLOC -#endif // USE_SYMM_MULTI_LAYER // Allocate bits to the other frames in the group. const int normal_frames = @@ -2266,7 +2258,6 @@ // TODO(zoeliu): To investigate whether the allocated bits on // BIPRED_UPDATE frames need to be further adjusted. gf_group->bit_allocation[frame_index] = target_frame_size; -#if USE_SYMM_MULTI_LAYER } else if (cpi->new_bwdref_update_rule && gf_group->update_type[frame_index] == INTNL_OVERLAY_UPDATE) { assert(gf_group->pyramid_height <= MAX_PYRAMID_LVL && @@ -2277,7 +2268,6 @@ gf_group->bit_allocation[arf_pos] = target_frame_size; // Note: Boost, if needed, is added in the next loop. -#endif // USE_SYMM_MULTI_LAYER } else { assert(gf_group->update_type[frame_index] == LF_UPDATE || gf_group->update_type[frame_index] == INTNL_OVERLAY_UPDATE); @@ -2305,7 +2295,6 @@ } } -#if USE_SYMM_MULTI_LAYER #if MULTI_LVL_BOOST_VBR_CQ if (budget_reduced_from_leaf_level > 0) { // Restore. @@ -2342,13 +2331,8 @@ } } #endif // MULTI_LVL_BOOST_VBR_CQ -#endif // USE_SYMM_MULTI_LAYER -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule == 0 && rc->source_alt_ref_pending) { -#else - if (rc->source_alt_ref_pending) { -#endif if (cpi->num_extra_arfs) { // NOTE: For bit allocation, move the allocated bits associated with // INTNL_OVERLAY_UPDATE to the corresponding INTNL_ARF_UPDATE. @@ -2662,7 +2646,6 @@ // Note: When new pyramid structure is used through // 'define_customized_gf_group_structure()' function, this value is // overridden. -#if USE_SYMM_MULTI_LAYER if (rc->baseline_gf_interval == MIN_GF_INTERVAL && rc->source_alt_ref_pending) { cpi->num_extra_arfs = 1; @@ -2671,18 +2654,8 @@ rc->source_alt_ref_pending, oxcf->gf_max_pyr_height); } -#else - cpi->num_extra_arfs = get_number_of_extra_arfs(rc->baseline_gf_interval, - rc->source_alt_ref_pending, - oxcf->gf_max_pyr_height); -#endif // USE_SYMM_MULTI_LAYER } -#if !USE_SYMM_MULTI_LAYER - // Currently at maximum two extra ARFs' are allowed - assert(cpi->num_extra_arfs <= MAX_EXT_ARFS); -#endif - rc->frames_till_gf_update_due = rc->baseline_gf_interval; rc->bipred_group_interval = BFG_INTERVAL;
diff --git a/av1/encoder/firstpass.h b/av1/encoder/firstpass.h index c7e7e70..35af2d1 100644 --- a/av1/encoder/firstpass.h +++ b/av1/encoder/firstpass.h
@@ -114,12 +114,10 @@ unsigned char arf_src_offset[MAX_STATIC_GF_GROUP_LENGTH + 1]; unsigned char arf_update_idx[MAX_STATIC_GF_GROUP_LENGTH + 1]; unsigned char arf_ref_idx[MAX_STATIC_GF_GROUP_LENGTH + 1]; -#if USE_SYMM_MULTI_LAYER unsigned char arf_pos_in_gf[MAX_STATIC_GF_GROUP_LENGTH + 1]; unsigned char pyramid_level[MAX_STATIC_GF_GROUP_LENGTH + 1]; unsigned char pyramid_height; unsigned char pyramid_lvl_nodes[MAX_PYRAMID_LVL]; -#endif // USE_SYMM_MULTI_LAYER unsigned char brf_src_offset[MAX_STATIC_GF_GROUP_LENGTH + 1]; unsigned char bidir_pred_enabled[MAX_STATIC_GF_GROUP_LENGTH + 1]; int bit_allocation[MAX_STATIC_GF_GROUP_LENGTH + 1];
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c index 6635304..20d6aab 100644 --- a/av1/encoder/ratectrl.c +++ b/av1/encoder/ratectrl.c
@@ -1053,7 +1053,7 @@ // Constrained quality use slightly lower active best. active_best_quality = active_best_quality * 15 / 16; -#if USE_SYMM_MULTI_LAYER && MULTI_LVL_BOOST_VBR_CQ +#if MULTI_LVL_BOOST_VBR_CQ if (gf_group->update_type[gf_group->index] == ARF_UPDATE || (is_intrl_arf_boost && !cpi->new_bwdref_update_rule)) { #if REDUCE_LAST_ALT_BOOST @@ -1074,7 +1074,7 @@ ++this_height; } } -#endif // USE_SYMM_MULTI_LAYER && MULTI_LVL_BOOST_VBR_CQ +#endif // MULTI_LVL_BOOST_VBR_CQ } else if (oxcf->rc_mode == AOM_Q) { if (!cpi->refresh_alt_ref_frame && !is_intrl_arf_boost) { active_best_quality = cq_level; @@ -1092,7 +1092,6 @@ assert(rc->arf_q >= 0); // Ensure it is set to a valid value. active_best_quality = rc->arf_q; } -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule && is_intrl_arf_boost) { int this_height = gf_group_pyramid_level(cpi); while (this_height < gf_group->pyramid_height) { @@ -1100,14 +1099,11 @@ ++this_height; } } else { -#endif // Modify best quality for second level arfs. For mode AOM_Q this // becomes the baseline frame q. if (gf_group->rf_level[gf_group->index] == GF_ARF_LOW) active_best_quality = (active_best_quality + cq_level + 1) / 2; -#if USE_SYMM_MULTI_LAYER } -#endif } } else { active_best_quality = get_gf_active_quality(rc, q, bit_depth); @@ -1117,7 +1113,6 @@ active_best_quality = min_boost - (int)(boost * rc->arf_boost_factor); #endif -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule && is_intrl_arf_boost) { int this_height = gf_group_pyramid_level(cpi); while (this_height < gf_group->pyramid_height) { @@ -1126,7 +1121,6 @@ ++this_height; } } -#endif } } else { if (oxcf->rc_mode == AOM_Q) { @@ -1431,17 +1425,13 @@ case INTNL_ARF_UPDATE: cpi->refresh_last_frame = 0; cpi->refresh_golden_frame = 0; -#if USE_SYMM_MULTI_LAYER if (cpi->new_bwdref_update_rule == 1) { cpi->refresh_bwd_ref_frame = 1; cpi->refresh_alt2_ref_frame = 0; } else { -#endif cpi->refresh_bwd_ref_frame = 0; cpi->refresh_alt2_ref_frame = 1; -#if USE_SYMM_MULTI_LAYER } -#endif cpi->refresh_alt_ref_frame = 0; break;
diff --git a/av1/encoder/ratectrl.h b/av1/encoder/ratectrl.h index 5297aa1..2bad55e 100644 --- a/av1/encoder/ratectrl.h +++ b/av1/encoder/ratectrl.h
@@ -40,14 +40,11 @@ // (Old structure supports height = 1, but does NOT support height = 4). #define MIN_PYRAMID_LVL 2 #define MAX_PYRAMID_LVL 4 -#define USE_SYMM_MULTI_LAYER 1 #define REDUCE_LAST_ALT_BOOST 1 #define REDUCE_LAST_GF_LENGTH 1 #define MULTI_LVL_BOOST_VBR_CQ 1 -#if USE_SYMM_MULTI_LAYER #define USE_MANUAL_GF4_STRUCT 0 -#endif #define MIN_GF_INTERVAL 4 #define MAX_GF_INTERVAL 16