vp8 bugfix: Reallocate denoiser when spatially resizing.
authorMarco Paniconi <marpan@google.com>
Wed, 6 Aug 2014 18:14:51 +0000 (11:14 -0700)
committerMarco Paniconi <marpan@google.com>
Wed, 6 Aug 2014 21:57:52 +0000 (14:57 -0700)
This is needed to update the width/height and stride parameters
for the reference buffers that the denoiser uses.

Change-Id: Id51b3bdcb56bbbc8187865544ccd3d872a0d51fe

vp8/encoder/onyx_if.c

index 298f50f..91b9138 100644 (file)
@@ -2762,6 +2762,19 @@ static int resize_key_frame(VP8_COMP *cpi)
             cm->Height = new_height;
             vp8_alloc_compressor_data(cpi);
             scale_and_extend_source(cpi->un_scaled_source, cpi);
+#if CONFIG_TEMPORAL_DENOISING
+            // TODO(marpan): denoiser_allocate() is not called in
+            // vp8_alloc_compressor_data() (currently denoiser_allocate is
+            // only called in change_config()). Check if we can move this call
+            // of denoiser_free/allocate into vp8_alloc_compressor_data().
+            if (cpi->oxcf.noise_sensitivity > 0) {
+              vp8_denoiser_free(&cpi->denoiser);
+              vp8_denoiser_allocate(&cpi->denoiser, new_width, new_height,
+                                    cm->mb_rows, cm->mb_cols,
+                                    ((cpi->oxcf.noise_sensitivity == 3) ?
+                                    1 : 0));
+            }
+#endif
             return 1;
         }
     }