home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2004 March / PCWELT_3_2004.ISO / pcwsoft / flaskmpeg_078_39_src.z.exe / flaskmpeg / Audio / MPEG / staticinit.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2002-10-28  |  909 b   |  64 lines

  1. #include <math.h>
  2. #include <float.h>
  3.  
  4. #include "AMPDecoder.h"
  5.  
  6. int AMPDecoder::init_count = 0;
  7.  
  8. signed char AMPDecoder::group3[31][3];
  9. signed char AMPDecoder::group5[127][3];
  10. signed char AMPDecoder::group9[1023][3];
  11.  
  12. signed char (*AMPDecoder::group_tbls[3])[3]={
  13.     group3,
  14.     group5,
  15.     group9,
  16. };
  17.  
  18. extern void init_mdct();
  19.  
  20. void AMPDecoder::Initialize()
  21. {
  22.     int i,j;
  23.     int v;
  24.  
  25.     if (init_count)
  26.         return;
  27.  
  28.     ++init_count;
  29.  
  30.     // initialize IMDCT for layer 3 decoding
  31.  
  32.     init_mdct();
  33.  
  34.     // initialize 3/5/9 group decoding tables for layer 2
  35.  
  36.     for(i=0; i<31; i++) {
  37.         v = i;
  38.  
  39.         for(j=0; j<3; j++) {
  40.             group3[i][j] = v % 3 - 1;
  41.             v /= 3;
  42.         }
  43.     }
  44.  
  45.     for(i=0; i<127; i++) {
  46.         v = i;
  47.  
  48.         for(j=0; j<3; j++) {
  49.             group5[i][j] = v % 5 - 2;
  50.             v /= 5;
  51.         }
  52.     }
  53.  
  54.     for(i=0; i<1023; i++) {
  55.         v = i;
  56.  
  57.         for(j=0; j<3; j++) {
  58.             group9[i][j] = v % 9 - 4;
  59.             v /= 9;
  60.         }
  61.     }
  62.  
  63. }
  64.