summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorJerome Jiang <jianj@google.com>2017-03-21 15:33:42 -0700
committerJerome Jiang <jianj@google.com>2017-03-21 15:46:25 -0700
commitdbed479d79be9361cabc5ddfdbe449c7ebbdf68e (patch)
tree344f9f8800fad094e4a7c6a11d8d5db7a744c669 /vp9
parent1935dfb294c1dec48101dc2ce5c741a3b9f14eb6 (diff)
downloadlibvpx-dbed479d79be9361cabc5ddfdbe449c7ebbdf68e.tar
libvpx-dbed479d79be9361cabc5ddfdbe449c7ebbdf68e.tar.gz
libvpx-dbed479d79be9361cabc5ddfdbe449c7ebbdf68e.tar.bz2
libvpx-dbed479d79be9361cabc5ddfdbe449c7ebbdf68e.zip
Fix the data race caused by vp9 denoiser.
BUG=webm:1391 Change-Id: I9669ae62fe9c695d4c6f9973094cb0f39bed51c7
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_denoiser.c16
-rw-r--r--vp9/encoder/vp9_denoiser.h1
2 files changed, 6 insertions, 11 deletions
diff --git a/vp9/encoder/vp9_denoiser.c b/vp9/encoder/vp9_denoiser.c
index c995a9dff..592a68274 100644
--- a/vp9/encoder/vp9_denoiser.c
+++ b/vp9/encoder/vp9_denoiser.c
@@ -314,6 +314,7 @@ void vp9_denoiser_denoise(VP9_COMP *cpi, MACROBLOCK *mb, int mi_row, int mi_col,
block_start(mc_avg.y_buffer, mc_avg.y_stride, mi_row, mi_col);
struct buf_2d src = mb->plane[0].src;
int is_skin = 0;
+ int increase_denoising = 0;
int consec_zeromv = 0;
mv_col = ctx->best_sse_mv.as_mv.col;
mv_row = ctx->best_sse_mv.as_mv.row;
@@ -356,22 +357,18 @@ void vp9_denoiser_denoise(VP9_COMP *cpi, MACROBLOCK *mb, int mi_row, int mi_col,
mb->plane[0].src.stride, mb->plane[1].src.stride, bs, consec_zeromv,
motion_level);
}
- if (!is_skin && denoiser->denoising_level == kDenHigh) {
- denoiser->increase_denoising = 1;
- } else {
- denoiser->increase_denoising = 0;
- }
+ if (!is_skin && denoiser->denoising_level == kDenHigh) increase_denoising = 1;
if (denoiser->denoising_level >= kDenLow)
decision = perform_motion_compensation(
- denoiser, mb, bs, denoiser->increase_denoising, mi_row, mi_col, ctx,
+ denoiser, mb, bs, increase_denoising, mi_row, mi_col, ctx,
motion_magnitude, is_skin, &zeromv_filter, consec_zeromv,
cpi->svc.number_spatial_layers, cpi->Source->y_width);
if (decision == FILTER_BLOCK) {
- decision = vp9_denoiser_filter(
- src.buf, src.stride, mc_avg_start, mc_avg.y_stride, avg_start,
- avg.y_stride, denoiser->increase_denoising, bs, motion_magnitude);
+ decision = vp9_denoiser_filter(src.buf, src.stride, mc_avg_start,
+ mc_avg.y_stride, avg_start, avg.y_stride,
+ increase_denoising, bs, motion_magnitude);
}
if (decision == FILTER_BLOCK) {
@@ -533,7 +530,6 @@ int vp9_denoiser_alloc(VP9_DENOISER *denoiser, int width, int height, int ssx,
#ifdef OUTPUT_YUV_DENOISED
make_grayscale(&denoiser->running_avg_y[i]);
#endif
- denoiser->increase_denoising = 0;
denoiser->frame_buffer_initialized = 1;
denoiser->denoising_level = kDenLow;
denoiser->prev_denoising_level = kDenLow;
diff --git a/vp9/encoder/vp9_denoiser.h b/vp9/encoder/vp9_denoiser.h
index ce9a5966f..9bded2176 100644
--- a/vp9/encoder/vp9_denoiser.h
+++ b/vp9/encoder/vp9_denoiser.h
@@ -38,7 +38,6 @@ typedef struct vp9_denoiser {
YV12_BUFFER_CONFIG running_avg_y[MAX_REF_FRAMES];
YV12_BUFFER_CONFIG mc_running_avg_y;
YV12_BUFFER_CONFIG last_source;
- int increase_denoising;
int frame_buffer_initialized;
int reset;
VP9_DENOISER_LEVEL denoising_level;