⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.h

📁 这个代码是用ADS1.2平台开发的一个mp3播放器。
💻 H
字号:
/***********************************************
copyright by Haia Tech
www.haia2004.com
************************************************/



#ifndef	_COMMON_H_
#define	_COMMON_H_

//#include <stdio.h>

/* MPEG Header Definitions - Mode Values */
#define	MPG_MD_STEREO           0
#define	MPG_MD_JOINT_STEREO     1
#define	MPG_MD_DUAL_CHANNEL     2
#define	MPG_MD_MONO             3 

#define	SYNC_WORD			0xfff
#define	SYNC_WORD_LENGTH	12

#define	ALIGNING			8

#define	MINIMUM				4    /* Minimum size of the buffer in bytes */
#define	MAX_LENGTH			32	/* Maximum length of word written or read from bit stream */

#define	BINARY				0	/*Binary input file*/
#define	READ_MODE			0	/*Decode mode only*/

#define	FALSE				0
#define	TRUE				1

#define	MIN(A, B)			((A) < (B) ? (A) : (B))

#define	SBLIMIT				32
#define	SSLIMIT				18
#define	HAN_SIZE			512
#define	SCALE				32768

#define	PI					3.14159265358979
#define	PI64				PI/64
#define	PI4					PI/4

#define bitsPerSlot         8

/*mp3比特流的缓冲*/
#define	BUFFER_SIZE			4096
/*part2_3区的缓冲*/
#define	BITSTREAM_BUFSIZE	2048
#define	ETHER_SIZE			512




/* Header Information Structure */
typedef struct {
    int version;
    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;
} layer; 

typedef double SS[SBLIMIT][SSLIMIT];


/* Parent Structure Interpreting some Frame Parameters in Header */
typedef struct {
    layer       *header;        /* raw header information */
    int         actual_mode;    /* when writing IS, may forget if 0 chs */
    int         stereo;         /* 1 for mono, 2 for stereo */
    int         jsbound;        /* first band of joint stereo coding */
    int         sblimit;        /* total number of sub bands */
} frame_params;

typedef struct {
    unsigned short *buf;         /* bit stream buffer */
    unsigned long           totbit;         /* bit counter of bit stream */
    unsigned int            read_ptr;      /* pointer to top byte in buffer */
    unsigned int            bit_len;      /* pointer to top bit of top byte in buffer */
    unsigned int            write_ptr;   /* pointer to write byte in buffer */
    unsigned int            eof;            /* end of buffer index */
    unsigned int            eobs;           /* end of bit stream flag */
} Bit_stream_struc;

/* Layer III side information. */

struct Granule {
			unsigned part2_3_length;
			unsigned big_values;
			unsigned global_gain;
			unsigned scalefac_compress;
			unsigned window_switching_flag;
			unsigned block_type; 
			unsigned mixed_block_flag;
			unsigned table_select[3]; 
			unsigned subblock_gain[3];
			unsigned region0_count;
			unsigned region1_count;
			unsigned preflag;
			unsigned scalefac_scale;
			unsigned count1table_select;
};

typedef struct {
	unsigned main_data_begin;
	unsigned private_bits;
	unsigned scfsi[2][4];
} III_side_info_t;

typedef struct {
	int l[23];			/* [cb] */
	int s[3][13];		/* [window][cb] */
} III_scalefac_t[2];	/* [ch] */




struct BandIndex{
	int l[23];
	int s[14];
};

void mp3();

void open_bit_stream_r();

unsigned int getbit(int N);
int seek_sync( unsigned int sync);

int js_bound(int lay, int m_ext);
void hdr_to_frps();
void quest_stream(unsigned int *ptr);

void hputbuf(unsigned int val);
unsigned int hgetbits(int N);
void rewindNbits(int N);
void rewindNbytes(int N);


#endif	/*_COMMON_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -