Mpg123.h
上传用户:lusi_8715
上传日期:2007-01-08
资源大小:199k
文件大小:5k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  * This application contains code from OpenDivX and is released as a "Larger Work"    *
  4.  * under that license. Consistant with that license, this application is released     *
  5.  * under the GNU General Public License.                                              *
  6.  *                                                                                    *
  7.  * The OpenDivX license can be found at: http://www.projectmayo.com/opendivx/docs.php *
  8.  * The GPL can be found at: http://www.gnu.org/copyleft/gpl.html                      *
  9.  *                                                                                    *
  10.  * Authors: Damien Chavarria <roy204 at projectmayo.com>                              *
  11.  *                                                                                    *
  12.  **************************************************************************************/
  13. #ifndef MPEG123_H
  14. #define MPEG123_H
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <signal.h>
  18. #ifndef WIN32
  19. # include <sys/signal.h>
  20. # include <unistd.h>
  21. #endif
  22. #include <math.h>
  23. #ifdef _WIN32
  24. # undef WIN32
  25. # define WIN32
  26. # define M_PI       3.14159265358979323846
  27. # define M_SQRT2 1.41421356237309504880
  28. # define REAL_IS_FLOAT
  29. # define NEW_DCT9
  30. # define random rand
  31. # define srandom srand
  32. #endif
  33. #ifdef REAL_IS_FLOAT
  34. # define real float
  35. #elif defined(REAL_IS_LONG_DOUBLE)
  36. # define real long double
  37. #else
  38. # define real double
  39. #endif
  40. /* AUDIOBUFSIZE = n*64 with n=1,2,3 ...  */
  41. #define AUDIOBUFSIZE 16384
  42. #ifndef FALSE
  43. #define         FALSE                   0
  44. #endif
  45. #ifndef TRUE
  46. #define         TRUE                    1
  47. #endif
  48. #define         SBLIMIT                 32
  49. #define         SSLIMIT                 18
  50. #define         SCALE_BLOCK             12
  51. #define         MPG_MD_STEREO           0
  52. #define         MPG_MD_JOINT_STEREO     1
  53. #define         MPG_MD_DUAL_CHANNEL     2
  54. #define         MPG_MD_MONO             3
  55. #define MAXFRAMESIZE 1792
  56. /* Pre Shift fo 16 to 8 bit converter table */
  57. #define AUSHIFT (3)
  58. typedef unsigned char  uint8_t;
  59. typedef unsigned short uint16_t;
  60. typedef unsigned int   uint32_t;
  61. struct frame {
  62.     int stereo;
  63.     int jsbound;
  64.     int single;
  65.     int lsf;
  66.     int mpeg25;
  67.     int header_change;
  68.     int lay;
  69.     int error_protection;
  70.     int bitrate_index;
  71.     int sampling_frequency;
  72.     int padding;
  73.     int extension;
  74.     int mode;
  75.     int mode_ext;
  76.     int copyright;
  77.     int original;
  78.     int emphasis;
  79.     int framesize; /* computed framesize */
  80.     /* layer2 stuff */
  81.     int II_sblimit;
  82.     void *alloc;
  83. };
  84. struct parameter {
  85. int quiet; /* shut up! */
  86. int tryresync;  /* resync stream after error */
  87. int verbose;    /* verbose level */
  88. int checkrange;
  89. };
  90. extern uint8_t get1bit(void);
  91. extern uint32_t getbits(int);
  92. extern uint16_t getbits_fast(int);
  93. extern int set_pointer(long);
  94. extern unsigned char *wordpointer;
  95. extern int bitindex;
  96. extern void make_decode_tables(long scaleval);
  97. extern int do_layer3(struct frame *fr,unsigned char *,int *);
  98. extern int do_layer2(struct frame *fr,unsigned char *,int *);
  99. extern int do_layer1(struct frame *fr,unsigned char *,int *);
  100. extern int decode_header(struct frame *fr,unsigned long newhead);
  101. struct gr_info_s {
  102.       int scfsi;
  103.       unsigned part2_3_length;
  104.       unsigned big_values;
  105.       unsigned scalefac_compress;
  106.       unsigned block_type;
  107.       unsigned mixed_block_flag;
  108.       unsigned table_select[3];
  109.       unsigned subblock_gain[3];
  110.       unsigned maxband[3];
  111.       unsigned maxbandl;
  112.       unsigned maxb;
  113.       unsigned region1start;
  114.       unsigned region2start;
  115.       unsigned preflag;
  116.       unsigned scalefac_scale;
  117.       unsigned count1table_select;
  118.       real *full_gain[3];
  119.       real *pow2gain;
  120. };
  121. struct III_sideinfo
  122. {
  123.   unsigned main_data_begin;
  124.   unsigned private_bits;
  125.   struct {
  126.     struct gr_info_s gr[2];
  127.   } ch[2];
  128. };
  129. extern int synth_1to1 (real *,int,unsigned char *,int *);
  130. extern int synth_1to1_mono (real *,unsigned char *,int *);
  131. extern int synth_1to1_mono2stereo (real *,unsigned char *,int *);
  132. extern int synth_2to1 (real *,int,unsigned char *,int *);
  133. extern int synth_2to1_mono (real *,unsigned char *,int *);
  134. extern int synth_2to1_mono2stereo (real *,unsigned char *,int *);
  135. extern int synth_4to1 (real *,int,unsigned char *,int *);
  136. extern int synth_4to1_mono (real *,unsigned char *,int *);
  137. extern int synth_4to1_mono2stereo (real *,unsigned char *,int *);
  138. extern int synth_ntom (real *,int,unsigned char *,int *);
  139. extern int synth_ntom_mono (real *,unsigned char *,int *);
  140. extern int synth_ntom_mono2stereo (real *,unsigned char *,int *);
  141. extern void rewindNbits(int bits);
  142. extern int  hsstell(void);
  143. extern int get_songlen(struct frame *fr,int no);
  144. extern void init_layer3(int);
  145. extern void init_layer2(void);
  146. extern void make_decode_tables(long scale);
  147. extern void dct64(real *,real *,real *);
  148. extern void synth_ntom_set_step(long,long);
  149. extern long freqs[9];
  150. extern real muls[27][64];
  151. extern real decwin[512+32];
  152. extern real *pnts[5];
  153. extern struct parameter param;
  154. #endif