[xiph-cvs] cvs commit: vorbis/vq make_residue_books.pl
Monty
xiphmont at xiph.org
Sun Aug 12 17:20:29 PDT 2001
xiphmont 01/08/12 17:20:29
Modified: lib Tag: branch_monty_20010708 analysis.c barkmel.c
floor1.c mapping0.c psy.c psy.h vorbisenc.c
lib/modes Tag: branch_monty_20010708 mode_Za.h mode_Zc.h
modes.h
vq Tag: branch_monty_20010708 make_residue_books.pl
Added: lib/books Tag: branch_monty_20010708 Makefile Makefile.in
line_1024x31_0sub0.vqh line_1024x31_0sub1.vqh
line_1024x31_1sub0.vqh line_1024x31_1sub1.vqh
line_1024x31_2sub1.vqh line_1024x31_2sub2.vqh
line_1024x31_2sub3.vqh line_1024x31_3sub1.vqh
line_1024x31_3sub2.vqh line_1024x31_3sub3.vqh
line_1024x31_class0.vqh line_1024x31_class1.vqh
line_1024x31_class2.vqh line_1024x31_class3.vqh
line_128x7_0sub0.vqh line_128x7_1sub1.vqh
line_128x7_1sub2.vqh line_128x7_1sub3.vqh
line_128x7_2sub1.vqh line_128x7_2sub2.vqh
line_128x7_2sub3.vqh line_128x7_class1.vqh
line_128x7_class2.vqh res_Zc_1.vqh
res_Zc_1024aux.vqh res_Zc_128aux.vqh res_Zc_2.vqh
res_Zc_3.vqh res_Zc_4.vqh res_Zc_5.vqh res_Zc_6.vqh
res_Zc_7.vqh res_Zc_8.vqh res_Zc_9.vqh
res_Zc_9a.vqh res_Zc_9b.vqh
lib/modes Tag: branch_monty_20010708 maskadj_Z.h
mode_44c_Z.h
Removed: lib/books Tag: branch_monty_20010708 line0_0sub0.vqh
line0_1sub1.vqh line0_1sub2.vqh line0_1sub3.vqh
line0_2sub1.vqh line0_2sub2.vqh line0_2sub3.vqh
line0_class1.vqh line0_class2.vqh line1_0sub0.vqh
line1_0sub1.vqh line1_1sub0.vqh line1_1sub1.vqh
line1_2sub1.vqh line1_2sub2.vqh line1_2sub3.vqh
line1_3sub1.vqh line1_3sub2.vqh line1_3sub3.vqh
line1_class0.vqh line1_class1.vqh line1_class2.vqh
line1_class3.vqh res0_128_1024_1.vqh
res0_128_1024_2.vqh res0_128_1024_3.vqh
res0_128_1024_4.vqh res0_128_1024_5.vqh
res0_128_1024_6.vqh res0_128_1024_6a.vqh
res0_128_1024_7.vqh res0_128_1024_7a.vqh
res0_128_1024_8.vqh res0_128_1024_8a.vqh
res0_128_1024_9.vqh res0_128_1024_9a.vqh
res0_128_1024_9b.vqh res0_128_1024aux.vqh
res0_128_128_1.vqh res0_128_128_2.vqh
res0_128_128_3.vqh res0_128_128_4.vqh
res0_128_128_5.vqh res0_128_128aux.vqh
res0_160_1024_1.vqh res0_160_1024_2.vqh
res0_160_1024_3.vqh res0_160_1024_4.vqh
res0_160_1024_5.vqh res0_160_1024_6.vqh
res0_160_1024_7.vqh res0_160_1024_8.vqh
res0_160_1024_9.vqh res0_160_1024aux.vqh
res0_160_128_1.vqh res0_160_128_2.vqh
res0_160_128_3.vqh res0_160_128_4.vqh
res0_160_128_5.vqh res0_160_128aux.vqh
res0_192_1024_1.vqh res0_192_1024_2.vqh
res0_192_1024_3.vqh res0_192_1024_4.vqh
res0_192_1024_5.vqh res0_192_1024_6.vqh
res0_192_1024_7.vqh res0_192_1024_8.vqh
res0_192_1024_9.vqh res0_192_1024aux.vqh
res0_192_128_1.vqh res0_192_128_2.vqh
res0_192_128_3.vqh res0_192_128_4.vqh
res0_192_128_5.vqh res0_192_128aux.vqh
res0_256_1024_1.vqh res0_256_1024_2.vqh
res0_256_1024_3.vqh res0_256_1024_4.vqh
res0_256_1024_5.vqh res0_256_1024_6.vqh
res0_256_1024_7.vqh res0_256_1024aux.vqh
res0_256_128_1.vqh res0_256_128_2.vqh
res0_256_128_3.vqh res0_256_128_4.vqh
res0_256_128_5.vqh res0_256_128aux.vqh
res0_350_1024_7.vqh res0_96_1024_1.vqh
res0_96_1024_2.vqh res0_96_1024_3.vqh
res0_96_1024_4.vqh res0_96_1024_5.vqh
res0_96_1024_6.vqh res0_96_1024_7.vqh
res0_96_1024_8.vqh res0_96_1024_9.vqh
res0_96_1024aux.vqh res0_96_128_1.vqh
res0_96_128_2.vqh res0_96_128_3.vqh
res0_96_128_4.vqh res0_96_128_5.vqh
res0_96_128aux.vqh
Log:
Putting rc1 mode and book structure into place. First mode in new
format is in, mode_44c_Z (~64kbps VBR)
Monty
Revision Changes Path
No revision
No revision
1.44.2.2 +4 -2 vorbis/lib/analysis.c
Index: analysis.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/analysis.c,v
retrieving revision 1.44.2.1
retrieving revision 1.44.2.2
diff -u -r1.44.2.1 -r1.44.2.2
--- analysis.c 2001/08/02 06:14:42 1.44.2.1
+++ analysis.c 2001/08/13 00:20:10 1.44.2.2
@@ -11,7 +11,7 @@
********************************************************************
function: single-block PCM analysis mode dispatch
- last mod: $Id: analysis.c,v 1.44.2.1 2001/08/02 06:14:42 xiphmont Exp $
+ last mod: $Id: analysis.c,v 1.44.2.2 2001/08/13 00:20:10 xiphmont Exp $
********************************************************************/
@@ -25,6 +25,8 @@
#include "scales.h"
#include "os.h"
+int analysis_noisy=1;
+
/* decides between modes, dispatches to the appropriate mapping. */
int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
vorbis_dsp_state *vd=vb->vd;
@@ -109,7 +111,7 @@
void _analysis_output(char *base,int i,float *v,int n,int bark,int dB){
#ifdef ANALYSIS
- _analysis_output_always(base,i,v,n,bark,dB);
+ if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB);
#endif
}
1.7.2.2 +2 -2 vorbis/lib/barkmel.c
Index: barkmel.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/barkmel.c,v
retrieving revision 1.7.2.1
retrieving revision 1.7.2.2
diff -u -r1.7.2.1 -r1.7.2.2
--- barkmel.c 2001/07/08 08:48:01 1.7.2.1
+++ barkmel.c 2001/08/13 00:20:10 1.7.2.2
@@ -11,7 +11,7 @@
********************************************************************
function: bark scale utility
- last mod: $Id: barkmel.c,v 1.7.2.1 2001/07/08 08:48:01 xiphmont Exp $
+ last mod: $Id: barkmel.c,v 1.7.2.2 2001/08/13 00:20:10 xiphmont Exp $
********************************************************************/
@@ -54,7 +54,7 @@
{
float i;
int j;
- for(i=0.,j=0;i<28;i+=3.5,j++){
+ for(i=0.,j=0;i<28;i+=1,j++){
fprintf(stderr,"(%d) bark=%f %gHz (%d of 128)\n",
j,i,fromBARK(i),(int)(fromBARK(i)/22050.*128.));
}
1.10.2.4 +5 -15 vorbis/lib/floor1.c
Index: floor1.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/floor1.c,v
retrieving revision 1.10.2.3
retrieving revision 1.10.2.4
diff -u -r1.10.2.3 -r1.10.2.4
--- floor1.c 2001/08/02 22:14:21 1.10.2.3
+++ floor1.c 2001/08/13 00:20:10 1.10.2.4
@@ -11,7 +11,7 @@
********************************************************************
function: floor backend 1 implementation
- last mod: $Id: floor1.c,v 1.10.2.3 2001/08/02 22:14:21 xiphmont Exp $
+ last mod: $Id: floor1.c,v 1.10.2.4 2001/08/13 00:20:10 xiphmont Exp $
********************************************************************/
@@ -899,18 +899,6 @@
oggpack_write(&vb->opb,fit_valueA[0],ilog(look->quant_q-1));
oggpack_write(&vb->opb,fit_valueA[1],ilog(look->quant_q-1));
-#ifdef TRAIN_FLOOR1
- {
- FILE *of;
- char buffer[80];
- sprintf(buffer,"line%d_full.vqd",vb->mode);
- of=fopen(buffer,"a");
- for(j=2;j<posts;j++)
- fprintf(of,"%d\n",fit_valueB[j]);
- fclose(of);
- }
-#endif
-
/* partition by partition */
for(i=0,j=2;i<info->partitions;i++){
@@ -952,7 +940,8 @@
{
FILE *of;
char buffer[80];
- sprintf(buffer,"line%d_class%d.vqd",vb->mode,class);
+ sprintf(buffer,"line_%dx%d_class%d.vqd",
+ vb->pcmend/2,posts-2,class);
of=fopen(buffer,"a");
fprintf(of,"%d\n",cval);
fclose(of);
@@ -975,7 +964,8 @@
{
FILE *of;
char buffer[80];
- sprintf(buffer,"line%d_%dsub%d.vqd",vb->mode,class,bookas[k]);
+ sprintf(buffer,"line_%dx%d_%dsub%d.vqd",
+ vb->pcmend/2,posts-2,class,bookas[k]);
of=fopen(buffer,"a");
fprintf(of,"%d\n",fit_valueB[j+k]);
fclose(of);
1.33.2.6 +7 -3 vorbis/lib/mapping0.c
Index: mapping0.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/mapping0.c,v
retrieving revision 1.33.2.5
retrieving revision 1.33.2.6
diff -u -r1.33.2.5 -r1.33.2.6
--- mapping0.c 2001/08/07 03:47:22 1.33.2.5
+++ mapping0.c 2001/08/13 00:20:10 1.33.2.6
@@ -11,7 +11,7 @@
********************************************************************
function: channel mapping 0 implementation
- last mod: $Id: mapping0.c,v 1.33.2.5 2001/08/07 03:47:22 xiphmont Exp $
+ last mod: $Id: mapping0.c,v 1.33.2.6 2001/08/13 00:20:10 xiphmont Exp $
********************************************************************/
@@ -37,6 +37,8 @@
blocksize is set by the mode, and low backend lookups may require
parameters from other areas of the mode/mapping */
+extern int analysis_noisy;
+
typedef struct {
drft_lookup fft_look;
vorbis_info_mode *mode;
@@ -411,9 +413,11 @@
local_ampmax[i]);
for(j=0;j<n/2;j++)
- if(fabs(res[j])>1500)
+ if(fabs(res[j])>1200){
+ analysis_noisy=1;
fprintf(stderr,"%ld ",seq+i);
-
+ }
+
_analysis_output("res",seq+i,res,n/2,1,0);
_analysis_output("codedflr",seq+i,codedflr,n/2,1,1);
1.48.2.9 +262 -204 vorbis/lib/psy.c
Index: psy.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/psy.c,v
retrieving revision 1.48.2.8
retrieving revision 1.48.2.9
diff -u -r1.48.2.8 -r1.48.2.9
--- psy.c 2001/08/08 04:19:57 1.48.2.8
+++ psy.c 2001/08/13 00:20:11 1.48.2.9
@@ -11,7 +11,7 @@
********************************************************************
function: psychoacoustics not including preecho
- last mod: $Id: psy.c,v 1.48.2.8 2001/08/08 04:19:57 xiphmont Exp $
+ last mod: $Id: psy.c,v 1.48.2.9 2001/08/13 00:20:11 xiphmont Exp $
********************************************************************/
@@ -124,6 +124,7 @@
c[i]=c2[i]*del+c1[i]*(1.f-del);
}
+extern int analysis_noisy;
static void setup_curve(float **c,
int band,
float *curveatt_dB){
@@ -331,20 +332,19 @@
for(i=0;i<P_BANDS;i++)
setup_curve(p->tonecurves[i],i,vi->toneatt->block[i]);
- /* value limit the tonal masking curves; the peakatt not only
- optionally specifies maximum dynamic depth, but also [always]
- limits the masking curves to a minimum depth */
- for(i=0;i<P_BANDS;i++)
- for(j=0;j<P_LEVELS;j++){
- for(k=2;k<EHMER_OFFSET+2;k++)
- if(p->tonecurves[i][j][k]> vi->peakatt->block[i][j])
- p->tonecurves[i][j][k]= vi->peakatt->block[i][j];
- for(;k<EHMER_OFFSET+4;k++)
- if(p->tonecurves[i][j][k]> vi->peakatt->block[i][j])
- p->tonecurves[i][j][k]= vi->peakatt->block[i][j];
- else
- break;
- }
+ if(vi->curvelimitp){
+ /* value limit the tonal masking curves; the peakatt not only
+ optionally specifies maximum dynamic depth, but also [always]
+ limits the masking curves to a minimum depth */
+ for(i=0;i<P_BANDS;i++)
+ for(j=0;j<P_LEVELS;j++){
+ for(k=2;k<EHMER_OFFSET+2+vi->curvelimitp;k++)
+ if(p->tonecurves[i][j][k]> vi->peakatt->block[i][j])
+ p->tonecurves[i][j][k]= vi->peakatt->block[i][j];
+ else
+ break;
+ }
+ }
if(vi->peakattp) /* we limit depth only optionally */
for(i=0;i<P_BANDS;i++)
@@ -352,6 +352,12 @@
if(p->tonecurves[i][j][EHMER_OFFSET+2]< vi->peakatt->block[i][j])
p->tonecurves[i][j][EHMER_OFFSET+2]= vi->peakatt->block[i][j];
+ /* but guarding is mandatory */
+ for(i=0;i<P_BANDS;i++)
+ for(j=0;j<P_LEVELS;j++)
+ if(p->tonecurves[i][j][EHMER_OFFSET+2]< vi->tone_maxatt)
+ p->tonecurves[i][j][EHMER_OFFSET+2]= vi->tone_maxatt;
+
/* set up rolling noise median */
for(i=0;i<n;i++){
float halfoc=toOC((i+.5)*rate/(2.*n))*2.;
@@ -369,7 +375,47 @@
p->vi->noiseoff[inthalfoc]*(1.-del) +
p->vi->noiseoff[inthalfoc+1]*del;
}
- _analysis_output("noiseoff",0,p->noiseoffset,n,0,0);
+
+ analysis_noisy=1;
+ _analysis_output("noiseoff",0,p->noiseoffset,n,1,0);
+ _analysis_output("noisethresh",0,p->noisethresh,n,1,0);
+
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_88Hz",i,p->tonecurves[1][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_125Hz",i,p->tonecurves[2][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_170Hz",i,p->tonecurves[3][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_250Hz",i,p->tonecurves[4][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_350Hz",i,p->tonecurves[5][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_500Hz",i,p->tonecurves[6][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_700Hz",i,p->tonecurves[7][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_1kHz",i,p->tonecurves[8][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_1.4Hz",i,p->tonecurves[9][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_2kHz",i,p->tonecurves[10][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_2.4kHz",i,p->tonecurves[11][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_4kHz",i,p->tonecurves[12][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_5.6kHz",i,p->tonecurves[13][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_8kHz",i,p->tonecurves[14][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0);
+ for(i=0;i<P_LEVELS;i++)
+ _analysis_output("curve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0);
+ analysis_noisy=1;
+
}
void _vp_psy_clear(vorbis_look_psy *p){
@@ -444,14 +490,13 @@
oc=oc>>p->shiftoc;
if(oc>=P_BANDS)oc=P_BANDS-1;
if(oc<0)oc=0;
- if(vi->tonemaskp)
- seed_curve(seed,
- curves[oc],
- max,
- p->octave[i]-p->firstoc,
- p->total_octave_lines,
- p->eighth_octave_lines,
- dBoffset);
+ seed_curve(seed,
+ curves[oc],
+ max,
+ p->octave[i]-p->firstoc,
+ p->total_octave_lines,
+ p->eighth_octave_lines,
+ dBoffset);
}
}
}
@@ -561,11 +606,12 @@
return i;
}
-
-static void bark_noise_median(int n,const long *b,const float *f,
+static void bark_noise_median(int n,const long *b,
+ const float *f,
float *noise,
- const int *thresh,const float *off,
- int fixed){
+ const float *thresh,
+ const int fixed,
+ const float *off){
int i=0,lo=-1,hi=-1,fixedc=0;
int median=LASTBIN>>1;
@@ -629,36 +675,37 @@
/* move the median if needed */
{
- int bark_th = (thresh[i]*(hi-lo)+512)/1024;
+ int bark_th = rint((thresh[i]+1.)*(hi-lo)*.5);
if(fixed>0){
- int fixed_th = (thresh[i]*(fixedc)+512)/1024;
-
- while(bark_th>=barkcountbelow &&
- fixed_th>=fixedcountbelow /* && median<LASTBIN by rep invariant */
- ){
- median++;
- barkcountbelow+=barkradix[median];
- fixedcountbelow+=fixedradix[median];
- }
-
- while(bark_th<barkcountbelow ||
- fixed_th<fixedcountbelow /* && median>=0 by rep invariant */
- ){
- barkcountbelow-=barkradix[median];
- fixedcountbelow-=fixedradix[median];
- median--;
- }
+ int fixed_th = rint((thresh[i]+1.)*(fixedc)*.5);
+
+
+ while(bark_th>=barkcountbelow &&
+ fixed_th>=fixedcountbelow /* && median<LASTBIN by rep invariant */
+ ){
+ median++;
+ barkcountbelow+=barkradix[median];
+ fixedcountbelow+=fixedradix[median];
+ }
+
+ while(bark_th<barkcountbelow ||
+ fixed_th<fixedcountbelow /* && median>=0 by rep invariant */
+ ){
+ barkcountbelow-=barkradix[median];
+ fixedcountbelow-=fixedradix[median];
+ median--;
+ }
}else{
- while(bark_th>=barkcountbelow){
- median++;
- barkcountbelow+=barkradix[median];
- }
-
- while(bark_th<barkcountbelow){
- barkcountbelow-=barkradix[median];
- median--;
- }
+ while(bark_th>=barkcountbelow){
+ median++;
+ barkcountbelow+=barkradix[median];
+ }
+
+ while(bark_th<barkcountbelow){
+ barkcountbelow-=barkradix[median];
+ median--;
+ }
}
}
@@ -667,11 +714,10 @@
}
-
static void bark_noise_pointmp(int n,const long *b,
- const float *f,
- float *noise,
- const int fixed){
+ const float *f,
+ float *noise,
+ const int fixed){
long i,hi=0,lo=0,hif=0,lof=0;
double xa=0,xb=0;
double ya=0,yb=0;
@@ -685,52 +731,52 @@
/* find new lo/hi */
int bi=b[i]>>16;
for(;hi<bi;hi++){
- double bin=(f[hi]<-140.f?0.:f[hi]+140.);
- double n= bin*bin;
- na += n;
- xa += hi*n;
- ya += bin*n;
- x2a += hi*hi*n;
- y2a += bin*bin*n;
- xya += hi*bin*n;
+ double bin=(f[hi]<-140.f?0.:f[hi]+140.);
+ 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;
for(;lo<bi;lo++){
- double bin=(f[lo]<-140.f?0.:f[lo]+140.);
- double n= bin*bin;
- na -= n;
- xa -= lo*n;
- ya -= bin*n;
- x2a -= lo*lo*n;
- y2a -= bin*bin*n;
- xya -= lo*bin*n;
+ double bin=(f[lo]<-140.f?0.:f[lo]+140.);
+ double nn= bin*bin;
+ na -= nn;
+ xa -= lo*nn;
+ ya -= bin*nn;
+ x2a -= lo*lo*nn;
+ y2a -= bin*bin*nn;
+ xya -= lo*bin*nn;
}
}
if(hif<n && fixed>0){
- int bi=i-fixed/2;
- if(bi<0)bi=0;
+ int bi=i+fixed/2;
+ if(bi>n)bi=n;
for(;hif<bi;hif++){
- double bin=(f[hif]<-140.f?0.:f[hif]+140.);
- double n= bin*bin;
- nb += n;
- xb += hif*n;
- yb += bin*n;
- x2b += hif*hif*n;
- y2b += bin*bin*n;
- xyb += hif*bin*n;
+ double bin=(f[hif]<-140.f?0.:f[hif]+140.);
+ 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>n)bi=n;
+ bi=i-(fixed+1)/2;
+ if(bi<0)bi=0;
for(;lof<bi;lof++){
- double bin=(f[lof]<-140.f?0.:f[lof]+140.);
- double n= bin*bin;
- nb -= n;
- xb -= lof*n;
- yb -= bin*n;
- x2b -= lof*lof*n;
- y2b -= bin*bin*n;
- xyb -= lof*bin*n;
+ double bin=(f[lof]<-140.f?0.:f[lof]+140.);
+ double nn= bin*bin;
+ nb -= nn;
+ xb -= lof*nn;
+ yb -= bin*nn;
+ x2b -= lof*lof*nn;
+ y2b -= bin*bin*nn;
+ xyb -= lof*bin*nn;
}
}
@@ -741,11 +787,11 @@
double va=a+b*i;
if(fixed>0){
- double denomf=1./(nb*x2b-xb*xb);
- double af=(yb*x2b-xyb*xb)*denomf;
- double bf=(nb*xyb-xb*yb)*denomf;
- double vb=af+bf*i;
- if(va>vb)va=vb;
+ double denomf=1./(nb*x2b-xb*xb);
+ double af=(yb*x2b-xyb*xb)*denomf;
+ double bf=(nb*xyb-xb*yb)*denomf;
+ double vb=af+bf*i;
+ if(va>vb)va=vb;
}
noise[i]=va-140.f;
@@ -754,9 +800,9 @@
}
static void bark_noise_hybridmp(int n,const long *b,
- const float *f,
- float *noise,
- const int fixed){
+ const float *f,
+ float *noise,
+ const int fixed){
long i,hi=0,lo=0,hif=0,lof=0;
double xa=0,xb=0;
double ya=0,yb=0;
@@ -773,118 +819,122 @@
/* find new lo/hi */
int bi=b[i]>>16;
for(;hi<bi;hi++){
- double bin=f[hi];
- if(bin>0.f){
- double n= bin*bin;
- n*=n;
- na += n;
- xa += hi*n;
- ya += bin*n;
- x2a += hi*hi*n;
- y2a += bin*bin*n;
- xya += hi*bin*n;
- last=hi;
- rna++;
- if(first==-1)first=hi;
- }
+ double bin=f[hi];
+ 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;
+ }
}
bi=b[i]&0xffff;
for(;lo<bi;lo++){
- double bin=f[lo];
- if(bin>0.f){
- double n= bin*bin;
- n*=n;
- na -= n;
- xa -= lo*n;
- ya -= bin*n;
- x2a -= lo*lo*n;
- y2a -= bin*bin*n;
- xya -= lo*bin*n;
- 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;
- }
+ double bin=f[lo];
+ 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;
+ }
}
}
if(hif<n && fixed>0){
- int bi=i-fixed/2;
- if(bi<0)bi=0;
+ int bi=i+fixed/2;
+ if(bi>n)bi=n;
for(;hif<bi;hif++){
- double bin=f[hif];
- if(bin>0.f){
- double n= bin*bin;
- n*=n;
- nb += n;
- xb += hif*n;
- yb += bin*n;
- x2b += hif*hif*n;
- y2b += bin*bin*n;
- xyb += hif*bin*n;
- lastf=hif;
- rnb++;
- if(firstf==-1)firstf=hif;
- }
+ double bin=f[hif];
+ 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;
+ }
}
- bi=i+(fixed+1)/2;
- if(bi>n)bi=n;
+ bi=i-(fixed+1)/2;
+ if(bi<0)bi=0;
for(;lof<bi;lof++){
- double bin=f[lof];
- if(bin>0.f){
- double n= bin*bin;
- n*=n;
- nb -= n;
- xb -= lof*n;
- yb -= bin*n;
- x2b -= lof*lof*n;
- y2b -= bin*bin*n;
- xyb -= lof*bin*n;
- 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;
- }
+ double bin=f[lof];
+ 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;
+ }
}
}
{
double va;
- if(rna>3 && (last-first)*3/2>hi-lo){
- 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;
+ if(rna>2 && (last-first)*3/2>hi-lo){
+ 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=ya/na;
+ va=0.f;
+ if(na>.5)va=ya/na;
}
if(va<0.)va=0.;
if(fixed>0){
- double vb;
- if(rnb>3 && (lastf-firstf)*3/2>hif-lof){
- 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=yb/nb;
- }
+ double vb;
- if(vb<0.)vb=0.;
- if(va>vb)va=vb;
+ if(rnb>2 && (lastf-firstf)*3/2>hif-lof){
+ 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;
+
}
noise[i]=va;
@@ -892,6 +942,7 @@
}
}
+
void _vp_remove_floor(vorbis_look_psy *p,
vorbis_look_psy_global *g,
float *logmdct,
@@ -926,13 +977,15 @@
/* noise masking */
if(p->vi->noisemaskp){
+#if 1
float *work=alloca(n*sizeof(float));
bark_noise_pointmp(n,p->bark,logmdct,logmask,
- p->vi->noisewindowfixed);
+ -1);
for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i];
+ _analysis_output("medianmdct",seq,work,n,1,0);
bark_noise_hybridmp(n,p->bark,work,logmask,
p->vi->noisewindowfixed);
@@ -944,19 +997,18 @@
_analysis_output("median",seq,work,n,1,0);
_analysis_output("envelope",seq,logmask,n,1,0);
-
for(i=0;i<n;i++)logmask[i]=
work[i]+
- p->noisethresh[i]*logmask[i]+
- p->noiseoffset[i];
+ p->noisethresh[i]*logmask[i]+p->noiseoffset[i];
- /* suppress any noise curve > global_specmax+p->vi->noisemaxsupp */
- if(p->vi->noisemaxsupp<0.f)
- for(i=0;i<n;i++)
- if(logmask[i]>global_specmax+p->vi->noisemaxsupp)
- logmask[i]=global_specmax+p->vi->noisemaxsupp;
+#else
+
+ bark_noise_median(n,p->bark,logmdct,logmask,p->noisethresh,
+ p->vi->noisewindowfixed,p->noiseoffset);
+#endif
_analysis_output("noise",seq,logmask,n,1,0);
+
}else{
for(i=0;i<n;i++)logmask[i]=NEGINF;
}
@@ -977,6 +1029,13 @@
seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax);
max_seeds(p,g,channel,seed,logmask);
+ /* suppress any curve > p->vi->noisemaxsupp */
+ if(p->vi->noisemaxsupp<0.f)
+ for(i=0;i<n;i++)
+ if(logmask[i]>p->vi->noisemaxsupp)
+ logmask[i]=p->vi->noisemaxsupp;
+
+
/* doing this here is clean, but we need to find a faster way to do
it than to just tack it on */
@@ -984,10 +1043,9 @@
if(i==n)
for(i=0;i<n;i++)logmask[i]=NEGINF;
else
- for(i=0;i<n;i++){
- logmask[i]+=p->vi->floor_masteratt;
+ for(i=0;i<n;i++)
logfft[i]=max(logmdct[i],logfft[i]);
- }
+
seq++;
}
1.21.2.8 +3 -3 vorbis/lib/psy.h
Index: psy.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/psy.h,v
retrieving revision 1.21.2.7
retrieving revision 1.21.2.8
diff -u -r1.21.2.7 -r1.21.2.8
--- psy.h 2001/08/08 04:19:58 1.21.2.7
+++ psy.h 2001/08/13 00:20:11 1.21.2.8
@@ -11,7 +11,7 @@
********************************************************************
function: random psychoacoustics (not including preecho)
- last mod: $Id: psy.h,v 1.21.2.7 2001/08/08 04:19:58 xiphmont Exp $
+ last mod: $Id: psy.h,v 1.21.2.8 2001/08/13 00:20:11 xiphmont Exp $
********************************************************************/
@@ -66,17 +66,17 @@
float ath_adjatt;
float ath_maxatt;
- float floor_masteratt;
/* 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 */
- int tonemaskp;
float tone_masteratt;
+ float tone_maxatt;
vp_attenblock *toneatt;
int peakattp;
+ int curvelimitp;
vp_attenblock *peakatt;
int noisemaskp;
1.7.2.3 +2 -2 vorbis/lib/vorbisenc.c
Index: vorbisenc.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/vorbisenc.c,v
retrieving revision 1.7.2.2
retrieving revision 1.7.2.3
diff -u -r1.7.2.2 -r1.7.2.3
--- vorbisenc.c 2001/08/02 22:14:21 1.7.2.2
+++ vorbisenc.c 2001/08/13 00:20:11 1.7.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: simple programmatic interface for encoder mode setup
- last mod: $Id: vorbisenc.c,v 1.7.2.2 2001/08/02 22:14:21 xiphmont Exp $
+ last mod: $Id: vorbisenc.c,v 1.7.2.3 2001/08/13 00:20:11 xiphmont Exp $
********************************************************************/
@@ -125,7 +125,7 @@
/* copy a mode into our allocated storage */
bpch=nominal_bitrate/channels;
- mode=&info_A;
+ mode=&info_44c_Z;
#if 0
if(bpch<60000){
No revision
No revision
1.1.4.1 +202 -0 vorbis/lib/books/Attic/Makefile
1.1.4.1 +202 -0 vorbis/lib/books/Attic/Makefile.in
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_1024x31_0sub0.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_1024x31_0sub1.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_1024x31_1sub0.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_1024x31_1sub1.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_1024x31_2sub1.vqh
1.1.2.1 +38 -0 vorbis/lib/books/Attic/line_1024x31_2sub2.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_1024x31_2sub3.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_1024x31_3sub1.vqh
1.1.2.1 +38 -0 vorbis/lib/books/Attic/line_1024x31_3sub2.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_1024x31_3sub3.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_1024x31_class0.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_1024x31_class1.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_1024x31_class2.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_1024x31_class3.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_128x7_0sub0.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_128x7_1sub1.vqh
1.1.2.1 +38 -0 vorbis/lib/books/Attic/line_128x7_1sub2.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_128x7_1sub3.vqh
1.1.2.1 +37 -0 vorbis/lib/books/Attic/line_128x7_2sub1.vqh
1.1.2.1 +38 -0 vorbis/lib/books/Attic/line_128x7_2sub2.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_128x7_2sub3.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_128x7_class1.vqh
1.1.2.1 +40 -0 vorbis/lib/books/Attic/line_128x7_class2.vqh
1.1.2.1 +94 -0 vorbis/lib/books/Attic/res_Zc_1.vqh
1.1.2.1 +43 -0 vorbis/lib/books/Attic/res_Zc_1024aux.vqh
1.1.2.1 +99 -0 vorbis/lib/books/Attic/res_Zc_128aux.vqh
1.1.2.1 +300 -0 vorbis/lib/books/Attic/res_Zc_2.vqh
1.1.2.1 +248 -0 vorbis/lib/books/Attic/res_Zc_3.vqh
1.1.2.1 +89 -0 vorbis/lib/books/Attic/res_Zc_4.vqh
1.1.2.1 +89 -0 vorbis/lib/books/Attic/res_Zc_5.vqh
1.1.2.1 +129 -0 vorbis/lib/books/Attic/res_Zc_6.vqh
1.1.2.1 +119 -0 vorbis/lib/books/Attic/res_Zc_7.vqh
1.1.2.1 +1234 -0 vorbis/lib/books/Attic/res_Zc_8.vqh
1.1.2.1 +99 -0 vorbis/lib/books/Attic/res_Zc_9.vqh
1.1.2.1 +115 -0 vorbis/lib/books/Attic/res_Zc_9a.vqh
1.1.2.1 +63 -0 vorbis/lib/books/Attic/res_Zc_9b.vqh
No revision
No revision
1.1.2.2 +16 -16 vorbis/lib/modes/Attic/mode_Za.h
Index: mode_Za.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/Attic/mode_Za.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- mode_Za.h 2001/08/12 11:03:20 1.1.2.1
+++ mode_Za.h 2001/08/13 00:20:27 1.1.2.2
@@ -11,7 +11,7 @@
********************************************************************
function: predefined encoding modes
- last mod: $Id: mode_Za.h,v 1.1.2.1 2001/08/12 11:03:20 xiphmont Exp $
+ last mod: $Id: mode_Za.h,v 1.1.2.2 2001/08/13 00:20:27 xiphmont Exp $
********************************************************************/
@@ -240,28 +240,28 @@
/*static vorbis_info_floor0 _floor_set1A={30, 44100, 256, 12,150, 2, {2,3},
.082f, .126f};*/
-static vorbis_info_floor1 _floor_set0Za={4,
- {0,1,2,2},
-
- {2,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
+static vorbis_info_floor1 _floor_set0Zc={3,
+ {0,1,2},
+
+ {1,3,3},
+ {0,2,2},
+ {-1,0,1},
+ {{2},{-1,3,4,5},{-1,6,7,8}},
4,
- {0,128,
+ {0,128,
- 14,45,
-
- 4, 2, 8,
- 26, 20, 35,
- 70, 56, 88},
+ 7,
+ 2,1,4,
+ 23,13,45},
+
60,30,500,
- 999,999,1,18.,
+ 999,999,0,18.,
8,70,
- 88};
+ 90};
+
static vorbis_info_floor1 _floor_set1Za={10,
{0,1,2,2,2,2,2, 3,3,3},
1.1.2.2 +7 -7 vorbis/lib/modes/Attic/mode_Zc.h
Index: mode_Zc.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/Attic/mode_Zc.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- mode_Zc.h 2001/08/12 11:03:20 1.1.2.1
+++ mode_Zc.h 2001/08/13 00:20:27 1.1.2.2
@@ -11,7 +11,7 @@
********************************************************************
function: predefined encoding modes
- last mod: $Id: mode_Zc.h,v 1.1.2.1 2001/08/12 11:03:20 xiphmont Exp $
+ last mod: $Id: mode_Zc.h,v 1.1.2.2 2001/08/13 00:20:27 xiphmont Exp $
********************************************************************/
@@ -172,12 +172,12 @@
/*noisemaskp */
1,-24.f, /* suppress any noise curve over maxspec+n */
- .5f, .5f, /* low/high window */
- 2, 2, 12,
+ 1.f, 1.f, /* low/high window */
+ 2, 2, -1,
/*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-20, -5, 3, 3, 3, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,1.f,.7f,.7f,.7f,.7f,.7f,.85f,.88f,.89f,.9f,.9f},
+ {-20,-20,-20,-20,-20,-20,-10, -5, 3, 3, 4, 4, 4, 4, 4, 4, 8},
+ {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.7f,.8f,.88f,.89f,.9f,.9f},
95.f, /* even decade + 5 is important; saves an rint() later in a
tight loop) */
@@ -203,7 +203,7 @@
/*63 125 250 500 1k 2k 4k 8k 16k*/
{-20,-20,-20,-20,-20,-20,-20, -6, 3, 3, 4, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,1.f,.7f,.7f,.7f,.7f,.7f,.85f,.88f,.89f,.9f,.9f},
+ {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.7f,.8f,.88f,.89f,.9f,.9f},
95.f, /* even decade + 5 is important; saves an rint() later in a
tight loop) */
@@ -217,7 +217,7 @@
-110.f,
/* tonemask */
- 3.f,-20.f,&_vp_tonemask_Zc,
+ -3.f,-20.f,&_vp_tonemask_Zc,
/* peakattp */
1, &_vp_peakatt_Zc,
@@ -228,7 +228,7 @@
/*63 125 250 500 1k 2k 4k 8k 16k*/
{-20,-20,-20,-20,-20,-20,-10, 0, 3, 3, 4, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.75f,.75f,.75f,.75f,.75f,.85f,.88f,.89f,.9f,.9f},
+ {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.8f,.85f,.88f,.89f,.9f,.9f},
95.f, /* even decade + 5 is important; saves an rint() later in a
tight loop) */
1.8.2.3 +2 -7 vorbis/lib/modes/modes.h
Index: modes.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/modes.h,v
retrieving revision 1.8.2.2
retrieving revision 1.8.2.3
diff -u -r1.8.2.2 -r1.8.2.3
--- modes.h 2001/08/03 06:48:13 1.8.2.2
+++ modes.h 2001/08/13 00:20:27 1.8.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: predefined encoding modes
- last mod: $Id: modes.h,v 1.8.2.2 2001/08/03 06:48:13 xiphmont Exp $
+ last mod: $Id: modes.h,v 1.8.2.3 2001/08/13 00:20:27 xiphmont Exp $
********************************************************************/
@@ -19,11 +19,6 @@
#define _V_MODES_H_
#include "masking.h"
-//#include "modes/mode_AA.h"
-#include "modes/mode_A.h"
-//#include "modes/mode_B.h"
-//#include "modes/mode_C.h"
-//#include "modes/mode_D.h"
-//#include "modes/mode_E.h"
+#include "modes/mode_44c_Z.h"
#endif
No revision
No revision
1.1.2.1 +94 -0 vorbis/lib/modes/Attic/maskadj_Z.h
1.1.2.1 +315 -0 vorbis/lib/modes/Attic/mode_44c_Z.h
No revision
No revision
1.4.2.2 +4 -3 vorbis/vq/make_residue_books.pl
Index: make_residue_books.pl
===================================================================
RCS file: /usr/local/cvsroot/vorbis/vq/make_residue_books.pl,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -u -r1.4.2.1 -r1.4.2.2
--- make_residue_books.pl 2001/07/08 08:48:09 1.4.2.1
+++ make_residue_books.pl 2001/08/13 00:20:28 1.4.2.2
@@ -21,7 +21,7 @@
$goflag=0;
while($line=<F>){
- print "\n#### $line\n\n";
+ print "#### $line";
if($line=~m/^GO/){
$goflag=1;
next;
@@ -30,7 +30,7 @@
if($goflag==0){
if($line=~m/\S+/ && !($line=~m/^\#/) ){
my $command=$line;
- print ">>> $command\n";
+ print ">>> $command";
die "Couldn't shell command.\n\tcommand:$command\n"
if syst($command);
}
@@ -49,7 +49,8 @@
if($line=~m/^h(.*)/){
# build a huffman book (no mapping)
my($name,$datafile,$arg)=split(' ',$1);
- my $command="huffbuild $datafile $arg > $globalname$name.vqh";
+
+ my $command="huffbuild $datafile $arg";
print ">>> $command\n";
die "Couldn't build huffbook.\n\tcommand:$command\n"
if syst($command);
--- >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