diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-07-03 16:46:44 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-07-08 16:36:39 +0100 |
commit | 1761ab838c75223a6b97d8c0720d09275374c53d (patch) | |
tree | ebf48492a61c5ab7ba46ba28405132f755adeb26 | |
parent | 02b7c630875c0bc63cee5ec597aa33baf9bf4e20 (diff) | |
download | ffmpeg-1761ab838c75223a6b97d8c0720d09275374c53d.tar.gz |
lavc: Deprecate avctx.rc_strategy
Only used by libxvid in ratecontrol module, so move it to a codec
private option.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
-rw-r--r-- | libavcodec/avcodec.h | 6 | ||||
-rw-r--r-- | libavcodec/mpegvideo.h | 2 | ||||
-rw-r--r-- | libavcodec/options_table.h | 2 | ||||
-rw-r--r-- | libavcodec/ratecontrol.c | 16 | ||||
-rw-r--r-- | libavcodec/version.h | 5 |
5 files changed, 24 insertions, 7 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 08f50a1f0c..e8be1968c3 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1342,9 +1342,11 @@ typedef struct AVCodecContext { */ float b_quant_factor; - /** obsolete FIXME remove */ - int rc_strategy; +#if FF_API_RC_STRATEGY + /** @deprecated use codec private option instead */ + attribute_deprecated int rc_strategy; #define FF_RC_STRATEGY_XVID 1 +#endif int b_frame_strategy; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index f10a4c4292..a023123529 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -360,6 +360,7 @@ typedef struct MpegEncContext { int prev_mb_info, last_mb_info; uint8_t *mb_info_ptr; int mb_info_size; + int rc_strategy; /* H.263+ specific */ int umvplus; ///< == H263+ && unrestricted_mv @@ -573,6 +574,7 @@ typedef struct MpegEncContext { {"lmax", "maximum Lagrange factor (VBR)", FF_MPV_OFFSET(lmax), AV_OPT_TYPE_INT, {.i64 = 31*FF_QP2LAMBDA }, 0, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"ibias", "intra quant bias", FF_MPV_OFFSET(intra_quant_bias), AV_OPT_TYPE_INT, {.i64 = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"pbias", "inter quant bias", FF_MPV_OFFSET(inter_quant_bias), AV_OPT_TYPE_INT, {.i64 = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ +{"rc_strategy", "ratecontrol method", FF_MPV_OFFSET(rc_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, FF_MPV_OPT_FLAGS }, \ extern const AVOption ff_mpv_generic_options[]; diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index ee8f32847a..4fc59ffa8a 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -114,7 +114,9 @@ static const AVOption avcodec_options[] = { {"qdiff", "maximum difference between the quantizer scales (VBR)", OFFSET(max_qdiff), AV_OPT_TYPE_INT, {.i64 = 3 }, INT_MIN, INT_MAX, V|E}, {"bf", "use 'frames' B frames", OFFSET(max_b_frames), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, -1, INT_MAX, V|E}, {"b_qfactor", "QP factor between P- and B-frames", OFFSET(b_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX, V|E}, +#if FF_API_RC_STRATEGY {"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#endif {"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, V|E}, {"ps", "RTP payload size in bytes", OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"mv_bits", NULL, OFFSET(mv_bits), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c index d0e13b9241..8332c7189c 100644 --- a/libavcodec/ratecontrol.c +++ b/libavcodec/ratecontrol.c @@ -26,6 +26,8 @@ */ #include "libavutil/attributes.h" +#include "libavutil/internal.h" + #include "avcodec.h" #include "internal.h" #include "ratecontrol.h" @@ -135,6 +137,13 @@ av_cold int ff_rate_control_init(MpegEncContext *s) return res; } +#if FF_API_RC_STRATEGY +FF_DISABLE_DEPRECATION_WARNINGS + if (!s->rc_strategy) + s->rc_strategy = s->avctx->rc_strategy; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + for (i = 0; i < 5; i++) { rcc->pred[i].coeff = FF_QP2LAMBDA * 7.0; rcc->pred[i].count = 1.0; @@ -218,7 +227,7 @@ av_cold int ff_rate_control_init(MpegEncContext *s) } // FIXME maybe move to end - if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) { + if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->rc_strategy == 1) { #if CONFIG_LIBXVID return ff_xvid_rate_control_init(s); #else @@ -298,7 +307,7 @@ av_cold void ff_rate_control_uninit(MpegEncContext *s) av_freep(&rcc->entry); #if CONFIG_LIBXVID - if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) + if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->rc_strategy == 1) ff_xvid_rate_control_uninit(s); #endif } @@ -748,8 +757,7 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) emms_c(); #if CONFIG_LIBXVID - if ((s->avctx->flags & CODEC_FLAG_PASS2) && - s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) + if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->rc_strategy == 1) return ff_xvid_rate_estimate_qscale(s, dry_run); #endif diff --git a/libavcodec/version.h b/libavcodec/version.h index ffdc0d4751..0ea5adaf71 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #define LIBAVCODEC_VERSION_MAJOR 56 #define LIBAVCODEC_VERSION_MINOR 31 -#define LIBAVCODEC_VERSION_MICRO 1 +#define LIBAVCODEC_VERSION_MICRO 2 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ @@ -168,5 +168,8 @@ #ifndef FF_API_QUANT_BIAS #define FF_API_QUANT_BIAS (LIBAVCODEC_VERSION_MAJOR < 59) #endif +#ifndef FF_API_RC_STRATEGY +#define FF_API_RC_STRATEGY (LIBAVCODEC_VERSION_MAJOR < 59) +#endif #endif /* AVCODEC_VERSION_H */ |