Commit 19272d86 authored by JackyChen's avatar JackyChen
Browse files

VP9 noise estimate: no noise estimate if frame size change.

Change-Id: I521f7b53c143d562a88fe7de330aa3f0ef09f414
parent 394d6c12
......@@ -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).
......
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment