]> 4ch.mooo.com Git - 16.git/blob - src/lib/dl/ext/lame/tabinit.c
refresh wwww
[16.git] / src / lib / dl / ext / lame / tabinit.c
1 /*
2  * tabinit.c
3  *
4  * Copyright (C) 1999-2010 The L.A.M.E. project
5  *
6  * Initially written by Michael Hipp, see also AUTHORS and README.
7  *  
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the
20  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23 /* $Id: tabinit.c,v 1.16 2010/03/22 14:30:19 robert Exp $ */
24
25 #ifdef HAVE_CONFIG_H
26 # include <config.h>
27 #endif
28
29 #include <stdlib.h>
30 #include "tabinit.h"
31 #include "mpg123.h"
32
33 #ifdef WITH_DMALLOC
34 #include <dmalloc.h>
35 #endif
36
37 real    decwin[512 + 32];
38 static real cos64[16], cos32[8], cos16[4], cos8[2], cos4[1];
39 real   *pnts[] = { cos64, cos32, cos16, cos8, cos4 };
40
41 /* *INDENT-OFF* */
42
43 static const double dewin[512] = {
44    0.000000000,-0.000015259,-0.000015259,-0.000015259,
45   -0.000015259,-0.000015259,-0.000015259,-0.000030518,
46   -0.000030518,-0.000030518,-0.000030518,-0.000045776,
47   -0.000045776,-0.000061035,-0.000061035,-0.000076294,
48   -0.000076294,-0.000091553,-0.000106812,-0.000106812,
49   -0.000122070,-0.000137329,-0.000152588,-0.000167847,
50   -0.000198364,-0.000213623,-0.000244141,-0.000259399,
51   -0.000289917,-0.000320435,-0.000366211,-0.000396729,
52   -0.000442505,-0.000473022,-0.000534058,-0.000579834,
53   -0.000625610,-0.000686646,-0.000747681,-0.000808716,
54   -0.000885010,-0.000961304,-0.001037598,-0.001113892,
55   -0.001205444,-0.001296997,-0.001388550,-0.001480103,
56   -0.001586914,-0.001693726,-0.001785278,-0.001907349,
57   -0.002014160,-0.002120972,-0.002243042,-0.002349854,
58   -0.002456665,-0.002578735,-0.002685547,-0.002792358,
59   -0.002899170,-0.002990723,-0.003082275,-0.003173828,
60   -0.003250122,-0.003326416,-0.003387451,-0.003433228,
61   -0.003463745,-0.003479004,-0.003479004,-0.003463745,
62   -0.003417969,-0.003372192,-0.003280640,-0.003173828,
63   -0.003051758,-0.002883911,-0.002700806,-0.002487183,
64   -0.002227783,-0.001937866,-0.001617432,-0.001266479,
65   -0.000869751,-0.000442505, 0.000030518, 0.000549316,
66    0.001098633, 0.001693726, 0.002334595, 0.003005981,
67    0.003723145, 0.004486084, 0.005294800, 0.006118774,
68    0.007003784, 0.007919312, 0.008865356, 0.009841919,
69    0.010848999, 0.011886597, 0.012939453, 0.014022827,
70    0.015121460, 0.016235352, 0.017349243, 0.018463135,
71    0.019577026, 0.020690918, 0.021789551, 0.022857666,
72    0.023910522, 0.024932861, 0.025909424, 0.026840210,
73    0.027725220, 0.028533936, 0.029281616, 0.029937744,
74    0.030532837, 0.031005859, 0.031387329, 0.031661987,
75    0.031814575, 0.031845093, 0.031738281, 0.031478882,
76    0.031082153, 0.030517578, 0.029785156, 0.028884888,
77    0.027801514, 0.026535034, 0.025085449, 0.023422241,
78    0.021575928, 0.019531250, 0.017257690, 0.014801025,
79    0.012115479, 0.009231567, 0.006134033, 0.002822876,
80   -0.000686646,-0.004394531,-0.008316040,-0.012420654,
81   -0.016708374,-0.021179199,-0.025817871,-0.030609131,
82   -0.035552979,-0.040634155,-0.045837402,-0.051132202,
83   -0.056533813,-0.061996460,-0.067520142,-0.073059082,
84   -0.078628540,-0.084182739,-0.089706421,-0.095169067,
85   -0.100540161,-0.105819702,-0.110946655,-0.115921021,
86   -0.120697021,-0.125259399,-0.129562378,-0.133590698,
87   -0.137298584,-0.140670776,-0.143676758,-0.146255493,
88   -0.148422241,-0.150115967,-0.151306152,-0.151962280,
89   -0.152069092,-0.151596069,-0.150497437,-0.148773193,
90   -0.146362305,-0.143264771,-0.139450073,-0.134887695,
91   -0.129577637,-0.123474121,-0.116577148,-0.108856201,
92   -0.100311279,-0.090927124,-0.080688477,-0.069595337,
93   -0.057617187,-0.044784546,-0.031082153,-0.016510010,
94   -0.001068115, 0.015228271, 0.032379150, 0.050354004,
95    0.069168091, 0.088775635, 0.109161377, 0.130310059,
96    0.152206421, 0.174789429, 0.198059082, 0.221984863,
97    0.246505737, 0.271591187, 0.297210693, 0.323318481,
98    0.349868774, 0.376800537, 0.404083252, 0.431655884,
99    0.459472656, 0.487472534, 0.515609741, 0.543823242,
100    0.572036743, 0.600219727, 0.628295898, 0.656219482,
101    0.683914185, 0.711318970, 0.738372803, 0.765029907,
102    0.791213989, 0.816864014, 0.841949463, 0.866363525,
103    0.890090942, 0.913055420, 0.935195923, 0.956481934,
104    0.976852417, 0.996246338, 1.014617920, 1.031936646,
105    1.048156738, 1.063217163, 1.077117920, 1.089782715,
106    1.101211548, 1.111373901, 1.120223999, 1.127746582,
107    1.133926392, 1.138763428, 1.142211914, 1.144287109,
108    1.144989014
109 };
110 /* *INDENT-ON* */
111
112 void
113 make_decode_tables(long scaleval)
114 {
115     int     i, j, k, kr, divv;
116     real   *table, *costab;
117
118
119     for (i = 0; i < 5; i++) {
120         kr = 0x10 >> i;
121         divv = 0x40 >> i;
122         costab = pnts[i];
123         for (k = 0; k < kr; k++)
124             costab[k] = (real) (1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv)));
125     }
126
127     table = decwin;
128     scaleval = -scaleval;
129     for (i = 0, j = 0; i < 256; i++, j++, table += 32) {
130         if (table < decwin + 512 + 16)
131             table[16] = table[0] = (real) (dewin[j] * scaleval);
132         if (i % 32 == 31)
133             table -= 1023;
134         if (i % 64 == 63)
135             scaleval = -scaleval;
136     }
137
138     for ( /* i=256 */ ; i < 512; i++, j--, table += 32) {
139         if (table < decwin + 512 + 16)
140             table[16] = table[0] = (real) (dewin[j] * scaleval);
141         if (i % 32 == 31)
142             table -= 1023;
143         if (i % 64 == 63)
144             scaleval = -scaleval;
145     }
146 }