On Mon, Jan 4, 2016 at 2:34 PM, Vittorio Giovara <vittorio.giov...@gmail.com> wrote: > This option is only used by x264 and xavs. > It is a very codec-specific option, so deprecate the global variant. > > Signed-off-by: Vittorio Giovara <vittorio.giov...@gmail.com> > --- > libavcodec/avcodec.h | 9 ++++----- > libavcodec/libx264.c | 12 +++++++++++- > libavcodec/libxavs.c | 12 +++++++++++- > libavcodec/options_table.h | 2 ++ > 4 files changed, 28 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > index 160ab60..355e6f6 100644 > --- a/libavcodec/avcodec.h > +++ b/libavcodec/avcodec.h > @@ -1978,12 +1978,11 @@ typedef struct AVCodecContext { > */ > int refs; > > - /** > - * chroma qp offset from luma > - * - encoding: Set by user. > - * - decoding: unused > - */ > +#if FF_API_PRIVATE_OPT > + /** @deprecated use encoder private options instead */ > + attribute_deprecated > int chromaoffset; > +#endif > > #if FF_API_UNUSED_MEMBERS > /** > diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c > index bcb5dd1..937583e 100644 > --- a/libavcodec/libx264.c > +++ b/libavcodec/libx264.c > @@ -80,6 +80,7 @@ typedef struct X264Context { > int forced_idr; > int coder; > int b_frame_strategy; > + int chroma_offset; > > char *x264_params; > } X264Context; > @@ -412,7 +413,15 @@ static av_cold int X264_init(AVCodecContext *avctx) > if (avctx->i_quant_factor > 0) > x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor); > x4->params.rc.f_pb_factor = avctx->b_quant_factor; > - x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset; > + > +#if FF_API_PRIVATE_OPT > +FF_DISABLE_DEPRECATION_WARNINGS > + if (avctx->chromaoffset) > + x4->chroma_offset = avctx->chromaoffset; > +FF_ENABLE_DEPRECATION_WARNINGS > +#endif > + > + x4->params.analyse.i_chroma_qp_offset = x4->chroma_offset; > > if (avctx->gop_size >= 0) > x4->params.i_keyint_max = avctx->gop_size; > @@ -739,6 +748,7 @@ static const AVOption options[] = { > { "cavlc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, > INT_MIN, INT_MAX, VE, "coder" }, > { "cabac", 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 }, > + { "chroma-offset", "QP difference between chroma and luma", > OFFSET(chroma_offset), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, VE },
How about keeping it "chromaoffset" to remain compatible with the previous global option? Also, whatever you decide, please keep it consistent between the two encoders that use it. > > { "x264-params", "Override the x264 configuration using a :-separated > list of key=value parameters", OFFSET(x264_params), AV_OPT_TYPE_STRING, { 0 > }, 0, 0, VE }, > { NULL }, > diff --git a/libavcodec/libxavs.c b/libavcodec/libxavs.c > index 910d6c9..6dae5fe 100644 > --- a/libavcodec/libxavs.c > +++ b/libavcodec/libxavs.c > @@ -57,6 +57,7 @@ typedef struct XavsContext { > int mbtree; > int mixed_refs; > int b_frame_strategy; > + int chroma_offset; > > int64_t *pts_buffer; > int out_frame_count; > @@ -379,7 +380,15 @@ FF_ENABLE_DEPRECATION_WARNINGS > /* what is the RC method we are now using? Default NO */ > x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor); > x4->params.rc.f_pb_factor = avctx->b_quant_factor; > - x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset; > + > +#if FF_API_PRIVATE_OPT > +FF_DISABLE_DEPRECATION_WARNINGS > + if (avctx->chromaoffset) > + x4->chroma_offset = avctx->chromaoffset; > +FF_ENABLE_DEPRECATION_WARNINGS > +#endif > + > + x4->params.analyse.i_chroma_qp_offset = x4->chroma_offset; > > x4->params.analyse.b_psnr = avctx->flags & AV_CODEC_FLAG_PSNR; > x4->params.i_log_level = XAVS_LOG_DEBUG; > @@ -448,6 +457,7 @@ static const AVOption options[] = { > { "esa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > XAVS_ME_ESA }, INT_MIN, INT_MAX, VE, "motion-est" }, > { "tesa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > XAVS_ME_TESA }, INT_MIN, INT_MAX, VE, "motion-est" }, > { "b_strategy", "Strategy to choose between I/P/B-frames", > OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 2, VE}, > + { "chroma_offset", "QP difference between chroma and luma", > OFFSET(chroma_offset), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE}, > > { NULL }, > }; > diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h > index 9efaf2c..7a5766f 100644 > --- a/libavcodec/options_table.h > +++ b/libavcodec/options_table.h > @@ -390,7 +390,9 @@ static const AVOption avcodec_options[] = { > #endif > {"keyint_min", "minimum interval between IDR-frames (x264)", > OFFSET(keyint_min), AV_OPT_TYPE_INT, {.i64 = 25 }, INT_MIN, INT_MAX, V|E}, > {"refs", "reference frames to consider for motion compensation", > OFFSET(refs), AV_OPT_TYPE_INT, {.i64 = 1 }, INT_MIN, INT_MAX, V|E}, > +#if FF_API_PRIVATE_OPT > {"chromaoffset", "chroma QP offset from luma", OFFSET(chromaoffset), > AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, > +#endif > {"trellis", "rate-distortion optimal quantization", OFFSET(trellis), > AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, > #if FF_API_UNUSED_MEMBERS > {"sc_factor", "multiplied by qscale for each frame and added to > scene_change_score", OFFSET(scenechange_factor), AV_OPT_TYPE_INT, {.i64 = 6 > }, 0, INT_MAX, V|E}, > -- > 2.6.4 > > _______________________________________________ > libav-devel mailing list > libav-devel@libav.org > https://lists.libav.org/mailman/listinfo/libav-devel _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel