📄 step.asm
字号:
;-------------------------------------------------------------------
; * step_size()
; *
; * computes the quantization step size of the adaptive quantizer.
; *
; */
;int
;step_size(
; struct g723_state *state_ptr)
;{
; int y;
; int dif;
; int al;
;
; if (state_ptr->ap >= 256)
; return (state_ptr->yu);
; else {
; y = state_ptr->yl >> 6;
; dif = state_ptr->yu - y;
; al = state_ptr->ap >> 2;
; if (dif > 0)
; y += (dif * al) >> 6;
; else if (dif < 0)
; y += (dif * al + 0x3F) >> 6;
; return (y);
; }
;}
;---------------------------------------------------------------------
.title "step.asm"
.include "g723_global.asm"
.include "g723_stat.asm"
.mmregs
temp_dif .set 0
.text
;AR7=state_ptr
step_size:
frame #-1
mvmm AR7, AR5
mar *+AR5(ap)
ld #256, A
sub *AR5, A
bc ret_yu, ALEQ
mvmm AR7, AR5
mar *+AR5(yl)
dld *AR5, A
sfta A, -6
stlm A, AR4 ; AR4 = y
ld A, B
mvmm AR7, AR5
mar *+AR5(yu)
sub *AR5, B ;B=y
neg B ; B = dif
stl B, *SP(temp_dif)
mvmm AR7, AR5
mar *+AR5(ap)
ld *AR5, -2, B ;B = al
stlm B, T ; T=al
nop
nop
ld *SP(temp_dif), 16, A
mpya B ;B=dif*al
ld *SP(temp_dif), A ;A=dif
bc end_ret_y1, AEQ ; if(dif<=0) then to ret_y1
xc 2, ALT ;if dif<0
add #0x3f, B
ldm AR4, A ;A = y
add B, -6, A ;A = y
frame #1
ret
end_ret_y1
ldm AR4, A ;A = y
frame #1
ret
ret_yu:
mvmm AR7, AR5
mar *+AR5(yu) ;*AR5 = state_ptr->yu
ld *AR5, A
end_ret_yu:
frame #1
ret
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -