comparison ratecontrol.c @ 615:459a715f0661 libavcodec

fixing qmin==qmax && qsquish==1
author michaelni
date Sun, 25 Aug 2002 23:49:50 +0000
parents c0005de2be59
children 0fe52ab8042c
comparison
equal deleted inserted replaced
614:b786f15df503 615:459a715f0661
385 if(d>1.0) d=1.0; 385 if(d>1.0) d=1.0;
386 q*= pow(d, 1.0/s->avctx->rc_buffer_aggressivity); 386 q*= pow(d, 1.0/s->avctx->rc_buffer_aggressivity);
387 } 387 }
388 } 388 }
389 389
390 if(s->avctx->rc_qsquish==0.0){ 390 if(s->avctx->rc_qsquish==0.0 || qmin==qmax){
391 if (q<qmin) q=qmin; 391 if (q<qmin) q=qmin;
392 else if(q>qmax) q=qmax; 392 else if(q>qmax) q=qmax;
393 }else{ 393 }else{
394 double min2= log(qmin); 394 double min2= log(qmin);
395 double max2= log(qmax); 395 double max2= log(qmax);
515 bits= rce->i_tex_bits + rce->p_tex_bits; 515 bits= rce->i_tex_bits + rce->p_tex_bits;
516 rate_factor= rcc->pass1_wanted_bits/rcc->pass1_bits * br_compensation; 516 rate_factor= rcc->pass1_wanted_bits/rcc->pass1_bits * br_compensation;
517 517
518 q= get_qscale(s, rce, rate_factor, picture_number); 518 q= get_qscale(s, rce, rate_factor, picture_number);
519 519
520 assert(q>0.0);
520 //printf("%f ", q); 521 //printf("%f ", q);
521 if (pict_type==I_TYPE && s->avctx->i_quant_factor>0.0) 522 if (pict_type==I_TYPE && s->avctx->i_quant_factor>0.0)
522 q= rcc->next_p_qscale*s->avctx->i_quant_factor + s->avctx->i_quant_offset; 523 q= rcc->next_p_qscale*s->avctx->i_quant_factor + s->avctx->i_quant_offset;
523 else if(pict_type==B_TYPE && s->avctx->b_quant_factor>0.0) 524 else if(pict_type==B_TYPE && s->avctx->b_quant_factor>0.0)
524 q= rcc->next_non_b_qscale*s->avctx->b_quant_factor + s->avctx->b_quant_offset; 525 q= rcc->next_non_b_qscale*s->avctx->b_quant_factor + s->avctx->b_quant_offset;
525
526 //printf("%f ", q); 526 //printf("%f ", q);
527 assert(q>0.0); 527 assert(q>0.0);
528 528
529 if(pict_type==P_TYPE || s->intra_only){ //FIXME type dependant blur like in 2-pass 529 if(pict_type==P_TYPE || s->intra_only){ //FIXME type dependant blur like in 2-pass
530 rcc->short_term_qsum*=s->qblur; 530 rcc->short_term_qsum*=s->qblur;
537 //printf("%f ", q); 537 //printf("%f ", q);
538 } 538 }
539 q= modify_qscale(s, rce, q, picture_number); 539 q= modify_qscale(s, rce, q, picture_number);
540 540
541 rcc->pass1_wanted_bits+= s->bit_rate/fps; 541 rcc->pass1_wanted_bits+= s->bit_rate/fps;
542
543 assert(q>0.0);
542 544
543 if(pict_type != B_TYPE) rcc->next_non_b_qscale= q; 545 if(pict_type != B_TYPE) rcc->next_non_b_qscale= q;
544 if(pict_type == P_TYPE) rcc->next_p_qscale= q; 546 if(pict_type == P_TYPE) rcc->next_p_qscale= q;
545 } 547 }
546 //printf("qmin:%d, qmax:%d, q:%f\n", qmin, qmax, q); 548 //printf("qmin:%d, qmax:%d, q:%f\n", qmin, qmax, q);