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

📄 mpa.h

📁 三星ic 9980的源代码. 718版.
💻 H
📖 第 1 页 / 共 3 页
字号:
/*
 *  mpa.h
 *
 *  MPEG/audio multichannel decoder.
 *	Copyright (C) 2003 Optical Player P/J, Samsung Electronics.
 *
 *	MPEG Audio Decoder Version 1.2b, 2004/10/29
 *
 ********************************************************************
 *
 *	Revision 1.0 2003.06 Kyungtae Lee
 *	Release version
 *
 *	Revision 1.0a 2003/06/25 Kyungtae Lee
 *	- Fixed bug in CRC check when phantom center present
 *	- Fixed bug dematrix procedure in matrix mode 2
 *	- Corrected tc_table for 3/0 + 2/0 channel mode
 *
 *	Revision 1.0b 2003/06/30 Kyungtae Lee
 *	- Programe area moved to address after 0x6000 and each
 *	  code section defined in all source files.
 *
 *	Revision 1.0c 2003/07/03 Kyungtae Lee
 *	- MPEG2 Multi channel, DVD v1.0 specific, additional
 *	  test streams passed
 *	- Corrected DRC process detection error
 *	- Support SPDIF stream type output (support layer-II only)
 *	- Working sync word try again search and CRC error correct
 *
 *	Revision 1.0d 2003/07/08 Kyungtae Lee
 *	- Memory map is adjusted, pcm_ch_buffer, pcm_dm_buffer,
 *	  pcm_lfe_buffer buffers moved to upper 0x9000~0xBD00.
 *	  Upper half of X/Y area are used for postprocessing(VBX, etc).
 *	- Downmix scale down bug fixed.
 *
 *	Revision 1.0e 2003/07/16 Kyungtae Lee
 *	- Dynamic range control for DVD v1.0 MPEG Audio DRC mode
 *	  is prohibitted.
 *	- Some parameters of MainCodecShared_t of System part are
 *	  corrected to long type.
 *
 *	Revision 1.0f 2003/07/21 Kyungtae Lee
 *	- "CVD", "SVCD" test streams and "DVD" 5.1 title passed.
 *	- "mpa_output.s", output routines for 16/24-bit are simplified.
 *	- Change default mpeg_version to _MPEG_2_AUG_AUDIO, detect
 *	  mpeg2, mpeg1 stream automatically.
 *
 *	Release Revision 1.1 2003/07/25
 *
 *	Revision 1.1a 2003/07/28 Kyungtae Lee
 *	- If frame size is odd, correct error in detection broken stream.
 *
 *	Revision 1.1b 2003/10/09 Kyungtae Lee
 *	- If detected wrong sync-word (0xfff), can occur decoding error.
 *	  Check sync-word of next frame whether good or not good.
 *
 *	Revision 1.1c 2003/10/22 Kyungtae Lee
 *	- Added extension sync-word (0x7ff) search routine.
 *
 *	Revision 1.1d 2003/11/03 Kyungtae Lee
 *	- For VCD application, added build option "_APPLICATION" in
 *	  mpa_config.h. The system requirements of this application mode
 *	  are following:
 *		 MPEG-1 Audio (2-ch) Decoder System Requirements
 *		-------------------------------------------------------
 *		               7.1-ch decoder       2-ch decoder
 *		-------------------------------------------------------
 *		 Code Size       16,026 Bytes        5,442 Bytes
 *		 Table Size       9,222 Bytes        7,302 Bytes
 *		 X-Mem Size      15,309 LW           4,384 LW
 *		 Y-Mem Size      15,758 LW           5,164 LW
 *		-------------------------------------------------------
 *		 Total          118,449 Bytes       41,388 Bytes
 *		-------------------------------------------------------
 *		NOTE: Excluded audio in/out buffer(sequential buffer)
 *			  and S/PDIF buffer.
 *	- Against to all CRC error, clearing output pcm buffer of
 *	  current frame.
 *
 *	Revision 1.1e 2003/11/20 Kyungtae Lee
 *	- Scalefactors are changed to half scale. Scale-up is made in
 *	  subband synthesis part by "esla ma0".
 *
 *	Revision 1.1f 2004/02/20 Kyungtae Lee,
 *	- SPDIF output buffer changed, buffer pointer is transfered by
 *	  "_StreamBufOffset" parameter, added "output_digital" function.
 *	- Audio buffer map is changed, added enum "_MPEG2_DOWNMIX"
 *	  in "CH_Mode".
 *		8-channel mode (MPEG2_7CH)
 *		<-------  sample per each channel ------->
 *		+----+----+----+----+----+----+-----+----+------------------+
 *		| L  | Ls |  C | Lc | R  | Rs | LFE | Rc | ... next samples |
 *		+----+----+----+----+----+----+-----+----+------------------+
 *
 *		6-channel mode (MPEG2_5CH) without augmentation channel Lc/Rc
 *		<--  sample per each channel -->
 *		+----+----+----+----+----+-----+------------------+
 *		| L  | Ls |  C | R  | Rs | LFE | ... next samples |
 *		+----+----+----+----+----+-----+------------------+
 *
 *		downmix channel only
 *		<-- sample per each channel -->
 *		+----+----+----+----+----+----+------------------+
 *		| Lo | 0  |  0 | Ro |  0 |  0 | ... next samples |
 *		+----+----+----+----+----+----+------------------+
 *
 *	Revision 1.1g 2004/05/19 Kyungtae Lee,
 *	- Added "OUPUT_2CH" build option for Malata Car DVD Solution.
 *
 *	Revision 1.1h 2004/07/14 Kyungtae Lee,
 *	- Modified buffer limit checking by parameter "_InputBufferSize".
 *
 *	======================================================
 *	                 7.1-ch     5.1-ch      2-ch
 *	======================================================
 *	 Code Size    :  15,972		14,018		5,370   bytes
 *	 Table Size   :   9,222      9,222      7,302   bytes
 *	 XMEM Size    :  15,309     10,957      4,384   LW
 *	 YMEM Size    :  14,722     12,418      4,866   LW
 *	======================================================
 *	 Total memory : 115,287     71,451     40,422   bytes
 *	======================================================
 *
 *	Revision 1.1i, 2004/10/4, Kyungtae Lee,
 *  - When error syncword detected, frame size can be zero.
 *    In "copy_to_frame_buffer", added checking routine for
 *    main audio data is present or not. If main data is not
 *    retry to search syncword.
 *
 *	Revision 1.2a, 2004/10/13, Kyungtae Lee,
 *  - In MPEG-1 decoder, support MPEG-2 extension stream output
 *	  for SPDIF. For this mode added "check_mpeg2_extension"
 *	  function in 'output_digital' routine.
 *
 *	Revision 1.2b, 2004/10/29, Kyungtae Lee,
 *  - Added extension sync search routine for MPEG-1 SPDIF output.
 *
 *	2004/12/16, release v1.2b to H.S.Park for VCD application,
 */

.ifndef _MPA_H_
.defvar _MPA_H_


/****************************************************************/
/*                                                              */
/*				          I N C L U D E                         */
/*                                                              */
/****************************************************************/
.include 	"mpa_config.h"
.include 	"mpa_mem.h"
.include 	"mpa_reg.h"

.list off



/****************************************************************/
/*                                                              */
/*               G L O B A L  D E F I N I T I O N               */
/*                                                              */
/****************************************************************/


//SBF0					equ		0x46				/* RW 0x3f0046 32-bit */
//SBF1					equ		0x4A				/* RW 0x3f004A 32-bit */
SB0_RD					equ		0x1000				/* sbf0 fill command */
SB0_WR					equ		0x2000				/* sbf0 flush command */
SB1_RD					equ		0x0100				/* sbf1 fill command */
SB1_WR					equ		0x0200				/* sbf1 flush command */

SB0_FILL				equ		SB0_RD
SB0_FLUSH				equ		SB0_WR
SB1_FILL				equ		SB1_RD
SB1_FLUSH				equ		SB1_WR

SBF0_RING_MODE			equ		0x8000
SBF1_RING_MODE			equ		0x0800

SBF0_INT_MODE			equ		0x0001
SBF1_INT_MODE			equ		0x0002

SBF0_INT_CLR			equ		0x0010
SBF1_INT_CLR			equ		0x0001
SBF0_INT_PND			equ		0x0010
SBF1_INT_PND			equ		0x0001

SBF0_STATE_FILL			equ		0x1000
SBF0_STATE_FLUSH		equ		0x2000
SBF0_STATE_INIT			equ		0x4000
SBF0_STATE_READ			equ		0x5000
SBF0_STATE_WRITE		equ		0x6000

SBF1_STATE_FILL			equ		0x0100
SBF1_STATE_FLUSH		equ		0x0200
SBF1_STATE_INIT			equ		0x0400
SBF1_STATE_READ			equ		0x0500
SBF1_STATE_WRITE		equ		0x0600



/* Definition for debug module */
SKIP_PRINT_DEBUG		equ		36			/* next program count offset value */

BS_BUF_SIZE				equ		0x8000
EXT_BS_BUF_SIZE			equ		0x8000



/* start point of fraction channel buffer */

CH0_FRAC_BUFFER			equ		xmem_FRACTION+96*0		; L
CH1_FRAC_BUFFER			equ		xmem_FRACTION+96*1		; R
.if( _DECODER_TYPE != MPEG_1_AUDIO )
CH2_FRAC_BUFFER			equ		xmem_FRACTION+96*2		; C
CH3_FRAC_BUFFER			equ		xmem_FRACTION+96*3		; Ls
CH4_FRAC_BUFFER			equ		xmem_FRACTION+96*4		; Rs
.endif
.if( _DECODER_TYPE == MPEG_2_71CH )
CH5_FRAC_BUFFER			equ		xmem_FRACTION+96*5		; Lc
CH6_FRAC_BUFFER			equ		xmem_FRACTION+96*6		; Rc
.endif


