43 memset(info,0,
sizeof(*info));
48 static int ilog(
unsigned int v){
106 memset(info,0,
sizeof(*info));
112 if(info->
submaps<=0)
goto err_out;
169 1.0649863e-07
F, 1.1341951e-07
F, 1.2079015e-07
F, 1.2863978e-07
F,
170 1.3699951e-07
F, 1.4590251e-07
F, 1.5538408e-07
F, 1.6548181e-07
F,
171 1.7623575e-07
F, 1.8768855e-07
F, 1.9988561e-07
F, 2.128753e-07
F,
172 2.2670913e-07
F, 2.4144197e-07
F, 2.5713223e-07
F, 2.7384213e-07
F,
173 2.9163793e-07
F, 3.1059021e-07
F, 3.3077411e-07
F, 3.5226968e-07
F,
174 3.7516214e-07
F, 3.9954229e-07
F, 4.2550680e-07
F, 4.5315863e-07
F,
175 4.8260743e-07
F, 5.1396998e-07
F, 5.4737065e-07
F, 5.8294187e-07
F,
176 6.2082472e-07
F, 6.6116941e-07
F, 7.0413592e-07
F, 7.4989464e-07
F,
177 7.9862701e-07
F, 8.5052630e-07
F, 9.0579828e-07
F, 9.6466216e-07
F,
178 1.0273513e-06
F, 1.0941144e-06
F, 1.1652161e-06
F, 1.2409384e-06
F,
179 1.3215816e-06
F, 1.4074654e-06
F, 1.4989305e-06
F, 1.5963394e-06
F,
180 1.7000785e-06
F, 1.8105592e-06
F, 1.9282195e-06
F, 2.0535261e-06
F,
181 2.1869758e-06
F, 2.3290978e-06
F, 2.4804557e-06
F, 2.6416497e-06
F,
182 2.8133190e-06
F, 2.9961443e-06
F, 3.1908506e-06
F, 3.3982101e-06
F,
183 3.6190449e-06
F, 3.8542308e-06
F, 4.1047004e-06
F, 4.3714470e-06
F,
184 4.6555282e-06
F, 4.9580707e-06
F, 5.2802740e-06
F, 5.6234160e-06
F,
185 5.9888572e-06
F, 6.3780469e-06
F, 6.7925283e-06
F, 7.2339451e-06
F,
186 7.7040476e-06
F, 8.2047000e-06
F, 8.7378876e-06
F, 9.3057248e-06
F,
187 9.9104632e-06
F, 1.0554501e-05
F, 1.1240392e-05
F, 1.1970856e-05
F,
188 1.2748789e-05
F, 1.3577278e-05
F, 1.4459606e-05
F, 1.5399272e-05
F,
189 1.6400004e-05
F, 1.7465768e-05
F, 1.8600792e-05
F, 1.9809576e-05
F,
190 2.1096914e-05
F, 2.2467911e-05
F, 2.3928002e-05
F, 2.5482978e-05
F,
191 2.7139006e-05
F, 2.8902651e-05
F, 3.0780908e-05
F, 3.2781225e-05
F,
192 3.4911534e-05
F, 3.7180282e-05
F, 3.9596466e-05
F, 4.2169667e-05
F,
193 4.4910090e-05
F, 4.7828601e-05
F, 5.0936773e-05
F, 5.4246931e-05
F,
194 5.7772202e-05
F, 6.1526565e-05
F, 6.5524908e-05
F, 6.9783085e-05
F,
195 7.4317983e-05
F, 7.9147585e-05
F, 8.4291040e-05
F, 8.9768747e-05
F,
196 9.5602426e-05
F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
197 0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
198 0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
199 0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
200 0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
201 0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
202 0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
203 0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
204 0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
205 0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
206 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
207 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
208 0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
209 0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
210 0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
211 0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
212 0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
213 0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
214 0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
215 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
216 0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
217 0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
218 0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
219 0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
220 0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
221 0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
222 0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
223 0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
224 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
225 0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
226 0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
227 0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
228 0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
229 0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
230 0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
231 0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
232 0.82788260F, 0.88168307F, 0.9389798F, 1.F,
247 int *nonzero = alloca(
sizeof(*nonzero)*vi->
channels);
252 float global_ampmax=vbi->
ampmax;
253 float *local_ampmax=alloca(
sizeof(*local_ampmax)*vi->
channels);
256 int modenumber=vb->
W;
266 float *pcm =vb->
pcm[
i];
272 scale_dB=
todB(&scale) + .345;
290 _analysis_output(
"pcmL",seq,pcm,
n,0,0,total-
n/2);
292 _analysis_output(
"pcmR",seq,pcm,
n,0,0,total-
n/2);
294 _analysis_output(
"pcm",seq,pcm,
n,0,0,total-
n/2);
304 _analysis_output(
"windowedL",seq,pcm,
n,0,0,total-
n/2);
306 _analysis_output(
"windowedR",seq,pcm,
n,0,0,total-
n/2);
308 _analysis_output(
"windowed",seq,pcm,
n,0,0,total-
n/2);
318 logfft[0]=scale_dB+
todB(pcm) + .345;
332 local_ampmax[
i]=logfft[0];
334 float temp=pcm[
j]*pcm[
j]+pcm[
j+1]*pcm[
j+1];
335 temp=logfft[(
j+1)>>1]=scale_dB+.5
f*
todB(&temp) + .345;
350 if(temp>local_ampmax[i])local_ampmax[
i]=temp;
353 if(local_ampmax[i]>0.
f)local_ampmax[
i]=0.f;
354 if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[
i];
359 _analysis_output(
"fftL",seq,logfft,n/2,1,0,0);
361 _analysis_output(
"fftR",seq,logfft,n/2,1,0,0);
364 _analysis_output(
"fft",seq,logfft,n/2,1,0,0);
381 float *mdct =gmdct[
i];
382 float *logfft =vb->
pcm[
i];
384 float *logmdct =logfft+
n/2;
385 float *logmask =logfft;
393 logmdct[
j]=
todB(mdct+
j) + .345;
411 _analysis_output(
"mdctL",seq,logmdct,
n/2,1,0,0);
413 _analysis_output(
"mdctR",seq,logmdct,
n/2,1,0,0);
415 _analysis_output(
"mdct",seq,logmdct,
n/2,1,0,0);
432 _analysis_output(
"noiseL",seq,noise,
n/2,1,0,0);
434 _analysis_output(
"noiseR",seq,noise,
n/2,1,0,0);
436 _analysis_output(
"noise",seq,noise,
n/2,1,0,0);
453 _analysis_output(
"toneL",seq,tone,
n/2,1,0,0);
455 _analysis_output(
"toneR",seq,tone,
n/2,1,0,0);
457 _analysis_output(
"tone",seq,tone,
n/2,1,0,0);
468 float aotuv[psy_look->
n];
482 _analysis_output(
"aotuvM1_L",seq,aotuv,psy_look->
n,1,1,0);
484 _analysis_output(
"aotuvM1_R",seq,aotuv,psy_look->
n,1,1,0);
486 _analysis_output(
"aotuvM1",seq,aotuv,psy_look->
n,1,1,0);
495 _analysis_output(
"mask1L",seq,logmask,
n/2,1,0,0);
497 _analysis_output(
"mask1R",seq,logmask,
n/2,1,0,0);
499 _analysis_output(
"mask1",seq,logmask,
n/2,1,0,0);
508 floor_posts[
i][PACKETBLOBS/2]=
529 _analysis_output(
"mask2L",seq,logmask,
n/2,1,0,0);
531 _analysis_output(
"mask2R",seq,logmask,
n/2,1,0,0);
533 _analysis_output(
"mask2",seq,logmask,
n/2,1,0,0);
537 floor_posts[
i][PACKETBLOBS-1]=
554 _analysis_output(
"mask0L",seq,logmask,
n/2,1,0,0);
556 _analysis_output(
"mask0R",seq,logmask,
n/2,1,0,0);
558 _analysis_output(
"mask0",seq,logmask,
n/2,1,0,0);
569 for(
k=1;
k<PACKETBLOBS/2;
k++)
573 floor_posts[i][PACKETBLOBS/2],
574 k*65536/(PACKETBLOBS/2));
575 for(
k=PACKETBLOBS/2+1;
k<PACKETBLOBS-1;
k++)
578 floor_posts[i][PACKETBLOBS/2],
579 floor_posts[i][PACKETBLOBS-1],
580 (
k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
584 vbi->
ampmax=global_ampmax;
601 int **couple_bundle=alloca(
sizeof(*couple_bundle)*vi->
channels);
602 int *zerobundle=alloca(
sizeof(*zerobundle)*vi->
channels);
623 int *ilogmask=iwork[
i];
631 sprintf(buf,
"maskI%c%d",i?
'R':
'L',k);
635 _analysis_output(buf,seq,work,
n/2,1,1,0);
659 sprintf(buf,
"res%c%d",i?
'R':
'L',
k);
663 _analysis_output(buf,seq,work,
n/2,1,0,0);
670 long **classifications;
675 zerobundle[ch_in_bundle]=0;
676 if(nonzero[
j])zerobundle[ch_in_bundle]=1;
677 couple_bundle[ch_in_bundle++]=iwork[
j];
682 class(vb,b->
residue[resnum],couple_bundle,zerobundle,ch_in_bundle);
687 couple_bundle[ch_in_bundle++]=iwork[
j];
690 forward(opb,vb,b->
residue[resnum],
691 couple_bundle,zerobundle,ch_in_bundle,classifications,i);
716 float **pcmbundle=alloca(
sizeof(*pcmbundle)*vi->
channels);
717 int *zerobundle=alloca(
sizeof(*zerobundle)*vi->
channels);
719 int *nonzero =alloca(
sizeof(*nonzero)*vi->
channels);
720 void **floormemo=alloca(
sizeof(*floormemo)*vi->
channels);
749 zerobundle[ch_in_bundle]=1;
751 zerobundle[ch_in_bundle]=0;
752 pcmbundle[ch_in_bundle++]=vb->
pcm[
j];
758 pcmbundle,zerobundle,ch_in_bundle);
791 float *pcm=vb->
pcm[
i];
801 float *pcm=vb->
pcm[
i];
void _vp_tonemask(vorbis_look_psy *p, float *logfft, float *logmask, float global_specmax, float local_specmax)
void _vorbis_apply_window(float *d, int *winno, long *blocksizes, int lW, int W, int nW)
static int mapping0_forward(vorbis_block *vb)
static int mapping0_inverse(vorbis_block *vb, vorbis_info_mapping *l)
const vorbis_func_residue *const _residue_P[]
int sliding_lowpass[2][PACKETBLOBS]
void _vp_offset_and_mix(vorbis_look_psy *p, float *noise, float *tone, int offset_select, float *logmask, float *mdct, float *logmdct)
void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out)
void oggpack_write(oggpack_buffer *b, unsigned long value, int bits)
static int ilog(unsigned int v)
void _vp_couple_quantize_normalize(int blobno, vorbis_info_psy_global *g, vorbis_look_psy *p, vorbis_info_mapping0 *vi, float **mdct, int **iwork, int *nonzero, int sliding_lowpass, int ch)
void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out)
vorbis_look_transform ** transform[2]
const vorbis_func_floor *const _floor_P[]
vorbis_info_psy_global psy_g_param
static float todB(const float *x)
static void mapping0_pack(vorbis_info *vi, vorbis_info_mapping *vm, oggpack_buffer *opb)
static vorbis_info_mapping * mapping0_unpack(vorbis_info *vi, oggpack_buffer *opb)
oggpack_buffer * packetblob[PACKETBLOBS]
int vorbis_bitrate_managed(vorbis_block *vb)
static const float FLOOR1_fromdB_LOOKUP[256]
static void mapping0_free_info(vorbis_info_mapping *i)
GLenum GLenum GLenum GLenum GLenum scale
int * floor1_interpolate_fit(vorbis_block *vb, vorbis_look_floor1 *look, int *A, int *B, int del)
vorbis_look_residue ** residue
GLenum GLuint GLsizei const GLchar * buf
const vorbis_func_mapping mapping0_exportbundle
GLdouble GLdouble GLdouble b
void _vp_noisemask(vorbis_look_psy *p, float *logmdct, float *logmask)
long oggpack_read(oggpack_buffer *b, int bits)
int * floor1_fit(vorbis_block *vb, vorbis_look_floor1 *look, const float *logmdct, const float *logmask)
void * _vorbis_block_alloc(vorbis_block *vb, long bytes)
void drft_forward(drft_lookup *l, float *data)
int floor1_encode(oggpack_buffer *opb, vorbis_block *vb, vorbis_look_floor1 *look, int *post, int *ilogmask)
vorbis_info_mapping * map_param[64]