comparison ratecontrol.c @ 3676:dac97d2d69d5 libavcodec

seems the output of that code is never used
author michael
date Mon, 04 Sep 2006 21:11:54 +0000
parents be8084e35485
children 4f547f0da680
comparison
equal deleted inserted replaced
3675:bce9f52584c3 3676:dac97d2d69d5
791 RateControlContext *rcc= &s->rc_context; 791 RateControlContext *rcc= &s->rc_context;
792 AVCodecContext *a= s->avctx; 792 AVCodecContext *a= s->avctx;
793 int i; 793 int i;
794 double fps= 1/av_q2d(s->avctx->time_base); 794 double fps= 1/av_q2d(s->avctx->time_base);
795 double complexity[5]={0,0,0,0,0}; // aproximate bits at quant=1 795 double complexity[5]={0,0,0,0,0}; // aproximate bits at quant=1
796 double avg_quantizer[5];
797 uint64_t const_bits[5]={0,0,0,0,0}; // quantizer idependant bits 796 uint64_t const_bits[5]={0,0,0,0,0}; // quantizer idependant bits
798 uint64_t available_bits[5];
799 uint64_t all_const_bits; 797 uint64_t all_const_bits;
800 uint64_t all_available_bits= (uint64_t)(s->bit_rate*(double)rcc->num_entries/fps); 798 uint64_t all_available_bits= (uint64_t)(s->bit_rate*(double)rcc->num_entries/fps);
801 double rate_factor=0; 799 double rate_factor=0;
802 double step; 800 double step;
803 //int last_i_frame=-10000000; 801 //int last_i_frame=-10000000;
823 if(all_available_bits < all_const_bits){ 821 if(all_available_bits < all_const_bits){
824 av_log(s->avctx, AV_LOG_ERROR, "requested bitrate is too low\n"); 822 av_log(s->avctx, AV_LOG_ERROR, "requested bitrate is too low\n");
825 return -1; 823 return -1;
826 } 824 }
827 825
828 /* find average quantizers */
829 avg_quantizer[P_TYPE]=0;
830 for(step=256*256; step>0.0000001; step*=0.5){
831 double expected_bits=0;
832 avg_quantizer[P_TYPE]+= step;
833
834 avg_quantizer[I_TYPE]= avg_quantizer[P_TYPE]*ABS(s->avctx->i_quant_factor) + s->avctx->i_quant_offset;
835 avg_quantizer[B_TYPE]= avg_quantizer[P_TYPE]*ABS(s->avctx->b_quant_factor) + s->avctx->b_quant_offset;
836
837 expected_bits=
838 + all_const_bits
839 + complexity[I_TYPE]/avg_quantizer[I_TYPE]
840 + complexity[P_TYPE]/avg_quantizer[P_TYPE]
841 + complexity[B_TYPE]/avg_quantizer[B_TYPE];
842
843 if(expected_bits < all_available_bits) avg_quantizer[P_TYPE]-= step;
844 //printf("%f %lld %f\n", expected_bits, all_available_bits, avg_quantizer[P_TYPE]);
845 }
846 //printf("qp_i:%f, qp_p:%f, qp_b:%f\n", avg_quantizer[I_TYPE],avg_quantizer[P_TYPE],avg_quantizer[B_TYPE]);
847
848 for(i=0; i<5; i++){
849 available_bits[i]= const_bits[i] + complexity[i]/avg_quantizer[i];
850 }
851 //printf("%lld %lld %lld %lld\n", available_bits[I_TYPE], available_bits[P_TYPE], available_bits[B_TYPE], all_available_bits);
852
853 qscale= av_malloc(sizeof(double)*rcc->num_entries); 826 qscale= av_malloc(sizeof(double)*rcc->num_entries);
854 blured_qscale= av_malloc(sizeof(double)*rcc->num_entries); 827 blured_qscale= av_malloc(sizeof(double)*rcc->num_entries);
855 828
856 for(step=256*256; step>0.0000001; step*=0.5){ 829 for(step=256*256; step>0.0000001; step*=0.5){
857 expected_bits=0; 830 expected_bits=0;