From 5764d38173661c29d954711dd5abfddf709e9ba4 Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Sat, 12 Sep 2015 14:40:29 +0200 Subject: [PATCH] lavc: Move chromaoffset to codec private options 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 --- 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 160ab60de2..355e6f6729 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 5db00ff540..1caf0414d6 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 }, + { "chromaoffset", "QP difference between chroma and luma", OFFSET(chroma_offset), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, VE }, { "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 910d6c965e..21833766cf 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}, + { "chromaoffset", "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 9efaf2cad8..7a5766ff84 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.11.0