comparison ratecontrol.c @ 1806:2721e1859e19 libavcodec

normalize adaptive quantizatiuon fix (based upon a patch by (Jindrich Makovicka <makovick at kmlinux dot fjfi dot cvut dot cz>))
author michael
date Sat, 14 Feb 2004 13:37:58 +0000
parents 07a484280a82
children 18b8b2dcc037
comparison
equal deleted inserted replaced
1805:5dd5b2052f5b 1806:2721e1859e19
543 bits_tab[i]= bits; 543 bits_tab[i]= bits;
544 } 544 }
545 545
546 /* handle qmin/qmax cliping */ 546 /* handle qmin/qmax cliping */
547 if(s->flags&CODEC_FLAG_NORMALIZE_AQP){ 547 if(s->flags&CODEC_FLAG_NORMALIZE_AQP){
548 float factor= bits_sum/cplx_sum;
548 for(i=0; i<s->mb_num; i++){ 549 for(i=0; i<s->mb_num; i++){
549 float newq= q*cplx_tab[i]/bits_tab[i]; 550 float newq= q*cplx_tab[i]/bits_tab[i];
550 newq*= bits_sum/cplx_sum; 551 newq*= factor;
551 552
552 if (newq > qmax){ 553 if (newq > qmax){
553 bits_sum -= bits_tab[i]; 554 bits_sum -= bits_tab[i];
554 cplx_sum -= cplx_tab[i]*q/qmax; 555 cplx_sum -= cplx_tab[i]*q/qmax;
555 } 556 }
556 else if(newq < qmin){ 557 else if(newq < qmin){
557 bits_sum -= bits_tab[i]; 558 bits_sum -= bits_tab[i];
558 cplx_sum -= cplx_tab[i]*q/qmin; 559 cplx_sum -= cplx_tab[i]*q/qmin;
559 } 560 }
560 } 561 }
562 if(bits_sum < 0.001) bits_sum= 0.001;
563 if(cplx_sum < 0.001) cplx_sum= 0.001;
561 } 564 }
562 565
563 for(i=0; i<s->mb_num; i++){ 566 for(i=0; i<s->mb_num; i++){
564 const int mb_xy= s->mb_index2xy[i]; 567 const int mb_xy= s->mb_index2xy[i];
565 float newq= q*cplx_tab[i]/bits_tab[i]; 568 float newq= q*cplx_tab[i]/bits_tab[i];