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

📄 decl2lib.s

📁 samsung 9908DVD源代码,
💻 S
📖 第 1 页 / 共 3 页
字号:
	eld		a		,#32
	eld		rpd0.index_Gbound	,a

	ldw		r1		,@[a13+Index_FrameBitRate]				//2002
	ecld	a		,r1										//2002
	efz8	a												//2002
	eld		rpd0.index_Gbitrate	,a							//2002
	
	jmp		condi_done										
next_condi1
	cmp		eq		,r0		,#1
	brf		next_condi2
	
	eld		a		,#2
	eld		rpd0.index_Gnch	,a	
	
	eld		a		,rpd0.index_GmodeExt
	eadd	a		,#1
	esla	a
	esla	a
	eld		rpd0.index_Gbound	,a
	
	ldw		r1		,@[a13+Index_FrameBitRate]		
	ecld	a		,r1
	efz8	a
	esra	a
	eld		rpd0.index_Gbitrate	,a
	jmp		condi_done
next_condi2
	eld		a		,#2
	eld		rpd0.index_Gnch		,a
	eld		a		,#32
	eld		rpd0.index_Gbound	,a	
	
	ldw		r1		,@[a13+Index_FrameBitRate]		
	ecld	a		,r1
	efz8	a
	esra	a
	eld		rpd0.index_Gbitrate	,a	
condi_done	

	eld		a		,rpd1.index_Glsf
	ecld	r0		,a
	cmp		eq		,r0		,#1
	brt		MPG2_table

	eld		a		,rpd0.index_Gbitrate	
	ecld	r1		,a	

	eld		a		,rpd1.index_GOrgSampFreq
	ecld	r0		,a
	cmp		eq		,r0		,#0
	brf		none44k
	
	cmp		ge		,r1		,#56
	brt		over56_44k
	
	eld		a		,#tbl_alloc2
	eld		c		,#tbl_nbal2
	eld		d		,#8	
	jmp		table_selected
over56_44k
	cmp		ge		,r1		,#96
	brt		over96_44k
	
	eld		a		,#tbl_alloc0
	eld		c		,#tbl_nbal0
	eld		d		,#27	
	jmp		table_selected
over96_44k
	eld		a		,#tbl_alloc1
	eld		c		,#tbl_nbal1
	eld		d		,#30		
	jmp		table_selected
none44k	
	cmp		eq		,r0		,#1
	brf		none48k

	cmp		ge		,r1		,#56
	brt		over56_48k
	
	eld		a		,#tbl_alloc2
	eld		c		,#tbl_nbal2
	eld		d		,#8	
	jmp		table_selected
over56_48k	
	eld		a		,#tbl_alloc0
	eld		c		,#tbl_nbal0
	eld		d		,#27	
	jmp		table_selected	
none48k
	cmp		ge		,r1		,#56
	brt		over56_32k
	
	eld		a		,#tbl_alloc3
	eld		c		,#tbl_nbal3
	eld		d		,#12	
	jmp		table_selected
over56_32k
	cmp		ge		,r1		,#96
	brt		over96_32k
	
	eld		a		,#tbl_alloc0
	eld		c		,#tbl_nbal0
	eld		d		,#27	
	jmp		table_selected
over96_32k
	eld		a		,#tbl_alloc1
	eld		c		,#tbl_nbal1
	eld		d		,#30
	jmp		table_selected
MPG2_table	
	eld		a		,#tbl_allocMPG2
	eld		c		,#tbl_nbalMPG2
	eld		d		,#30
table_selected
	eld		rpd0.index_GBitAllocIndex	,a
	eld		rpd0.index_Gnbal	,c			
	eld		rpd0.index_Gsblimit	,d
	
	nop
	ret
//////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////
BitAllocationL2::
	eld		a		,rpd0.index_Gbound
	ecld	r0		,a
	cmp		eq		,r0		,#32
	brf		intensity_stereo
	eld		a		,rpd0.index_Gsblimit
	eld		rpd0.index_Gbound,a	
intensity_stereo	

	eld		rp0		,#Area_bitalloc
	eld		a		,rpd0.index_Gnbal
	eld		rp3		,a


	eld		a		,rpd0.index_Gbound				// normal
	ecld	r6		,a
	dec		r6
BitAllocLoopInit
	eld		c		,@rp3+s0
	eld		sa		,c
	
	eld		a		,rpd0.index_Gnch
	ecld	r7		,a
	ld		r5		,r7								// nch backup
	dec		r7
