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

📄 antalias.s

📁 samsung 9908DVD源代码,
💻 S
字号:
;-----------------------------------------------------------
;		The following program will decoding MP3 bitstream
;		by S/W Algorithm
;			File Name: antalias.s
;			copyright jj,Park      1999.2.7
;	profile
;		1. 6/7//1999
;			- update all	
;-----------------------------------------------------------
.include	"mp3_def.h"
.include	"mp3_ext.h"

		MP3AntaliasSection
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
;		idl0		In/Out		the pointer of granule/channel's 
;								sideinformation
;
;	if(gr->window_switching_flag && gr->block_type == BLOCKTYPE_3WIN)
;		if(!gr->mixed_block_flag)
;			return;       						/* dont antialias short blocks */
;		else
;			topband = 2-1;  					/* only antialias the long part of a mixed block */
;	else
;		topband = NUM_SUBBANDS - 1;
;
;    /* for each subband-pair, do 8 alias-reduction butterflies */
;	upper = 17;
;	lower = 18;
;	for(subband = 0; subband < topband; subband++)
;	{
;		for(i = 0; i < 8; i++)
;		{
;			u = xr[upper];
;			l = xr[lower];
;		    xr[upper] = u * Granule_alias_cs[i] -
;			l * Granule_alias_ca[i];
;		    ISCALE(xr[upper]);
;		    xr[lower] = l * Granule_alias_cs[i] +
;			u * Granule_alias_ca[i];
;		    ISCALE(xr[lower]);
;		    upper--;
;		    lower++;
;		}
;		upper += 26;
;		lower += 10;
;	}
;}
;Status at this routine
;			d1	d0	 s1	  s0
;	sd0  = 11 | 2  | -1 | 1
;	sd1  = -1 | xx | -1 | 1
;	sd2  = xx | xx | xx | xx
;	sd3  = xx | xx | -15| 1
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DecodingAntialias::
	eld		a		,rpd0.index_windowSwitchingFlag				;a[23:16]<-windowSwitchingFlag
																;a[15:8]<-blockType
																;a[7:0]<-mixedBlockFlag
	esra	a													;c<-Area_Scalefactor
	etst	c		,t											;t<-mixedBlockFlag 
	efs8	a
	ld		r2		,#const_subBandNumber-2						;only subband 0-31	
	ecp		a		,#((1<<16)|(const_shortBlock<<8))>>1			;short&switching
	enop
	bra		ec0		,LongBlockAntialias							;ec0:nz
	
	ld		r2		,#0											;only subband 0,1(long block)	
	bra		ec2		,LongBlockAntialias							;ec2=t flag

	ret															;pure short
LongBlockAntialias
	eld		sd0		,#((11&0fh)<<12)|((2&0fh)<<8)|((-1&0fh)<<4)|(1<<0)				;insert
	eld		sd1		,#(((-2&0fh)<<12)|(1<<8)|((-1&0fh)<<4)|(1<<0))										;insert
	eld		sd3		,#((-1&0fh)<<12)|((1&0fh)<<8)|((-15&0fh)<<4)|((1&0fh)<<0)		;insert

	es		xsd													;enable rp0/rp3 extention	

	eld		sd0		,#(((11&0f0h)>>4)<<12)|(((2&0f0h)>>4)<<8)|(((-1&0f0h)>>4)<<4)|(((1&0f0h)>>4)<<0)	;insert
	eld		sd3		,#(((-1&0f0h)>>4)<<12)|(((1&0f0h)>>4)<<8)|(((-15&0f0h)>>4)<<4)|(((1&0f0h)>>4)<<0)		;insert

	eld		c		,rpd1.index_GptrCurrentDecodingData
	eld		rp0		,c

	erpn	rp0		,#17											;input buffer pointer
	eld		rp1		,rp0
	erps	rp0+s0												;rp0<-x[18]	
	eld		rp3		,#tbl_antiCaCs
;round0
	eld		y0		,@rp3+s0											;y0<-cs0	
