📄 codamr.asm
字号:
MOVL XAR5,#res ;res
MOVL XAR6,#error ;error
MOVL ACC,*XAR6
MOVL XAR6,ACC
nop
LCR _spreproc
;Copy (res, res2, L_SUBFR)
MOV AR1,#L_SUBFR
MOVL XAR2,#res
MOVL XAR3,#res2
LCR _copy
;cl_ltp(st->clLtpSt, st->tonStabSt, i_subfr, T_op, st->h1,
; &st->exc[i_subfr], res2, xn, lsp_flag, xn2, y1,
; &T0, &T0_frac, &gain_pit, gCoeff, &ana,
; &gp_limit);
;int cl_ltp(*clSt,*tonSt,frameOffset,T_op[],*h1,*exc,
; res2[],xn[],lsp_flag,xn2[],y1[],*T0,*T0_frac,
; *gain_pit,g_coeff[],**anap,*gp_limit
;Input:
MOV *(0:_buffer1),*-SP[15] ;i_subrf
MOV *(0:_buffer1+10),*-SP[11] ;T_op[0]
MOVL XAR6,#hvec+L_SUBFR ;h1
MOVL @_buffer1+16,XAR6
MOVL XAR6,#old_exc+PIT_MAX+L_INTERPOL ;exc[i_subfr]
MOVL ACC,XAR6
ADD ACC,*-SP[15]
MOVL @_buffer1+12,ACC
MOVL XAR6,#res2 ;res2
MOVL @_buffer1+18,XAR6
MOVL XAR6,#xn ;xn
MOVL @_buffer1+14,XAR6
MOV *(0:_buffer1+1),*-SP[10] ;lsp_flag
;Output:
MOVL XAR6,#xn2 ;xn2
MOVL @_buffer1+20,XAR6
MOVL XAR6,#y1 ;y1
MOVL @_buffer1+22,XAR6
MOVL XAR6,*-SP[6] ;ana
MOVL @_buffer1+24,XAR6
LCR _cl_ltp
;Save res8ult
MOVL XAR6,@_buffer1+24
MOVL *-SP[6],XAR6 ;anap
MOV *-SP[16],*(0:_buffer1+2) ;T0
MOV *-SP[19],*(0:_buffer1+3) ;T0_frac
MOV *-SP[17],*(0:_buffer1+4) ;gain_pit
MOV *-SP[20],*(0:_buffer1+5) ;gp_limit
MOVL XAR6,#gCoeff ;g_coeff
MOV *XAR6++,*(0:_buffer1+6)
MOV *XAR6++,*(0:_buffer1+7)
MOV *XAR6++,*(0:_buffer1+8)
MOV *XAR6,*(0:_buffer1+9)
;if ((subfrNr == 0) && (st->ol_gain_flg[0] > 0))
; st->old_lags[1] = T0;
;if ((sub(subfrNr, 3) == 0) && (st->ol_gain_flg[1] > 0))
; st->old_lags[0] = T0;
;MOVL XAR6,#ol_gain_flg
;MOVL XAR7,#ol_gain_flg+1
;MOV AL,*-SP[16]
;CMP *-SP[14],#0
;BF _LINE_430,EQ
;CMP *-SP[14],#3
;BF _LINE_436,EQ
;BF _LINE_446,UNC
;_LINE_430:
;CMP *XAR6,#0
;BF _LINE_446,LOS
;MOV *XAR7,AL
;BF _LINE_446,UNC
;_LINE_436:
;CMP *XAR7,#0
;BF _LINE_446,LOS
;MOV *XAR6,AL
;_LINE_446:
;*ana++ = code_2i40_9bits(subfrNr, xn2, st->h1, T0, st->sharp, code, y2, &index);
;Word16 code_2i40_9bits(subNr,x[],h[],T0,pitch_sharp,code[],y[],*sign)
;Inputs:al--pitch_sharp,ar4--subNr,xar2--h[],xar3--x[],ah--T0
;Outputs:xar5--code[],xar6--y[],xar7--sign[]
;Input:
MOV AL,*-SP[14] ;subNr
MOV AR4,AL
MOVL XAR3,#xn2 ;x
MOVL XAR2,#hvec+L_SUBFR ;h (st->h1)
MOV AH,*-SP[16] ;T0
MOVL XAR6,#sharp ;pitch_sharp(st->sharp)
MOV AL,*XAR6
;Output:
MOVL XAR5,#code ;code
MOVL XAR6,#y2 ;y2
MOVL XAR7,#_buffer3-1 ;Save sign to #_buffer3-1
LCR _code_2i40_9bits
nop
nop
;Save result
;*ana++ = index; /* sign index */
MOVL XAR4,*-SP[6]
MOV AL,PL
MOV *XAR4++,AL
MOVL XAR6,#_buffer3-1
MOV AL,*XAR6
MOV *XAR4++,AL
MOVL *-SP[6],XAR4
;gainQuant(st->gainQuantSt, res, &st->exc[i_subfr], code,
; xn, xn2, y1, y2, gCoeff, evenSubfr, gp_limit,
; &gain_pit_sf0, &gain_code_sf0,
; &gain_pit, &gain_code, &ana)
;
;int gainQuant(*st,res[],exc[],code[],xn[],xn2[],y1[],Y2[],
; g_coeff[],even_subframe,gp_limit,`*sf0_gain_pit,
; `*sf0_gain_cod,*gain_pit,`*gain_cod,`**anap)
;
;Input:gainQuantState *st,xar7--*code,xar0--xn[],xar1--xn2[] **
; xar2--y1[],xar3--y2[],xar4--g_coeff[],ar5--gp_limit
;Output:_buffer1--*gain_pit,_buffer1+2--*gain_cod,xar6--*anap **
;Output:
MOVL XAR6,#_buffer3-2 ;*gain_pit
MOV AL,*-SP[17]
MOV *XAR6,AL
MOVL @_buffer1,XAR6
MOVL XAR6,#_buffer3-4 ;*gain_cod
MOVL @_buffer1+2,XAR6
MOVL XAR6,*-SP[6] ;*anap
;Input:
MOVL XAR7,#code ;*code
MOVL XAR0,#xn ;xn
MOVL XAR1,#xn2 ;xn2
MOVL XAR2,#y1 ;y1
MOVL XAR3,#y2 ;y2
MOVL XAR4,#gCoeff ;g_coeff[]
MOV AL,*-SP[20] ;gp_limit
MOV AR5,AL
LCR _gainQuant
;Save result
MOVL *-SP[6],XAR6 ;*anap
MOVL XAR7,#_buffer3-2
MOV AL,*XAR7 ;*gain_pit
MOV *-SP[17],AL
MOVL XAR7,#_buffer3-4
MOV AL,*XAR7 ;*gain_code
MOV *-SP[18],AL
;update_gp_clipping(st->tonStabSt, gain_pit)
;void update_gp_clipping(tonStabState *st,g_pitch)
;Input:xar4--st->gp[7],ar5--g_pitch **
;Output:xar4--st->gp[7]
;MOVL XAR6,#count
;MOV AL,*XAR6
;MOV AR0,AL
MOVL XAR4,#gp
MOV AL,*-SP[17]
MOV AR5,AL
LCR _update_gp_clipping
;subframePostProc(st->speech, i_subfr, gain_pit,
; gain_code, Aq, synth, xn, code, y1, y2, st->mem_syn,
; st->mem_err, st->mem_w0, st->exc, &st->sharp)
;int subframePostProc(*speech,i_subfr,gain_pit,gain_code,
; *Aq,synth[],xn[],code[],y1[],y2[],*mem_syn,*mem_err,
; *mem_w0,*exc,*sharp
;Input:_buffer1--*speech,ar0--i_subfr,ar1--gain_pit,ar2--gain_code **
; _buffer1+2--*Aq,_buffer1+4--Synth[],_buffer1+6--Xn[],
; _buffer1+8--code[],_buffer1+10--y1[],_buffer1+12--y2[]
; xar3--*mem_syn
;Output:xar3--*mem_syn,xar4--*mem_err,xar5--*mem_w0,xar6--*exc
; xar7--*sharp
;input: **
MOVL XAR7,#speech ;speech
MOVL XAR1,*XAR7
MOVL @_buffer1,XAR1
MOV AL,*-SP[15] ;i_subfr
MOV AR0,AL
MOV AL,*-SP[17] ;gain_pit
MOV AR1,AL
MOV AL,*-SP[18] ;gain_code
MOV AR2,AL
MOVL XAR7,*-SP[24] ;Aq
MOVL @_buffer1+2,XAR7
MOVL XAR6,*-SP[8] ;synth
MOVL @_buffer1+4,XAR6
MOVL XAR7,#xn
MOVL @_buffer1+6,XAR7 ;xn
MOVL XAR7,#code
MOVL @_buffer1+8,XAR7 ;code
MOVL XAR7,#y1
MOVL @_buffer1+10,XAR7 ;y1
MOVL XAR7,#y2
MOVL @_buffer1+12,XAR7 ;y2
MOVL XAR3,#mem_syn ;mem_syn
;Output:
MOVL XAR4,#mem_err
MOVL XAR5,#mem_w0
MOVL XAR6,#old_exc+PIT_MAX+L_INTERPOL
MOVL XAR7,#sharp
LCR _spstproc
;A += MP1;
;Aq += MP1;
MOVB ACC,#MP1
ADDL *-SP[22],ACC
ADDL *-SP[24],ACC
;for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR)
ADD *-SP[15],#L_SUBFR
CMP *-SP[15],#L_FRAME
BF _LOOP_401,LT
;Copy(&st->old_exc[L_FRAME], &st->old_exc[0], PIT_MAX + L_INTERPOL);
;Input: AR1--Lenth,*XAR2--x[]
;Outputs:*XAR3--Word16 y[]
MOV AR1,#PIT_MAX + L_INTERPOL
MOVL XAR2,#old_exc
MOV ACC,#L_FRAME
ADDL XAR2,ACC
MOVL XAR3,#old_exc
LCR _copy
;Copy(&st->old_wsp[L_FRAME], &st->old_wsp[0], PIT_MAX);
MOV AR1,#PIT_MAX
MOVL XAR2,#old_wsp
MOV ACC,#L_FRAME
ADDL XAR2,ACC
MOVL XAR3,#old_wsp
LCR _copy
;Copy(&st->old_speech[L_FRAME], &st->old_speech[0], L_TOTAL - L_FRAME);
MOV AR1,#L_TOTAL - L_FRAME
MOVL XAR2,#old_speech
MOV ACC,#L_FRAME
ADDL XAR2,ACC
MOVL XAR3,#old_speech
LCR _copy
;Prm2bits (prm, serial)
movl xar2,#_buffer3
lcr _Prm2bits
subb sp,#26
nop
nop
nop
lretr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -