summaryrefslogtreecommitdiff
path: root/vp9/common/vp9_postproc.c
diff options
context:
space:
mode:
Diffstat (limited to 'vp9/common/vp9_postproc.c')
-rw-r--r--vp9/common/vp9_postproc.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/vp9/common/vp9_postproc.c b/vp9/common/vp9_postproc.c
index 6adaf04d7..4356adca6 100644
--- a/vp9/common/vp9_postproc.c
+++ b/vp9/common/vp9_postproc.c
@@ -378,6 +378,14 @@ int vp9_post_proc_frame(struct VP9Common *cm,
}
}
+ if (flags & VP9D_ADDNOISE) {
+ if (!cm->postproc_state.generated_noise) {
+ cm->postproc_state.generated_noise = vpx_calloc(
+ cm->width + 256, sizeof(*cm->postproc_state.generated_noise));
+ if (!cm->postproc_state.generated_noise)
+ return 1;
+ }
+ }
if ((flags & VP9D_MFQE) && cm->current_video_frame >= 2 &&
ppstate->last_frame_valid && cm->bit_depth == 8 &&
@@ -419,14 +427,14 @@ int vp9_post_proc_frame(struct VP9Common *cm,
double sigma;
vpx_clear_system_state();
sigma = noise_level + .5 + .6 * q / 63.0;
- ppstate->clamp = vpx_setup_noise(sigma, ppstate->noise,
- sizeof(ppstate->noise));
+ ppstate->clamp = vpx_setup_noise(sigma, ppstate->generated_noise,
+ cm->width + 256);
ppstate->last_q = q;
ppstate->last_noise = noise_level;
}
- vpx_plane_add_noise(ppbuf->y_buffer, ppstate->noise, ppstate->clamp,
- ppstate->clamp, ppbuf->y_width, ppbuf->y_height,
- ppbuf->y_stride);
+ vpx_plane_add_noise(ppbuf->y_buffer, ppstate->generated_noise,
+ ppstate->clamp, ppstate->clamp, ppbuf->y_width,
+ ppbuf->y_height, ppbuf->y_stride);
}
*dest = *ppbuf;