Mpg123.h
上传用户:lusi_8715
上传日期:2007-01-08
资源大小:199k
文件大小:5k
- /**************************************************************************************
- * *
- * This application contains code from OpenDivX and is released as a "Larger Work" *
- * under that license. Consistant with that license, this application is released *
- * under the GNU General Public License. *
- * *
- * The OpenDivX license can be found at: http://www.projectmayo.com/opendivx/docs.php *
- * The GPL can be found at: http://www.gnu.org/copyleft/gpl.html *
- * *
- * Authors: Damien Chavarria <roy204 at projectmayo.com> *
- * *
- **************************************************************************************/
- #ifndef MPEG123_H
- #define MPEG123_H
- #include <stdio.h>
- #include <string.h>
- #include <signal.h>
- #ifndef WIN32
- # include <sys/signal.h>
- # include <unistd.h>
- #endif
- #include <math.h>
- #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
- /* AUDIOBUFSIZE = n*64 with n=1,2,3 ... */
- #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
- /* Pre Shift fo 16 to 8 bit converter table */
- #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; /* computed framesize */
- /* layer2 stuff */
- int II_sblimit;
- void *alloc;
- };
- struct parameter {
- int quiet; /* shut up! */
- int tryresync; /* resync stream after error */
- int verbose; /* verbose level */
- 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