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

📄 mpa.h

📁 三星ic 9980的源代码. 718版.
💻 H
📖 第 1 页 / 共 3 页
字号:
	secInputBufferPtr_calm

/* saved input buffer pointer and limit */

_buffer_ptr::			dsw		16

.else


secCalmReservedAreaX_calm section udata, overlay, abs 0x200000
	secCalmReservedAreaX_calm

_calm_reserved0::		dsw		0x4000


secCalmReservedAreaY_calm section udata, overlay, abs 0x220000
	secCalmReservedAreaY_calm

_calm_reserved1::		dsw		0x4000

.endif /* .if( 1 ) */
/*                                                                        */
/**************************************************************************/

.else

/****************************************************************/
/*                                                              */
/*                E X T E R N  V A R I A B L E S                */
/*                                                              */
/****************************************************************/

/* variables */

.extern 	header_info, layer_info,
.extern 	bit_alloc, scfsi, scale_index,
.extern 	fraction, synthesis_buffer, synth_dct32
.extern 	pcm_ch_buffer
.extern 	backup_register, bs_status, _buffer_ptr, table_area,
.if( _DECODER_TYPE != MPEG_1_AUDIO )
.extern 	tc_alloc, dyn_cross_mode, dyn_second_stereo,
.extern 	aug_tc_alloc, aug_dyn_cross_mode,
.extern 	pcm_dm_buffer, pcm_lfe_buffer
.extern 	lfe_fraction,
.extern 	v0, v1, v2, w1, w2
//.extern 	mc_prediction, mc_predsi, mc_delay_comp, mc_pred_coeff, pred_buf,
.endif


/* tables */

.extern 	nbal_table, steps_table, bits_table, allocation_tables
.extern 	sbgr_table, scalefactor, separate_codes
.extern 	I_MSB_position, I_dequant_coeff_1, I_dequant_coeff_2
.extern 	II_MSB_position, II_dequant_coeff_D, II_dequant_coeff_C
.extern 	synthesis_window_Di, dct_even_even_8x8, dct_even_odd_8x8, dct_odd_16x16
.if( _DECODER_TYPE != MPEG_1_AUDIO )
.extern 	mc_allocation_table,
.extern 	tc_table, aug_tc_table, DRC_table
.extern 	denormalisation_factor, aug_denormalisation_factor
.extern 	aug_dematrix_factor, downmix_factor, aug_downmix_factor
.extern 	lfe_scale_factor, lfe_filter_coef
//.extern 	pred_coef_table, pred_coef_tblptr
.endif

.endif /* ifdef _MPA_MEMALLOC */



/***********************[ PM section definition ]**************************/
/*                                                                        */
.if( 1 )
secFILE_mpa_frame 		section code, abs PM_CODE_START
secFILE_mpa_common 		section code, afteraddr PM_CODE_START
secFILE_mpa_crc 		section code, afteraddr PM_CODE_START
secFILE_mpa_dematrix	section code, afteraddr PM_CODE_START
secFILE_mpa_denorm 		section code, afteraddr PM_CODE_START
secFILE_mpa_downmix 	section code, afteraddr PM_CODE_START
secFILE_mpa_drc 		section code, afteraddr PM_CODE_START
secFILE_mpa_error 		section code, afteraddr PM_CODE_START
secFILE_mpa_layer1 		section code, afteraddr PM_CODE_START
secFILE_mpa_layer2 		section code, afteraddr PM_CODE_START
secFILE_mpa_layer2aug 	section code, afteraddr PM_CODE_START
secFILE_mpa_layer2mc 	section code, afteraddr PM_CODE_START
secFILE_mpa_lfe 		section code, afteraddr PM_CODE_START
secFILE_mpa_output 		section code, afteraddr PM_CODE_START
secFILE_mpa_pred 		section code, afteraddr PM_CODE_START
secFILE_mpa_synth 		section code, afteraddr PM_CODE_START
.else
secFILE_mpa_frame 		section code
secFILE_mpa_common 		section code
secFILE_mpa_crc 		section code
secFILE_mpa_dematrix	section code
secFILE_mpa_denorm 		section code
secFILE_mpa_downmix 	section code
secFILE_mpa_drc 		section code
secFILE_mpa_error 		section code
secFILE_mpa_layer1 		section code
secFILE_mpa_layer2 		section code
secFILE_mpa_layer2aug 	section code
secFILE_mpa_layer2mc 	section code
secFILE_mpa_lfe 		section code
secFILE_mpa_output 		section code
secFILE_mpa_pred 		section code
secFILE_mpa_synth 		section code
.endif
/*                                                                        */
/* The code size of MPEG-2 multichannel decoder is [         Bytes].      */
/**************************************************************************/

/******************[ XYMEM tables section definition ]*********************/
/*                                                                        */
secSynthWindow_mac  	section idata, word3, overlay, abs ymem_WINDOW_TBL
secDCT32Coeff_mac   	section idata, word3, overlay, abs ymem_DCT32_TBL
secDecodeTables_mac 	section idata, word3, overlay, abs ymem_TABLES
secSepCodes_mac  		section idata, word3, overlay, abs ymem_SEPCODE_TBL
secDRCTable_mac     	section idata, word3, overlay, abs ymem_DRC_TBL
secLfeSteps_mac  		section idata, word3, overlay, abs ymem_LFE_TBL
/*                                                                        */
/* Size of tables in Y memory area is [         Bytes].                   */
/**************************************************************************/




/* "C" variables */

.extern 	_fp_mpg, _fp_ext, _nbytes


/* Extern "C" functions */

.extern 	_smReadFile, _fread


/* Common debug functions */

.extern		_print_fraction


.if( _DEBUG_BITS == TRUE )
.extern 	_bit_pos
;.extern 	_bit_pos_mc
.endif



/* common.s */
.extern 	getbits
.extern 	copy_decode_table
.extern 	MPG_seek_sync_base
.extern 	EXT_seek_sync_ext
.extern 	MPG_parse_base_header
.extern 	EXT_parse_ext_header
.extern 	MC_parse_mc_header

/* layer?.s */
.extern 	MPG_layer_I_decode
.extern 	MPG_layer_II_decode
//.extern 	MPG_II_decode_sample
//.extern 	MPG_II_denormalize_sample
.extern 	MC_layer_II_decode
.extern 	AUG_layer_II_decode
//.extern 	MC_II_denormalize_sample
.extern 	MC_II_dematricing
.extern 	MC_II_denormalizing
.extern 	MC_II_lfe_dequantize
.extern 	MC_AUG_dematricing
.extern 	MC_AUG_denormalizing

/* synth.s */
.extern 	MPG_synthesis_subband

/* downmix.s */
.extern 	MC_II_downmix_bypass
.extern 	MC_II_downmix_5ch_to_2ch
.extern 	AUG_II_downmix_7ch_to_2ch
.extern 	AUG_II_downmix_7ch_to_5ch

/* audio_out.s */
.extern 	output_pcm_sample
.extern 	output_digital

/* lfe.s */
.extern 	expand_lfe_sample
.extern 	lfe_filter

/* drc.s */
.extern		dynamic_range_control

/* crc.s */
.extern		MPG_I_CRC_calc
.extern		MPG_II_CRC_calc
.extern 	recover_CRC_error
.extern		MC_error_check
.extern 	MC_EXT_error_check
.extern		AUG_error_check

/* error.s */
.extern		mpa_error_process
.extern		print_fraction

/* Miscellaneous */
.extern 	__xymemclr
.extern 	__xymemset
.extern 	__flush_data
.extern 	__pushRegs
.extern 	__popRegs
.extern 	__cache_simul_on
.extern 	__cache_simul_off



/****************************************************************/
/*                                                              */
/*                  M A C R O  F U N C T I O N S                */
/*                                                              */
/****************************************************************/
/* Macro functions */
GETBITS			.macro
				esft		sr, a
				esub		a, sa
				ecp			a, #0
				enop
				brad		ec2, ret_bits
				eld			d, sg
				eld			sr, @rp3				; no delay in SB
				esft		sr, a
				eadd		d, sg
				esub		a, #BITS_PER_WORD		; 16
ret_bits		eneg		a
				eld			sa, a
				.endm

mGETBITS		.macro
				esft		sr, a
				esub		a, sa
				ecp			a, #0
				enop
				brad		ec2, %f1
				eld			b, sg
				eld			sr, @rp3				; no delay in SBF
				esft		sr, a
				eadd		b, sg
				esub		a, #BITS_PER_WORD		; 16
%1				eneg		a
				eld			sa, a
				.endm

mDEQUANT_SAMPLE	.macro
				eld			rp3, rp2
				eld			a, @rp3+s0
				esft		b, a						; b= sample
				etst		c, ec3						; check msb is +/-
				brad		ec3, %f1
				eld			b, #0						;  0.0
				ecld		bh, r0						; -1.0
%1				eld			a, #-1
				esft		sr, a
				eadd		b, sr						; 2's complement sample
				eld			ma0, @rp3+s0				; II_dequant_coeff_D
				eadd		b, ma0, y1, @rp3+s0			; II_dequant_coeff_C
				eld			x0, b
				emul		x0y1
				eld			@rp0+d1, p					; dequantized sample[part]
				.endm

mDIVIDE			.macro		dividend, divisor
				er			nq
				ecr			ma0
				eld			ma0l, dividend
				eld			p, divisor
				esla		ma0
				ld			r7, #23
loop			bnzd		r7, loop
				edivq		ma0, p
				eresr		ma0, p
				eld			dividend, ma0l				; quotient
				esra		ma0
				eld			divisor, ma0				; remainder
				.endm


mSBLOFFSET		.macro		offset, sbf, mode
				ld			a8, #SFR_BASE				/* sbl0off or sbl1off */
				ld			r0, #mode					/* fill or flush command*/
.if( (mode==SB0_RD) || (mode==SB1_RD) )
				ldw			@[a8+sbf], offset
				ldw			@[a8+rSBFCON], r0
.else	/* SB0_WR or SB1_WR */
				ldw			@[a8+rSBFCON], r0
				ldw			@[a8+sbf], offset
.endif
				.endm

mRETURN			.macro	value
				ld			r2, #value
				.endm


mFREAD			.macro		ptr, size, fp, offset
				jsr			__cache_simul_off
				push		a10
				ldw			a10, @[a10+ptr]
				add			a10, #offset
				ld			a12, #fp
				sub			size, #offset
				ld			r2, size					; a number of bytes
				ld			r3, #0
				jsr			__fread						; return r3:r2	(nbytes)
chk_eof			cmp			eq, size, r2
				brt			2
				ld			r2, #__EOF__
				pop			a10
				jsr			__cache_simul_on
				.endm

mCONVLENDIAN 	.mac macreg		; macreg = a,b,c,d
.ifdef LITTLE_ENDIAN									; default: big endian format
				ecld		r0, macreg
				ld			r1, r0
				slb			r1
				srb			r0
				or			r0, r1
				ecld		macreg, r0
.endif
				.endm

ebra	.macro cond, label
	.if 1 //( _ADM_VERSION == ADM2E )
	enop
	.endif
	bra		cond, label
.endm

ebrad	.macro cond, label
	.if 1 //( _ADM_VERSION == ADM2E )
	enop
	.endif
	brad	cond, label
.endm

.endif /* _MPA_H_ */

.list on

⌨️ 快捷键说明

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