Clear {cb,cr}_grain_block when there is no scaling function
BUG=aomedia:1948,aomedia:1955
Change-Id: I0384e7ae9402f1117b97dae827097214e2907cbc
diff --git a/aom_dsp/grain_synthesis.c b/aom_dsp/grain_synthesis.c
index ed349e2..fcb6c29 100644
--- a/aom_dsp/grain_synthesis.c
+++ b/aom_dsp/grain_synthesis.c
@@ -443,6 +443,7 @@
int num_pos_chroma = 2 * params->ar_coeff_lag * (params->ar_coeff_lag + 1);
if (params->num_y_points > 0) ++num_pos_chroma;
int rounding_offset = (1 << (params->ar_coeff_shift - 1));
+ int chroma_grain_samples = chroma_block_size_y * chroma_block_size_x;
if (params->num_cb_points || params->chroma_scaling_from_luma) {
init_random_generator(7 << 5, params->random_seed);
@@ -453,7 +454,10 @@
(gaussian_sequence[get_random_number(gauss_bits)] +
((1 << gauss_sec_shift) >> 1)) >>
gauss_sec_shift;
+ } else {
+ memset(cr_grain_block, 0, sizeof(*cr_grain_block) * chroma_grain_samples);
}
+
if (params->num_cr_points || params->chroma_scaling_from_luma) {
init_random_generator(11 << 5, params->random_seed);
@@ -463,6 +467,8 @@
(gaussian_sequence[get_random_number(gauss_bits)] +
((1 << gauss_sec_shift) >> 1)) >>
gauss_sec_shift;
+ } else {
+ memset(cb_grain_block, 0, sizeof(*cb_grain_block) * chroma_grain_samples);
}
for (int i = top_pad; i < chroma_block_size_y - bottom_pad; i++)