[FFmpeg-devel] [PATCH v2] avcodec/libkvazaar: Respect codec context color settings.

Jan Ekström jeebjp at gmail.com
Sat Sep 30 17:16:40 EEST 2023


On Sat, Sep 30, 2023 at 12:39 AM Vittorio Giovara
<vittorio.giovara at gmail.com> wrote:
>
> On Fri, Sep 29, 2023 at 5:12 PM John Mather via ffmpeg-devel <
> ffmpeg-devel at ffmpeg.org> wrote:
>
> > This patch makes the libkvazaar encoder respect color settings that are
> > present on the codec context, including color range, primaries, transfer
> > function and colorspace.
> > ---
> >  libavcodec/libkvazaar.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> >
> > diff --git a/libavcodec/libkvazaar.c b/libavcodec/libkvazaar.c
> > index 2ef34dd82e..984f78ba65 100644
> > --- a/libavcodec/libkvazaar.c
> > +++ b/libavcodec/libkvazaar.c
> > @@ -101,6 +101,15 @@ FF_ENABLE_DEPRECATION_WARNINGS
> >          cfg->rc_algorithm = KVZ_LAMBDA;
> >      }
> >
> > +    if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED)
> > +        cfg->vui.fullrange = avctx->color_range == AVCOL_RANGE_JPEG;
> > +    if (avctx->color_primaries != AVCOL_PRI_UNSPECIFIED)
> > +        cfg->vui.colorprim = avctx->color_primaries;
> > +    if (avctx->color_trc != AVCOL_TRC_UNSPECIFIED)
> > +        cfg->vui.transfer = avctx->color_trc;
> > +    if (avctx->colorspace != AVCOL_SPC_UNSPECIFIED)
> > +        cfg->vui.colormatrix = avctx->colorspace;
> >
>
> since both avcodec and the library follow the same standard, you could
> avoid checking for UNSPECIFIED entirely and just assign the value there

For the record, both libx264 and libx265 wrappers essentially have the
UNSPECIFIED check. For x265 I guess it was due to
bEnableColorDescriptionPresentFlag having to be set by the API caller
as well, while for x264 this logic was added in
48d39c8786d2a1a36258d8e442602729eef0474c , I wonder if due to x264
having an initial default value in the struct, and checking against
that for whether a user set that value or not. Or maybe it was just
cargo culted from somewhere else?

So if kvazaar has no initial value there in those values of the struct
that it uses for checking if a value was set, then the ifs are indeed
unnecessary.

Jan


More information about the ffmpeg-devel mailing list