vorbis_encode_setup_managed guesses bitrate after calculating quality factor
Here's the patch:
=========================================================
==========
RCS file: /usr/local/cvsroot/vorbis/lib/vorbisenc.c,v
retrieving revision 1.33
diff -c -r1.33 vorbisenc.c
*** vorbisenc.c 2001/12/23 11:53:53 1.33
--- vorbisenc.c 2002/01/03 08:51:44
***************
*** 914,936 ****
long nominal_bitrate,
long min_bitrate){
! double tnominal=nominal_bitrate;
! double approx_vbr=approx_bitrate_to_vbr(channels,(channels==2),
! (float)nominal_bitrate,rate);
int ret=0;
! if(approx_vbr<0)return(OV_EIMPL);
!
! if(nominal_bitrate<=0.){
! if(max_bitrate>0.){
! nominal_bitrate=max_bitrate*.875;
}else{
! if(min_bitrate>0.){
! nominal_bitrate=min_bitrate;
}else{
return(OV_EINVAL);
}
}
}
ret=vorbis_encode_setup_vbr(vi,channels,rate,approx_vbr);
if(ret){
--- 914,938 ----
long nominal_bitrate,
long min_bitrate){
! float tnominal=nominal_bitrate;
! double approx_vbr;
int ret=0;
!
! if(nominal_bitrate<=0){
! if(max_bitrate>0){
! tnominal=(float)max_bitrate*.875f;
}else{
! if(min_bitrate>0){
! tnominal=(float)min_bitrate;
}else{
return(OV_EINVAL);
}
}
}
+
+ approx_vbr=approx_bitrate_to_vbr(channels,(channels==2),
+ (float)tnominal,rate);
+ if(approx_vbr<0)return(OV_EIMPL);
ret=vorbis_encode_setup_vbr(vi,channels,rate,approx_vbr);
if(ret){