Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-08-09 15:14:38 +0300
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-08-10 19:49:35 +0300
commit73ea6db0ba815b80d6e7b06e86e4c5db9e2032ed (patch)
tree65f39e336c15f87016cd6fca36de09ec046dc980 /libavcodec/ratecontrol.c
parentd576b37fa7e2d23737f04b6c1df2a132ff4b113f (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.c17
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;
}