?? antalias.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 + -