Lines Matching refs:bm

29 void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){
33 memset(bm,0,sizeof(*bm));
39 bm->short_per_long=ci->blocksizes[1]/ci->blocksizes[0];
40 bm->managed=1;
42 bm->avg_bitsper= rint(1.*bi->avg_rate*halfsamples/ratesamples);
43 bm->min_bitsper= rint(1.*bi->min_rate*halfsamples/ratesamples);
44 bm->max_bitsper= rint(1.*bi->max_rate*halfsamples/ratesamples);
46 bm->avgfloat=PACKETBLOBS/2;
52 bm->minmax_reservoir=desired_fill;
53 bm->avg_reservoir=desired_fill;
59 void vorbis_bitrate_clear(bitrate_manager_state *bm){
60 memset(bm,0,sizeof(*bm));
67 bitrate_manager_state *bm=&b->bms;
69 if(bm && bm->managed)return(1);
78 bitrate_manager_state *bm=&b->bms;
83 int choice=rint(bm->avgfloat);
85 long min_target_bits=(vb->W?bm->min_bitsper*bm->short_per_long:bm->min_bitsper);
86 long max_target_bits=(vb->W?bm->max_bitsper*bm->short_per_long:bm->max_bitsper);
89 if(!bm->managed){
93 if(bm->vb)return(-1); /* one has been submitted without
95 bm->vb=vb;
99 bm->vb=vb;
102 if(bm->avg_bitsper>0){
104 long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
118 if(bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
120 bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
124 }else if(bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
126 bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
132 slew=rint(choice-bm->avgfloat)/samples*vi->rate;
135 choice=rint(bm->avgfloat+= slew/vi->rate*samples);
142 if(bm->min_bitsper>0){
145 while(bm->minmax_reservoir-(min_target_bits-this_bits)<0){
154 if(bm->max_bitsper>0){
157 while(bm->minmax_reservoir+(this_bits-max_target_bits)>bi->reservoir_bits){
171 long maxsize=(max_target_bits+(bi->reservoir_bits-bm->minmax_reservoir))/8;
172 bm->choice=choice=0;
180 long minsize=(min_target_bits-bm->minmax_reservoir+7)/8;
184 bm->choice=choice;
195 if(bm->min_bitsper>0 || bm->max_bitsper>0){
198 bm->minmax_reservoir+=(this_bits-max_target_bits);
200 bm->minmax_reservoir+=(this_bits-min_target_bits);
203 if(bm->minmax_reservoir>desired_fill){
205 bm->minmax_reservoir+=(this_bits-max_target_bits);
206 if(bm->minmax_reservoir<desired_fill)bm->minmax_reservoir=desired_fill;
208 bm->minmax_reservoir=desired_fill;
212 bm->minmax_reservoir+=(this_bits-min_target_bits);
213 if(bm->minmax_reservoir>desired_fill)bm->minmax_reservoir=desired_fill;
215 bm->minmax_reservoir=desired_fill;
222 if(bm->avg_bitsper>0){
223 long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
224 bm->avg_reservoir+=this_bits-avg_target_bits;
232 bitrate_manager_state *bm=&b->bms;
233 vorbis_block *vb=bm->vb;
241 choice=bm->choice;
251 bm->vb=0;