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

📄 reorder.s

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

		MP3ReorderSection
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;		idl0		In/Out		the pointer of granule/channel's 
;								sideinformation
;
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DecodingReordering::
	eld		b		,rpd0.index_blockType						;b[23:16]<-windowSwitchingFlag
																;b[15:8]<-blockType
																;b[7:0]<-mixedBlockFlag
	esra	b													;c<-mixedBlockFlag
	etst	nc		,t														
	efs8	b	
	ecp		b		,#((1<<16)|(const_shortBlock<<8))>>1			;short&switching
	enop
	bra		ec0		,ReorderingRet								;ec0:nz

	eld		sd0		,#((-1&0fh)<<12)|(1<<8)|((-1&0fh)<<4)|(1<<0)
	eld		sd2		,#((-1&0fh)<<12)|(3<<8)|((-1&0fh)<<4)|(1<<0)
	eld		sd3		,#((-1&0fh)<<12)|(1<<8)|((-1&0fh)<<4)|(2<<0)		
	esd1	s0		,#1	

	eld		c		,rpd1.index_GptrCurrentDecodingData			;input buffer pointer
	eld		rp0		,c

	eld		c		,rpd1.index_GShortSfBandIndex				;short sfb index low	
	eld		rp3		,c
///caution
	ld		r3		,#12											;0,1,2,3,4,5,6,7,8,9,10,11,12	
	enop
	bra		ec2		,ShortSwitchingReordering					;check if pure short
	
	erpn	rp0		,#36											;pass long block(36-freq)
	erpn	rp3		,#3											;3's band	
	ld		r3		,#9											;band:3,4,5,6,7,8,9,10,11,12	
ShortSwitchingReordering
	erpd	rp3+d0
	eld		b		,@rp3+s1										;b<-band->s[0] or s[3],rp3-=1	
ShortSwitchingSfbLoop
	eld		c		,@rp3+s0
	esub	b		,c										;b<-s[i+1]-band->s[i], ,rp3+=2	
	eadd	b		,#-1
	eld		rp1		,#Area_reorderTempBuffer						;temporary buffer
	eld		c		,rp0
	eld		rpd1.index_LRPxBackupBuffer		,c	

	ld		r7		,#2											;window size
ShortSwitchingWindowLoop
	ecld	r6		,b											;r1 <- freq.line	
	eld		rp2		,rp1											;rp2<-3*band->s[i]+win	
ShortSwitchingFreqLoop	
	eld		a		,@rp0+s0										;a<-[sfb][win][freq]	
	bnzd	r6		,ShortSwitchingFreqLoop	
	eld		@rp2+d0	,a											;rp2 += 3	
	bnzd	r7		,ShortSwitchingWindowLoop				;window loop	
	erps	rp1+s0												;rp1 += 1

	eld		c		,rpd1.index_LRPxBackupBuffer
	eld		rp0		,c
	eld		rp2		,#Area_reorderTempBuffer						;temporary buffer

	ld		r7		,#2
	ecld	r6		,b
ShortSwitchingMoveLoop	
	eld		a		,@rp2+s0
	bnzd	r6		,ShortSwitchingMoveLoop	
	eld		@rp0+d0	,a
	bnzd	r7		,ShortSwitchingMoveLoop
	ecld	r6		,b
	eld		b		,@rp3+s1									;dummy due to delay	

	cmp		eq		,r3		,#0
	brfd	ShortSwitchingSfbLoop	
	dec		r3
ReorderingRet

	ret
	
	end
	
	

⌨️ 快捷键说明

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