const GF_GROUP *const gf_group = &cpi->twopass.gf_group;
arf_idx = gf_group->arf_update_idx[gf_group->index];
}
- if (cpi->use_svc &&
+ if (cpi->use_svc && cpi->svc.use_set_ref_frame_config &&
cpi->svc.temporal_layering_mode == VP9E_TEMPORAL_LAYERING_MODE_BYPASS)
return cpi->svc.update_buffer_slot[cpi->svc.spatial_layer_id];
return (cpi->refresh_last_frame << cpi->lst_fb_idx) |
svc->set_intra_only_frame = 0;
svc->previous_frame_is_intra_only = 0;
svc->superframe_has_layer_sync = 0;
+ svc->use_set_ref_frame_config = 0;
for (i = 0; i < REF_FRAMES; ++i) {
svc->fb_idx_spatial_layer_id[i] = -1;
} else if (svc->temporal_layering_mode == VP9E_TEMPORAL_LAYERING_MODE_0101) {
set_flags_and_fb_idx_for_temporal_mode2(cpi);
} else if (svc->temporal_layering_mode ==
- VP9E_TEMPORAL_LAYERING_MODE_BYPASS) {
- if (cpi->ext_refresh_frame_flags_pending == 0)
- set_flags_and_fb_idx_bypass_via_set_ref_frame_config(cpi);
+ VP9E_TEMPORAL_LAYERING_MODE_BYPASS &&
+ svc->use_set_ref_frame_config) {
+ set_flags_and_fb_idx_bypass_via_set_ref_frame_config(cpi);
}
if (cpi->lst_fb_idx == svc->buffer_gf_temporal_ref[0].idx ||
SVC *const svc = &cpi->svc;
BufferPool *const pool = cm->buffer_pool;
- if (svc->temporal_layering_mode == VP9E_TEMPORAL_LAYERING_MODE_BYPASS) {
+ if (svc->temporal_layering_mode == VP9E_TEMPORAL_LAYERING_MODE_BYPASS &&
+ svc->use_set_ref_frame_config) {
vp9_svc_update_ref_frame_bypass_mode(cpi);
} else if (cm->frame_type == KEY_FRAME) {
// Keep track of frame index for each reference frame.
VP9_COMP *const cpi = ctx->cpi;
vpx_svc_ref_frame_config_t *data = va_arg(args, vpx_svc_ref_frame_config_t *);
int sl;
+ cpi->svc.use_set_ref_frame_config = 1;
for (sl = 0; sl < cpi->svc.number_spatial_layers; ++sl) {
cpi->svc.update_buffer_slot[sl] = data->update_buffer_slot[sl];
cpi->svc.reference_last[sl] = data->reference_last[sl];