Mercurial > libavcodec.hg
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); |