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>
This commit is contained in:
		
						commit
						25f4e9387d
					
				@ -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
 | 
			
		||||
 | 
			
		||||
@ -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[];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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) {
 | 
			
		||||
 | 
			
		||||
@ -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"},
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user