tabinit.c

Go to the documentation of this file.
00001 /* $Id: tabinit.c,v 1.12 2004/04/14 22:15:44 robert Exp $ */
00002 
00003 #ifdef HAVE_CONFIG_H
00004 # include <config.h>
00005 #endif
00006 
00007 #include <stdlib.h>
00008 #include "tabinit.h"
00009 #include "mpg123.h"
00010 
00011 #ifdef WITH_DMALLOC
00012 #include <dmalloc.h>
00013 #endif
00014 
00015 real decwin[512+32];
00016 static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1];
00017 real *pnts[] = { cos64,cos32,cos16,cos8,cos4 };
00018 
00019 static const double dewin[512] = {
00020    0.000000000,-0.000015259,-0.000015259,-0.000015259,
00021   -0.000015259,-0.000015259,-0.000015259,-0.000030518,
00022   -0.000030518,-0.000030518,-0.000030518,-0.000045776,
00023   -0.000045776,-0.000061035,-0.000061035,-0.000076294,
00024   -0.000076294,-0.000091553,-0.000106812,-0.000106812,
00025   -0.000122070,-0.000137329,-0.000152588,-0.000167847,
00026   -0.000198364,-0.000213623,-0.000244141,-0.000259399,
00027   -0.000289917,-0.000320435,-0.000366211,-0.000396729,
00028   -0.000442505,-0.000473022,-0.000534058,-0.000579834,
00029   -0.000625610,-0.000686646,-0.000747681,-0.000808716,
00030   -0.000885010,-0.000961304,-0.001037598,-0.001113892,
00031   -0.001205444,-0.001296997,-0.001388550,-0.001480103,
00032   -0.001586914,-0.001693726,-0.001785278,-0.001907349,
00033   -0.002014160,-0.002120972,-0.002243042,-0.002349854,
00034   -0.002456665,-0.002578735,-0.002685547,-0.002792358,
00035   -0.002899170,-0.002990723,-0.003082275,-0.003173828,
00036   -0.003250122,-0.003326416,-0.003387451,-0.003433228,
00037   -0.003463745,-0.003479004,-0.003479004,-0.003463745,
00038   -0.003417969,-0.003372192,-0.003280640,-0.003173828,
00039   -0.003051758,-0.002883911,-0.002700806,-0.002487183,
00040   -0.002227783,-0.001937866,-0.001617432,-0.001266479,
00041   -0.000869751,-0.000442505, 0.000030518, 0.000549316,
00042    0.001098633, 0.001693726, 0.002334595, 0.003005981,
00043    0.003723145, 0.004486084, 0.005294800, 0.006118774,
00044    0.007003784, 0.007919312, 0.008865356, 0.009841919,
00045    0.010848999, 0.011886597, 0.012939453, 0.014022827,
00046    0.015121460, 0.016235352, 0.017349243, 0.018463135,
00047    0.019577026, 0.020690918, 0.021789551, 0.022857666,
00048    0.023910522, 0.024932861, 0.025909424, 0.026840210,
00049    0.027725220, 0.028533936, 0.029281616, 0.029937744,
00050    0.030532837, 0.031005859, 0.031387329, 0.031661987,
00051    0.031814575, 0.031845093, 0.031738281, 0.031478882,
00052    0.031082153, 0.030517578, 0.029785156, 0.028884888,
00053    0.027801514, 0.026535034, 0.025085449, 0.023422241,
00054    0.021575928, 0.019531250, 0.017257690, 0.014801025,
00055    0.012115479, 0.009231567, 0.006134033, 0.002822876,
00056   -0.000686646,-0.004394531,-0.008316040,-0.012420654,
00057   -0.016708374,-0.021179199,-0.025817871,-0.030609131,
00058   -0.035552979,-0.040634155,-0.045837402,-0.051132202,
00059   -0.056533813,-0.061996460,-0.067520142,-0.073059082,
00060   -0.078628540,-0.084182739,-0.089706421,-0.095169067,
00061   -0.100540161,-0.105819702,-0.110946655,-0.115921021,
00062   -0.120697021,-0.125259399,-0.129562378,-0.133590698,
00063   -0.137298584,-0.140670776,-0.143676758,-0.146255493,
00064   -0.148422241,-0.150115967,-0.151306152,-0.151962280,
00065   -0.152069092,-0.151596069,-0.150497437,-0.148773193,
00066   -0.146362305,-0.143264771,-0.139450073,-0.134887695,
00067   -0.129577637,-0.123474121,-0.116577148,-0.108856201,
00068   -0.100311279,-0.090927124,-0.080688477,-0.069595337,
00069   -0.057617187,-0.044784546,-0.031082153,-0.016510010,
00070   -0.001068115, 0.015228271, 0.032379150, 0.050354004,
00071    0.069168091, 0.088775635, 0.109161377, 0.130310059,
00072    0.152206421, 0.174789429, 0.198059082, 0.221984863,
00073    0.246505737, 0.271591187, 0.297210693, 0.323318481,
00074    0.349868774, 0.376800537, 0.404083252, 0.431655884,
00075    0.459472656, 0.487472534, 0.515609741, 0.543823242,
00076    0.572036743, 0.600219727, 0.628295898, 0.656219482,
00077    0.683914185, 0.711318970, 0.738372803, 0.765029907,
00078    0.791213989, 0.816864014, 0.841949463, 0.866363525,
00079    0.890090942, 0.913055420, 0.935195923, 0.956481934,
00080    0.976852417, 0.996246338, 1.014617920, 1.031936646,
00081    1.048156738, 1.063217163, 1.077117920, 1.089782715,
00082    1.101211548, 1.111373901, 1.120223999, 1.127746582,
00083    1.133926392, 1.138763428, 1.142211914, 1.144287109,
00084    1.144989014
00085 };
00086 
00087 void make_decode_tables(long scaleval)
00088 {
00089   int i,j,k,kr,divv;
00090   real *table,*costab;
00091 
00092   
00093   for(i=0;i<5;i++)
00094   {
00095     kr=0x10>>i; divv=0x40>>i;
00096     costab = pnts[i];
00097     for(k=0;k<kr;k++)
00098       costab[k] = (real)( 1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv)) );
00099   }
00100 
00101   table = decwin;
00102   scaleval = -scaleval;
00103   for(i=0,j=0;i<256;i++,j++,table+=32)
00104   {
00105     if(table < decwin+512+16)
00106       table[16] = table[0] = (real)( dewin[j] * scaleval );
00107     if(i % 32 == 31)
00108       table -= 1023;
00109     if(i % 64 == 63)
00110       scaleval = - scaleval;
00111   }
00112 
00113   for( /* i=256 */ ;i<512;i++,j--,table+=32)
00114   {
00115     if(table < decwin+512+16)
00116       table[16] = table[0] = (real) ( dewin[j] * scaleval );
00117     if(i % 32 == 31)
00118       table -= 1023;
00119     if(i % 64 == 63)
00120       scaleval = - scaleval;
00121   }
00122 }
00123 

Generated on Sun Dec 2 11:34:22 2007 for LAME by  doxygen 1.5.2