Commit e92a78a4 authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/mpegvideo: make mc_mb_var_sum / mb_var_sum 64bit

This avoids a hypothetical integer overflow with very high resolution video
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent c3272674
...@@ -130,8 +130,8 @@ typedef struct Picture{ ...@@ -130,8 +130,8 @@ typedef struct Picture{
int field_picture; ///< whether or not the picture was encoded in separate fields int field_picture; ///< whether or not the picture was encoded in separate fields
int mb_var_sum; ///< sum of MB variance for current frame int64_t mb_var_sum; ///< sum of MB variance for current frame
int mc_mb_var_sum; ///< motion compensated MB variance for current frame int64_t mc_mb_var_sum; ///< motion compensated MB variance for current frame
int b_frame_score; int b_frame_score;
int needs_realloc; ///< Picture needs to be reallocated (eg due to a frame size change) int needs_realloc; ///< Picture needs to be reallocated (eg due to a frame size change)
......
...@@ -3444,7 +3444,7 @@ static int encode_picture(MpegEncContext *s, int picture_number) ...@@ -3444,7 +3444,7 @@ static int encode_picture(MpegEncContext *s, int picture_number)
s->mb_type[i]= CANDIDATE_MB_TYPE_INTRA; s->mb_type[i]= CANDIDATE_MB_TYPE_INTRA;
if(s->msmpeg4_version >= 3) if(s->msmpeg4_version >= 3)
s->no_rounding=1; s->no_rounding=1;
av_dlog(s, "Scene change detected, encoding as I Frame %d %d\n", av_dlog(s, "Scene change detected, encoding as I Frame %"PRId64" %"PRId64"\n",
s->current_picture.mb_var_sum, s->current_picture.mc_mb_var_sum); s->current_picture.mb_var_sum, s->current_picture.mc_mb_var_sum);
} }
......
...@@ -47,7 +47,7 @@ void ff_write_pass1_stats(MpegEncContext *s) ...@@ -47,7 +47,7 @@ void ff_write_pass1_stats(MpegEncContext *s)
{ {
snprintf(s->avctx->stats_out, 256, snprintf(s->avctx->stats_out, 256,
"in:%d out:%d type:%d q:%d itex:%d ptex:%d mv:%d misc:%d " "in:%d out:%d type:%d q:%d itex:%d ptex:%d mv:%d misc:%d "
"fcode:%d bcode:%d mc-var:%d var:%d icount:%d skipcount:%d hbits:%d;\n", "fcode:%d bcode:%d mc-var:%"PRId64" var:%"PRId64" icount:%d skipcount:%d hbits:%d;\n",
s->current_picture_ptr->f.display_picture_number, s->current_picture_ptr->f.display_picture_number,
s->current_picture_ptr->f.coded_picture_number, s->current_picture_ptr->f.coded_picture_number,
s->pict_type, s->pict_type,
...@@ -880,7 +880,7 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run) ...@@ -880,7 +880,7 @@ float ff_rate_estimate_qscale(MpegEncContext *s, int dry_run)
if (s->avctx->debug & FF_DEBUG_RC) { if (s->avctx->debug & FF_DEBUG_RC) {
av_log(s->avctx, AV_LOG_DEBUG, av_log(s->avctx, AV_LOG_DEBUG,
"%c qp:%d<%2.1f<%d %d want:%d total:%d comp:%f st_q:%2.2f " "%c qp:%d<%2.1f<%d %d want:%d total:%d comp:%f st_q:%2.2f "
"size:%d var:%d/%d br:%d fps:%d\n", "size:%d var:%"PRId64"/%"PRId64" br:%d fps:%d\n",
av_get_picture_type_char(pict_type), av_get_picture_type_char(pict_type),
qmin, q, qmax, picture_number, qmin, q, qmax, picture_number,
(int)wanted_bits / 1000, (int)s->total_bits / 1000, (int)wanted_bits / 1000, (int)s->total_bits / 1000,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment