Mpg123.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef MPEG123_H
  6. #define MPEG123_H
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include <signal.h>
  10. #ifndef WIN32
  11. # include <sys/signal.h>
  12. # include <unistd.h>
  13. #endif
  14. #include <math.h>
  15. #ifdef _WIN32
  16. # undef WIN32
  17. # define WIN32
  18. # define M_PI       3.14159265358979323846
  19. # define M_SQRT2 1.41421356237309504880
  20. # define REAL_IS_FLOAT
  21. # define NEW_DCT9
  22. # define random rand
  23. # define srandom srand
  24. #endif
  25. #ifdef REAL_IS_FLOAT
  26. # define real float
  27. #elif defined(REAL_IS_LONG_DOUBLE)
  28. # define real long double
  29. #else
  30. # define real double
  31. #endif
  32. #define AUDIOBUFSIZE 16384
  33. #ifndef FALSE
  34. #define         FALSE                   0
  35. #endif
  36. #ifndef TRUE
  37. #define         TRUE                    1
  38. #endif
  39. #define         SBLIMIT                 32
  40. #define         SSLIMIT                 18
  41. #define         SCALE_BLOCK             12
  42. #define         MPG_MD_STEREO           0
  43. #define         MPG_MD_JOINT_STEREO     1
  44. #define         MPG_MD_DUAL_CHANNEL     2
  45. #define         MPG_MD_MONO             3
  46. #define MAXFRAMESIZE 1792
  47. #define AUSHIFT (3)
  48. typedef unsigned char  uint8_t;
  49. typedef unsigned short uint16_t;
  50. typedef unsigned int   uint32_t;
  51. struct frame {
  52.     int stereo;
  53.     int jsbound;
  54.     int single;
  55.     int lsf;
  56.     int mpeg25;
  57.     int header_change;
  58.     int lay;
  59.     int error_protection;
  60.     int bitrate_index;
  61.     int sampling_frequency;
  62.     int padding;
  63.     int extension;
  64.     int mode;
  65.     int mode_ext;
  66.     int copyright;
  67.     int original;
  68.     int emphasis;
  69.     int framesize; 
  70.     int II_sblimit;
  71.     void *alloc;
  72. };
  73. struct parameter {
  74. int quiet;
  75. int tryresync;  
  76. int verbose;    
  77. int checkrange;
  78. };
  79. extern uint8_t get1bit(void);
  80. extern uint32_t getbits(int);
  81. extern uint16_t getbits_fast(int);
  82. extern int set_pointer(long);
  83. extern unsigned char *wordpointer;
  84. extern int bitindex;
  85. extern void make_decode_tables(long scaleval);
  86. extern int do_layer3(struct frame *fr,unsigned char *,int *);
  87. extern int do_layer2(struct frame *fr,unsigned char *,int *);
  88. extern int do_layer1(struct frame *fr,unsigned char *,int *);
  89. extern int decode_header(struct frame *fr,unsigned long newhead);
  90. struct gr_info_s {
  91.       int scfsi;
  92.       unsigned part2_3_length;
  93.       unsigned big_values;
  94.       unsigned scalefac_compress;
  95.       unsigned block_type;
  96.       unsigned mixed_block_flag;
  97.       unsigned table_select[3];
  98.       unsigned subblock_gain[3];
  99.       unsigned maxband[3];
  100.       unsigned maxbandl;
  101.       unsigned maxb;
  102.       unsigned region1start;
  103.       unsigned region2start;
  104.       unsigned preflag;
  105.       unsigned scalefac_scale;
  106.       unsigned count1table_select;
  107.       real *full_gain[3];
  108.       real *pow2gain;
  109. };
  110. struct III_sideinfo
  111. {
  112.   unsigned main_data_begin;
  113.   unsigned private_bits;
  114.   struct {
  115.     struct gr_info_s gr[2];
  116.   } ch[2];
  117. };
  118. extern int synth_1to1 (real *,int,unsigned char *,int *);
  119. extern int synth_1to1_mono (real *,unsigned char *,int *);
  120. extern int synth_1to1_mono2stereo (real *,unsigned char *,int *);
  121. extern int synth_2to1 (real *,int,unsigned char *,int *);
  122. extern int synth_2to1_mono (real *,unsigned char *,int *);
  123. extern int synth_2to1_mono2stereo (real *,unsigned char *,int *);
  124. extern int synth_4to1 (real *,int,unsigned char *,int *);
  125. extern int synth_4to1_mono (real *,unsigned char *,int *);
  126. extern int synth_4to1_mono2stereo (real *,unsigned char *,int *);
  127. extern int synth_ntom (real *,int,unsigned char *,int *);
  128. extern int synth_ntom_mono (real *,unsigned char *,int *);
  129. extern int synth_ntom_mono2stereo (real *,unsigned char *,int *);
  130. extern void rewindNbits(int bits);
  131. extern int  hsstell(void);
  132. extern int get_songlen(struct frame *fr,int no);
  133. extern void init_layer3(int);
  134. extern void init_layer2(void);
  135. extern void make_decode_tables(long scale);
  136. extern void dct64(real *,real *,real *);
  137. extern void synth_ntom_set_step(long,long);
  138. extern long freqs[9];
  139. extern real muls[27][64];
  140. extern real decwin[512+32];
  141. extern real *pnts[5];
  142. extern struct parameter param;
  143. #endif