46 256, {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
56 { 1,9e10f, 9e10f, 1.f,9999.f},
57 { 9999, .75f, 9e10f, .5f,9999.f},
59 { 18,9e10f, 9e10f, .5f, 30.f},
60 { 9999,9e10f, 9e10f, .5f, 30.f}
64 { 1, {9e10f,9e10f,0}, { 0.f, 0.f,0}, { 0.f, 0.f,0}, {0.f,0.f,0}},
65 { 18, {9e10f,9e10f,0}, { 0.f, 0.f,0}, { 0.f, 0.f,0}, {0.f,0.f,0}},
66 { 9999, {9e10f,9e10f,0}, { 0.f, 9e10f,0}, { 0.f,22.f,1}, {0.f,0.f,0}}
70 ATH_Bark_dB_lineaggressive,
83 {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f},
84 {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f},
85 {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f},
87 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
88 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
89 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
90 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
91 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
92 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
93 {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
94 {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
95 {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
96 {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
98 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
100 {-30.f,-30.f,-33.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f},
101 {-30.f,-30.f,-33.f,-35.f,-40.f,-45.f,-50.f,-60.f,-70.f,-85.f,-100.f},
102 {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-85.f,-100.f},
107 {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
108 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
109 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
110 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
111 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
112 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
113 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
114 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
115 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
116 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
117 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
118 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
119 {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},
120 {-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},
121 {-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},
122 {-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},
123 {-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},
175 6,3,10, 22,18,26, 41,36,47,
176 69,61,78, 112,99,126, 185,162,211,
177 329,282,387, 672,553,825
204 sprintf(buffer,
"%s_%d.m",base,i);
205 of=fopen(buffer,
"w");
212 fprintf(of,
"%g ",
toBARK(22050.
f*j/n));
214 fprintf(of,
"%g ",(
float)j);
217 fprintf(of,
"%g\n",
todB(v+j));
219 fprintf(of,
"%g\n",v[j]);
231 int main(
int argc,
char *argv[]){
236 float ampmax=-9999,newmax;
237 float local_ampmax[2];
240 float ampmax_att_per_sec=-6.;
242 float *pcm[2],*out[2],*window,*flr[2],*
mask[2],*work[2];
243 signed char *
buffer,*buffer2;
269 framesize=atoi(argv[0]);
285 buffer2=buffer+framesize*2;
286 window=_vorbis_window_create(0,framesize,framesize/2,framesize/2);
289 _vp_psy_init(&p_look,&_psy_set0,&_psy_set0G,framesize/2,44100);
296 fread(buffer,1,44,stdin);
297 fwrite(buffer,1,44,stdout);
298 memset(buffer,0,framesize*2);
300 analysis(
"window",0,window,framesize,0,0);
302 fprintf(stderr,
"Processing for frame size %d...\n",framesize);
305 long bytes=fread(buffer2,1,framesize*2,stdin);
306 if(bytes<framesize*2)
307 memset(buffer2+bytes,0,framesize*2-bytes);
313 for(i=0;i<framesize;i++){
314 pcm[0][
i]=((buffer[i*4+1]<<8)|
315 (0x00ff&(
int)buffer[i*4]))/32768.f;
316 pcm[1][
i]=((buffer[i*4+3]<<8)|
317 (0x00ff&(
int)buffer[i*4+2]))/32768.f;
321 float secs=framesize/44100.;
323 ampmax+=secs*ampmax_att_per_sec;
324 if(ampmax<-9999)ampmax=-9999;
328 float scale=4.f/framesize;
331 float *logmdct=mdct+framesize/2;
336 for(j=0;j<framesize;j++)
337 fft[j]=pcm[i][j]*=window[j];
341 local_ampmax[
i]=-9999.f;
344 for(j=1;j<framesize-1;j+=2){
346 temp=fft[(j+1)>>1]=
todB(&temp);
347 if(temp>local_ampmax[i])local_ampmax[
i]=temp;
349 if(local_ampmax[i]>ampmax)ampmax=local_ampmax[
i];
352 for(j=0;j<framesize/2;j++)
353 logmdct[j]=
todB(mdct+j);
364 float *logmdct=mdct+framesize/2;
365 float *mask=fft+framesize/2;
368 _vp_compute_mask(&p_look,
389 nonzero[
i]=
_floor_P[1]->forward(&vb,floor_look,
398 _vp_remove_floor(&p_look,
406 for(j=0;j<framesize/2;j++)
407 if(
fabs(pcm[i][j])>1500)
408 fprintf(stderr,
"%ld ",
frameno+i);
415 _vp_partition_prequant(&p_look,
438 for(j=0;j<framesize/2;j++){
467 for(j=0;j<framesize/2;j++)
468 pcm[i][j]*=flr[i][j];
475 for(j=0;j<framesize/2;j++)
476 out[i][j]+=pcm[i][j]*window[j];
485 char *ptr=buffer+i*2;
488 for(j=0;j<framesize/2;j++){
489 int val=mono[
j]*32767.;
492 if(!flag)fprintf(stderr,
"clipping in frame %ld ",
frameno+i);
497 if(!flag)fprintf(stderr,
"clipping in frame %ld ",
frameno+i);
502 ptr[1]=(val>>8)&0xff;
508 fwrite(buffer,1,framesize*2,stdout);
509 memmove(buffer,buffer2,framesize*2);
512 for(j=0,k=framesize/2;j<framesize/2;j++,k++)
513 out[i][j]=pcm[i][k]*window[k];
519 fprintf(stderr,
"average raw bits of entropy: %.03g/sample\n",acc/tot);
520 fprintf(stderr,
"average nonzero samples: %.03g/%d\n",nonz/tot*framesize/2,
522 fprintf(stderr,
"Done\n\n");
GLuint const GLfloat * val
void analysis(char *base, int i, float *v, int n, int bark, int dB)
vorbis_look_floor *(* look)(vorbis_dsp_state *, vorbis_info_floor *)
int main(int argc, char **argv)
static vp_couple _vp_couple0[]
static codec_setup_info codec_setup0
void mdct_init(mdct_lookup *lookup, int n)
void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out)
void drft_init(drft_lookup *l, int n)
vorbis_look_psy_global * _vp_global_look(vorbis_info *vi)
void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out)
const vorbis_func_floor *const _floor_P[]
EGLContext EGLenum EGLClientBuffer buffer
static vorbis_info_psy _psy_set0
static float todB(const float *x)
void _vp_psy_init(vorbis_look_psy *p, vorbis_info_psy *vi, vorbis_info_psy_global *gi, int n, long rate)
static vp_part _vp_part0[]
GLenum GLenum GLenum GLenum GLenum scale
static vorbis_info_psy_global _psy_set0G
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
static vorbis_info_floor1 _floor_set0
static vorbis_info_mapping0 mapping_info
void drft_forward(drft_lookup *l, float *data)