31 #define floor1_rangedB 140
57 memset(info,0,
sizeof(*info));
70 memset(look,0,
sizeof(*look));
75 static int ilog(
unsigned int v){
110 for(j=0;j<maxclass+1;j++){
121 rangebits=
ilog2(maxposit);
130 static int icomp(
const void *
a,
const void *
b){
131 return(**(
int **)a-**(
int **)b);
136 int j,
k,
count=0,maxclass=-1,rangebits;
148 for(j=0;j<maxclass+1;j++){
166 if(rangebits<0)
goto err_out;
183 for(j=0;j<count+2;j++)sortpointer[j]=info->
postlist+j;
184 qsort(sortpointer,count+2,
sizeof(*sortpointer),
icomp);
186 for(j=1;j<count+2;j++)
187 if(*sortpointer[j-1]==*sortpointer[j])
goto err_out;
220 for(i=0;i<n;i++)sortpointer[
i]=info->
postlist+
i;
221 qsort(sortpointer,n,
sizeof(*sortpointer),
icomp);
256 if(x>lx && x<currentx){
283 if(dy<0)
return(y0-off);
289 int i= *x*7.3142857f+1023.5f;
290 if(i>1023)
return(1023);
296 1.0649863e-07
F, 1.1341951e-07
F, 1.2079015e-07
F, 1.2863978e-07
F,
297 1.3699951e-07
F, 1.4590251e-07
F, 1.5538408e-07
F, 1.6548181e-07
F,
298 1.7623575e-07
F, 1.8768855e-07
F, 1.9988561e-07
F, 2.128753e-07
F,
299 2.2670913e-07
F, 2.4144197e-07
F, 2.5713223e-07
F, 2.7384213e-07
F,
300 2.9163793e-07
F, 3.1059021e-07
F, 3.3077411e-07
F, 3.5226968e-07
F,
301 3.7516214e-07
F, 3.9954229e-07
F, 4.2550680e-07
F, 4.5315863e-07
F,
302 4.8260743e-07
F, 5.1396998e-07
F, 5.4737065e-07
F, 5.8294187e-07
F,
303 6.2082472e-07
F, 6.6116941e-07
F, 7.0413592e-07
F, 7.4989464e-07
F,
304 7.9862701e-07
F, 8.5052630e-07
F, 9.0579828e-07
F, 9.6466216e-07
F,
305 1.0273513e-06
F, 1.0941144e-06
F, 1.1652161e-06
F, 1.2409384e-06
F,
306 1.3215816e-06
F, 1.4074654e-06
F, 1.4989305e-06
F, 1.5963394e-06
F,
307 1.7000785e-06
F, 1.8105592e-06
F, 1.9282195e-06
F, 2.0535261e-06
F,
308 2.1869758e-06
F, 2.3290978e-06
F, 2.4804557e-06
F, 2.6416497e-06
F,
309 2.8133190e-06
F, 2.9961443e-06
F, 3.1908506e-06
F, 3.3982101e-06
F,
310 3.6190449e-06
F, 3.8542308e-06
F, 4.1047004e-06
F, 4.3714470e-06
F,
311 4.6555282e-06
F, 4.9580707e-06
F, 5.2802740e-06
F, 5.6234160e-06
F,
312 5.9888572e-06
F, 6.3780469e-06
F, 6.7925283e-06
F, 7.2339451e-06
F,
313 7.7040476e-06
F, 8.2047000e-06
F, 8.7378876e-06
F, 9.3057248e-06
F,
314 9.9104632e-06
F, 1.0554501e-05
F, 1.1240392e-05
F, 1.1970856e-05
F,
315 1.2748789e-05
F, 1.3577278e-05
F, 1.4459606e-05
F, 1.5399272e-05
F,
316 1.6400004e-05
F, 1.7465768e-05
F, 1.8600792e-05
F, 1.9809576e-05
F,
317 2.1096914e-05
F, 2.2467911e-05
F, 2.3928002e-05
F, 2.5482978e-05
F,
318 2.7139006e-05
F, 2.8902651e-05
F, 3.0780908e-05
F, 3.2781225e-05
F,
319 3.4911534e-05
F, 3.7180282e-05
F, 3.9596466e-05
F, 4.2169667e-05
F,
320 4.4910090e-05
F, 4.7828601e-05
F, 5.0936773e-05
F, 5.4246931e-05
F,
321 5.7772202e-05
F, 6.1526565e-05
F, 6.5524908e-05
F, 6.9783085e-05
F,
322 7.4317983e-05
F, 7.9147585e-05
F, 8.4291040e-05
F, 8.9768747e-05
F,
323 9.5602426e-05
F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
324 0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
325 0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
326 0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
327 0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
328 0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
329 0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
330 0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
331 0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
332 0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
333 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
334 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
335 0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
336 0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
337 0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
338 0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
339 0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
340 0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
341 0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
342 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
343 0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
344 0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
345 0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
346 0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
347 0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
348 0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
349 0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
350 0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
351 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
352 0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
353 0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
354 0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
355 0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
356 0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
357 0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
358 0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
359 0.82788260F, 0.88168307F, 0.9389798F, 1.F,
367 int sy=(dy<0?base-1:base+1);
396 int sy=(dy<0?base-1:base+1);
426 int xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0;
440 y2a += quantized*quantized;
447 y2b += quantized*quantized;
473 double xb=0,yb=0,x2b=0,y2b=0,xyb=0,bn=0;
508 double denom=(bn*x2b-xb*xb);
511 double a=(yb*x2b-xyb*xb)/denom;
512 double b=(bn*xyb-xb*yb)/denom;
517 if(*y0>1023)*y0=1023;
518 if(*y1>1023)*y1=1023;
538 int sy=(dy<0?base-1:base+1);
552 if(y+info->
maxover<val)
return(1);
566 mse+=((y-
val)*(y-val));
570 if(y+info->
maxover<val)
return(1);
578 if(mse/n>info->
maxerr)
return(1);
582 static int post_Y(
int *A,
int *B,
int pos){
588 return (A[pos]+B[pos])>>1;
592 const float *logmdct,
593 const float *logmask){
597 long posts=look->
posts;
608 for(i=0;i<posts;i++)fit_valueA[i]=-200;
609 for(i=0;i<posts;i++)fit_valueB[i]=-200;
610 for(i=0;i<posts;i++)loneighbor[i]=0;
611 for(i=0;i<posts;i++)hineighbor[i]=1;
612 for(i=0;i<posts;i++)memo[i]=-1;
619 for(i=0;i<posts-1;i++)
629 fit_line(fits,posts-1,&y0,&y1,info);
640 for(i=2;i<posts;i++){
642 int ln=loneighbor[sortpos];
643 int hn=hineighbor[sortpos];
656 int ly=
post_Y(fit_valueA,fit_valueB,ln);
657 int hy=
post_Y(fit_valueA,fit_valueB,hn);
659 if(ly==-1 || hy==-1){
669 int ret0=
fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1,info);
670 int ret1=
fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1,info);
687 if(ln==0)fit_valueA[ln]=ly0;
691 if(hn==1)fit_valueB[hn]=hy1;
693 if(ly1>=0 || hy0>=0){
695 for(j=sortpos-1;j>=0;j--)
696 if(hineighbor[j]==hn)
700 for(j=sortpos+1;j<posts;j++)
701 if(loneighbor[j]==ln)
717 output[0]=
post_Y(fit_valueA,fit_valueB,0);
718 output[1]=
post_Y(fit_valueA,fit_valueB,1);
723 for(i=2;i<posts;i++){
732 int vx=
post_Y(fit_valueA,fit_valueB,i);
734 if(vx>=0 && predicted!=vx){
737 output[
i]= predicted|0x8000;
751 long posts=look->
posts;
758 for(i=0;i<posts;i++){
759 output[
i]=((65536-del)*(A[i]&0x7fff)+del*(B[
i]&0x7fff)+32768)>>16;
760 if(A[i]&0x8000 && B[i]&0x8000)output[
i]|=0x8000;
770 int *post,
int *ilogmask){
774 long posts=look->
posts;
782 for(i=0;i<posts;i++){
783 int val=post[
i]&0x7fff;
798 post[
i]=val | (post[
i]&0x8000);
805 for(i=2;i<posts;i++){
815 if((post[i]&0x8000) || (predicted==post[i])){
816 post[
i]=predicted|0x8000;
820 int headroom=(look->
quant_q-predicted<predicted?
821 look->
quant_q-predicted:predicted);
823 int val=post[
i]-predicted;
864 int csub=1<<csubbits;
865 int bookas[8]={0,0,0,0,0,0,0,0};
889 cval|= bookas[
k]<<cshift;
900 sprintf(buffer,
"line_%dx%ld_class%d.vqd",
901 vb->
pcmend/2,posts-2,
class);
902 of=fopen(buffer,
"a");
903 fprintf(of,
"%d\n",cval);
914 if(out[j+k]<(books+book)->
entries)
924 sprintf(buffer,
"line_%dx%ld_%dsub%d.vqd",
925 vb->
pcmend/2,posts-2,
class,bookas[k]);
926 of=fopen(buffer,
"a");
927 fprintf(of,
"%d\n",out[j+k]);
941 int ly=post[0]*info->
mult;
944 for(j=1;j<look->
posts;j++){
946 int hy=post[current]&0x7fff;
947 if(hy==post[current]){
958 for(j=hx;j<vb->
pcmend/2;j++)ilogmask[j]=ly;
988 int csub=1<<csubbits;
995 if(cval==-1)
goto eop;
1012 for(i=2;i<look->
posts;i++){
1018 int hiroom=look->
quant_q-predicted;
1019 int loroom=predicted;
1020 int room=(hiroom<loroom?hiroom:loroom)<<1;
1021 int val=fit_value[
i];
1028 val = -1-(val-hiroom);
1038 fit_value[
i]=val+predicted&0x7fff;
1043 fit_value[
i]=predicted|0x8000;
1065 int *fit_value=(
int *)memo;
1068 int ly=fit_value[0]*info->
mult;
1070 ly=(ly<0?0:ly>255?255:ly);
1072 for(j=1;j<look->
posts;j++){
1074 int hy=fit_value[current]&0x7fff;
1075 if(hy==fit_value[current]){
1080 hy=(hy<0?0:hy>255?255:hy);
1091 memset(out,0,
sizeof(*out)*n);
int class_subbook[VIF_CLASS][8]
GLuint const GLfloat * val
const vorbis_func_floor floor1_exportbundle
static_codebook * book_param[256]
int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b)
static int icomp(const void *a, const void *b)
static void render_line0(int n, int x0, int x1, int y0, int y1, int *d)
void oggpack_write(oggpack_buffer *b, unsigned long value, int bits)
int class_subs[VIF_CLASS]
GLboolean GLboolean GLboolean GLboolean a
static void render_line(int n, int x0, int x1, int y0, int y1, float *d)
int hineighbor[VIF_POSIT]
static vorbis_info_floor * floor1_unpack(vorbis_info *vi, oggpack_buffer *opb)
return Display return Display Bool Bool int d
GLuint GLuint GLfloat weight
int reverse_index[VIF_POSIT+2]
GLuint GLfloat GLfloat GLfloat GLfloat y1
static int vorbis_dBquant(const float *x)
GLuint GLfloat GLfloat y0
int partitionclass[VIF_PARTS]
long vorbis_book_decode(codebook *book, oggpack_buffer *b)
int loneighbor[VIF_POSIT]
EGLContext EGLenum EGLClientBuffer buffer
static void floor1_free_look(vorbis_look_floor *i)
static const float FLOOR1_fromdB_LOOKUP[256]
static int fit_line(lsfit_acc *a, int fits, int *y0, int *y1, vorbis_info_floor1 *info)
int sorted_index[VIF_POSIT+2]
static int ilog2(unsigned int v)
int forward_index[VIF_POSIT+2]
GLuint GLfloat GLfloat GLfloat x1
EGLSurface EGLint EGLint y
int * floor1_interpolate_fit(vorbis_block *vb, vorbis_look_floor1 *look, int *A, int *B, int del)
static vorbis_look_floor * floor1_look(vorbis_dsp_state *vd, vorbis_info_floor *in)
struct lsfit_acc lsfit_acc
static void floor1_pack(vorbis_info_floor *i, oggpack_buffer *opb)
static int accumulate_fit(const float *flr, const float *mdct, int x0, int x1, lsfit_acc *a, int n, vorbis_info_floor1 *info)
static int ilog(unsigned int v)
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
static void * floor1_inverse1(vorbis_block *vb, vorbis_look_floor *in)
GLdouble GLdouble GLdouble b
static void floor1_free_info(vorbis_info_floor *i)
static int post_Y(int *A, int *B, int pos)
static int inspect_error(int x0, int x1, int y0, int y1, const float *mask, const float *mdct, vorbis_info_floor1 *info)
long oggpack_read(oggpack_buffer *b, int bits)
int * floor1_fit(vorbis_block *vb, vorbis_look_floor1 *look, const float *logmdct, const float *logmask)
int class_book[VIF_CLASS]
static int render_point(int x0, int x1, int y0, int y1, int x)
static int floor1_inverse2(vorbis_block *vb, vorbis_look_floor *in, void *memo, float *out)
int postlist[VIF_POSIT+2]
void * _vorbis_block_alloc(vorbis_block *vb, long bytes)
int floor1_encode(oggpack_buffer *opb, vorbis_block *vb, vorbis_look_floor1 *look, int *post, int *ilogmask)
void qsort(void *base, size_t nmemb, size_t size, int(*compare)(const void *, const void *))