]> granicus.if.org Git - libvpx/commitdiff
VP9 noise estimate: no noise estimate if frame size change.
authorJackyChen <jackychen@google.com>
Tue, 10 Nov 2015 03:18:29 +0000 (19:18 -0800)
committerJackyChen <jackychen@google.com>
Tue, 10 Nov 2015 03:18:29 +0000 (19:18 -0800)
Change-Id: I521f7b53c143d562a88fe7de330aa3f0ef09f414

vp9/encoder/vp9_noise_estimate.c
vp9/encoder/vp9_noise_estimate.h

index 8ba7de71a2cbd6a888a33bb4869070ba4b675f37..e0d7575b76840f490676a260e5fc0149cd3f30be 100644 (file)
@@ -29,6 +29,8 @@ void vp9_noise_estimate_init(NOISE_ESTIMATE *const ne,
   ne->value = 0;
   ne->count = 0;
   ne->thresh = 90;
+  ne->last_w = 0;
+  ne->last_h = 0;
   if (width * height >= 1920 * 1080) {
     ne->thresh = 200;
   } else if (width * height >= 1280 * 720) {
@@ -100,11 +102,17 @@ void vp9_update_noise_estimate(VP9_COMP *const cpi) {
   ne->enabled = enable_noise_estimation(cpi);
   if (!ne->enabled ||
       cm->current_video_frame % frame_period != 0 ||
-      last_source == NULL) {
+      last_source == NULL ||
+      ne->last_w != cm->width ||
+      ne->last_h != cm->height) {
 #if CONFIG_VP9_TEMPORAL_DENOISING
   if (cpi->oxcf.noise_sensitivity > 0)
     copy_frame(&cpi->denoiser.last_source, cpi->Source);
 #endif
+    if (last_source != NULL) {
+      ne->last_w = cm->width;
+      ne->last_h = cm->height;
+    }
     return;
   } else {
     int num_samples = 0;
@@ -185,6 +193,8 @@ void vp9_update_noise_estimate(VP9_COMP *const cpi) {
       src_u += (src_uvstride << 2) - (cm->mi_cols << 2);
       src_v += (src_uvstride << 2) - (cm->mi_cols << 2);
     }
+    ne->last_w = cm->width;
+    ne->last_h = cm->height;
     // Update noise estimate if we have at a minimum number of block samples,
     // and avg_est > 0 (avg_est == 0 can happen if the application inputs
     // duplicate frames).
index 2acc2ea83f3b26c55e4496543d10f114d620b493..22885b8daf3be7d47b833459985d8779562aa91b 100644 (file)
@@ -35,6 +35,8 @@ typedef struct noise_estimate {
   int value;
   int thresh;
   int count;
+  int last_w;
+  int last_h;
 } NOISE_ESTIMATE;
 
 struct VP9_COMP;