www.pudn.com > MyPlayerbylqh.rar > Mpg123.h


/************************************************************************************** 
 *                                                                                    * 
 *                                                                                    * 
 **************************************************************************************/ 
 
#ifndef MPEG123_H 
#define MPEG123_H 
 
#include  
#include  
#include  
 
#ifndef WIN32 
# include  
# include  
#endif 
 
#include  
 
#ifdef _WIN32 
# undef WIN32 
# define WIN32 
 
# define M_PI       3.14159265358979323846 
# define M_SQRT2	1.41421356237309504880 
# define REAL_IS_FLOAT 
# define NEW_DCT9 
 
# define random rand 
# define srandom srand 
 
#endif 
 
#ifdef REAL_IS_FLOAT 
# define real float 
#elif defined(REAL_IS_LONG_DOUBLE) 
# define real long double 
#else 
# define real double 
#endif 
 
#define		AUDIOBUFSIZE		16384 
 
#ifndef FALSE 
#define         FALSE                   0 
#endif 
#ifndef TRUE 
#define         TRUE                    1 
#endif 
 
#define         SBLIMIT                 32 
#define         SSLIMIT                 18 
 
#define         SCALE_BLOCK             12 
 
 
#define         MPG_MD_STEREO           0 
#define         MPG_MD_JOINT_STEREO     1 
#define         MPG_MD_DUAL_CHANNEL     2 
#define         MPG_MD_MONO             3 
 
#define MAXFRAMESIZE 1792 
 
 
 
#define AUSHIFT (3) 
 
typedef unsigned char  uint8_t; 
typedef unsigned short uint16_t; 
typedef unsigned int   uint32_t; 
 
 
struct frame { 
    int stereo; 
    int jsbound; 
    int single; 
    int lsf; 
    int mpeg25; 
    int header_change; 
    int lay; 
    int error_protection; 
    int bitrate_index; 
    int sampling_frequency; 
    int padding; 
    int extension; 
    int mode; 
    int mode_ext; 
    int copyright; 
    int original; 
    int emphasis; 
    int framesize;  
 
    int II_sblimit; 
    void *alloc; 
}; 
 
struct parameter { 
	int quiet;	 
	int tryresync;   
	int verbose;     
	int checkrange; 
}; 
 
extern uint8_t get1bit(void); 
extern uint32_t getbits(int); 
extern uint16_t getbits_fast(int); 
extern int set_pointer(long); 
 
extern unsigned char *wordpointer; 
extern int bitindex; 
 
extern void make_decode_tables(long scaleval); 
extern int do_layer3(struct frame *fr,unsigned char *,int *); 
extern int do_layer2(struct frame *fr,unsigned char *,int *); 
extern int do_layer1(struct frame *fr,unsigned char *,int *); 
extern int decode_header(struct frame *fr,unsigned long newhead); 
 
 
 
struct gr_info_s { 
      int scfsi; 
      unsigned part2_3_length; 
      unsigned big_values; 
      unsigned scalefac_compress; 
      unsigned block_type; 
      unsigned mixed_block_flag; 
      unsigned table_select[3]; 
      unsigned subblock_gain[3]; 
      unsigned maxband[3]; 
      unsigned maxbandl; 
      unsigned maxb; 
      unsigned region1start; 
      unsigned region2start; 
      unsigned preflag; 
      unsigned scalefac_scale; 
      unsigned count1table_select; 
      real *full_gain[3]; 
      real *pow2gain; 
}; 
 
struct III_sideinfo 
{ 
  unsigned main_data_begin; 
  unsigned private_bits; 
  struct { 
    struct gr_info_s gr[2]; 
  } ch[2]; 
}; 
 
extern int synth_1to1 (real *,int,unsigned char *,int *); 
extern int synth_1to1_mono (real *,unsigned char *,int *); 
extern int synth_1to1_mono2stereo (real *,unsigned char *,int *); 
 
extern int synth_2to1 (real *,int,unsigned char *,int *); 
extern int synth_2to1_mono (real *,unsigned char *,int *); 
extern int synth_2to1_mono2stereo (real *,unsigned char *,int *); 
 
extern int synth_4to1 (real *,int,unsigned char *,int *); 
extern int synth_4to1_mono (real *,unsigned char *,int *); 
extern int synth_4to1_mono2stereo (real *,unsigned char *,int *); 
 
extern int synth_ntom (real *,int,unsigned char *,int *); 
extern int synth_ntom_mono (real *,unsigned char *,int *); 
extern int synth_ntom_mono2stereo (real *,unsigned char *,int *); 
 
extern void rewindNbits(int bits); 
extern int  hsstell(void); 
extern int get_songlen(struct frame *fr,int no); 
 
extern void init_layer3(int); 
extern void init_layer2(void); 
extern void make_decode_tables(long scale); 
extern void dct64(real *,real *,real *); 
 
extern void synth_ntom_set_step(long,long); 
 
extern long freqs[9]; 
extern real muls[27][64]; 
extern real decwin[512+32]; 
extern real *pnts[5]; 
 
extern struct parameter param; 
 
#endif