]> granicus.if.org Git - libvpx/commitdiff
Properly update the raw_src_frame for psnr calculation
authorJingning Han <jingning@google.com>
Mon, 27 Aug 2018 22:58:41 +0000 (15:58 -0700)
committerJingning Han <jingning@google.com>
Sat, 1 Sep 2018 03:49:50 +0000 (03:49 +0000)
Update the raw_src_frame to be the current input source frame in
the show_existing_frame mode.

Change-Id: Ia8edf49ca948c45ffe6c60556756b36124ab092a

vp9/encoder/vp9_encoder.c

index 7f9f2c5d55543adc84dcbad7a1dc019feef829f4..714c8a2411e8cfa2a7ca57cc1b4140ea7f61ae3c 100644 (file)
@@ -3831,6 +3831,20 @@ static void save_encode_params(VP9_COMP *cpi) {
 }
 #endif
 
+static INLINE void set_raw_source_frame(VP9_COMP *cpi) {
+#ifdef ENABLE_KF_DENOISE
+  if (is_spatial_denoise_enabled(cpi)) {
+    cpi->raw_source_frame = vp9_scale_if_required(
+        cm, &cpi->raw_unscaled_source, &cpi->raw_scaled_source,
+        (oxcf->pass == 0), EIGHTTAP, 0);
+  } else {
+    cpi->raw_source_frame = cpi->Source;
+  }
+#else
+  cpi->raw_source_frame = cpi->Source;
+#endif
+}
+
 static int encode_without_recode_loop(VP9_COMP *cpi, size_t *size,
                                       uint8_t *dest) {
   VP9_COMMON *const cm = &cpi->common;
@@ -3844,7 +3858,10 @@ static int encode_without_recode_loop(VP9_COMP *cpi, size_t *size,
           ? cpi->svc.downsample_filter_phase[cpi->svc.spatial_layer_id]
           : 0;
 
-  if (cm->show_existing_frame) return 1;
+  if (cm->show_existing_frame) {
+    if (is_psnr_calc_enabled(cpi)) set_raw_source_frame(cpi);
+    return 1;
+  }
 
   // Flag to check if its valid to compute the source sad (used for
   // scene detection and for superblock content state in CBR mode).
@@ -4123,7 +4140,10 @@ static void encode_with_recode_loop(VP9_COMP *cpi, size_t *size,
   int qrange_adj = 1;
 #endif
 
-  if (cm->show_existing_frame) return;
+  if (cm->show_existing_frame) {
+    if (is_psnr_calc_enabled(cpi)) set_raw_source_frame(cpi);
+    return;
+  }
 
   set_size_independent_vars(cpi);