BitAllocLoop							
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14	
	eld		@rp0+d0	,sg								// LRLRLR.....
	
	bnzd	r7		,BitAllocLoop
	nop
	bnzd	r6		,BitAllocLoopInit
	nop

	eld		a		,rpd0.index_Gbound				// intensity
	eld		c		,rpd0.index_Gsblimit
	ecld	r0		,a
	ecld	r1		,c
AllocBound_chk	
	cmp		eq		,r0		,r1
	brt		none_intensityAlloc
BitAllocIntensityLoop	
	eld		a		,@rp3+s0
	eld		sa		,a						
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14	
	eld		@rp0+d0	,sg								// Left Channel

	cmp		eq		,r5		,#2
	brf		mono_alloc
	eld		@rp0+d0	,sg								// Right Channel		
mono_alloc		
	inc		r0	
	bra		AllocBound_chk				
none_intensityAlloc	
	ret
//////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////
ScfsiL2::
	eld		rp0		,#Area_scfsi
	eld		rp2		,#Area_bitalloc

	eld		a		,rpd0.index_Gsblimit
	ecld	r6		,a
	dec		r6
	eld		sa		,#2
ScfsiLoopInit
	eld		a		,rpd0.index_Gnch
	ecld	r7		,a
	dec		r7
ScfsiLoop	
	eld		a		,@rp2+s0
	ecp		a		,#0
	enop
	bra		ec0		,alloc_zero
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14	
	eld		@rp0+d0	,sg								// LRLRLR....
	bra		alloc_zeroEnd
alloc_zero	
	eld		a		,#0
	eld		@rp0+d0	,a								// LRLRLR....
alloc_zeroEnd	
	bnzd	r7		,ScfsiLoop	
	nop
	bnzd	r6		,ScfsiLoopInit	
	nop
	
	ret
//////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////
ScalefactorsL2::
	eld		rp0		,#Area_bitalloc
	eld		rp2		,#Area_scalefactor0
	eld		rp3		,#Area_scfsi

	eld		a		,rpd0.index_Gnch
	ecld	r7		,a
	dec		r7
	eld		sa		,#6
ScalefactorLoopInit	
	eld		a		,rpd0.index_Gsblimit
	ecld	r6		,a
	dec		r6
ScalefactorLoop	
	eld		a		,@rp0+s0
	ecld	r1		,a
	cmp		eq		,r1		,#0
	brt		Scalefactor_zero	
	
	eld		rpd1.index_Grpi	,rp0
		
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14
	eld		a		,#tbl_scalefactor
	efz8	a
	eadd	a		,sg
	
	eld		rp0		,a
	eld		a		,@rp0
	eld		@rp2+d0	,a
	
	eld		a		,@rp3+s0
	ecld	r1		,a
	
	cmp		eq		,r1		,#0
	brf		Scfsi0

	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14
	eld		a		,#tbl_scalefactor
	efz8	a
	eadd	a		,sg
	
	eld		rp0		,a
	eld		a		,@rp0	
	erpn	rp2		,#63
	eld		@rp2+d0	,a
	
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14
	eld		a		,#tbl_scalefactor
	efz8	a
	eadd	a		,sg	
	eld		rp0		,a
	eld		a		,@rp0	
	erpn	rp2		,#63
	eld		@rp2+d0	,a		
	
	erpn	rp2		,#-64*2	

	jmp		Scalefactor_zeroEnd	
Scfsi0
	cmp		eq		,r1		,#1
	brf		Scfsi1

	erpn	rp2		,#-1
	eld		a		,@rp2+s0
	erpn	rp2		,#63
	eld		@rp2+d0	,a	
	
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14
	eld		a		,#tbl_scalefactor
	efz8	a
	eadd	a		,sg
	eld		rp0		,a
	eld		a		,@rp0	
	erpn	rp2		,#63
	eld		@rp2+d0	,a		
	
	erpn	rp2		,#-64*2	
	
	jmp		Scalefactor_zeroEnd	
Scfsi1
	cmp		eq		,r1		,#2
	brf		Scfsi2
	
	erpn	rp2		,#-1
	eld		a		,@rp2+s0
	erpn	rp2		,#63
	eld		@rp2+d0	,a
	erpn	rp2		,#63
	eld		@rp2+d0	,a		
	
	erpn	rp2		,#-64*2	
	
	jmp		Scalefactor_zeroEnd	
Scfsi2
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14
	eld		a		,#tbl_scalefactor
	efz8	a
	eadd	a		,sg
	
	eld		rp0		,a
	eld		a		,@rp0	
	erpn	rp2		,#63
	eld		@rp2+d0	,a
	erpn	rp2		,#63
	eld		@rp2+d0	,a			
	
	erpn	rp2		,#-64*2	
	
	jmp		Scalefactor_zeroEnd	
Scalefactor_zero	
	eld		rpd1.index_Grpi	,rp0
	erpn	rp3		,#1

	eld		a		,#0
	eld		@rp2+d0	,a
	erpn	rp2		,#63
	eld		@rp2+d0	,a
	erpn	rp2		,#63
	eld		@rp2+d0	,a			
	
	erpn	rp2		,#-64*2
Scalefactor_zeroEnd	
	eld		rp0		,rpd1.index_Grpi	
	cmp		eq		,r6		,#0
	brfd	ScalefactorLoop	
	dec		r6		

	cmp		eq		,r7		,#0
	brfd	ScalefactorLoopInit	
	dec		r7
	
	ret
//////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////	
DequantizerL2::
	er		me1
	eld		rp0		,#Area_bitalloc

	eld		a		,rpd0.index_Ggr
	esra	a
	esra	a
	
	eld		x0		,a
	eld		y0		,#64
	emul	x0y0
	eld		a		,pl
	esra	a
	eadd	a		,#Area_scalefactor0
	eld		rp2		,a
		
	eld		a		,rpd0.index_Ggr
	eld		d		,rpd1.index_GranuleLoop
	ecld	r0		,d
	cmp		eq		,r0		,#1
	brt		first_gr
	eadd	a		,#-6							//
first_gr	
	eld		x0		,a
	eld		y0		,#192
	emul	x0y0
	eld		a		,pl
	esra	a	
	eadd	a		,#Area_fraction
	eld		rp3		,a
		
	ld		r3		,#16
	ld		r4		,#0								// sb
	ld		r5		,#0								// ch Flag
	eld		d		,#0								// 16bit data temp
	
	eld		a		,rpd0.index_Gnch
	ecld	r2		,a
	dec		r2
DequantizerLoopInit
	eld		a		,rpd0.index_Gbound				// normal
	ecld	r6		,a
	dec		r6
DequantizerLoop
	eld		a		,@rp0+s0
	ecld	r0		,a
	cmp		eq		,r0		,#0
	brt		Dequantizer_zero			
		
	ld		r0		,r4
	mul		uu		,r0		,r3
	ecld	d		,r0
	efz8	d
	eadd	a		,d

	eld		rpd1.index_Grpi	,rp1
	eld		d		,rpd0.index_GBitAllocIndex			
	eld		rp1		,d
	erpn	rp1		,a
	eld		c		,@rp1+s0						// c -> mpi
		
	eld		a		,rpd0.index_Gnch					//2002 
	ecld	r0		,a									//2002
	cmp		eq		,r0		,#2							//2002
	brt		stereo_sb_skip								//2002
	
	inc		r4											//2002
	
	jmp		sb_skipEnd									//2002
stereo_sb_skip											//2002
	cmp		eq		,r5		,#0
	brt		sb_skip	
	ld		r5		,#0	
	inc		r4
		
	jmp		sb_skipEnd		
sb_skip	
	ld		r5		,#1	
sb_skipEnd	


	eld		rp1		,#tbl_bpc
	erpn	rp1		,c
	eld		a		,@rp1+s0	
	eld		rpd0.index_Gno_ofbits	,a

	eld		rp1		,#tbl_c	
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Gc	,a
	
	eld		rp1		,#tbl_d
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Gd	,a	

	eld		rp1		,#tbl_dd
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Gdd	,a	

	eld		rp1		,#tbl_nli
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Gnlevels		,a

	eld		rp1		,#tbl_grouping
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Ggrouping	,a	
	
	eld		rp1		,rpd1.index_Grpi			
	
	ecp		a		,#0
	enop
	bra		ec0		,grouping_zero
	
//	eld		d		,a
	eld		ma1		,a
	eld		a		,rpd0.index_Gno_ofbits
	eld		sa		,a
	
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14
	
	eld		a		,sg

	eld		p		,ma1
	push	a14
	jsr		Div24
	pop		a14	
	eld		Area_samplebuf	,d

	eld		p		,ma1
	push	a14
	jsr		Div24
	pop		a14	
	eld		Area_samplebuf+1,d
	
	eld		p		,ma1
	push	a14
	jsr		Div24
	pop		a14	
	eld		Area_samplebuf+2,d		

	eld		rpd1.index_Grpi	,rp0
	eld		rp0		,#Area_samplebuf

	eld		a		,@rp2+s0
	eld		rpd0.index_GdequanScale	,a
		
	ld		r7		,#3-1
grp_quantizer	
	push	a14
	jsr		DequantizerL2_Sub1
	pop		a14

	eld		@rp3+d0	,a
	erpn	rp3		,#63
	bnzd	r7		,grp_quantizer
	nop

	erpn	rp3		,#-191	
	eld		rp0		,rpd1.index_Grpi	

	jmp		Dequantizer_zeroEnd	
grouping_zero
	eld		a		,rpd0.index_Gno_ofbits
	eld		sa		,a
	
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14	
	eld		a		,sg
	eld		Area_samplebuf	,a

	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14	
	eld		a		,sg
	eld		Area_samplebuf+1,a
	
	push	a14
	jsr		GetNBitFromBitstreamOnlyMP3			
	pop		a14	
	eld		a		,sg
	eld		Area_samplebuf+2,a		

	eld		rpd1.index_Grpi	,rp0
	eld		rp0		,#Area_samplebuf
	
	eld		a		,@rp2+s0
	eld		rpd0.index_GdequanScale	,a
		
	ld		r7		,#3-1
Notgrp_quantizer	
	push	a14
	jsr		DequantizerL2_Sub2
	pop		a14

	eld		@rp3+d0	,a
	erpn	rp3		,#63
	bnzd	r7		,Notgrp_quantizer
	nop

	erpn	rp3		,#-191	
	eld		rp0		,rpd1.index_Grpi
	
	jmp		Dequantizer_zeroEnd	
Dequantizer_zero
	eld		a		,#0
	eld		@rp3+d0	,a
	erpn	rp3		,#63
	eld		@rp3+d0	,a
	erpn	rp3		,#63
	eld		@rp3+d0	,a	
	erpn	rp3		,#-128	
//
	erps	rp2+s0							// scalefactor address increase
//	
	eld		a		,rpd0.index_Gnch					//2002 
	ecld	r0		,a									//2002
	cmp		eq		,r0		,#2							//2002
	brt		stereo_sb_skip2								//2002
					
	inc		r4											//2002			
		
	jmp		sb_skipEnd2									//2002
stereo_sb_skip2											//2002

	cmp		eq		,r5		,#0
	brt		sb_skip2	
	ld		r5		,#0	
	inc		r4
	jmp		sb_skipEnd2		
sb_skip2	
	ld		r5		,#1	
sb_skipEnd2
Dequantizer_zeroEnd	
	cmp		eq		,r6		,#0
	brfd	DequantizerLoop
	dec		r6
	
	cmp		eq		,r2		,#0
	brfd	DequantizerLoopInit
	dec		r2	

/////////////////////////////////////////////////////////////////
	eld		a		,rpd0.index_Gbound				// intensity
	eld		c		,rpd0.index_Gsblimit
	ecld	r2		,a
	ecld	r1		,c
DequanBound_chk	
	cmp		eq		,r2		,r1
	brt		none_intensityDequan
DequanIntensityLoop
	eld		a		,@rp0+s1						// only Left
	ecld	r0		,a
	cmp		eq		,r0		,#0
	brt		DequanIntensity_zero			
		
	ld		r0		,r4
	mul		uu		,r0		,r3
	ecld	d		,r0
	efz8	d
	eadd	a		,d
	
	eld		rpd1.index_Grpi	,rp1
	eld		d		,rpd0.index_GBitAllocIndex			
	eld		rp1		,d
	erpn	rp1		,a
	eld		c		,@rp1+s0						// c -> mpi

	inc		r4

	eld		rp1		,#tbl_bpc	
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Gno_ofbits	,a
	
	eld		rp1		,#tbl_c
	erpn	rp1		,c
	eld		a		,@rp1+s0
	eld		rpd0.index_Gc	,a
	
	eld		rp1		,#tbl_d
	erpn	rp1		,c
	eld		a		,@rp1+s0

⌨️ 快捷键说明

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