|
|
|
@ -840,7 +840,7 @@ static int init_pass2(MpegEncContext *s) |
|
|
|
|
//int last_i_frame=-10000000;
|
|
|
|
|
const int filter_size= (int)(a->qblur*4) | 1; |
|
|
|
|
double expected_bits; |
|
|
|
|
double *qscale, *blured_qscale, qscale_sum; |
|
|
|
|
double *qscale, *blurred_qscale, qscale_sum; |
|
|
|
|
|
|
|
|
|
/* find complexity & const_bits & decide the pict_types */ |
|
|
|
|
for(i=0; i<rcc->num_entries; i++){ |
|
|
|
@ -863,7 +863,7 @@ static int init_pass2(MpegEncContext *s) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
qscale= av_malloc(sizeof(double)*rcc->num_entries); |
|
|
|
|
blured_qscale= av_malloc(sizeof(double)*rcc->num_entries); |
|
|
|
|
blurred_qscale= av_malloc(sizeof(double)*rcc->num_entries); |
|
|
|
|
toobig = 0; |
|
|
|
|
|
|
|
|
|
for(step=256*256; step>0.0000001; step*=0.5){ |
|
|
|
@ -902,16 +902,16 @@ static int init_pass2(MpegEncContext *s) |
|
|
|
|
q+= qscale[index] * coeff; |
|
|
|
|
sum+= coeff; |
|
|
|
|
} |
|
|
|
|
blured_qscale[i]= q/sum; |
|
|
|
|
blurred_qscale[i]= q/sum; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* find expected bits */ |
|
|
|
|
for(i=0; i<rcc->num_entries; i++){ |
|
|
|
|
RateControlEntry *rce= &rcc->entry[i]; |
|
|
|
|
double bits; |
|
|
|
|
rce->new_qscale= modify_qscale(s, rce, blured_qscale[i], i); |
|
|
|
|
rce->new_qscale= modify_qscale(s, rce, blurred_qscale[i], i); |
|
|
|
|
bits= qp2bits(rce, rce->new_qscale) + rce->mv_bits + rce->misc_bits; |
|
|
|
|
//printf("%d %f\n", rce->new_bits, blured_qscale[i]);
|
|
|
|
|
//printf("%d %f\n", rce->new_bits, blurred_qscale[i]);
|
|
|
|
|
bits += 8*ff_vbv_update(s, bits); |
|
|
|
|
|
|
|
|
|
rce->expected_bits= expected_bits; |
|
|
|
@ -929,7 +929,7 @@ static int init_pass2(MpegEncContext *s) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
av_free(qscale); |
|
|
|
|
av_free(blured_qscale); |
|
|
|
|
av_free(blurred_qscale); |
|
|
|
|
|
|
|
|
|
/* check bitrate calculations and print info */ |
|
|
|
|
qscale_sum = 0.0; |
|
|
|
|