]> granicus.if.org Git - libvpx/commitdiff
vp9-svc: Fix key frame update refresh simulcast flexible svc
authorMarco Paniconi <marpan@google.com>
Fri, 15 May 2020 21:02:00 +0000 (14:02 -0700)
committerMarco Paniconi <marpan@google.com>
Fri, 15 May 2020 21:11:37 +0000 (14:11 -0700)
For flexible svc in simulcast mode: don't allow refresh
of all reference slots on key frame. Which slots to update
should be based on the user flags.

Change-Id: I3597c61ebcdfed2055bbdffec7ce701fad892744

vp9/encoder/vp9_svc_layercontext.c

index cd77c08a808e4ea1404a29dd4760a27cdc69e332..6f23d0b4d28d62beb0c6399cb7668ae9aa456254 100644 (file)
@@ -1259,7 +1259,7 @@ static void vp9_svc_update_ref_frame_bypass_mode(VP9_COMP *const cpi) {
   BufferPool *const pool = cm->buffer_pool;
   int i;
   for (i = 0; i < REF_FRAMES; i++) {
-    if (cm->frame_type == KEY_FRAME ||
+    if ((cm->frame_type == KEY_FRAME && !svc->simulcast_mode) ||
         svc->update_buffer_slot[svc->spatial_layer_id] & (1 << i)) {
       ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[i], cm->new_fb_idx);
       svc->fb_idx_spatial_layer_id[i] = svc->spatial_layer_id;