ref: 32f86223ace2cc90c817f5bda197092a75dd4745
parent: cb671194c9ac4068922a971318670c91bf96c906
author: Paul Wilkins <paulwilkins@google.com>
date: Mon Sep 17 11:28:23 EDT 2018
Remove multi_arf_allowed variable. Removes deprecated multi_arf_allowed variable and dependent code. Change-Id: Ic1cf341f807c38207e728c48a4c4442387db93ff
--- a/vp9/encoder/vp9_bitstream.c
+++ b/vp9/encoder/vp9_bitstream.c
@@ -910,10 +910,6 @@
} else {
int arf_idx = cpi->alt_fb_idx;
GF_GROUP *const gf_group = &cpi->twopass.gf_group;
- 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];
- }
if (cpi->multi_layer_arf) {
for (arf_idx = 0; arf_idx < REF_FRAMES; ++arf_idx) {
--- a/vp9/encoder/vp9_bitstream.h
+++ b/vp9/encoder/vp9_bitstream.h
@@ -38,8 +38,8 @@
void vp9_pack_bitstream(VP9_COMP *cpi, uint8_t *dest, size_t *size);
static INLINE int vp9_preserve_existing_gf(VP9_COMP *cpi) {
- return !cpi->multi_arf_allowed && cpi->refresh_golden_frame &&
- cpi->rc.is_src_frame_alt_ref && !cpi->use_svc;
+ return cpi->refresh_golden_frame && cpi->rc.is_src_frame_alt_ref &&
+ !cpi->use_svc;
}
#ifdef __cplusplus
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -3017,10 +3017,6 @@
} else { /* For non key/golden frames */
if (cpi->refresh_alt_ref_frame) {
int arf_idx = gf_group->top_arf_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];
- }
// Push new ARF into stack.
stack_push(gf_group->arf_index_stack, cpi->alt_fb_idx,
@@ -6003,7 +5999,6 @@
// will not work properly with svc.
// Enable the Jingning's new "multi_layer_arf" code if "enable_auto_arf"
// is greater than or equal to 2.
- cpi->multi_arf_allowed = 0;
if ((oxcf->pass == 2) && !cpi->use_svc && (cpi->oxcf.enable_auto_arf >= 2))
cpi->multi_layer_arf = 1;
else
@@ -6165,15 +6160,6 @@
if (cm->new_fb_idx == INVALID_IDX) return -1;
cm->cur_frame = &pool->frame_bufs[cm->new_fb_idx];
-
- if (!cpi->use_svc && 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];
- }
- }
// Start with a 0 size frame.
*size = 0;
--- a/vp9/encoder/vp9_encoder.h
+++ b/vp9/encoder/vp9_encoder.h
@@ -689,7 +689,6 @@
// Indices are: max_tx_size-1, tx_size_ctx, tx_size
int tx_size_cost[TX_SIZES - 1][TX_SIZE_CONTEXTS][TX_SIZES];
- int multi_arf_allowed;
int multi_arf_enabled;
int multi_arf_last_grp_enabled;
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -2571,29 +2571,25 @@
active_min_gf_interval =
VPXMIN(active_min_gf_interval, rc->max_gf_interval + arf_active_or_kf);
- if (cpi->multi_arf_allowed) {
- active_max_gf_interval = rc->max_gf_interval;
- } else {
- // The value chosen depends on the active Q range. At low Q we have
- // bits to spare and are better with a smaller interval and smaller boost.
- // At high Q when there are few bits to spare we are better with a longer
- // interval to spread the cost of the GF.
- active_max_gf_interval = 12 + arf_active_or_kf + VPXMIN(4, (int_lbq / 6));
+ // The value chosen depends on the active Q range. At low Q we have
+ // bits to spare and are better with a smaller interval and smaller boost.
+ // At high Q when there are few bits to spare we are better with a longer
+ // interval to spread the cost of the GF.
+ active_max_gf_interval = 12 + arf_active_or_kf + VPXMIN(4, (int_lbq / 6));
- // We have: active_min_gf_interval <=
- // rc->max_gf_interval + arf_active_or_kf.
- if (active_max_gf_interval < active_min_gf_interval) {
- active_max_gf_interval = active_min_gf_interval;
- } else {
- active_max_gf_interval = VPXMIN(active_max_gf_interval,
- rc->max_gf_interval + arf_active_or_kf);
- }
-
- // Would the active max drop us out just before the near the next kf?
- if ((active_max_gf_interval <= rc->frames_to_key) &&
- (active_max_gf_interval >= (rc->frames_to_key - rc->min_gf_interval)))
- active_max_gf_interval = rc->frames_to_key / 2;
+ // We have: active_min_gf_interval <=
+ // rc->max_gf_interval + arf_active_or_kf.
+ if (active_max_gf_interval < active_min_gf_interval) {
+ active_max_gf_interval = active_min_gf_interval;
+ } else {
+ active_max_gf_interval = VPXMIN(active_max_gf_interval,
+ rc->max_gf_interval + arf_active_or_kf);
}
+
+ // Would the active max drop us out just before the near the next kf?
+ if ((active_max_gf_interval <= rc->frames_to_key) &&
+ (active_max_gf_interval >= (rc->frames_to_key - rc->min_gf_interval)))
+ active_max_gf_interval = rc->frames_to_key / 2;
}
i = 0;
@@ -2695,11 +2691,7 @@
rc->source_alt_ref_pending = 1;
// Test to see if multi arf is appropriate.
- cpi->multi_arf_enabled =
- (cpi->multi_arf_allowed && (rc->baseline_gf_interval >= 6) &&
- (zero_motion_accumulator < 0.995))
- ? 1
- : 0;
+ cpi->multi_arf_enabled = 0;
} else {
rc->gfu_boost = VPXMIN(MAX_GF_BOOST, calc_arf_boost(cpi, 0, (i - 1)));
rc->source_alt_ref_pending = 0;
--- a/vp9/encoder/vp9_temporal_filter.c
+++ b/vp9/encoder/vp9_temporal_filter.c
@@ -840,8 +840,10 @@
}
// Adjustments for second level arf in multi arf case.
- if (cpi->oxcf.pass == 2 && cpi->multi_arf_allowed)
- if (gf_group->rf_level[gf_group->index] != GF_ARF_STD) strength >>= 1;
+ // Leave commented out place holder for possible filtering adjustment with
+ // new multi-layer arf code.
+ // if (cpi->oxcf.pass == 2 && cpi->multi_arf_allowed)
+ // if (gf_group->rf_level[gf_group->index] != GF_ARF_STD) strength >>= 1;
// TODO(jingning): Skip temporal filtering for intermediate frames that will
// be used as show_existing_frame. Need to further explore the possibility to
--- a/vp9/vp9_cx_iface.c
+++ b/vp9/vp9_cx_iface.c
@@ -1099,7 +1099,7 @@
// There's no codec control for multiple alt-refs so check the encoder
// instance for its status to determine the compressed data size.
data_sz = ctx->cfg.g_w * ctx->cfg.g_h * get_image_bps(img) / 8 *
- (cpi->multi_arf_allowed || cpi->multi_layer_arf ? 8 : 2);
+ (cpi->multi_layer_arf ? 8 : 2);
if (data_sz < kMinCompressedSize) data_sz = kMinCompressedSize;
if (ctx->cx_data == NULL || ctx->cx_data_sz < data_sz) {
ctx->cx_data_sz = data_sz;