diff options
-rw-r--r-- | src/fg_apply_tmpl.c | 7 | ||||
-rw-r--r-- | src/lib.c | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/fg_apply_tmpl.c b/src/fg_apply_tmpl.c index ee14db9..581bcb7 100644 --- a/src/fg_apply_tmpl.c +++ b/src/fg_apply_tmpl.c @@ -51,6 +51,11 @@ static void generate_scaling(const int bitdepth, const int scaling_size = 1 << bitdepth; #endif + if (num == 0) { + memset(scaling, 0, scaling_size); + return; + } + // Fill up the preceding entries with the initial value memset(scaling, points[0][1], points[0][0] << shift_x); @@ -113,7 +118,7 @@ void bitfn(dav1d_prep_grain)(const Dav1dFilmGrainDSPContext *const dsp, data, 1 HIGHBD_TAIL_SUFFIX); // Generate scaling LUTs as needed - if (data->num_y_points) + if (data->num_y_points || data->chroma_scaling_from_luma) generate_scaling(in->p.bpc, data->y_points, data->num_y_points, scaling[0]); if (data->num_uv_points[0]) generate_scaling(in->p.bpc, data->uv_points[0], data->num_uv_points[0], scaling[1]); @@ -335,7 +335,8 @@ static int has_grain(const Dav1dPicture *const pic) { const Dav1dFilmGrainData *fgdata = &pic->frame_hdr->film_grain.data; return fgdata->num_y_points || fgdata->num_uv_points[0] || - fgdata->num_uv_points[1]; + fgdata->num_uv_points[1] || (fgdata->clip_to_restricted_range && + fgdata->chroma_scaling_from_luma); } static int output_image(Dav1dContext *const c, Dav1dPicture *const out) |