[xiph-cvs] cvs commit: vorbis/lib/modes psych_44.h residue_44.h
Monty
xiphmont at xiph.org
Fri May 17 18:39:34 PDT 2002
xiphmont 02/05/17 18:39:33
Modified: lib Tag: branch_monty_20020507 analysis.c backends.h
block.c codec_internal.h floor0.c floor1.c
mapping0.c psy.c registry.c res0.c synthesis.c
vorbisenc.c
lib/modes Tag: branch_monty_20020507 psych_44.h residue_44.h
Log:
Continuing Grand Simplification work in progress. This commit mostly
works; testing ongoing.
Monty
Revision Changes Path
No revision
<p>No revision
<p>1.51.2.3 +2 -7 vorbis/lib/analysis.c
Index: analysis.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/analysis.c,v
retrieving revision 1.51.2.2
retrieving revision 1.51.2.3
diff -u -r1.51.2.2 -r1.51.2.3
--- analysis.c 2002/05/14 07:06:40 1.51.2.2
+++ analysis.c 2002/05/18 01:39:27 1.51.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: single-block PCM analysis mode dispatch
- last mod: $Id: analysis.c,v 1.51.2.2 2002/05/14 07:06:40 xiphmont Exp $
+ last mod: $Id: analysis.c,v 1.51.2.3 2002/05/18 01:39:27 xiphmont Exp $
********************************************************************/
@@ -30,12 +30,7 @@
/* decides between modes, dispatches to the appropriate mapping. */
int vorbis_analysis(vorbis_block *vb, ogg_packet *op){
- vorbis_dsp_state *vd=vb->vd;
- backend_lookup_state *b=vd->backend_state;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- int type,ret;
- int mode=0;
+ int ret;
vb->glue_bits=0;
vb->time_bits=0;
<p><p>1.12.6.3 +2 -2 vorbis/lib/backends.h
Index: backends.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/backends.h,v
retrieving revision 1.12.6.2
retrieving revision 1.12.6.3
diff -u -r1.12.6.2 -r1.12.6.3
--- backends.h 2002/05/14 07:06:40 1.12.6.2
+++ backends.h 2002/05/18 01:39:27 1.12.6.3
@@ -12,7 +12,7 @@
function: libvorbis backend and mapping structures; needed for
static mode headers
- last mod: $Id: backends.h,v 1.12.6.2 2002/05/14 07:06:40 xiphmont Exp $
+ last mod: $Id: backends.h,v 1.12.6.3 2002/05/18 01:39:27 xiphmont Exp $
********************************************************************/
@@ -118,7 +118,7 @@
/* encode-only heuristic settings */
float ampmax[64]; /* book amp threshholds*/
- int blimit[64]; /* subgroup position limits *
+ int blimit[64]; /* subgroup position limits */
} vorbis_info_residue0;
<p><p>1.64.2.3 +11 -10 vorbis/lib/block.c
Index: block.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/block.c,v
retrieving revision 1.64.2.2
retrieving revision 1.64.2.3
diff -u -r1.64.2.2 -r1.64.2.3
--- block.c 2002/05/14 07:06:40 1.64.2.2
+++ block.c 2002/05/18 01:39:27 1.64.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: PCM data vector blocking, windowing and dis/reassembly
- last mod: $Id: block.c,v 1.64.2.2 2002/05/14 07:06:40 xiphmont Exp $
+ last mod: $Id: block.c,v 1.64.2.3 2002/05/18 01:39:27 xiphmont Exp $
Handle windowing, overlap-add, etc of the PCM vectors. This is made
more amusing by Vorbis' current two allowed block sizes.
@@ -33,7 +33,8 @@
static int ilog2(unsigned int v){
int ret=0;
- while(v>1){
+ if(v)--v;
+ while(v){
ret++;
v>>=1;
}
@@ -192,7 +193,7 @@
/* analysis always needs an fft */
drft_init(&b->fft_look[0],ci->blocksizes[0]);
- drft_init(&b->fft_look[1],ci->blocksizes[0]);
+ drft_init(&b->fft_look[1],ci->blocksizes[1]);
/* finish the codebooks */
if(!ci->fullbooks){
@@ -246,16 +247,16 @@
v->pcm_current=v->centerW;
/* initialize all the backend lookups */
- b->floor=_ogg_calloc(ci->floors,sizeof(*b->floor));
+ b->flr=_ogg_calloc(ci->floors,sizeof(*b->flr));
b->residue=_ogg_calloc(ci->residues,sizeof(*b->residue));
for(i=0;i<ci->floors;i++)
- b->floor[i]=_floor_P[ci->floor_type[i]]->
- look(vd,ci->floor_param[i]);
+ b->flr[i]=_floor_P[ci->floor_type[i]]->
+ look(v,ci->floor_param[i]);
for(i=0;i<ci->residues;i++)
b->residue[i]=_residue_P[ci->residue_type[i]]->
- look(vd,ci->residue_param[i]);
+ look(v,ci->residue_param[i]);
return(0);
}
@@ -306,11 +307,11 @@
_ogg_free(b->transform[1]);
}
- if(b->floor){
+ if(b->flr){
for(i=0;i<ci->floors;i++)
_floor_P[ci->floor_type[i]]->
- free_look(b->floor[i]);
- _ogg_free(b->floor);
+ free_look(b->flr[i]);
+ _ogg_free(b->flr);
}
if(b->residue){
for(i=0;i<ci->residues;i++)
<p><p>1.14.4.3 +5 -4 vorbis/lib/codec_internal.h
Index: codec_internal.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/codec_internal.h,v
retrieving revision 1.14.4.2
retrieving revision 1.14.4.3
diff -u -r1.14.4.2 -r1.14.4.3
--- codec_internal.h 2002/05/14 07:06:40 1.14.4.2
+++ codec_internal.h 2002/05/18 01:39:27 1.14.4.3
@@ -11,7 +11,7 @@
********************************************************************
function: libvorbis codec headers
- last mod: $Id: codec_internal.h,v 1.14.4.2 2002/05/14 07:06:40 xiphmont Exp $
+ last mod: $Id: codec_internal.h,v 1.14.4.3 2002/05/18 01:39:27 xiphmont Exp $
********************************************************************/
@@ -28,6 +28,8 @@
#define PACKETBLOBS 15
+static double stereo_threshholds[]={0.0, 2.5, 4.5, 8.5, 16.5};
+
typedef struct vorbis_block_internal{
float **pcmdelay; /* this is a pointer into local storage */
float ampmax;
@@ -63,7 +65,7 @@
drft_lookup fft_look[2];
int modebits;
- vorbis_look_floor **floor;
+ vorbis_look_floor **flr;
vorbis_look_residue **residue;
vorbis_look_psy *psy;
vorbis_look_psy_global *psy_g_look;
@@ -104,7 +106,7 @@
int impulse_block_p;
int stereo_couple_p;
- int stereo_point_dB;
+ int stereo_point_dB_q;
double stereo_point_kHz[2];
double lowpass_kHz[2];
@@ -153,7 +155,6 @@
static_codebook *book_param[256];
codebook *fullbooks;
- int block_to_psy_map[4];
vorbis_info_psy *psy_param[4]; /* encode only */
vorbis_info_psy_global psy_g_param;
<p><p>1.51.4.3 +4 -7 vorbis/lib/floor0.c
Index: floor0.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/floor0.c,v
retrieving revision 1.51.4.2
retrieving revision 1.51.4.3
diff -u -r1.51.4.2 -r1.51.4.3
--- floor0.c 2002/05/14 07:06:40 1.51.4.2
+++ floor0.c 2002/05/18 01:39:27 1.51.4.3
@@ -11,7 +11,7 @@
********************************************************************
function: floor backend 0 implementation
- last mod: $Id: floor0.c,v 1.51.4.2 2002/05/14 07:06:40 xiphmont Exp $
+ last mod: $Id: floor0.c,v 1.51.4.3 2002/05/18 01:39:27 xiphmont Exp $
********************************************************************/
@@ -112,12 +112,13 @@
linear block and mapping sizes */
static void floor0_map_lazy_init(vorbis_block *vb,
- vorbis_info_floor *info,
+ vorbis_info_floor *infoX,
vorbis_look_floor0 *look){
- if(!look->linearmap[W]){
+ if(!look->linearmap[vb->W]){
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
+ vorbis_info_floor0 *info=(vorbis_info_floor0 *)infoX;
int W=vb->W;
int n=ci->blocksizes[W]/2,j;
@@ -147,13 +148,9 @@
static vorbis_look_floor *floor0_look(vorbis_dsp_state *vd,
vorbis_info_floor *i){
int j;
- float scale;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look));
look->m=info->order;
- look->n=ci->blocksizes[mi->blockflag]/2;
look->ln=info->barkmap;
look->vi=info;
<p><p>1.20.4.3 +2 -3 vorbis/lib/floor1.c
Index: floor1.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/floor1.c,v
retrieving revision 1.20.4.2
retrieving revision 1.20.4.3
diff -u -r1.20.4.2 -r1.20.4.3
--- floor1.c 2002/05/14 07:06:41 1.20.4.2
+++ floor1.c 2002/05/18 01:39:27 1.20.4.3
@@ -11,7 +11,7 @@
********************************************************************
function: floor backend 1 implementation
- last mod: $Id: floor1.c,v 1.20.4.2 2002/05/14 07:06:41 xiphmont Exp $
+ last mod: $Id: floor1.c,v 1.20.4.3 2002/05/18 01:39:27 xiphmont Exp $
********************************************************************/
@@ -618,7 +618,6 @@
int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
const float *logmdct, /* in */
const float *logmask){
- static int seq=0;
long i,j;
vorbis_info_floor1 *info=look->vi;
long n=info->n;
@@ -1143,7 +1142,7 @@
vorbis_info_floor1 *info=look->vi;
codec_setup_info *ci=vb->vd->vi->codec_setup;
- int n=ci->blocksizes[vb->mode]/2;
+ int n=ci->blocksizes[vb->W]/2;
int j;
if(memo){
<p><p>1.49.2.3 +57 -44 vorbis/lib/mapping0.c
Index: mapping0.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/mapping0.c,v
retrieving revision 1.49.2.2
retrieving revision 1.49.2.3
diff -u -r1.49.2.2 -r1.49.2.3
--- mapping0.c 2002/05/14 07:06:41 1.49.2.2
+++ mapping0.c 2002/05/18 01:39:28 1.49.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: channel mapping 0 implementation
- last mod: $Id: mapping0.c,v 1.49.2.2 2002/05/14 07:06:41 xiphmont Exp $
+ last mod: $Id: mapping0.c,v 1.49.2.3 2002/05/18 01:39:28 xiphmont Exp $
********************************************************************/
@@ -47,9 +47,10 @@
}
}
-static int ilog2(unsigned int v){
+static int ilog(unsigned int v){
int ret=0;
- while(v>1){
+ if(v)--v;
+ while(v){
ret++;
v>>=1;
}
@@ -79,8 +80,8 @@
oggpack_write(opb,info->coupling_steps-1,8);
for(i=0;i<info->coupling_steps;i++){
- oggpack_write(opb,info->coupling_mag[i],ilog2(vi->channels));
- oggpack_write(opb,info->coupling_ang[i],ilog2(vi->channels));
+ oggpack_write(opb,info->coupling_mag[i],ilog(vi->channels));
+ oggpack_write(opb,info->coupling_ang[i],ilog(vi->channels));
}
}else
oggpack_write(opb,0,1);
@@ -115,8 +116,8 @@
info->coupling_steps=oggpack_read(opb,8)+1;
for(i=0;i<info->coupling_steps;i++){
- int testM=info->coupling_mag[i]=oggpack_read(opb,ilog2(vi->channels));
- int testA=info->coupling_ang[i]=oggpack_read(opb,ilog2(vi->channels));
+ int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels));
+ int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels));
if(testM<0 ||
testA<0 ||
@@ -190,9 +191,8 @@
float global_ampmax=vbi->ampmax;
float *local_ampmax=alloca(sizeof(*local_ampmax)*vi->channels);
int blocktype=vbi->blocktype;
- vorbis_psy_look *psy_look=
- b->psy+ci->block_to_psy_map[blocktype+(vb->W?2:0)];
- long setup_bits=0;
+ vorbis_look_psy *psy_look=
+ b->psy+blocktype+(vb->W?2:0);
for(i=0;i<vi->channels;i++){
float scale=4.f/n;
@@ -256,6 +256,12 @@
float *tone = _vorbis_block_alloc(vb,n/2*sizeof(*tone));
for(i=0;i<vi->channels;i++){
+ /* the encoder setup assumes that all the modes used by any
+ specific bitrate tweaking use the same floor */
+
+ int modenumber=ci->modeselect[vb->W][PACKETBLOBS/2];
+ vorbis_info_mapping0 *info=ci->map_param[modenumber];
+
int submap=info->chmuxlist[i];
/* the following makes things clearer to *me* anyway */
@@ -265,11 +271,6 @@
float *logmdct =logfft+n/2;
float *logmask =logfft;
- /* the encoder setup assumes that all the modes used by any
- specific bitrate tweaking use the same floor */
-
- int modenumber=ci->modeselect[vb->W][PACKETBLOBS/2];
- vorbis_info_mapping0 *info=ci->map_param[modenumber];
vb->mode=modenumber;
floor_posts[i]=_vorbis_block_alloc(vb,PACKETBLOBS*sizeof(**floor_posts));
@@ -278,13 +279,14 @@
for(j=0;j<n/2;j++)
logmdct[j]=todB(mdct+j);
- //#if 0
- if(vi->channels==2)
+#if 0
+ if(vi->channels==2){
if(i==0)
_analysis_output_always("mdctL",seq,logmdct,n/2,1,0,0);
else
_analysis_output_always("mdctR",seq,logmdct,n/2,1,0,0);
- //#endif
+ }
+#endif
/* first step; noise masking. Not only does 'noise masking'
give us curves from which we can decide how much resolution
@@ -292,17 +294,18 @@
us a tonality estimate (the larger the value in the
'noise_depth' vector, the more tonal that area is) */
- _vp_noisemask(psy_look.
+ _vp_noisemask(psy_look,
logmdct,
noise); /* noise does not have by-frequency offset
bias applied yet */
- //#if 0
- if(vi->channels==2)
+#if 0
+ if(vi->channels==2){
if(i==0)
_analysis_output_always("noiseL",seq,noise,n/2,1,0,0);
else
_analysis_output_always("noiseR",seq,noise,n/2,1,0,0);
- //#endif
+ }
+#endif
/* second step: 'all the other crap'; all the stuff that isn't
computed/fit for bitrate management goes in the second psy
@@ -315,11 +318,12 @@
local_ampmax[i]);
#if 0
- if(vi->channels==2)
+ if(vi->channels==2){
if(i==0)
_analysis_output_always("toneL",seq,tone,n/2,1,0,0);
else
_analysis_output_always("toneR",seq,tone,n/2,1,0,0);
+ }
#endif
/* third step; we offset the noise vectors, overlay tone
@@ -334,11 +338,12 @@
logmask);
#if 0
- if(vi->channels==2)
+ if(vi->channels==2){
if(i==0)
_analysis_output_always("mask1L",seq,logmask,n/2,1,0,0);
else
_analysis_output_always("mask1R",seq,logmask,n/2,1,0,0);
+ }
#endif
/* this algorithm is hardwired to floor 1 for now; abort out if
@@ -347,7 +352,7 @@
if(ci->floor_type[info->floorsubmap[submap]]!=1)return(-1);
floor_posts[i][PACKETBLOBS/2]=
- floor1_fit(vb,b->floor[info->floorsubmap[submap]],
+ floor1_fit(vb,b->flr[info->floorsubmap[submap]],
logmdct,
logmask);
@@ -362,15 +367,16 @@
logmask);
#if 0
- if(vi->channels==2)
+ if(vi->channels==2){
if(i==0)
_analysis_output_always("mask2L",seq,logmask,n/2,1,0,0);
else
_analysis_output_always("mask2R",seq,logmask,n/2,1,0,0);
+ }
#endif
floor_posts[i][PACKETBLOBS-1]=
- floor1_fit(vb,b->floor[info->floorsubmap[submap]],
+ floor1_fit(vb,b->flr[info->floorsubmap[submap]],
logmdct,
logmask);
@@ -390,7 +396,7 @@
#endif
floor_posts[i][0]=
- floor1_fit(vb,b->floor[info->floorsubmap[submap]],
+ floor1_fit(vb,b->flr[info->floorsubmap[submap]],
logmdct,
logmask);
@@ -398,13 +404,13 @@
intermediate rates */
for(k=1;k<PACKETBLOBS/2;k++)
floor_posts[i][k]=
- floor1_interpolate_fit(vb,b->floor[info->floorsubmap[submap]],
+ floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
floor_posts[i][0],
floor_posts[i][PACKETBLOBS/2],
k*65536/(PACKETBLOBS/2));
for(k=PACKETBLOBS/2+1;k<PACKETBLOBS-1;k++)
floor_posts[i][k]=
- floor1_interpolate_fit(vb,b->floor[info->floorsubmap[submap]],
+ floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
floor_posts[i][PACKETBLOBS/2],
floor_posts[i][PACKETBLOBS-1],
(k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
@@ -413,9 +419,6 @@
}
vbi->ampmax=global_ampmax;
- /* now save the bit cursor in the write buffer */
- setup_bits=oggpack_bits(&vb->opb);
-
/*
the next phases are performed once for vbr-only and PACKETBLOB
times for bitrate managed modes.
@@ -434,13 +437,19 @@
float **res_bundle=alloca(sizeof(*res_bundle)*vi->channels);
float **couple_bundle=alloca(sizeof(*couple_bundle)*vi->channels);
int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
+ float **mag_memo;
- float **mag_memo=
- _vp_quantize_couple_memo(vb,
- psy_look,
- info,
- gmdct);
-
+ {
+ /* similarly to floor, we assume the encoder setup is using the
+ same coupling tree for all packetblobs in a block array */
+ int modenumber=ci->modeselect[vb->W][PACKETBLOBS/2];
+ vorbis_info_mapping0 *info=ci->map_param[modenumber];
+ mag_memo=_vp_quantize_couple_memo(vb,
+ psy_look,
+ info,
+ gmdct);
+ }
+
for(k=(vorbis_bitrate_managed(vb)?0:PACKETBLOBS/2);
k<=(vorbis_bitrate_managed(vb)?PACKETBLOBS-1:PACKETBLOBS/2);
k++){
@@ -469,20 +478,24 @@
_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
if(info->floorsubmap[submap] !=
- ci->map_param[ci->modeselect[vb->W][PACKETBLOBS/2]]->
+ ((vorbis_info_mapping0 *)
+ (ci->map_param[ci->modeselect[vb->W][PACKETBLOBS/2]]))->
floorsubmap[submap])return(-1); /* breaks encoder
assumptions; all the
packetblobs must use the
same floor */
- nonzero[i]=floor1_encode(vb,b->floor[info->floorsubmap[submap]],
+ nonzero[i]=floor1_encode(vb,b->flr[info->floorsubmap[submap]],
floor_posts[i][k],
ilogmask);
#if 0
{
char buf[80];
sprintf(buf,"maskI%d",k);
- _analysis_output_always(buf,seq+i,mask,n/2,1,1,0);
+ float work[n/2];
+ for(j=0;j<n/2;j++)
+ work[j]=ilogmask[j];
+ _analysis_output_always(buf,seq+i,work,n/2,1,0,0);
}
#endif
_vp_remove_floor(psy_look,
@@ -567,7 +580,7 @@
for(i=0;i<vi->channels;i++){
int submap=info->chmuxlist[i];
floormemo[i]=_floor_P[ci->floor_type[info->floorsubmap[submap]]]->
- inverse1(vb,b->floor[info->floorsubmap[submap]]);
+ inverse1(vb,b->flr[info->floorsubmap[submap]]);
if(floormemo[i])
nonzero[i]=1;
else
@@ -635,7 +648,7 @@
float *pcm=vb->pcm[i];
int submap=info->chmuxlist[i];
_floor_P[ci->floor_type[info->floorsubmap[submap]]]->
- inverse2(vb,b->floor[info->floorsubmap[submap]],
+ inverse2(vb,b->flr[info->floorsubmap[submap]],
floormemo[i],pcm);
//_analysis_output_always("out",seq++,pcm,n/2,1,1,0);
<p><p>1.67.2.4 +24 -23 vorbis/lib/psy.c
Index: psy.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/psy.c,v
retrieving revision 1.67.2.3
retrieving revision 1.67.2.4
diff -u -r1.67.2.3 -r1.67.2.4
--- psy.c 2002/05/14 07:06:41 1.67.2.3
+++ psy.c 2002/05/18 01:39:28 1.67.2.4
@@ -11,7 +11,7 @@
********************************************************************
function: psychoacoustics not including preecho
- last mod: $Id: psy.c,v 1.67.2.3 2002/05/14 07:06:41 xiphmont Exp $
+ last mod: $Id: psy.c,v 1.67.2.4 2002/05/18 01:39:28 xiphmont Exp $
********************************************************************/
@@ -31,9 +31,6 @@
#define NEGINF -9999.f
-/* Why Bark scale for encoding but not masking computation? Because
- masking has a strong harmonic dependency */
-
vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *gi=&ci->psy_g_param;
@@ -272,11 +269,6 @@
memcpy(p->tonecurves[16][i]+2,tone_16000[i<4?0:i/2-2],sizeof(***p->tonecurves)*EHMER_MAX);
for(i=0;i<P_BANDS;i+=2)
- for(j=0;j<P_LEVELS;j+=2)
- for(k=2;k<EHMER_MAX+2;k++)
- p->tonecurves[i][j][k]+=vi->tone_masteratt;
-
- for(i=0;i<P_BANDS;i+=2)
odd_decade_level_interpolate(p->tonecurves[i]);
/* interpolate curves between */
@@ -325,6 +317,9 @@
for(i=0;i<P_LEVELS;i++)
_analysis_output("precurve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0);
+ analysis_noisy=0;
+
+
/* set up the final curves */
for(i=0;i<P_BANDS;i++)
setup_curve(p->tonecurves[i],i,vi->toneatt.block[i]);
@@ -364,6 +359,7 @@
_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=0;
if(vi->curvelimitp){
/* value limit the tonal masking curves; the peakatt not only
@@ -379,6 +375,7 @@
}
}
+ analysis_noisy=0;
for(i=0;i<P_LEVELS;i++)
_analysis_output("licurve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0);
for(i=0;i<P_LEVELS;i++)
@@ -413,6 +410,7 @@
_analysis_output("licurve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0);
for(i=0;i<P_LEVELS;i++)
_analysis_output("licurve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0);
+ analysis_noisy=0;
if(vi->peakattp) /* we limit maximum depth only optionally */
for(i=0;i<P_BANDS;i++)
@@ -420,6 +418,7 @@
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];
+ analysis_noisy=0;
for(i=0;i<P_LEVELS;i++)
_analysis_output("pcurve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0);
for(i=0;i<P_LEVELS;i++)
@@ -454,6 +453,7 @@
_analysis_output("pcurve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0);
for(i=0;i<P_LEVELS;i++)
_analysis_output("pcurve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0);
+ analysis_noisy=0;
/* but guarding is mandatory */
for(i=0;i<P_BANDS;i++)
@@ -518,13 +518,14 @@
p->vi->noiseoff[j][inthalfoc+1]*del;
}
-
- analysis_noisy=0;
- //_analysis_output_always("noiseoff0",n,p->noiseoffset[0],n,1,0,0);
- //_analysis_output_always("noiseoff1",n,p->noiseoffset[1],n,1,0,0);
- //_analysis_output_always("noiseoff2",n,p->noiseoffset[2],n,1,0,0);
- analysis_noisy=1;
-
+#if 0
+ {
+ static int ls=0;
+ _analysis_output_always("noiseoff0",ls,p->noiseoffset[0],n,1,0,0);
+ _analysis_output_always("noiseoff1",ls,p->noiseoffset[1],n,1,0,0);
+ _analysis_output_always("noiseoff2",ls++,p->noiseoffset[2],n,1,0,0);
+ }
+#endif
}
void _vp_psy_clear(vorbis_look_psy *p){
@@ -975,11 +976,12 @@
int offset_select,
float *logmask){
int i,n=p->n;
+ float toneatt=p->vi->tone_masteratt[offset_select];
for(i=0;i<n;i++){
logmask[i]= noise[i]+p->noiseoffset[offset_select][i];
if(logmask[i]>p->vi->noisemaxsupp)logmask[i]=p->vi->noisemaxsupp;
- logmask[i]=max(logmask[i],tone[i]);
+ logmask[i]=max(logmask[i],tone[i]+toneatt);
}
}
@@ -1052,12 +1054,12 @@
float **mdct){
int i,j,n=p->n;
- vorbis_info_psy *info=p->vi;
float **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
for(i=0;i<vi->coupling_steps;i++){
- float point=info->couple_pass.amppost_point;
- int limit=info->couple_pass.limit;
+ float point=stereo_threshholds[vi->coupling_pointamp];
+ int limit=vi->coupling_pointlimit;
+
ret[i]=0;
if(point>0){
float *mdctM=mdct[vi->coupling_mag[i]];
@@ -1078,7 +1080,6 @@
int *nonzero){
int i,j,n=p->n;
- vorbis_info_psy *info=p->vi;
/* perform any requested channel coupling */
/* point stereo can only be used in a first stage (in this encoder)
@@ -1104,8 +1105,8 @@
int *floorA=ifloor[vi->coupling_ang[i]];
float *outM=res[vi->coupling_mag[i]]+n;
float *outA=res[vi->coupling_ang[i]]+n;
- int limit=info->couple_pass.limit;
- float point=info->couple_pass.amppost_point;
+ int limit=vi->coupling_pointlimit;
+ float point=stereo_threshholds[vi->coupling_pointamp];
nonzero[vi->coupling_mag[i]]=1;
nonzero[vi->coupling_ang[i]]=1;
<p><p>1.13.6.3 +1 -4 vorbis/lib/registry.c
Index: registry.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/registry.c,v
retrieving revision 1.13.6.2
retrieving revision 1.13.6.3
diff -u -r1.13.6.2 -r1.13.6.3
--- registry.c 2002/05/14 07:06:42 1.13.6.2
+++ registry.c 2002/05/18 01:39:28 1.13.6.3
@@ -11,17 +11,14 @@
********************************************************************
function: registry for time, floor, res backends and channel mappings
- last mod: $Id: registry.c,v 1.13.6.2 2002/05/14 07:06:42 xiphmont Exp $
+ last mod: $Id: registry.c,v 1.13.6.3 2002/05/18 01:39:28 xiphmont Exp $
********************************************************************/
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "registry.h"
-#include "registry-api.h"
#include "misc.h"
-
-
/* seems like major overkill now; the backend numbers will grow into
the infrastructure soon enough */
<p><p>1.45.4.3 +1 -3 vorbis/lib/res0.c
Index: res0.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/res0.c,v
retrieving revision 1.45.4.2
retrieving revision 1.45.4.3
diff -u -r1.45.4.2 -r1.45.4.3
--- res0.c 2002/05/14 07:06:42 1.45.4.2
+++ res0.c 2002/05/18 01:39:28 1.45.4.3
@@ -11,7 +11,7 @@
********************************************************************
function: residue backend 0, 1 and 2 implementation
- last mod: $Id: res0.c,v 1.45.4.2 2002/05/14 07:06:42 xiphmont Exp $
+ last mod: $Id: res0.c,v 1.45.4.3 2002/05/18 01:39:28 xiphmont Exp $
********************************************************************/
@@ -498,8 +498,6 @@
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
-
/* move all this setup out later */
int samples_per_partition=info->grouping;
<p><p>1.26.4.1 +3 -2 vorbis/lib/synthesis.c
Index: synthesis.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/synthesis.c,v
retrieving revision 1.26
retrieving revision 1.26.4.1
diff -u -r1.26 -r1.26.4.1
--- synthesis.c 2002/02/28 04:12:48 1.26
+++ synthesis.c 2002/05/18 01:39:29 1.26.4.1
@@ -11,7 +11,7 @@
********************************************************************
function: single-block PCM synthesis
- last mod: $Id: synthesis.c,v 1.26 2002/02/28 04:12:48 xiphmont Exp $
+ last mod: $Id: synthesis.c,v 1.26.4.1 2002/05/18 01:39:29 xiphmont Exp $
********************************************************************/
@@ -70,7 +70,8 @@
/* unpack_header enforces range checking */
type=ci->map_type[ci->mode_param[mode]->mapping];
- return(_mapping_P[type]->inverse(vb,b->mode[mode]));
+ return(_mapping_P[type]->inverse(vb,ci->map_param[ci->mode_param[mode]->
+ mapping]));
}
/* used to track pcm position without actually performing decode.
<p><p>1.39.2.3 +79 -86 vorbis/lib/vorbisenc.c
Index: vorbisenc.c
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/vorbisenc.c,v
retrieving revision 1.39.2.2
retrieving revision 1.39.2.3
diff -u -r1.39.2.2 -r1.39.2.3
--- vorbisenc.c 2002/05/14 07:06:42 1.39.2.2
+++ vorbisenc.c 2002/05/18 01:39:29 1.39.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: simple programmatic interface for encoder mode setup
- last mod: $Id: vorbisenc.c,v 1.39.2.2 2002/05/14 07:06:42 xiphmont Exp $
+ last mod: $Id: vorbisenc.c,v 1.39.2.3 2002/05/18 01:39:29 xiphmont Exp $
********************************************************************/
@@ -24,7 +24,6 @@
#include "vorbis/vorbisenc.h"
#include "codec_internal.h"
-#include "registry-api.h"
#include "os.h"
#include "misc.h"
@@ -45,8 +44,6 @@
int couple_pointamp[2][PACKETBLOBS];
} mode_easy_setup;
-static double stereo_threshholds[]={0.0, 2.5, 4.5, 8.5, 16.5};
-
typedef struct vp_adjblock{
int block[P_BANDS][P_LEVELS];
} vp_adjblock;
@@ -65,8 +62,8 @@
only one submap (this would change for efficient 5.1 support for example)*/
/* Four psychoacoustic profiles are used, one for each blocktype */
static vorbis_info_mapping0 _mapping_template[2]={
- {1, {0,0}, {0}, {-1}, {0,1}, 0,{0},{0},0,0},
- {1, {0,0}, {1}, {-1}, {2,3}, 0,{0},{0},0,0}
+ {1, {0,0}, {0}, {-1}, 0,{0},{0},0,0},
+ {1, {0,0}, {1}, {-1}, 0,{0},{0},0,0}
};
static int vorbis_encode_toplevel_setup(vorbis_info *vi,int small,
@@ -183,12 +180,13 @@
}
memcpy(p,&_psy_info_template,sizeof(*p));
+ p->blockflag=block>>1;
return 0;
}
static int vorbis_encode_tonemask_setup(vorbis_info *vi,double q,int block,
- double **att,
+ double att[11][3],
double *max,
int *peaklimit_bands,
vp_adjblock *in){
@@ -392,20 +390,23 @@
vorbis_info_residue0 *r=ci->residue_param[number]=
_ogg_malloc(sizeof(*r));
vorbis_info_mapping0 *map=ci->map_param[number]=
- _ogg_calloc(1,sizeof(*_mapping_set));
+ _ogg_calloc(1,sizeof(*map));
+ vorbis_info_mode *mode=ci->mode_param[number]=
+ _ogg_calloc(1,sizeof(*mode));
- ci->mode_param[number]=_ogg_calloc(1,sizeof(*_mode_set));
-
- memcpy(ci->mode_param[number],&_mode_set[block],sizeof(*_mode_set));
+ memcpy(ci->mode_param[number],&_mode_template[block],
+ sizeof(*_mode_template));
if(number>=ci->modes)ci->modes=number+1;
ci->mode_param[number]->mapping=number;
+ ci->mode_param[number]->blockflag=block;
ci->map_type[number]=0;
- memcpy(ci->map_param[number],&_mapping_set[block],sizeof(*_mapping_set));
- if(number>=ci->mappings)ci->mappings=number+1;
- ci->map_param[number]->residuesubmap[0]=number;
+ memcpy(ci->map_param[number],&_mapping_template[block],
+ sizeof(*_mapping_template));
+ if(number>=ci->maps)ci->maps=number+1;
+ ((vorbis_info_mapping0 *)(ci->map_param[number]))->residuesubmap[0]=number;
- memcpy(r,in[iq].res[number],sizeof(*r));
+ memcpy(r,in[iq].res[block],sizeof(*r));
if(ci->residues<=number)ci->residues=number+1;
if(block){
@@ -470,6 +471,33 @@
}
}
+ /* lowpass setup */
+ {
+ double freq=ci->hi.lowpass_kHz[block]*1000.;
+ vorbis_info_floor1 *f=ci->floor_param[block];
+ double nyq=vi->rate/2.;
+ long blocksize=ci->blocksizes[block]>>1;
+
+ if(freq>vi->rate/2)freq=vi->rate/2;
+ /* lowpass needs to be set in the floor and the residue. */
+
+ /* in the floor, the granularity can be very fine; it doesn't alter
+ the encoding structure, only the samples used to fit the floor
+ approximation */
+ f->n=freq/nyq*blocksize;
+
+ /* in the residue, we're constrained, physically, by partition
+ boundaries. We still lowpass 'wherever', but we have to round up
+ here to next boundary, or the vorbis spec will round it *down* to
+ previous boundary in encode/decode */
+ if(ci->residue_type[block]==2)
+ r->end=(int)((freq/nyq*blocksize*2)/r->grouping+.9)* /* round up only if we're well past */
+ r->grouping;
+ else
+ r->end=(int)((freq/nyq*blocksize)/r->grouping+.9)* /* round up only if we're well past */
+ r->grouping;
+ }
+
return(0);
}
@@ -479,13 +507,10 @@
int *point_dB,
double point_kHz){
- int i,iq=q*10;
- int n,k;
- int partition_position=0;
- int res_position=0;
+ int i;
int alternate_modes=1;
- codec_setup_info *ci=vi->codec_setup;
-
+ codec_setup_info *ci=vi->codec_setup;
+
/* more complex than in rc3 due to coupling; we may be using
multiple modes, each with a different residue setup, as a helper
to bitrate managemnt, letting us change the stereo model
@@ -500,59 +525,27 @@
vorbis_encode_residue_one(vi,q,block,block*alternate_modes,
coupled_p,in,point_dB[0],point_kHz);
- count++;
- for(i=1;i<PACKETBLOBS;i++)
+
+ ci->modeselect[block][0]=block*alternate_modes+count;
+ for(i=1;i<PACKETBLOBS;i++){
if(point_dB[i-1]!=point_dB[i])
- vorbis_encode_residue_one(vi,q,block,block*alternate_modes+count++,
+ vorbis_encode_residue_one(vi,q,block,block*alternate_modes+ ++count,
coupled_p,in,point_dB[i],point_kHz);
+ ci->modeselect[block][i]=block*alternate_modes+count;
+ }
+
+
}else{
vorbis_encode_residue_one(vi,q,block,block*alternate_modes,
- coupled_p,in,point_dB[PACKETBLOBS/2],
+ coupled_p,in,0,
point_kHz);
+ for(i=0;i<PACKETBLOBS;i++)
+ ci->modeselect[block][i]=block*alternate_modes;
}
return(0);
}
-static int vorbis_encode_lowpass_setup(vorbis_info *vi,double q,int block){
- int iq=q*10;
- double dq;
- double freq;
- codec_setup_info *ci=vi->codec_setup;
- vorbis_info_floor1 *f=ci->floor_param[block];
- vorbis_info_residue0 *r=ci->residue_param[block];
- int blocksize=ci->blocksizes[block]>>1;
- double nyq=vi->rate/2.;
-
- if(iq==10){
- iq=9;
- dq=1.;
- }else{
- dq=q*10.-iq;
- }
-
- freq=ci->hi.lowpass_kHz[block]*1000.;
- if(freq>vi->rate/2)freq=vi->rate/2;
- /* lowpass needs to be set in the floor and the residue. */
-
- /* in the floor, the granularity can be very fine; it doesn't alter
- the encoding structure, only the samples used to fit the floor
- approximation */
- f->n=freq/nyq*blocksize;
-
- /* in the residue, we're constrained, physically, by partition
- boundaries. We still lowpass 'wherever', but we have to round up
- here to next boundary, or the vorbis spec will round it *down* to
- previous boundary in encode/decode */
- if(ci->residue_type[block]==2)
- r->end=(int)((freq/nyq*blocksize*2)/r->grouping+.9)* /* round up only if we're well past */
- r->grouping;
- else
- r->end=(int)((freq/nyq*blocksize)/r->grouping+.9)* /* round up only if we're well past */
- r->grouping;
- return(0);
-}
-
/* encoders will need to use vorbis_info_init beforehand and call
vorbis_info clear when all done */
@@ -583,16 +576,20 @@
ret|=vorbis_encode_psyset_setup(vi,3);
ret|=vorbis_encode_tonemask_setup(vi,hi->blocktype[0].tone_mask_quality,0,
- _psy_tone_masteratt,_psy_tone_0dB,_psy_ehmer_bandlimit,
+ _psy_tone_masteratt_44,_psy_tone_0dB,
+ _psy_ehmer_bandlimit,
_vp_tonemask_adj_otherblock);
ret|=vorbis_encode_tonemask_setup(vi,hi->blocktype[1].tone_mask_quality,1,
- _psy_tone_masteratt,_psy_tone_0dB,_psy_ehmer_bandlimit,
+ _psy_tone_masteratt_44,_psy_tone_0dB,
+ _psy_ehmer_bandlimit,
_vp_tonemask_adj_otherblock);
ret|=vorbis_encode_tonemask_setup(vi,hi->blocktype[2].tone_mask_quality,2,
- _psy_tone_masteratt,_psy_tone_0dB,_psy_ehmer_bandlimit,
+ _psy_tone_masteratt_44,_psy_tone_0dB,
+ _psy_ehmer_bandlimit,
_vp_tonemask_adj_otherblock);
ret|=vorbis_encode_tonemask_setup(vi,hi->blocktype[3].tone_mask_quality,3,
- _psy_tone_masteratt,_psy_tone_0dB,_psy_ehmer_bandlimit,
+ _psy_tone_masteratt_44,_psy_tone_0dB,
+ _psy_ehmer_bandlimit,
_vp_tonemask_adj_longblock);
ret|=vorbis_encode_compand_setup(vi,hi->blocktype[0].noise_compand_quality,
@@ -658,38 +655,36 @@
/* setup specific to stereo coupling */
ret|=vorbis_encode_residue_setup(vi,hi->base_quality_short,0,
- 1, /* coupled */
- _residue_template_44_stereo,
- hi->stereo_point_dB,
- hi->stereo_point_kHz[0]);
+ 1, /* coupled */
+ _residue_template_44_stereo,
+ _psy_stereo_modes_44[hi->stereo_point_dB_q],
+ hi->stereo_point_kHz[0]);
ret|=vorbis_encode_residue_setup(vi,hi->base_quality_long,1,
- 1, /* coupled */
- _residue_template_44_stereo,
- hi->stereo_point_dB,
- hi->stereo_point_kHz[1]);
+ 1, /* coupled */
+ _residue_template_44_stereo,
+ _psy_stereo_modes_44[hi->stereo_point_dB_q],
+ hi->stereo_point_kHz[1]);
}else{
/* setup specific to non-stereo (mono or uncoupled polyphonic)
coupling */
ret|=vorbis_encode_residue_setup(vi,hi->base_quality_short,0,
- 0, /* uncoupled */
- _residue_template_44_uncoupled,
- 0,
- hi->stereo_point_kHz[0]); /* just
+ 0, /* uncoupled */
+ _residue_template_44_uncoupled,
+ NULL,
+ hi->stereo_point_kHz[0]); /* just
used as an encoding partitioning
point */
ret|=vorbis_encode_residue_setup(vi,hi->base_quality_long,1,
0, /* uncoupled */
_residue_template_44_uncoupled,
- 0,
+ NULL,
hi->stereo_point_kHz[1]); /* just
used as an encoding partitioning
point */
}
- ret|=vorbis_encode_lowpass_setup(vi,hi->lowpass_kHz[0],0);
- ret|=vorbis_encode_lowpass_setup(vi,hi->lowpass_kHz[1],1);
if(ret)
vorbis_info_clear(vi);
@@ -809,7 +804,7 @@
/* set stereo dB and Hz */
/*iq=0;dq=0;*/
- hi->stereo_point_dB=_psy_stereo_point_dB_44[iq];
+ hi->stereo_point_dB_q=iq;
hi->stereo_point_kHz[0]=_psy_stereo_point_kHz_44[0][iq]*(1.-dq)+
_psy_stereo_point_kHz_44[0][iq+1]*dq;
hi->stereo_point_kHz[1]=_psy_stereo_point_kHz_44[1][iq]*(1.-dq)+
@@ -885,8 +880,6 @@
return ret;
}
- /* adjust to make management's life easier. Use the ctl() interface
- once it's implemented */
{
codec_setup_info *ci=vi->codec_setup;
highlevel_encode_setup *hi=&ci->hi;
<p><p>No revision
<p>No revision
<p>1.15.2.3 +15 -9 vorbis/lib/modes/psych_44.h
Index: psych_44.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/psych_44.h,v
retrieving revision 1.15.2.2
retrieving revision 1.15.2.3
diff -u -r1.15.2.2 -r1.15.2.3
--- psych_44.h 2002/05/14 07:06:46 1.15.2.2
+++ psych_44.h 2002/05/18 01:39:32 1.15.2.3
@@ -11,7 +11,7 @@
********************************************************************
function: key psychoacoustic settings for 44.1/48kHz
- last mod: $Id: psych_44.h,v 1.15.2.2 2002/05/14 07:06:46 xiphmont Exp $
+ last mod: $Id: psych_44.h,v 1.15.2.3 2002/05/18 01:39:32 xiphmont Exp $
********************************************************************/
@@ -24,26 +24,31 @@
{20.f,14.f,12.f,12.f,12.f,12.f,12.f},
{-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
-6.f, 0,
+ {99.,99.,99.}
},
{8, /* lines per eighth octave */
{14.f,10.f,10.f,10.f,10.f,10.f,10.f},
{-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 2,-80.f,
-6.f, 0,
+ {99.,99.,99.}
},
{8, /* lines per eighth octave */
{12.f,10.f,10.f,10.f,10.f,10.f,10.f},
{-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 0,-80.f,
-6.f, 0,
+ {99.,99.,99.}
},
{8, /* lines per eighth octave */
{10.f,8.f,8.f,8.f,8.f,8.f,8.f},
{-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
-6.f, 0,
+ {99.,99.,99.}
},
{8, /* lines per eighth octave */
{10.f,6.f,6.f,6.f,6.f,6.f,6.f},
{-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
-6.f, 0,
+ {99.,99.,99.}
},
};
@@ -690,13 +695,14 @@
};
static vorbis_info_psy _psy_info_template={
- {-1},-110.,-140.,
- /* tonemask att,guard,suppr,curves peakattp,curvelimitp,peaksettings*/
- 0.f, -40.f,-40.f, {{{0.}}}, 1, 0, {{{0.}}},
-
- /*noisemaskp,supp, low/high window, low/hi guard, minimum */
- 1, -0.f, .5f, .5f, 0,0,0,
- {{-1},{-1},{-1}},{-1},105.f,{-1,-1,-1,-1}
+ -1,
+ {-1},-110.,-140.,
+ /* tonemask att,guard,suppr,curves peakattp,curvelimitp,peaksettings*/
+ {0.f,0.f,0.f}, -40.f,-40.f, {{{0.}}}, 1, 0, {{{0.}}},
+
+ /*noisemaskp,supp, low/high window, low/hi guard, minimum */
+ 1, -0.f, .5f, .5f, 0,0,0,
+ {{-1},{-1},{-1}},{-1},105.f
};
/* ath ****************/
@@ -759,7 +765,7 @@
/*0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
{0}, /* 9 */
-}
+};
static double _psy_stereo_point_kHz_44[2][11]={
{4., 6., 6., 6., 10., 6., 6., 4., 4., 4., 4.},
<p><p>1.11.6.3 +1 -6 vorbis/lib/modes/residue_44.h
Index: residue_44.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/modes/residue_44.h,v
retrieving revision 1.11.6.2
retrieving revision 1.11.6.3
diff -u -r1.11.6.2 -r1.11.6.3
--- residue_44.h 2002/05/14 07:06:46 1.11.6.2
+++ residue_44.h 2002/05/18 01:39:32 1.11.6.3
@@ -11,7 +11,7 @@
********************************************************************
function: toplevel residue templates for 32/44.1/48kHz
- last mod: $Id: residue_44.h,v 1.11.6.2 2002/05/14 07:06:46 xiphmont Exp $
+ last mod: $Id: residue_44.h,v 1.11.6.3 2002/05/18 01:39:32 xiphmont Exp $
********************************************************************/
@@ -50,7 +50,6 @@
{-1},
{ .5, 1.5, 2.5, 4.5, 26.5, 1.5, 4.5},
{ 99, -1, -1, -1, -1, 99, 99}
- -1,-1
};
/* 26 doesn't cascade well; use 28 instead */
static vorbis_info_residue0 _residue_44_low_un={
@@ -59,7 +58,6 @@
{-1},
{ .5, 1.5, 2.5, 4.5, 28.5, 1.5, 4.5},
{ 99, -1, -1, -1, -1, 99, 99}
- -1,-1
};
/* 0 1 2 4 1 2 4 16 42 +
@@ -78,7 +76,6 @@
{-1},
{ .5, 1.5, 1.5, 2.5, 2.5, 4.5, 4.5, 16.5, 42.5},
{ 99, -1, 99, -1, 99, -1, 99, 99, 99}
- -1,-1
};
@@ -98,7 +95,6 @@
{-1},
{ .5, 8.5, 42.5, 1.5, 2.5, 4.5, 8.5, 16.5, 56.5},
{ 99, -1, -1, 99, 99, 99, 99, 99, 99}
- -1,-1
};
/* 56 doesn't cascade well; use 59 */
static vorbis_info_residue0 _residue_44_high_un={
@@ -108,7 +104,6 @@
{-1},
{ .5, 8.5, 42.5, 1.5, 2.5, 4.5, 8.5, 16.5, 59.5},
{ 99, -1, -1, 99, 99, 99, 99, 99, 99}
- -1,-1
};
#include "books/coupled/_44c0_short.vqh"
<p><p><p>--- >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