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