@@ -1072,9 +1072,11 @@ static int export_film_grain(AVCodecContext *avctx, AVFrame *frame)
{
AV1DecContext *s = avctx->priv_data;
const AV1RawFilmGrainParams *film_grain = &s->cur_frame.film_grain;
+ const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(frame->format);
AVFilmGrainParams *fgp;
AVFilmGrainAOMParams *aom;
+ av_assert0(pixdesc);
if (!film_grain->apply_grain)
return 0;
@@ -1084,6 +1086,14 @@ static int export_film_grain(AVCodecContext *avctx, AVFrame *frame)
fgp->type = AV_FILM_GRAIN_PARAMS_AV1;
fgp->seed = film_grain->grain_seed;
+ fgp->width = frame->width;
+ fgp->height = frame->height;
+ fgp->color_range = frame->color_range;
+ fgp->color_primaries = frame->color_primaries;
+ fgp->color_trc = frame->color_trc;
+ fgp->color_space = frame->colorspace;
+ fgp->subsampling_x = pixdesc->log2_chroma_w;
+ fgp->subsampling_y = pixdesc->log2_chroma_h;
aom = &fgp->codec.aom;
aom->chroma_scaling_from_luma = film_grain->chroma_scaling_from_luma;
From: Niklas Haas <git@haasn.dev> Not directly signalled by AV1, but we should still set this accordingly so that users will know what the original intended video characteristics and chroma resolution were. --- libavcodec/av1dec.c | 10 ++++++++++ 1 file changed, 10 insertions(+)