Commit e30f7698 authored by JackyChen's avatar JackyChen
Browse files

Fix a bug in VP9 denoiser.

When the first try of denoising turns out to be too much,
we will use a softer filter by adopting an adjustment to
make the result closer to original pixel (as in VP8 denoiser).
The old code made the adjustment in the wrong direction.

Change-Id: I84e28fa9e01eef47c5a37d5a2e6d3d378a06786b
Showing with 8 additions and 2 deletions
...@@ -145,11 +145,17 @@ static VP9_DENOISER_DECISION denoiser_filter(const uint8_t *sig, int sig_stride, ...@@ -145,11 +145,17 @@ static VP9_DENOISER_DECISION denoiser_filter(const uint8_t *sig, int sig_stride,
adj = delta; adj = delta;
} }
if (diff > 0) { if (diff > 0) {
// Diff positive means we made positive adjustment above
// (in first try/attempt), so now make negative adjustment to bring
// denoised signal down.
avg[c] = MAX(0, avg[c] - adj); avg[c] = MAX(0, avg[c] - adj);
total_adj += adj; total_adj -= adj;
} else { } else {
// Diff negative means we made negative adjustment above
// (in first try/attempt), so now make positive adjustment to bring
// denoised signal up.
avg[c] = MIN(UINT8_MAX, avg[c] + adj); avg[c] = MIN(UINT8_MAX, avg[c] + adj);
total_adj -= adj; total_adj += adj;
} }
} }
sig += sig_stride; sig += sig_stride;
......
Supports Markdown
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