You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/mpegvideo: Move macroblock-variance stats to MPVMainEncContext
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
@ -230,8 +230,6 @@ typedef struct MpegEncContext {
|
||||
uint16_t *mb_var; ///< Table for MB variances
|
||||
uint16_t *mc_mb_var; ///< Table for motion compensated MB variances
|
||||
uint8_t *mb_mean; ///< Table for MB luminance
|
||||
int64_t mb_var_sum; ///< sum of MB variance for current frame
|
||||
int64_t mc_mb_var_sum; ///< motion compensated MB variance for current frame
|
||||
uint64_t encoding_error[MPV_MAX_PLANES];
|
||||
|
||||
int motion_est; ///< ME algorithm
|
||||
|
@ -3752,8 +3752,8 @@ static int encode_picture(MPVMainEncContext *const m, const AVPacket *pkt)
|
||||
for(i=1; i<context_count; i++){
|
||||
merge_context_after_me(s, s->thread_context[i]);
|
||||
}
|
||||
s->mc_mb_var_sum = s->me.mc_mb_var_sum_temp;
|
||||
s->mb_var_sum = s->me. mb_var_sum_temp;
|
||||
m->mc_mb_var_sum = s->me.mc_mb_var_sum_temp;
|
||||
m->mb_var_sum = s->me. mb_var_sum_temp;
|
||||
emms_c();
|
||||
|
||||
if (s->me.scene_change_score > m->scenechange_threshold &&
|
||||
@ -3764,7 +3764,7 @@ static int encode_picture(MPVMainEncContext *const m, const AVPacket *pkt)
|
||||
if (s->msmpeg4_version >= MSMP4_V3)
|
||||
s->no_rounding=1;
|
||||
ff_dlog(s->avctx, "Scene change detected, encoding as I Frame %"PRId64" %"PRId64"\n",
|
||||
s->mb_var_sum, s->mc_mb_var_sum);
|
||||
m->mb_var_sum, m->mc_mb_var_sum);
|
||||
}
|
||||
|
||||
if(!s->umvplus){
|
||||
|
@ -81,6 +81,9 @@ typedef struct MPVMainEncContext {
|
||||
int next_lambda; ///< next lambda used for retrying to encode a frame
|
||||
int fixed_qscale; ///< fixed qscale if non zero
|
||||
RateControlContext rc_context; ///< contains stuff only accessed in ratecontrol.c
|
||||
|
||||
int64_t mb_var_sum; ///< sum of MB variance for current frame
|
||||
int64_t mc_mb_var_sum; ///< motion compensated MB variance for current frame
|
||||
} MPVMainEncContext;
|
||||
|
||||
#define MAX_FCODE 7
|
||||
|
@ -51,8 +51,8 @@ void ff_write_pass1_stats(MPVMainEncContext *const m)
|
||||
s->misc_bits,
|
||||
s->f_code,
|
||||
s->b_code,
|
||||
s->mc_mb_var_sum,
|
||||
s->mb_var_sum,
|
||||
m->mc_mb_var_sum,
|
||||
m->mb_var_sum,
|
||||
s->i_count,
|
||||
s->header_bits);
|
||||
}
|
||||
@ -986,7 +986,7 @@ float ff_rate_estimate_qscale(MPVMainEncContext *const m, int dry_run)
|
||||
if (br_compensation <= 0.0)
|
||||
br_compensation = 0.001;
|
||||
|
||||
var = pict_type == AV_PICTURE_TYPE_I ? s->mb_var_sum : s->mc_mb_var_sum;
|
||||
var = pict_type == AV_PICTURE_TYPE_I ? m->mb_var_sum : m->mc_mb_var_sum;
|
||||
|
||||
short_term_q = 0; /* avoid warning */
|
||||
if (s->avctx->flags & AV_CODEC_FLAG_PASS2) {
|
||||
@ -999,8 +999,8 @@ float ff_rate_estimate_qscale(MPVMainEncContext *const m, int dry_run)
|
||||
} else {
|
||||
rce->pict_type =
|
||||
rce->new_pict_type = pict_type;
|
||||
rce->mc_mb_var_sum = s->mc_mb_var_sum;
|
||||
rce->mb_var_sum = s->mb_var_sum;
|
||||
rce->mc_mb_var_sum = m->mc_mb_var_sum;
|
||||
rce->mb_var_sum = m->mb_var_sum;
|
||||
rce->qscale = FF_QP2LAMBDA * 2;
|
||||
rce->f_code = s->f_code;
|
||||
rce->b_code = s->b_code;
|
||||
@ -1060,7 +1060,7 @@ float ff_rate_estimate_qscale(MPVMainEncContext *const m, int dry_run)
|
||||
qmin, q, qmax, picture_number,
|
||||
wanted_bits / 1000, m->total_bits / 1000,
|
||||
br_compensation, short_term_q, m->frame_bits,
|
||||
s->mb_var_sum, s->mc_mb_var_sum,
|
||||
m->mb_var_sum, m->mc_mb_var_sum,
|
||||
s->bit_rate / 1000, (int)fps);
|
||||
}
|
||||
|
||||
@ -1076,8 +1076,8 @@ float ff_rate_estimate_qscale(MPVMainEncContext *const m, int dry_run)
|
||||
|
||||
if (!dry_run) {
|
||||
rcc->last_qscale = q;
|
||||
rcc->last_mc_mb_var_sum = s->mc_mb_var_sum;
|
||||
rcc->last_mb_var_sum = s->mb_var_sum;
|
||||
rcc->last_mc_mb_var_sum = m->mc_mb_var_sum;
|
||||
rcc->last_mb_var_sum = m->mb_var_sum;
|
||||
}
|
||||
return q;
|
||||
}
|
||||
|
@ -1708,11 +1708,11 @@ static int ratecontrol_1pass(SnowEncContext *enc, AVFrame *pict)
|
||||
coef_sum = (uint64_t)coef_sum * coef_sum >> 16;
|
||||
|
||||
if(pict->pict_type == AV_PICTURE_TYPE_I){
|
||||
enc->m.s.mb_var_sum = coef_sum;
|
||||
enc->m.s.mc_mb_var_sum = 0;
|
||||
enc->m.mb_var_sum = coef_sum;
|
||||
enc->m.mc_mb_var_sum = 0;
|
||||
}else{
|
||||
enc->m.s.mc_mb_var_sum = coef_sum;
|
||||
enc->m.s.mb_var_sum = 0;
|
||||
enc->m.mc_mb_var_sum = coef_sum;
|
||||
enc->m.mb_var_sum = 0;
|
||||
}
|
||||
|
||||
pict->quality= ff_rate_estimate_qscale(&enc->m, 1);
|
||||
|
Reference in New Issue
Block a user