[FFmpeg-cvslog] vc2enc: Calculate average slice quantiser correctly

Kieran Kunhya git at videolan.org
Sat Nov 4 20:26:38 EET 2017


ffmpeg | branch: master | Kieran Kunhya <kierank at obe.tv> | Mon Jul 24 19:25:41 2017 +0100| [626d200e76e15487cff20992256a55919432b0b3] | committer: Kieran Kunhya

vc2enc: Calculate average slice quantiser correctly

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=626d200e76e15487cff20992256a55919432b0b3
---

 libavcodec/vc2enc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c
index 96e27d93ed..f7fb17b076 100644
--- a/libavcodec/vc2enc.c
+++ b/libavcodec/vc2enc.c
@@ -167,7 +167,7 @@ typedef struct VC2EncContext {
     int slice_max_bytes;
     int slice_min_bytes;
     int q_ceil;
-    int q_avg;
+    int64_t q_avg;
 
     /* Options */
     double tolerance;
@@ -755,7 +755,7 @@ static int calc_slice_sizes(VC2EncContext *s)
     for (i = 0; i < s->num_x*s->num_y; i++) {
         SliceArgs *args = &enc_args[i];
         total_bytes_needed += args->bytes;
-        s->q_avg = (s->q_avg + args->quant_idx)/2;
+        s->q_avg += args->quant_idx;
     }
 
     return total_bytes_needed;
@@ -1045,7 +1045,7 @@ static av_cold int vc2_encode_end(AVCodecContext *avctx)
     int i;
     VC2EncContext *s = avctx->priv_data;
 
-    av_log(avctx, AV_LOG_INFO, "Qavg: %i\n", s->q_avg);
+    av_log(avctx, AV_LOG_INFO, "Qavg: %f\n", (float)s->q_avg / (s->num_x*s->num_y));
 
     for (i = 0; i < 3; i++) {
         ff_vc2enc_free_transforms(&s->transform_args[i].t);



More information about the ffmpeg-cvslog mailing list