PCM_SAMPLE_16BITS		equ		16
PCM_SAMPLE_24BITS		equ		24

BYTES_16BIT_SAMPLE		equ		2
BYTES_24BIT_SAMPLE		equ		4



/* Global definition */

.if( _DECODER_TYPE == MPEG_1_AUDIO )
NCH						equ		2
NMCH					equ		0
AUGCH					equ		0
DMCH					equ		0
MAX_CHANNEL				equ		NCH			/* stereo only */
TOTAL_CHANNEL			equ		NCH+NMCH+AUGCH+DMCH
.endif
.if( _DECODER_TYPE == MPEG_2_AUDIO )
NCH						equ		2
NMCH					equ		3
AUGCH					equ		0
DMCH					equ		2
MAX_CHANNEL				equ		NCH+NMCH+AUGCH		/* exclude LFE and downmix channels */
TOTAL_CHANNEL			equ		MAX_CHANNEL+DMCH+1	/* include LFE and downmix channels */
.endif
.if( _DECODER_TYPE == MPEG_2_71CH )
NCH						equ		2
NMCH					equ		3
AUGCH					equ		2
DMCH					equ		2
MAX_CHANNEL				equ		NCH+NMCH+AUGCH		/* exclude LFE and downmix channels */
TOTAL_CHANNEL			equ		MAX_CHANNEL+DMCH+1	/* include LFE and downmix channels */
.endif

SAMPLES_PER_FRAME		equ		1152		/* Layer I,II */
WINDOW_SIZE				equ		1024
SBLIMIT					equ		32
GRANULES				equ		12
PART_SIZE				equ		SBLIMIT
SCALE_RANGE				equ		64
SYNTH_SCALE				equ		2<<23
PART0					equ		0
PART1					equ		1
PART2					equ		2
PARTS					equ		3


/* Definition for header information */

LAYER_I					equ		1
LAYER_II				equ		2
LAYER_III				equ		3

S_FREQ_44kHz			equ		0
S_FREQ_48kHz			equ		1
S_FREQ_32kHz			equ		2

EMPHASIS_NONE			equ		0			/* none emphasis for DVD-Video audio part */

MPEG_MODE_STEREO		equ		0
MPEG_MODE_JSTEREO		equ		1
MPEG_MODE_DUAL			equ		2
MPEG_MODE_SINGLE		equ		3

ERROR_PROTECT_YES		equ		0
ERROR_PROTECT_NONE		equ		1

NO_SURROUND				equ		0
MONO_SURROUND			equ		1
STEREO_SURROUND			equ		2
SECOND_STEREO			equ		3

CENTER_NONE				equ		0
CENTER_PRESENT			equ		1
PHANTOM_CENTER			equ		3

MC_MATRIX_MODE_0		equ		0
MC_MATRIX_MODE_1		equ		1
MC_MATRIX_MODE_2		equ		2
MC_MATRIX_MODE_3		equ		3



/* Definition for MPEG base/ext bit stream */

BASE_SYNC_WORD			equ		0xfff
EXT_SYNC_WORD			equ		0x7ff
SYNC_WORD_LENGTH		equ		12			/* bits */
CRC_WORD_LENGTH			equ		16			/* bits */
CRC_CHECK_OPTION		equ		1			/* enable or disable */
EXT_FRAME_LENGTH		equ		11			/* bits */
MAX_MPG_FRAME_SIZE		equ		1728		/* max for layer II */
MAX_EXT_FRAME_SIZE		equ		2047		/* max for layer II */
BITS_PER_WORD			equ		16			/* 16-bit bit_buffer */
BASE_HEADER_SIZE		equ		4			/* bytes */
EXT_HEADER_SIZE			equ		5			/* bytes */
FRAC_GRANULE_SIZE		equ		MAX_CHANNEL*PARTS*SBLIMIT
CONTINUOUS_BIT			equ		1			/* mpeg 2 layer I */
STEREO					equ		2
MONO					equ		1
T0						equ		0
T1						equ		1
T2						equ		2
T3						equ		3
T4						equ		4
T5						equ		5
T6						equ		6


/* channel configuration - ISO/IEC 13818-3 chapter 0.2.3.2 */

UNDEFINE_CH_MD			equ		0
CH_CONF_32				equ		1		; 3/2 mode
CH_CONF_31				equ		2		; 3/1 mode
CH_CONF_30				equ		3		; 3/0 mode
CH_CONF_22				equ		4		; 2/2 mode
CH_CONF_21				equ		5		; 2/1 mode
CH_CONF_20				equ		6		; 2/0 mode
CH_CONF_10				equ		7		; 1/0 mode
CH_CONF_52				equ		8		; 5/2 mode	(7.1-channel mode)

⌨️ 快捷键说明

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