diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-08-09 15:14:38 +0300 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-08-10 19:49:35 +0300 |
commit | 73ea6db0ba815b80d6e7b06e86e4c5db9e2032ed (patch) | |
tree | 65f39e336c15f87016cd6fca36de09ec046dc980 /libavcodec/ratecontrol.c | |
parent | d576b37fa7e2d23737f04b6c1df2a132ff4b113f (diff) |
avcodec/mpegpicture: Move encoding_error and mb_var_sum to MpegEncCtx
These fields are only ever set by the encoder for the current picture
and for no other picture. So only one set of these values needs to
exist, so move them to MpegEncContext.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/ratecontrol.c')
-rw-r--r-- | libavcodec/ratecontrol.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c index 53930f147b..4829172c2c 100644 --- a/libavcodec/ratecontrol.c +++ b/libavcodec/ratecontrol.c @@ -49,8 +49,8 @@ void ff_write_pass1_stats(MpegEncContext *s) s->misc_bits, s->f_code, s->b_code, - s->current_picture.mc_mb_var_sum, - s->current_picture.mb_var_sum, + s->mc_mb_var_sum, + s->mb_var_sum, s->i_count, s->skip_count, s->header_bits); } @@ -880,7 +880,6 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) double rate_factor; int64_t var; const int pict_type = s->pict_type; - Picture * const pic = &s->current_picture; emms_c(); get_qminmax(&qmin, &qmax, s, pict_type); @@ -929,7 +928,7 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) if (br_compensation <= 0.0) br_compensation = 0.001; - var = pict_type == AV_PICTURE_TYPE_I ? pic->mb_var_sum : pic->mc_mb_var_sum; + var = pict_type == AV_PICTURE_TYPE_I ? s->mb_var_sum : s->mc_mb_var_sum; short_term_q = 0; /* avoid warning */ if (s->avctx->flags & AV_CODEC_FLAG_PASS2) { @@ -942,8 +941,8 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) } else { rce->pict_type = rce->new_pict_type = pict_type; - rce->mc_mb_var_sum = pic->mc_mb_var_sum; - rce->mb_var_sum = pic->mb_var_sum; + rce->mc_mb_var_sum = s->mc_mb_var_sum; + rce->mb_var_sum = s->mb_var_sum; rce->qscale = FF_QP2LAMBDA * 2; rce->f_code = s->f_code; rce->b_code = s->b_code; @@ -1003,7 +1002,7 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) qmin, q, qmax, picture_number, wanted_bits / 1000, s->total_bits / 1000, br_compensation, short_term_q, s->frame_bits, - pic->mb_var_sum, pic->mc_mb_var_sum, + s->mb_var_sum, s->mc_mb_var_sum, s->bit_rate / 1000, (int)fps); } @@ -1019,8 +1018,8 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) if (!dry_run) { rcc->last_qscale = q; - rcc->last_mc_mb_var_sum = pic->mc_mb_var_sum; - rcc->last_mb_var_sum = pic->mb_var_sum; + rcc->last_mc_mb_var_sum = s->mc_mb_var_sum; + rcc->last_mb_var_sum = s->mb_var_sum; } return q; } |