]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/ratecontrol.c
Merge remote-tracking branch 'cus/stable'
[ffmpeg] / libavcodec / ratecontrol.c
index d085f04113215ab4efda49aace50fcf34fc20035..5919ea2b23069b79a75dcd510773e0c758be4573 100644 (file)
@@ -537,8 +537,8 @@ static void adaptive_quantization(MpegEncContext *s, double q){
     const float border_masking = s->avctx->border_masking;
     float bits_sum= 0.0;
     float cplx_sum= 0.0;
-    float cplx_tab[s->mb_num];
-    float bits_tab[s->mb_num];
+    float *cplx_tab = av_malloc(s->mb_num * sizeof(*cplx_tab));
+    float *bits_tab = av_malloc(s->mb_num * sizeof(*bits_tab));
     const int qmin= s->avctx->mb_lmin;
     const int qmax= s->avctx->mb_lmax;
     Picture * const pic= &s->current_picture;
@@ -639,6 +639,9 @@ static void adaptive_quantization(MpegEncContext *s, double q){
 //printf("%2d%3d ", intq, ff_sqrt(s->mc_mb_var[i]));
         s->lambda_table[mb_xy]= intq;
     }
+
+    av_free(cplx_tab);
+    av_free(bits_tab);
 }
 
 void ff_get_2pass_fcode(MpegEncContext *s){
@@ -861,7 +864,9 @@ static int init_pass2(MpegEncContext *s)
 
         /* find qscale */
         for(i=0; i<rcc->num_entries; i++){
+            RateControlEntry *rce= &rcc->entry[i];
             qscale[i]= get_qscale(s, &rcc->entry[i], rate_factor, i);
+            rcc->last_qscale_for[rce->pict_type] = qscale[i];
         }
         assert(filter_size%2==1);