ref: 19272d866bde3a8c3f9c8395ba38e8ff3b42bb5a
parent: 394d6c122a5f1d66da21c97edd97bf5092a20d72
author: JackyChen <[email protected]>
date: Mon Nov 9 14:18:29 EST 2015
VP9 noise estimate: no noise estimate if frame size change. Change-Id: I521f7b53c143d562a88fe7de330aa3f0ef09f414
--- a/vp9/encoder/vp9_noise_estimate.c
+++ b/vp9/encoder/vp9_noise_estimate.c
@@ -29,6 +29,8 @@
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 @@
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 @@
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).
--- a/vp9/encoder/vp9_noise_estimate.h
+++ b/vp9/encoder/vp9_noise_estimate.h
@@ -35,6 +35,8 @@
int value;
int thresh;
int count;
+ int last_w;
+ int last_h;
} NOISE_ESTIMATE;
struct VP9_COMP;