RateControlContext *rcc= &s->rc_context;
int i;
const char *error = NULL;
- static const char *const_names[]={
+ static const char * const const_names[]={
"PI",
"E",
"iTex",
"avgTex",
NULL
};
- static double (*func1[])(void *, double)={
+ static double (* const func1[])(void *, double)={
(void *)bits2qp,
(void *)qp2bits,
NULL
};
- static const char *func1_names[]={
+ static const char * const func1_names[]={
"bits2qp",
"qp2bits",
NULL
};
emms_c();
- rcc->rc_eq_eval = ff_parse(s->avctx->rc_eq, const_names, func1, func1_names, NULL, NULL, &error);
+ rcc->rc_eq_eval = ff_parse(s->avctx->rc_eq ? s->avctx->rc_eq : "tex^qComp", const_names, func1, func1_names, NULL, NULL, &error);
if (!rcc->rc_eq_eval) {
av_log(s->avctx, AV_LOG_ERROR, "Error parsing rc_eq \"%s\": %s\n", s->avctx->rc_eq, error? error : "");
return -1;
#ifdef CONFIG_LIBXVID
return ff_xvid_rate_control_init(s);
#else
- av_log(s->avctx, AV_LOG_ERROR, "XviD ratecontrol requires libavcodec compiled with XviD support\n");
+ av_log(s->avctx, AV_LOG_ERROR, "Xvid ratecontrol requires libavcodec compiled with Xvid support.\n");
return -1;
#endif
}
else if(d<0.0001) d=0.0001;
q*= pow(d, 1.0/s->avctx->rc_buffer_aggressivity);
- q_limit= bits2qp(rce, FFMAX((min_rate - buffer_size + rcc->buffer_index)*3, 1));
+ q_limit= bits2qp(rce, FFMAX((min_rate - buffer_size + rcc->buffer_index) * s->avctx->rc_min_vbv_overflow_use, 1));
if(q > q_limit){
if(s->avctx->debug&FF_DEBUG_RC){
av_log(s->avctx, AV_LOG_DEBUG, "limiting QP %f -> %f\n", q, q_limit);
else if(d<0.0001) d=0.0001;
q/= pow(d, 1.0/s->avctx->rc_buffer_aggressivity);
- q_limit= bits2qp(rce, FFMAX(rcc->buffer_index/3, 1));
+ q_limit= bits2qp(rce, FFMAX(rcc->buffer_index * s->avctx->rc_max_available_vbv_use, 1));
if(q < q_limit){
if(s->avctx->debug&FF_DEBUG_RC){
av_log(s->avctx, AV_LOG_DEBUG, "limiting QP %f -> %f\n", q, q_limit);
//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++){
}
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){
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;
}
}
av_free(qscale);
- av_free(blured_qscale);
+ av_free(blurred_qscale);
/* check bitrate calculations and print info */
qscale_sum = 0.0;