]> granicus.if.org Git - libvpx/commitdiff
vp9-svc: Allow scale_references for single layer svc
authorMarco Paniconi <marpan@google.com>
Wed, 24 Jun 2020 02:20:01 +0000 (19:20 -0700)
committerMarco Paniconi <marpan@google.com>
Thu, 25 Jun 2020 20:53:04 +0000 (13:53 -0700)
This is needed to allow for newmv search in nonrd_pickmode
for resize/scaled frame, and for int_pro_motion_estimation
on resized/scaled frame.

Change-Id: I5e2fdbc4706a10813c1b00f6194e2442f648905a

vp9/encoder/vp9_encoder.c

index ae7b47b523d609fd19a99c4fa776f8fc40698802..2780c73843c61b1ba1abdcd003a05fb03e4a112c 100644 (file)
@@ -4040,8 +4040,11 @@ static int encode_without_recode_loop(VP9_COMP *cpi, size_t *size,
   // For 1 pass CBR SVC, only ZEROMV is allowed for spatial reference frame
   // when svc->force_zero_mode_spatial_ref = 1. Under those conditions we can
   // avoid this frame-level upsampling (for non intra_only frames).
+  // For SVC single_layer mode, dynamic resize is allowed and we need to
+  // scale references for this case.
   if (frame_is_intra_only(cm) == 0 &&
-      !(is_one_pass_cbr_svc(cpi) && svc->force_zero_mode_spatial_ref)) {
+      ((svc->single_layer_svc && cpi->oxcf.resize_mode == RESIZE_DYNAMIC) ||
+       !(is_one_pass_cbr_svc(cpi) && svc->force_zero_mode_spatial_ref))) {
     vp9_scale_references(cpi);
   }