[FFmpeg-cvslog] avcodec/av1dec: signal new AVFilmGrainParams members

Niklas Haas git at videolan.org
Sat Mar 23 20:09:03 EET 2024


ffmpeg | branch: master | Niklas Haas <git at haasn.dev> | Fri Mar 15 11:44:28 2024 +0100| [511f2976801c195bec1f0e7bc105f319692f7cdd] | committer: Niklas Haas

avcodec/av1dec: signal new AVFilmGrainParams members

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=511f2976801c195bec1f0e7bc105f319692f7cdd
---

 libavcodec/av1dec.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
index 4d074c3908..32a795e758 100644
--- a/libavcodec/av1dec.c
+++ b/libavcodec/av1dec.c
@@ -1074,9 +1074,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;
 
@@ -1086,6 +1088,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;



More information about the ffmpeg-cvslog mailing list