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

📄 mpadecoder.h

📁 三星ic 9980的源代码. 718版.
💻 H
字号:
/******************************************************************************
 * Filename    : MPADecoder.h                                                 *
 * Start date  : 2002.12.24                                                   *
 * By          : Lee Kyung Tae                                                *
 * Contact     : kyungtae.lee@samsung.com                                     *
 * Description :                                                              *
 * $Log:$                                                                     *
 ******************************************************************************
 */
#ifndef	_MPA_DECODER_H_
#define	_MPA_DECODER_H_

#ifndef TRUE
#define TRUE		1
#endif

#ifndef FALSE
#define FALSE		0
#endif

#define VERSION 					"Revision 1.0 build 2002.10.16, ADM"
#define CALMSHINE_VERSION			"1.41 Dec-20-2002"
#define MPEG_AUDIO_DECODER_VERSION	"MPEG Audio Multichannel Decoder v1.0"

/* MPEG version information */

#define MPEG_1					0			/* mpeg audio stereo decoder */
#define MPEG_2					1			/* mpeg audio 5.1-ch decoder */
#define MPEG_2a					2			/* mpeg audio 7.1-ch decoder */

#define LAYER_I					1
#define LAYER_II				2
#define LAYER_III				3


/* Dynamic range control option: stream dependent */

#define DRC_OPT					0


/* Extension stream option */

#define EXT_PRESENT				1
#define EXT_NONE				0


#define MAX_CHANNELS			10			/* 7.1-ch + downmix */
#define SYNTH_CHANNELS			7			/* 7-ch */
#define WINDOW_SIZE				1024
#define FRAME_SIZE_I			384
#define FRAME_SIZE_II			1152
#define	MAX_MPG_FRAME_SIZE		1728		/* max for layer II */
#define	MAX_EXT_FRAME_SIZE		2047		/* max for layer II */

//#define	BS_MPG_PTR				((unsigned char *) 0x240000)
//#define	BS_EXT_PTR				((unsigned char *) 0x240800)
//#define	BS_MC_PTR				((unsigned char *) 0x241000)
#define	BS_MC_PTR				((unsigned char *) 0x212000)
#define	PCM_BUF_PTR				((signed short  *) 0x280000)

#define	BUF_UNIT_SIZE			0x1000

typedef signed short PCM[1152][10];
typedef signed short SYN[7][1024];


typedef enum {
/* decoding message */
	DECODE_OK			= 0,
	MPG_SYNC_NOT_FOUND,
	EXT_SYNC_NOT_FOUND,
	BASE_CRC_ERROR,
	MC_CRC_ERROR,
	EXT_CRC_ERROR,
	CRC_CHECK_YES,
	CRC_RECOVERED,
	ILLEGAL_LAYER,
	ILLEGAL_DOWNMIX_MODE,
	ILLEGAL_MATRIX_MODE,
	MC_PRED_MODE,

/* stream information */
	NO_MAIN_AUDIO_DATA,
	NO_EXT_AUDIO_DATA,
	END_OF_BITSTREAM,
	END_OF_FILE,

/* decoder status information */
	MPEG_DECODE_READY,
	MPEG_DECODE_SUSPEND,
	MPEG_DECODE_STARTED,
	MPEG_DECODE_END,

/* system flags */
	FAIL_MEM_ALLOC,
	UNKNOWN_ERROR		= -1
} ErrCode;

union _mpg_header {
	unsigned long data;		/* 4 bytes header */
	struct {
		unsigned syncword       :12;
		unsigned version        : 1;
		unsigned layer          : 2;
		unsigned protection_bit : 1;
		unsigned bitrate_index  : 4;
		unsigned sampling_freq  : 2;
		unsigned padding_bit    : 1;
		unsigned private_bit    : 1;
		unsigned mode           : 2;
		unsigned mode_extension : 2;
		unsigned copyright      : 1;
		unsigned original       : 1;
		unsigned emphasis       : 2;
	} syntax;
};

union _ext_header {
	unsigned long data;		/* 5 bytes header */
	struct {
		unsigned ext_syncword   :12;
		unsigned ext_crc_check  : 4;
		unsigned ext_crc_check1 :12;
		unsigned ext_length     : 4;
		unsigned ext_length1    : 7;
		unsigned ext_ID         : 1;
	} syntax;
};

union _DRC_info {
	unsigned int data;		/* 16 bits DRC information */
	struct {
		unsigned DRC_GainX      : 3;
		unsigned DRC_GainY      : 5;
		unsigned DRC_flag       : 1;
		unsigned reserved       : 7;
	} syntax;
};

struct _header_info {
/* MPEG Audio header information */
	unsigned short syncword;
	unsigned short version;
	unsigned short layer;
	unsigned short protection_bit;
	unsigned short bitrate_index;
	unsigned short sampling_frequency;
	unsigned short padding_bit;
	unsigned short private_bit;
	unsigned short mode;
	unsigned short mode_extension;
	unsigned short copyright;
	unsigned short original;
	unsigned short emphasis;
	unsigned short crc_val;
	unsigned short ext_stream_present;
	unsigned short n_ad_bytes;
	unsigned short center;
	unsigned short surround;
	unsigned short lfe;
	unsigned short audio_mix;
	unsigned short dematrix_procedure;
	unsigned short no_of_multi_lingual_ch;
	unsigned short multi_lingual_fs;
	unsigned short multi_lingual_layer;
	unsigned short copyright_ident_bit;
	unsigned short copyright_ident_start;
	unsigned short mc_crc_val;
	unsigned short ext_syncword;
	unsigned short ext_crc_val;
	unsigned short ext_length;
	unsigned short ext_ID;
	unsigned short aug_crc_val;
};

struct _layer_info {
/* MPEG Audio layer information */
	unsigned short frameNo;
	unsigned short frame_size;
	unsigned short ext_frameNo;
	unsigned short stereo;					/* 1 for mono, 2 for stereo */
	unsigned short sblimit;					/* total number of sub bands */
	unsigned short jsbound;					/* first band of joint stereo coding */
	unsigned short tbl_num;					/* allocation table number 0..3 */
	unsigned short mc_sblimit;				/* total number of MC subbands */
	unsigned short mc_channel;
	unsigned short mc_prediction_on;
	unsigned short tc_sbgr_select;
	unsigned short tc_allocation;
	unsigned short tc_alloc_bits;			/* to read the right length of tc_alloc field */
	unsigned short dyn_cross_on;
	unsigned short dyn_cross_LR;
	unsigned short dyn_cross_bits;			/* to read the right length of dyn_cross field */
	unsigned short lfe_allocation;
	unsigned short lfe_scalefactor;
	unsigned short aug_mtx_proc;
	unsigned short aug_dyn_cross_on;
	unsigned short aug_future_ext;
	unsigned short aug_channel;
	unsigned short layer_I_frames;
	unsigned short layer_I_parts;
	unsigned short alloc_tbl_ptr;
	unsigned short error_count;
	unsigned short mandatory_crc_check;
	unsigned short mpeg_version;
	unsigned short channel_config;
	unsigned short base_last_pos;
	unsigned short drc_gainX;
	unsigned short drc_gainY;
};

unsigned int MPA_GetNumberOfSamples ( void );
unsigned long 	MPA_GetSamplingRate ( void );
unsigned long MPA_GetBitRate ( void );
void Audio_stop(void);
void Audio_restart(void);
void Audio_Mute(BOOL	enable);
void Audio_True_Mute(BOOL	enable);
void MPA_SetPLL(ULONG newfreq);
void	MPA_PLL_setclock(ULONG sample_rate);
/* Defined in mpa.h */
extern unsigned int header_info;
extern unsigned int layer_info;
extern unsigned int syn_buffer;





#endif /* _MPA_DECODER_H_ */

⌨️ 快捷键说明

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