eliminate printfs
authorMonty <xiphmont@xiph.org>
Wed, 19 Dec 2001 08:10:04 +0000 (08:10 +0000)
committerMonty <xiphmont@xiph.org>
Wed, 19 Dec 2001 08:10:04 +0000 (08:10 +0000)
fix bug in management when only a hard minimum rate is specced
minor default tuning tweaks

svn path=/trunk/vorbis/; revision=2857

examples/encoder_example.c
include/vorbis/vorbisenc.h
lib/bitrate.c
lib/modes/psych_44.h
lib/vorbisenc.c

index 5380971..4740dc3 100644 (file)
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: simple example encoder
- last mod: $Id: encoder_example.c,v 1.30 2001/12/19 01:08:13 xiphmont Exp $
+ last mod: $Id: encoder_example.c,v 1.31 2001/12/19 08:10:02 xiphmont Exp $
 
  ********************************************************************/
 
@@ -93,14 +93,15 @@ int main(){
   /********** Encode setup ************/
 
   /* choose an encoding mode */
-  /* (mode 0: 44kHz stereo uncoupled, roughly 128kbps VBR) */
+  /* (quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR) */
   vorbis_info_init(&vi);
 
-  vorbis_encode_init_vbr(&vi,2,44100,.4);
+  vorbis_encode_init_vbr(&vi,2,44100,.1);
+  //vorbis_encode_init(&vi,2,44100,70000,64000,-1);
 
   /* add a comment */
   vorbis_comment_init(&vc);
-  vorbis_comment_add(&vc,"ENCODER=encoder_example.c");
+  vorbis_comment_add_tag(&vc,"ENCODER","encoder_example.c");
 
   /* set up the analysis state and auxiliary encoding storage */
   vorbis_analysis_init(&vd,&vi);
index 7b10682..19b6943 100644 (file)
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: vorbis encode-engine setup
- last mod: $Id: vorbisenc.h,v 1.6 2001/12/19 02:08:55 jack Exp $
+ last mod: $Id: vorbisenc.h,v 1.7 2001/12/19 08:10:03 xiphmont Exp $
 
  ********************************************************************/
 
@@ -33,6 +33,21 @@ extern int vorbis_encode_init(vorbis_info *vi,
                              long nominal_bitrate,
                              long min_bitrate);
 
+extern int vorbis_encode_setup_managed(vorbis_info *vi,
+                                      long channels,
+                                      long rate,
+                                      
+                                      long max_bitrate,
+                                      long nominal_bitrate,
+                                      long min_bitrate);
+  
+extern int vorbis_encode_setup_vbr(vorbis_info *vi,
+                                 long channels,
+                                 long rate,
+                                 
+                                 float /* quality level from 0. (lo) to 1. (hi) */
+                                 );
+
 extern int vorbis_encode_init_vbr(vorbis_info *vi,
                                  long channels,
                                  long rate,
@@ -40,6 +55,8 @@ extern int vorbis_encode_init_vbr(vorbis_info *vi,
                                  float base_quality /* quality level from 0. (lo) to 1. (hi) */
                                  );
 
+extern int vorbis_encode_setup_init(vorbis_info *vi);
+
 extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
 
 
index 0bfc1e4..3f67c0c 100644 (file)
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: bitrate tracking and management
- last mod: $Id: bitrate.c,v 1.5 2001/12/19 07:33:51 xiphmont Exp $
+ last mod: $Id: bitrate.c,v 1.6 2001/12/19 08:10:03 xiphmont Exp $
 
  ********************************************************************/
 
@@ -310,7 +310,6 @@ int vorbis_bitrate_addblock(vorbis_block *vb){
       
       /* apply the average floater to new blocks */
       bin=bm->avgfloat*BITTRACK_DIVISOR; /* truncate on purpose */
-      fprintf(stderr,"u:%f l:%f float:%d ",upper,lower,bin);
       while(bm->avg_centeracc>desired_center){
        int samples=
          samples=ci->blocksizes[bm->queue_actual[bm->avg_center]&
@@ -364,9 +363,6 @@ int vorbis_bitrate_addblock(vorbis_block *vb){
        if(bm->avgnoise>bi->avgfloat_noise_maxval)
          bm->avgnoise=bi->avgfloat_noise_maxval;
       }
-      fprintf(stderr,"noise:%f req:%f trigger:%ld\n",bm->avgnoise,
-             bm->noisetrigger_request,bm->noisetrigger_postpone);
-
     }
   }else{
     /* if we're not using an average tracker, the 'float' is nailed to
@@ -440,7 +436,6 @@ int vorbis_bitrate_addblock(vorbis_block *vb){
       double bitrate=(double)bm->minmax_acctotal/bm->minmax_sampleacc*vi->rate;
       int limit=0;
       
-      fprintf(stderr,"prelimit:%dkbps ",(int)bitrate/1000);
       if((bi->queue_hardmax>0 && bitrate>bi->queue_hardmax) || 
         (bi->queue_hardmin>0 && bitrate<bi->queue_hardmin)){
        int newstack;
@@ -451,7 +446,7 @@ int vorbis_bitrate_addblock(vorbis_block *vb){
        /* we're off rate.  Iteratively try out new hard floater
            limits until we find one that brings us inside.  Here's
            where we see the whole point of the limit stacks.  */
-       if(bitrate>bi->queue_hardmax){
+       if(bi->queue_hardmax>0 && bitrate>bi->queue_hardmax){
          for(limit=-1;limit>-bins;limit--){
            long bitsum=limit_sum(bm,limit);
            bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
@@ -468,7 +463,6 @@ int vorbis_bitrate_addblock(vorbis_block *vb){
 
        bitsum=limit_sum(bm,limit);
        bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
-       fprintf(stderr,"postlimit:%dkbps ",(int)bitrate/1000);
 
        /* trace the limit backward, stop when we see a lower limit */
        newstack=bm->minmax_stackptr-1;
@@ -495,7 +489,6 @@ int vorbis_bitrate_addblock(vorbis_block *vb){
        stackctr++;
        bm->minmax_posstack[stackctr]=bm->minmax_posstack[bm->minmax_stackptr];
        bm->minmax_limitstack[stackctr]=limit;
-       fprintf(stderr,"limit:%d\n",limit);
 
        /* set up new blank stack entry */
        stackctr++;
index 5c61d8e..21e2c2e 100644 (file)
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: key psychoacoustic settings for 44.1/48kHz
- last mod: $Id: psych_44.h,v 1.4 2001/12/19 01:10:27 xiphmont Exp $
+ last mod: $Id: psych_44.h,v 1.5 2001/12/19 08:10:04 xiphmont Exp $
 
  ********************************************************************/
 
@@ -639,3 +639,9 @@ static double _psy_stereo_point_kHz_44[2][11]={
 static double _psy_lowpass_44[11]={
   15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
 };
+
+/* management noise offset */
+
+static double _bm_max_noise_offset[11]={
+  1.,2.,3.,3.,4.,4.,4.,4.,4.,4.,4.
+};
index 39ebcf0..f2613a1 100644 (file)
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: simple programmatic interface for encoder mode setup
- last mod: $Id: vorbisenc.c,v 1.26 2001/12/19 07:33:51 xiphmont Exp $
+ last mod: $Id: vorbisenc.c,v 1.27 2001/12/19 08:10:03 xiphmont Exp $
 
  ********************************************************************/
 
@@ -804,7 +804,7 @@ static double approx_bitrate_to_vbr(int ch,int coupled,
 
   bitrate/=ch;
 
-  if(bitrate<r[0])return(0.);
+  if(bitrate<=r[0])return(0.);
   for(i=0;i<10;i++)
     if(r[i]<bitrate && r[i+1]>=bitrate)break;
   if(i==10)return(10.);
@@ -953,16 +953,21 @@ int vorbis_encode_setup_managed(vorbis_info *vi,
     if(hi->stereo_point_dB && hi->stereo_couple_p && channels==2){
       hi->stereo_point_dB++;
       if(hi->stereo_point_dB>3)hi->stereo_point_dB=3;
-    }else{
-      /* else, slug the vbr noise setting */
-      int i;
-      for(i=0;i<4;i++){
-       hi->blocktype[i].noise_bias_quality-=.1;
-       if(hi->blocktype[i].noise_bias_quality<0.)
-         hi->blocktype[i].noise_bias_quality=0.;
-      }
-    }
-
+    }      
+    /* slug the vbr noise setting*/
+    hi->blocktype[0].noise_bias_quality-=.1;
+    if(hi->blocktype[0].noise_bias_quality<0.)
+      hi->blocktype[0].noise_bias_quality=0.;
+    hi->blocktype[1].noise_bias_quality-=.1;
+    if(hi->blocktype[1].noise_bias_quality<0.)
+      hi->blocktype[1].noise_bias_quality=0.;
+    hi->blocktype[2].noise_bias_quality-=.05;
+    if(hi->blocktype[2].noise_bias_quality<0.)
+      hi->blocktype[2].noise_bias_quality=0.;
+    hi->blocktype[3].noise_bias_quality-=.05;
+    if(hi->blocktype[3].noise_bias_quality<0.)
+      hi->blocktype[3].noise_bias_quality=0.;
+   
     /* initialize management.  Currently hardcoded for 44, but so is above. */
     memcpy(&ci->bi,&_bm_44_default,sizeof(ci->bi));
     ci->bi.queue_hardmin=min_bitrate;
@@ -976,6 +981,8 @@ int vorbis_encode_setup_managed(vorbis_info *vi,
       /* just an average tracker; no reason for the window to be as small as 2s. */
       ci->bi.queue_avg_time=4.;
     }
+    ci->bi.avgfloat_noise_maxval=_bm_max_noise_offset[(int)approx_vbr];
+
 
   }
   return(ret);