[FFmpeg-devel] [PATCH] libavcodec/libx264.c: Fix chromaoffset of libx264 doesn't work

Takio Yamaoka y.takio at gmail.com
Mon Aug 3 05:14:58 EEST 2020


Hi devel,
Is there anyone who can review this?

Thanks,
Takio

2020年7月28日(火) 21:42 Takio Yamaoka <y.takio at gmail.com>:
>
> I forgot to sign-off to patch, so I've resent the same patch.
> This patch is bug fix to handle chromaoffset parameter for libx264.
>
> Best Regards,
> Takio
>
> 2020年7月28日(火) 21:22 Takio Yamaoka <y.takio at gmail.com>:
> >
> > An initial value of `AVCodecContext::chromaoffset` is zero,
> > then it causes to block `-chromaoffset` setting as result.
> > In addition, even though a negative number of `chromaoffset`
> > is meaningful, `X264Context::chroma_offset` is initialized
> > with `-1` as no setting and ignored if it is negative number.
> >
> > To fix above, it changes ...
> > - a value of `X264Context::chroma_offset` to 0 as no setting
> >     - due to x264's default value
> > - conditional statement to import `-chromaoffset`
> >
> > Signed-off-by: Takio Yamaoka <y.takio at gmail.com>
> > ---
> >  libavcodec/libx264.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
> > index 7bbeab7d4c..347d29df27 100644
> > --- a/libavcodec/libx264.c
> > +++ b/libavcodec/libx264.c
> > @@ -681,11 +681,11 @@ static av_cold int X264_init(AVCodecContext *avctx)
> >
> >  #if FF_API_PRIVATE_OPT
> >  FF_DISABLE_DEPRECATION_WARNINGS
> > -    if (avctx->chromaoffset >= 0)
> > +    if (avctx->chromaoffset)
> >          x4->chroma_offset = avctx->chromaoffset;
> >  FF_ENABLE_DEPRECATION_WARNINGS
> >  #endif
> > -    if (x4->chroma_offset >= 0)
> > +    if (x4->chroma_offset)
> >          x4->params.analyse.i_chroma_qp_offset = x4->chroma_offset;
> >
> >      if (avctx->gop_size >= 0)
> > @@ -1140,7 +1140,7 @@ static const AVOption options[] = {
> >      { "vlc",              NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 },  INT_MIN, INT_MAX, VE, "coder" },
> >      { "ac",               NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1 },  INT_MIN, INT_MAX, VE, "coder" },
> >      { "b_strategy",   "Strategy to choose between I/P/B-frames",          OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 2, VE },
> > -    { "chromaoffset", "QP difference between chroma and luma",            OFFSET(chroma_offset), AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX, VE },
> > +    { "chromaoffset", "QP difference between chroma and luma",            OFFSET(chroma_offset), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, VE },
> >      { "sc_threshold", "Scene change threshold",                           OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX, VE },
> >      { "noise_reduction", "Noise reduction",                               OFFSET(noise_reduction), AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX, VE },
> >
> > --
> > 2.17.1
> >


More information about the ffmpeg-devel mailing list