diff options
Diffstat (limited to 'vp9/common/vp9_postproc.c')
-rw-r--r-- | vp9/common/vp9_postproc.c | 18 |
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; |