diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-10-18 19:23:00 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-10-18 19:23:00 +0200 |
commit | 25f4e9387d0efd6fe2ac51d78eb681c542a6f82d (patch) | |
tree | 436efd419bb560e735df6afd621be3fd8a95636d | |
parent | ae6ba2db8ff811fa1fe23c5abffcc8086dcbc052 (diff) | |
parent | 530c1441fd1426b6a4bb33485ff3226e1ae0ad45 (diff) | |
download | ffmpeg-25f4e9387d0efd6fe2ac51d78eb681c542a6f82d.tar.gz |
Merge commit '530c1441fd1426b6a4bb33485ff3226e1ae0ad45'
* commit '530c1441fd1426b6a4bb33485ff3226e1ae0ad45':
lavc: make lmax/lmin into private options of mpegvideo encoders
Conflicts:
libavcodec/avcodec.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/avcodec.h | 12 | ||||
-rw-r--r-- | libavcodec/mpegvideo.h | 3 | ||||
-rw-r--r-- | libavcodec/mpegvideo_enc.c | 6 | ||||
-rw-r--r-- | libavcodec/options_table.h | 6 | ||||
-rw-r--r-- | libavcodec/ratecontrol.c | 4 |
5 files changed, 20 insertions, 11 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 1c27fd4807..6e44a9068b 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2372,19 +2372,19 @@ typedef struct AVCodecContext { */ int context_model; +#if FF_API_MPV_OPT /** - * minimum Lagrange multiplier - * - encoding: Set by user. - * - decoding: unused + * @deprecated use encoder private options instead */ + attribute_deprecated int lmin; /** - * maximum Lagrange multiplier - * - encoding: Set by user. - * - decoding: unused + * @deprecated use encoder private options instead */ + attribute_deprecated int lmax; +#endif /** * frame skip threshold diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 8ed894c219..286954f5d8 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -662,6 +662,7 @@ typedef struct MpegEncContext { float rc_initial_cplx; float rc_buffer_aggressivity; float border_masking; + int lmin, lmax; char *rc_eq; @@ -722,6 +723,8 @@ typedef struct MpegEncContext { {"rc_init_cplx", "initial complexity for 1-pass encoding", FF_MPV_OFFSET(rc_initial_cplx), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \ {"rc_buf_aggressivity", "currently useless", FF_MPV_OFFSET(rc_buffer_aggressivity), AV_OPT_TYPE_FLOAT, {.dbl = 1.0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \ {"border_mask", "increase the quantizer for macroblocks close to borders", FF_MPV_OFFSET(border_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \ +{"lmin", "minimum Lagrange factor (VBR)", FF_MPV_OFFSET(lmin), AV_OPT_TYPE_INT, {.i64 = 2*FF_QP2LAMBDA }, 0, INT_MAX, FF_MPV_OPT_FLAGS }, \ +{"lmax", "maximum Lagrange factor (VBR)", FF_MPV_OFFSET(lmax), AV_OPT_TYPE_INT, {.i64 = 31*FF_QP2LAMBDA }, 0, INT_MAX, FF_MPV_OPT_FLAGS }, \ extern const AVOption ff_mpv_generic_options[]; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 1ab17f6a19..f059ec0afe 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -962,6 +962,10 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) s->rc_buffer_aggressivity = avctx->rc_buffer_aggressivity; if (avctx->rc_initial_cplx != 0.0) s->rc_initial_cplx = avctx->rc_initial_cplx; + if (avctx->lmin) + s->lmin = avctx->lmin; + if (avctx->lmax) + s->lmax = avctx->lmax; if (avctx->rc_eq) { av_freep(&s->rc_eq); @@ -1781,7 +1785,7 @@ vbv_retry: int max_size = FFMAX(rcc->buffer_index * avctx->rc_max_available_vbv_use, rcc->buffer_index - 500); if (put_bits_count(&s->pb) > max_size && - s->lambda < s->avctx->lmax) { + s->lambda < s->lmax) { s->next_lambda = FFMAX(s->lambda + 1, s->lambda * (s->qscale + 1) / s->qscale); if (s->adaptive_quant) { diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index 3326708690..840d054edc 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -324,8 +324,10 @@ static const AVOption avcodec_options[] = { {"rd", "use best rate distortion", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MB_DECISION_RD }, INT_MIN, INT_MAX, V|E, "mbd"}, {"stream_codec_tag", NULL, OFFSET(stream_codec_tag), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, {"sc_threshold", "scene change threshold", OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"lmin", "minimum Lagrange factor (VBR)", OFFSET(lmin), AV_OPT_TYPE_INT, {.i64 = 2*FF_QP2LAMBDA }, 0, INT_MAX, V|E}, -{"lmax", "maximum Lagrange factor (VBR)", OFFSET(lmax), AV_OPT_TYPE_INT, {.i64 = 31*FF_QP2LAMBDA }, 0, INT_MAX, V|E}, +#if FF_API_MPV_OPT +{"lmin", "deprecated, use encoder private options instead", OFFSET(lmin), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|E}, +{"lmax", "deprecated, use encoder private options instead", OFFSET(lmax), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|E}, +#endif {"nr", "noise reduction", OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"rc_init_occupancy", "number of bits which should be loaded into the rc buffer before decoding starts", OFFSET(rc_initial_buffer_occupancy), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"flags2", NULL, OFFSET(flags2), AV_OPT_TYPE_FLAGS, {.i64 = DEFAULT}, 0, UINT_MAX, V|A|E|D, "flags2"}, diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c index 12c3e45ef5..d05e2ee629 100644 --- a/libavcodec/ratecontrol.c +++ b/libavcodec/ratecontrol.c @@ -477,8 +477,8 @@ static double get_diff_limited_q(MpegEncContext *s, RateControlEntry *rce, doubl */ static void get_qminmax(int *qmin_ret, int *qmax_ret, MpegEncContext *s, int pict_type) { - int qmin = s->avctx->lmin; - int qmax = s->avctx->lmax; + int qmin = s->lmin; + int qmax = s->lmax; assert(qmin <= qmax); |