On Mon, Jan 4, 2016 at 2:34 PM, Vittorio Giovara
<[email protected]> 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 <[email protected]>
> ---
> 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
> [email protected]
> https://lists.libav.org/mailman/listinfo/libav-devel
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel