summaryrefslogtreecommitdiff
path: root/vp8
diff options
context:
space:
mode:
authorMarco <marpan@chromium.org>2014-09-02 09:45:37 -0700
committerMarco <marpan@chromium.org>2014-09-02 09:47:55 -0700
commit54575d654ced22d89a28e7e2ba6a7d2b24e15850 (patch)
treeaf7bef8548b47f5fe8762d9edeaf5aa14c297dde /vp8
parentdbe21705952f366c5456bf9b8995d5a77ff0a47d (diff)
downloadlibvpx-54575d654ced22d89a28e7e2ba6a7d2b24e15850.tar.gz
Updates to adaptive/aggressive denoiser mode.
Parameter changes and modification to zero_last bias. Change-Id: I50a408d47fde049c562bbe95075194cb0f17c31b
Diffstat (limited to 'vp8')
-rw-r--r--vp8/encoder/denoising.c6
-rw-r--r--vp8/encoder/pickinter.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/vp8/encoder/denoising.c b/vp8/encoder/denoising.c
index 2da0d8c0e..0c98eb1a5 100644
--- a/vp8/encoder/denoising.c
+++ b/vp8/encoder/denoising.c
@@ -413,9 +413,11 @@ int vp8_denoiser_allocate(VP8_DENOISER *denoiser, int width, int height,
denoiser->nmse_source_diff = 0;
denoiser->nmse_source_diff_count = 0;
// TODO(marpan): Adjust thresholds, including effect on resolution.
- denoiser->threshold_aggressive_mode = 40;
+ denoiser->threshold_aggressive_mode = 35;
if (width * height > 640 * 480)
- denoiser->threshold_aggressive_mode = 180;
+ denoiser->threshold_aggressive_mode = 150;
+ else if (width * height > 1280 * 720)
+ denoiser->threshold_aggressive_mode = 1400;
return 0;
}
diff --git a/vp8/encoder/pickinter.c b/vp8/encoder/pickinter.c
index 8dd188105..43f8957d1 100644
--- a/vp8/encoder/pickinter.c
+++ b/vp8/encoder/pickinter.c
@@ -487,6 +487,7 @@ static int evaluate_inter_mode(unsigned int* sse, int rate2, int* distortion2,
MB_PREDICTION_MODE this_mode = x->e_mbd.mode_info_context->mbmi.mode;
int_mv mv = x->e_mbd.mode_info_context->mbmi.mv;
int this_rd;
+ int denoise_aggressive = 0;
/* Exit early and don't compute the distortion if this macroblock
* is marked inactive. */
if (cpi->active_map_enabled && x->active_ptr[0] == 0)
@@ -505,10 +506,17 @@ static int evaluate_inter_mode(unsigned int* sse, int rate2, int* distortion2,
this_rd = RDCOST(x->rdmult, x->rddiv, rate2, *distortion2);
+#if CONFIG_TEMPORAL_DENOISING
+ if (cpi->oxcf.noise_sensitivity > 0) {
+ denoise_aggressive =
+ (cpi->denoiser.denoiser_mode == kDenoiserOnYUVAggressive) ? 1 : 0;
+ }
+#endif
+
// Adjust rd for ZEROMV and LAST, if LAST is the closest reference frame.
if (this_mode == ZEROMV &&
x->e_mbd.mode_info_context->mbmi.ref_frame == LAST_FRAME &&
- cpi->closest_reference_frame == LAST_FRAME)
+ (denoise_aggressive || cpi->closest_reference_frame == LAST_FRAME))
{
this_rd = ((int64_t)this_rd) * rd_adj / 100;
}