[xiph-cvs] cvs commit: vorbis/lib/modes mode_44c_A.h modes.h

Monty xiphmont at xiph.org
Fri Aug 31 23:14:53 PDT 2001



xiphmont    01/08/31 23:14:52

  Modified:    lib      floor1.c psy.c psy.h res0.c vorbisenc.c
               lib/modes mode_44c_A.h modes.h
  Log:
  tuning on a branch. New noise metrics, noise bugfixes, postecho on.

Revision  Changes    Path
1.15      +3 -3      vorbis/lib/floor1.c

Index: floor1.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/floor1.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- floor1.c	2001/08/16 20:31:38	1.14
+++ floor1.c	2001/09/01 06:14:50	1.15
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: floor backend 1 implementation
- last mod: $Id: floor1.c,v 1.14 2001/08/16 20:31:38 xiphmont Exp $
+ last mod: $Id: floor1.c,v 1.15 2001/09/01 06:14:50 xiphmont Exp $
 
  ********************************************************************/
 
@@ -940,7 +940,7 @@
           {
             FILE *of;
             char buffer[80];
-	    sprintf(buffer,"line_%ldx%ld_class%d.vqd",
+	    sprintf(buffer,"line_%dx%ld_class%d.vqd",
                     vb->pcmend/2,posts-2,class);
             of=fopen(buffer,"a");
             fprintf(of,"%d\n",cval);
@@ -964,7 +964,7 @@
             {
               FILE *of;
               char buffer[80];
-	      sprintf(buffer,"line_%ldx%ld_%dsub%d.vqd",
+	      sprintf(buffer,"line_%dx%ld_%dsub%d.vqd",
                       vb->pcmend/2,posts-2,class,bookas[k]);
               of=fopen(buffer,"a");
               fprintf(of,"%d\n",fit_valueB[j+k]);

1.52      +198 -149  vorbis/lib/psy.c

Index: psy.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/psy.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- psy.c	2001/08/16 22:52:54	1.51
+++ psy.c	2001/09/01 06:14:50	1.52
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: psychoacoustics not including preecho
- last mod: $Id: psy.c,v 1.51 2001/08/16 22:52:54 xiphmont Exp $
+ last mod: $Id: psy.c,v 1.52 2001/09/01 06:14:50 xiphmont Exp $
 
  ********************************************************************/
 
@@ -214,7 +214,7 @@
 
 void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
                   vorbis_info_psy_global *gi,int n,long rate){
-  long i,j,k,lo=0,hi=0;
+  long i,j,k,lo=-99,hi=0;
   long maxoc;
   memset(p,0,sizeof(vorbis_look_psy));
 
@@ -246,7 +246,7 @@
     for(;hi<n && (hi<i+vi->noisewindowhimin ||
           toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++);
     
-    p->bark[i]=(hi<<16)+lo;
+    p->bark[i]=(lo<<16)+hi;
 
   }
 
@@ -368,9 +368,6 @@
     if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1;
     inthalfoc=(int)halfoc;
     del=halfoc-inthalfoc;
-
-    p->noisethresh[i]=((p->vi->noisethresh[inthalfoc]*(1.-del) + 
-			p->vi->noisethresh[inthalfoc+1]*del))*2.f-1.f;
     p->noiseoffset[i]=
       p->vi->noiseoff[inthalfoc]*(1.-del) + 
       p->vi->noiseoff[inthalfoc+1]*del;
@@ -599,59 +596,40 @@
                                 float *noise,
                                 const float offset,
                                 const int fixed){
-  long i,hi=0,lo=0,hif=0,lof=0;
+  long i,hi=b[0]>>16,lo=b[0]>>16,hif=-fixed/2,lof=-fixed/2;
   double xa=0,xb=0;
   double ya=0,yb=0;
   double x2a=0,x2b=0;
   double y2a=0,y2b=0;
   double xya=0,xyb=0; 
   double na=0,nb=0;
-  int first=-1,firstf=-1;
-  int last=0,lastf=0;
-  int rna=0,rnb=0;
 
   for(i=0;i<n;i++){
     if(hi<n){
       /* find new lo/hi */
-      int bi=b[i]>>16;
+      int bi=b[i]&0xffffL;
       for(;hi<bi;hi++){
-        double bin=(f[hi]<-offset?0.:f[hi]+offset);
-        if(bin>0.f){
-          double nn= bin*bin;
-          nn*=nn;
-          na  += nn;
-          xa  += hi*nn;
-          ya  += bin*nn;
-          x2a += hi*hi*nn;
-          y2a += bin*bin*nn;
-          xya += hi*bin*nn;
-          last=hi;
-          rna++;
-          if(first==-1)first=hi;
-        }
+	int ii=(hi<0?-hi:hi);
+        double bin=(f[ii]<-offset?1.:f[ii]+offset);
+	double nn= bin*bin;
+	na  += nn;
+	xa  += hi*nn;
+	ya  += bin*nn;
+	x2a += hi*hi*nn;
+	y2a += bin*bin*nn;
+	xya += hi*bin*nn;
       }
-      bi=b[i]&0xffff;
+      bi=b[i]>>16;
       for(;lo<bi;lo++){
-        double bin=(f[lo]<-offset?0.:f[lo]+offset);
-        if(bin>0.f){
-          double nn= bin*bin;
-          nn*=nn;
-          na  -= nn;
-          xa  -= lo*nn;
-          ya  -= bin*nn;
-          x2a -= lo*lo*nn;
-          y2a -= bin*bin*nn;
-          xya -= lo*bin*nn;
-          rna--;
-        }
-        if(first<lo)first=-1;
-        if(last<lo){
-          first=-1;
-        }else{
-          for(first=lo;first<hi;first++)
-            if(f[first]>0.f)break;
-          if(first==hi)first=-1;
-        }
+	int ii=(lo<0?-lo:lo);
+        double bin=(f[ii]<-offset?1.:f[ii]+offset);
+	double nn= bin*bin;
+	na  -= nn;
+	xa  -= lo*nn;
+	ya  -= bin*nn;
+	x2a -= lo*lo*nn;
+	y2a -= bin*bin*nn;
+	xya -= lo*bin*nn;
       }
     }
 
@@ -660,74 +638,50 @@
       if(bi>n)bi=n;
 
       for(;hif<bi;hif++){
-        double bin=(f[hif]<-offset?0.:f[hif]+offset);
-        if(bin>0.f){
-          double nn= bin*bin;
-          nn*=nn;
-          nb  += nn;
-          xb  += hif*nn;
-          yb  += bin*nn;
-          x2b += hif*hif*nn;
-          y2b += bin*bin*nn;
-          xyb += hif*bin*nn;
-          lastf=hif;
-          rnb++;
-          if(firstf==-1)firstf=hif;
-        }
+	int ii=(hif<0?-hif:hif);
+        double bin=(f[ii]<-offset?1.:f[ii]+offset);
+	double nn= bin*bin;
+	nb  += nn;
+	xb  += hif*nn;
+	yb  += bin*nn;
+	x2b += hif*hif*nn;
+	y2b += bin*bin*nn;
+	xyb += hif*bin*nn;
       }
       bi=i-(fixed+1)/2;
-      if(bi<0)bi=0;
       for(;lof<bi;lof++){
-        double bin=(f[lof]<-offset?0.:f[lof]+offset);
-        if(bin>0.f){
-          double nn= bin*bin;
-          nn*=nn;
-          nb  -= nn;
-          xb  -= lof*nn;
-          yb  -= bin*nn;
-          x2b -= lof*lof*nn;
-          y2b -= bin*bin*nn;
-          xyb -= lof*bin*nn;
-          rnb--;
-        }
-        if(firstf<lof)firstf=-1;
-        if(lastf<lof){
-          firstf=-1;
-        }else{
-          for(firstf=lof;firstf<hif;firstf++)
-            if(f[firstf]>0.f)break;
-          if(firstf==hif)firstf=-1;
-        }
+	int ii=(lof<0?-lof:lof);
+        double bin=(f[ii]<-offset?1.:f[ii]+offset);
+	double nn= bin*bin;
+	nb  -= nn;
+	xb  -= lof*nn;
+	yb  -= bin*nn;
+	x2b -= lof*lof*nn;
+	y2b -= bin*bin*nn;
+	xyb -= lof*bin*nn;
       }
     }
 
     {    
-      double va;
+      double va=0.f;
       
-      if(rna>2 && (last-first)*3/2>hi-lo){
+      if(na>2){
         double denom=1./(na*x2a-xa*xa);
         double a=(ya*x2a-xya*xa)*denom;
         double b=(na*xya-xa*ya)*denom;
         va=a+b*i;
-      }else{
-	va=0.f;
-        if(na>.5)va=ya/na;
       }
       if(va<0.)va=0.;
 
       if(fixed>0){
-        double vb;
+        double vb=0.f;
 
-        if(rnb>2 && (lastf-firstf)*3/2>hif-lof){
+        if(nb>2){
           double denomf=1./(nb*x2b-xb*xb);
           double af=(yb*x2b-xyb*xb)*denomf;
           double bf=(nb*xyb-xb*yb)*denomf;
           vb=af+bf*i;
-        }else{
-	  vb=0.f;
-	  if(nb>.5)vb=yb/nb;
         }
-
         if(vb<0.)vb=0.;
         if(va>vb && vb>0.)va=vb;
 
@@ -790,11 +744,17 @@
        envelope line (1.) */
 
     _analysis_output("median",seq,work,n,1,0);
+
+    _analysis_output("medianenvelope",seq,logmask,n,1,0);
+    for(i=0;i<n;i++)logmask[i]+=work[i];
     _analysis_output("envelope",seq,logmask,n,1,0);
+    for(i=0;i<n;i++)logmask[i]-=work[i];
 
-    for(i=0;i<n;i++)logmask[i]= 
-		      work[i]+
-		      p->noisethresh[i]*logmask[i]+p->noiseoffset[i];
+    for(i=0;i<n;i++){
+      int dB=logmask[i]+.5;
+      if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
+      logmask[i]= work[i]+p->vi->noisecompand[dB]+p->noiseoffset[i];
+    }
 
     _analysis_output("noise",seq,logmask,n,1,0);
 
@@ -851,81 +811,169 @@
   if(amp<-9999)amp=-9999;
   return(amp);
 }
+
+static void couple_lossless(float A, float B, 
+			    float granule,float igranule,
+			    float *mag, float *ang){
 
-static void couple_lossless(float A, float B, float *mag, float *ang){
+  A=rint(A*igranule)*granule;
+  B=rint(B*igranule)*granule;
+  
   if(fabs(A)>fabs(B)){
     *mag=A; *ang=(A>0.f?A-B:B-A);
   }else{
     *mag=B; *ang=(B>0.f?A-B:B-A);
   }
+
+  if(*ang>fabs(*mag)*1.9999f)*ang=-fabs(*mag)*2.f;
+ 
 }
 
-static void couple_8phase(float A, float B, float *mag, float *ang){
-  if(fabs(A)>fabs(B)){
-    *mag=A; *ang=(A>0?A-B:B-A);
-  }else{
-    *mag=B; *ang=(B>0?A-B:B-A);
-  }
+static void couple_8phase(float A, float B, float fA, float fB, 
+			 float granule,float igranule,
+			 float fmag, float *mag, float *ang){
+
+  float origmag=FAST_HYPOT(A*fA,B*fB),corr;
 
-  if(*mag!=0.f)
-    switch((int)(rint(*ang / *mag))){
+  if(fmag!=0.f){
+    float phase=rint((A-B)/fmag);
+    
+    if(fabs(A)>fabs(B)){
+      *mag=A;phase=(A>0?phase:-phase);
+    }else{
+      *mag=B;phase=(B>0?phase:-phase);
+    }
+    
+    switch((int)phase){
     case 0:
-      *ang=0;
-      break;
-    case 2:case -2:
-      *ang=-2*fabs(*mag);
+      corr=origmag/FAST_HYPOT(fmag*fA,fmag*fB);
+      *mag=rint(*mag*corr*igranule)*granule; 
+      *ang=0.f;
       break;
     case 1:
-      *ang= *mag;
+      corr=origmag/(fmag*fA);
+      *mag=rint(A*corr*igranule)*granule; 
+      *ang=fabs(*mag);
       break;
     case -1:
-      *ang= -*mag;
+      corr=origmag/(fmag*fB);
+      *mag=rint(B*corr*igranule)*granule; 
+      *ang=-fabs(*mag);
       break;
+    default:
+      corr=origmag/FAST_HYPOT(fmag*fA,fmag*fB);
+      *mag=rint(*mag*corr*igranule)*granule; 
+      *ang=-2.f*fabs(*mag);
+      break;
     }
+  }else{
+    *mag=0.f;
+    *ang=0.f;
+  }    
 }
 
-static void couple_6phase(float A, float B, float *mag, float *ang){
-  if(fabs(A)>fabs(B)){
-    *mag=A; *ang=(A>0?A-B:B-A);
-  }else{
-    *mag=B; *ang=(B>0?A-B:B-A);
-  }
+static void couple_6phase(float A, float B, float fA, float fB, 
+			 float granule,float igranule,
+			 float fmag, float *mag, float *ang){
 
-  if(*mag!=0.f)
-    switch((int)(rint(*ang / *mag))){
-    case -2:case 2:
-      *mag=0;
-      /*fall*/
+  float origmag=FAST_HYPOT(A*fA,B*fB),corr;
+
+  if(fmag!=0.f){
+    float phase=rint((A-B)/fmag);
+    
+    if(fabs(A)>fabs(B)){
+      *mag=A;phase=(A>0?phase:-phase);
+    }else{
+      *mag=B;phase=(B>0?phase:-phase);
+    }
+    
+    switch((int)phase){
     case 0:
-      *ang=0;
+      corr=origmag/FAST_HYPOT(fmag*fA,fmag*fB);
+      *mag=rint(*mag*corr*igranule)*granule; 
+      *ang=0.f;
       break;
-    case 1:
-      *ang= *mag;
+    case 1:case 2:
+      corr=origmag/(fmag*fA);
+      *mag=rint(A*corr*igranule)*granule; 
+      *ang=fabs(*mag);
       break;
-    case -1:
-      *ang= -*mag;
+    case -1:case -2:
+      corr=origmag/(fmag*fB);
+      *mag=rint(B*corr*igranule)*granule; 
+      *ang=-fabs(*mag);
       break;
     }
+  }else{
+    *mag=0.f;
+    *ang=0.f;
+  }    
 }
 
-static void couple_point(float A, float B, float *mag, float *ang){
-  if(fabs(A)>fabs(B)){
-    *mag=A; *ang=(A>0?A-B:B-A);
-  }else{
-    *mag=B; *ang=(B>0?A-B:B-A);
-  }
+static void couple_4phase(float A, float B, float fA, float fB, 
+			 float granule,float igranule,
+			 float fmag, float *mag, float *ang){
+
+  float origmag=FAST_HYPOT(A*fA,B*fB),corr;
 
-  if(*mag!=0.f)
-    switch((int)(rint(*ang / *mag))){
-    case -2:case 2:
-      *mag=0;
-      /* fall */
-    case 0:case 1: case -1:
-      *ang=0;
+  if(fmag!=0.f){
+    float phase=rint((A-B)*.5/fmag);
+    
+    if(fabs(A)>fabs(B)){
+      *mag=A;phase=(A>0?phase:-phase);
+    }else{
+      *mag=B;phase=(B>0?phase:-phase);
+    }
+    
+    corr=origmag/FAST_HYPOT(fmag*fA,fmag*fB);
+    *mag=rint(*mag*corr*igranule)*granule; 
+    switch((int)phase){
+    case 0:
+      *ang=0.f;
       break;
+    default:
+      *ang=-2.f*fabs(*mag);
+      break;
+    }
+  }else{
+    *mag=0.f;
+    *ang=0.f;
+  }    
+}
+
+static void couple_point(float A, float B, float fA, float fB, 
+			 float granule,float igranule,
+			 float fmag, float *mag, float *ang){
+
+  float origmag=FAST_HYPOT(A*fA,B*fB),corr;
+
+  if(fmag!=0.f){
+    float phase=rint((A-B)*.5/fmag);
+    
+    if(fabs(A)>fabs(B)){
+      *mag=A;phase=(A>0?phase:-phase);
+    }else{
+      *mag=B;phase=(B>0?phase:-phase);
     }
+    
+    //switch((int)phase){
+      //case 0:
+      corr=origmag/FAST_HYPOT(fmag*fA,fmag*fB);
+      *mag=rint(*mag*corr*igranule)*granule; 
+      *ang=0.f;
+      //break;
+      //default:
+      //*mag=0.f;
+      //*ang=0.f;
+      //break;
+      //}
+  }else{
+    *mag=0.f;
+    *ang=0.f;
+  }    
 }
 
+
 void _vp_quantize_couple(vorbis_look_psy *p,
                          vorbis_info_mapping0 *vi,
                          float **pcm,
@@ -949,6 +997,8 @@
       
       float *pcmM=pcm[vi->coupling_mag[i]];
       float *pcmA=pcm[vi->coupling_ang[i]];
+      float *floorM=pcm[vi->coupling_mag[i]]+n;
+      float *floorA=pcm[vi->coupling_ang[i]]+n;
       float *sofarM=sofar[vi->coupling_mag[i]];
       float *sofarA=sofar[vi->coupling_ang[i]];
       float *qM=quantized[vi->coupling_mag[i]];
@@ -963,26 +1013,25 @@
         for(;j<part->limit && j<p->n;j++){
           /* partition by partition; k is our by-location partition
              class counter */
+	  float ang,mag,fmag=max(fabs(pcmM[j]),fabs(pcmA[j]));
 
-	  float Am=rint(pcmM[j]*igranulem)*granulem;
-	  float Bm=rint(pcmA[j]*igranulem)*granulem;
-	  float ang,mag,fmag=max(fabs(Am),fabs(Bm));
-	  
           if(fmag<part->amppost_point){
-	    couple_point(Am,Bm,&mag,&ang);
+	    couple_point(pcmM[j],pcmA[j],floorM[j],floorA[j],
+			 granulem,igranulem,fmag,&mag,&ang);
           }else{
             if(fmag<part->amppost_6phase){
-	      couple_6phase(Am,Bm,&mag,&ang);
+	      couple_6phase(pcmM[j],pcmA[j],floorM[j],floorA[j],
+			   granulem,igranulem,fmag,&mag,&ang);
             }else{ 
               if(fmag<part->amppost_8phase){
-		couple_8phase(Am,Bm,&mag,&ang);
+		couple_8phase(pcmM[j],pcmA[j],floorM[j],floorA[j],
+			      granulem,igranulem,fmag,&mag,&ang);
               }else{
-		couple_lossless(Am,Bm,&mag,&ang);
+		couple_lossless(pcmM[j],pcmA[j],
+				granulem,igranulem,&mag,&ang);
               }
             }
           }
-	  fmag=rint(fmag);
-	  if(ang>fmag*1.9999f)ang=-fmag*2.f;
           
           qM[j]=mag-sofarM[j];
           qA[j]=ang-sofarA[j];

1.23      +3 -6      vorbis/lib/psy.h

Index: psy.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/psy.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- psy.h	2001/08/13 01:36:57	1.22
+++ psy.h	2001/09/01 06:14:50	1.23
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: random psychoacoustics (not including preecho)
- last mod: $Id: psy.h,v 1.22 2001/08/13 01:36:57 xiphmont Exp $
+ last mod: $Id: psy.h,v 1.23 2001/09/01 06:14:50 xiphmont Exp $
 
  ********************************************************************/
 
@@ -61,16 +61,13 @@
   float block[P_BANDS][P_LEVELS];
 } vp_attenblock;
 
+#define NOISE_COMPAND_LEVELS 40
 typedef struct vorbis_info_psy{
   float  *ath;
 
   float  ath_adjatt;
   float  ath_maxatt;
 
-  /*     0  1  2   3   4   5   6   7   8   9  10  11  12  13  14  15   16   */
-  /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
-  /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
-
   float tone_masteratt;
   float tone_maxatt;
   vp_attenblock *toneatt;
@@ -87,7 +84,7 @@
   int   noisewindowhimin;
   int   noisewindowfixed;
   float noiseoff[P_BANDS];
-  float noisethresh[P_BANDS];
+  float *noisecompand;
 
   float max_curve_dB;
 

1.36      +6 -6      vorbis/lib/res0.c

Index: res0.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/res0.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- res0.c	2001/08/13 11:33:39	1.35
+++ res0.c	2001/09/01 06:14:50	1.36
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: residue backend 0, 1 and 2 implementation
- last mod: $Id: res0.c,v 1.35 2001/08/13 11:33:39 xiphmont Exp $
+ last mod: $Id: res0.c,v 1.36 2001/09/01 06:14:50 xiphmont Exp $
 
  ********************************************************************/
 
@@ -71,10 +71,10 @@
 
     vorbis_look_residue0 *look=(vorbis_look_residue0 *)i;
 
-    /*fprintf(stderr,"residue bit usage %f:%f (%f total)\n",
+    fprintf(stderr,"residue bit usage %f:%f (%f total)\n",
             (float)look->phrasebits/look->frames,
             (float)look->postbits/look->frames,
-	    (float)(look->postbits+look->phrasebits)/look->frames);*/
+	    (float)(look->postbits+look->phrasebits)/look->frames);
 
     /*vorbis_info_residue0 *info=look->info;
 
@@ -531,8 +531,8 @@
           /* training hack */
           if(val<look->phrasebook->entries)
             ret=vorbis_book_encode(look->phrasebook,val,&vb->opb);
-	  /*else
-	    fprintf(stderr,"!");*/
+	  else
+	    fprintf(stderr,"!");
           
           look->phrasebits+=ret;
         
@@ -567,7 +567,7 @@
       fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]);
       total+=resvals[k];
       totalbits+=resbits[k];
-    }
+      }
     
     fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total);
     }*/

1.14      +5 -1      vorbis/lib/vorbisenc.c

Index: vorbisenc.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/vorbisenc.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- vorbisenc.c	2001/08/21 19:05:06	1.13
+++ vorbisenc.c	2001/09/01 06:14:50	1.14
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: simple programmatic interface for encoder mode setup
- last mod: $Id: vorbisenc.c,v 1.13 2001/08/21 19:05:06 giles Exp $
+ last mod: $Id: vorbisenc.c,v 1.14 2001/09/01 06:14:50 xiphmont Exp $
 
  ********************************************************************/
 
@@ -133,6 +133,7 @@
   /* copy a mode into our allocated storage */
   bpch=nominal_bitrate/channels;
 
+#if 0
   switch(channels){
   case 2:
 /*	if(rate>40000){	*/
@@ -174,6 +175,9 @@
     }
     break;
   }
+#endif
+
+  mode=&info_44c_A;
 
   /* now we have to deepcopy */
   codec_setup_partialcopy(ci,mode);

1.2       +30 -22    vorbis/lib/modes/mode_44c_A.h

Index: mode_44c_A.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/mode_44c_A.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mode_44c_A.h	2001/08/13 07:43:15	1.1
+++ mode_44c_A.h	2001/09/01 06:14:52	1.2
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: predefined encoding modes; 44kHz stereo ~64kbps true VBR
- last mod: $Id: mode_44c_A.h,v 1.1 2001/08/13 07:43:15 xiphmont Exp $
+ last mod: $Id: mode_44c_A.h,v 1.2 2001/09/01 06:14:52 xiphmont Exp $
 
  ********************************************************************/
 
@@ -73,7 +73,7 @@
   8,   /* lines per eighth octave */
   
   /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
-  256, {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
+  256, {26.f,26.f,26.f,30.f}, {-26.f,-26.f,-26.f,-30.f}, -90.f,
   -6.f, 
   
   0,
@@ -82,36 +82,44 @@
 static struct vp_couple_pass _psy_pass_44c_A0[]={
   {1.f,1.f,
     {{24,    0,0,       0,0,      0,0},
-     {64,    0,0,   7.5f,12,     0,0},
-     {9999,  0,0,   7.5f,12,  2.5f,0}}
+     {64,    0,0,   7.5f,12,  2.5f,0},
+     {9999,  0,0,   7.5f,12,  4.5f,0}}
   },
 };
 
 static vp_couple_pass _psy_pass_44c_A[]={
   {1.f,1.f,
-    {{288,   0,0,       0,0,      0,0},
+    {{288,   0,0,       0,0,     0,0},
      {512,   0,0,   7.5f,12,     0,0},
      {9999,  0,0,   7.5f,12,  2.5f,0}}
   }
 };
 
+static float _psy_compand_44c_A[NOISE_COMPAND_LEVELS]={
+  0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
+  8.f, 8.f, 7.f, 6.f, 5.f, 4.f, 3.f,  2.f,     /* 15dB */
+  1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f,  0.f,     /* 23dB */
+  0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f,  0.f,     /* 31dB */
+  1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f,  8.f,     /* 39dB */
+};
+
 static vorbis_info_psy _psy_set_44c_A0={
   ATH_Bark_dB_lineaggressive,
   -100.,-140.,
 
   /* tonemaskp */
-  0.f, -40.f,&_vp_tonemask_consbass_A,
+  0.f, -26.f,&_vp_tonemask_consbass_A,
   /* peakattp, curvelimitp */
   1, 4, &_vp_peakatt_A,
 
   /*noisemaskp */
   1,-30.f,     /* suppress any noise curve over maxspec+n */
   .6f, .6f,   /* low/high window */
-  5, 5, 10,
+  2, 2, 15,
 
   /*63     125     250     500      1k      2k      4k       8k     16k*/
-  {-30,-30,-30,-30,-30,-30,-20,-10,  0,  0,  0,  0,  0,  1,  1,  2,  3},
-  {.9f,.9f,.9f,.9f,.9f,.8f,.8f,.6f,.6f,.6f,.6f,.6f,.7f,.8f,.89f,.9f,.9f},
+  {-30,-30,-30,-30,-30,-30,-20,-10,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+  _psy_compand_44c_A,
 
   95.f,  /* even decade + 5 is important; saves an rint() later in a
             tight loop) */
@@ -124,18 +132,18 @@
   -100.f,-140.f,
 
   /* tonemask */
-  0.f,-40.f,&_vp_tonemask_consbass_A,
+  0.f,-26.f,&_vp_tonemask_consbass_A,
   /* peakattp,curvelimitp */
   1, 4,  &_vp_peakatt_A,
 
   /*noisemaskp */
-  1,  -30.f,     /* suppress any noise curve over maxspec+n */
-      .4f,.4f,   /* low/high window */
-      10,10,100,
+  1,  -40.f,     /* suppress any noise curve over maxspec+n */
+      .6f,.6f,   /* low/high window */
+      4,4,100,
 
   /*63     125     250     500      1k      2k      4k       8k     16k*/
-  {-30,-30,-30,-30,-30,-30,-30,-20,  0,  0,  0,  0,  0,   0,  0,  1,  2},
-  {.7f,.7f,.7f,.7f,.7f,.6f,.5f,.5f,.5f,.5f,.5f,.5f,.7f,.75f,.8f,.8f,.85f},
+  {-30,-30,-30,-30,-20,-20,-10,-10,  0,  0,  0,  0,  0,   0,  0,  0,  0},
+  _psy_compand_44c_A,
 
   95.f,  /* even decade + 5 is important; saves an rint() later in a
             tight loop) */
@@ -147,18 +155,18 @@
   -100.f,  -140.f,
 
   /* tonemask */
-  0.f,-40.f,&_vp_tonemask_consbass_A,
+  0.f,-26.f,&_vp_tonemask_consbass_A,
   /* peakattp, curvelimitp */
   1, 4, &_vp_peakatt_A,
 
   /*noisemaskp */
   1,  -30.f,     /* suppress any noise curve over maxspec+n */
-      .4f,.4f,   /* low/high window */
-      10,10,100,
+      .6f,.6f,   /* low/high window */
+      4,4,100,
 
   /*63     125     250     500      1k      2k      4k       8k     16k*/
-  {-20,-20,-20,-20,-20,-20,-10,  0,  0,  0,  0,  0,  0,   0,  0,  1,  2},
-  {.6f,.6f,.6f,.6f,.6f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.7f,.75f,.8f,.8f,.85f},
+  {-20,-20,-20,-20,-20,-20,-10,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0},
+  _psy_compand_44c_A,
 
   95.f,  /* even decade + 5 is important; saves an rint() later in a
             tight loop) */
@@ -219,7 +227,7 @@
   60,30,400,
   20,8,1,18.,
   20,600,
-  720};
+  960};
 
 static vorbis_info_residue0 _residue_set_44c_A0={
   0,192, 8, 10,23,
@@ -236,7 +244,7 @@
   {3}};
 
 static vorbis_info_residue0 _residue_set_44c_A={
-  0,1536, 32,10,24,
+  0,1920, 32,10,24,
   {0,1,1,1,1,1,1,3,3,7},
   {25, 26, 27, 28, 29, 30, 31,32, 33,34, 35,36,37},
   {9999,9999,9999,9999,9999,9999,

1.14      +14 -14    vorbis/lib/modes/modes.h

Index: modes.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/modes.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- modes.h	2001/08/13 11:30:59	1.13
+++ modes.h	2001/09/01 06:14:52	1.14
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: predefined encoding modes
- last mod: $Id: modes.h,v 1.13 2001/08/13 11:30:59 xiphmont Exp $
+ last mod: $Id: modes.h,v 1.14 2001/09/01 06:14:52 xiphmont Exp $
 
  ********************************************************************/
 
@@ -20,21 +20,21 @@
 
 #include "masking.h"
 /* stereo (coupled) */
-#include "modes/mode_44c_Z.h"
-#include "modes/mode_44c_Y.h"
-#include "modes/mode_44c_X.h"
+//#include "modes/mode_44c_Z.h"
+//#include "modes/mode_44c_Y.h"
+//#include "modes/mode_44c_X.h"
 #include "modes/mode_44c_A.h"
-#include "modes/mode_44c_B.h"
-#include "modes/mode_44c_C.h"
-#include "modes/mode_44c_D.h"
-#include "modes/mode_44c_E.h"
+//#include "modes/mode_44c_B.h"
+//#include "modes/mode_44c_C.h"
+//#include "modes/mode_44c_D.h"
+//#include "modes/mode_44c_E.h"
 
 /* mono/dual/multi */
-#include "modes/mode_44_Z.h"
-#include "modes/mode_44_Y.h"
-#include "modes/mode_44_X.h"
-#include "modes/mode_44_A.h"
-#include "modes/mode_44_B.h"
-#include "modes/mode_44_C.h"
+//#include "modes/mode_44_Z.h"
+//#include "modes/mode_44_Y.h"
+//#include "modes/mode_44_X.h"
+//#include "modes/mode_44_A.h"
+//#include "modes/mode_44_B.h"
+//#include "modes/mode_44_C.h"
 
 #endif

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'cvs-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the commits mailing list