LongBlockAntialiasLoop	
	eld		x0		,@rp1+s1									;x0<-x17
	emul	x0y0	,x1		,@rp0+s0,y1		,@rp3+s0			;p<-x17*cs0	,x1<-x18, y1<-ca0


	emld	ma0		,x1y1										; ma0<-x17*cs0,p<-x18*ca0
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x17*cs0-x18*ca0
																;p<-x17*ca0,x0<-x16
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[17]
																; ma0<-x17*ca0
	emul	x1y0	,y0		,@rp3+s0							;p<-x18*cs0, y0<-cs1
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s0	;ma0a<-x17*ca0+x18*cs0, p<-x16*cs1
																;x1<-x19,y1<-ca1
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[18], ma0<-x16*cs1
	
;round1	
	emul	x1y1												;p<-x19*ca1
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x16*cs0-x19*ca0
																;p<-x16*ca0,x0<-x15
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[16]
																; ma0<-x16*ca1
	emul	x1y0	,y0		,@rp3+s0							;p<-x19*cs1
																;y0<-cs2
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s0	;ma0a<-x16*ca1+x19*cs1, p<-x15*cs2
																;x1<-x20,y1<-ca2
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[19]	

;round2	
	emul	x1y1												;p<-x19*ca1
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x16*cs1-x19*ca1
																;p<-x16*ca1,x0<-x15
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[15]
																; ma0<-x16*ca1
	emul	x1y0	,y0		,@rp3+s0							;p<-x19*cs1
																;y0<-cs2
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s0	;ma0a<-x16*ca1+x19*cs1, p<-x15*cs2
																;x1<-x20,y1<-ca2
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[20]	

;round3	
	emul	x1y1												;p<-x20*ca2
	emsb	ma0		,x0y1	,x0		,@rp1+s0							; ma0<-x15*cs2-x20*ca2
																;p<-x15*ca2,x0<-x14
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[14]
																; ma0<-x15*ca2
	emul	x1y0	,y0		,@rp3+s0							;p<-x21*cs2
																;y0<-cs3
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s0	;ma0a<-x15*ca1+x20*cs2, p<-x14*cs3
																;x1<-x21,y1<-ca3
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[21]	
;round4	
	emul	x1y1												;p<-x19*ca1
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x16*cs0-x19*ca0
																;p<-x16*ca0,x0<-x15
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[13]
																; ma0<-x16*ca1
	emul	x1y0	,y0		,@rp3+s0							;p<-x19*cs1
																;y0<-cs2
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s0	;ma0a<-x16*ca1+x19*cs1, p<-x15*cs2
																;x1<-x20,y1<-ca2
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[22]	
;round5	
	emul	x1y1												;p<-x19*ca1
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x16*cs0-x19*ca0
																;p<-x16*ca0,x0<-x15
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[12]
																; ma0<-x16*ca1
	emul	x1y0	,y0		,@rp3+s0							;p<-x19*cs1
																;y0<-cs2
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s0	;ma0a<-x16*ca1+x19*cs1, p<-x15*cs2
																;x1<-x20,y1<-ca2
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[23]	
;round6	
	emul	x1y1												;p<-x19*ca1
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x16*cs0-x19*ca0
																;p<-x16*ca0,x0<-x15
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[11]
																; ma0<-x16*ca1
	emul	x1y0	,y0		,@rp3+s0							;p<-x19*cs1
																;y0<-cs2
	emad	ma0		,x0y0	,x1		,@rp0+s1,y1		,@rp3+s1	;ma0a<-x16*ca1+x19*cs1, p<-x15*cs2
																;x1<-x25,y1<-ca7, rp3<-&cs[0]
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d0,ma0							;save x[24]	

;round7	
	emul	x1y1												;p<-x19*ca1	
	emsb	ma0		,x0y1	,x0		,@rp1+s0					; ma0<-x10*cs7-x25*ca7
																;p<-x10*ca7,dummy x0<-x10
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp1+d1,ma0							;save x[10]
																; ma0<-x16*ca1
	emul	x1y0	,y0		,@rp3+s0							;p<-x19*cs1, y0<-cs0
	eadd	ma0		,p		,x1		,@rp0+s1					; ma0<-x16*ca1+x19*cs1
																;dummy x1<-x36
	ernd	ma0													;insert 1999/6/25
	eld		ma0		,p		,@rp0+d1,ma0							;save x[25]	
																;rp0 += 11	
	eld		rp1		,rp0
	erps	rp1+s1
	cmp		eq		,r2		,#0
	brfd	LongBlockAntialiasLoop
	dec		r2

	er		xsd													;disable rp0/rp3 extention	

	ret

	end
	
	

⌨️ 快捷键说明

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