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

📄 ld8amem.asm

📁 TI C54写的G729代码,视线8kbps高质量语音解码,汇编优化
💻 ASM
字号:
;==========================================================================
;  File Name
;  ----------
;  LD8K.MEM
;
;  Brief Description of the Code:
;  ------------------------------
;  Memory use in G.729A
;
;  Ref
;  ------
;==========================================================================


       .include  ..\include\const.h
       .include  ..\include\struct.h
       .data

;------- begin of group 1 ----------------
ptr_speech_buf    .usect "G729AMAIN", 1, 1  ; Speech vector pointer
ptr_old_speech    .usect "G729AMAIN", 1     ; Old speech vector pointer
ptr_new_speech    .usect "G729AMAIN", 1     ; New speech pointer
ptr_speech        .usect "G729AMAIN", 1     ; Present frame pointer
ptr_pre_hpf_u     .usect "G729AMAIN", 1     ; Preproccessing highpass filter pointer
ptr_hpf_u         .set   ptr_pre_hpf_u
ptr_wsp_un        .usect "G729AMAIN", 1     ; u(n) pointer (see wegt_sig, residu/syn_fil) for wsp
ptr_L_exc_err     .usect "G729AMAIN", 1

ptr_prev_lsp_vec  .usect "G729AMAIN", 1     ; previous lsp vector pointer

ptr_wsp           .usect "G729AMAIN", 1     ; pointer for weighted speech signal
ptr_exc           .usect "G729AMAIN", 1

ptr_mem_err       .usect "G729AMAIN", 1
ptr_mem_w         .usect "G729AMAIN", 1
ptr_mem_w0        .usect "G729AMAIN", 1
ptr_mem_zero      .usect "G729AMAIN", 1
ptr_mem_syn       .usect "G729AMAIN", 1

ptr_speech_subfrm .usect "G729AMAIN", 1
ptr_exc_subfrm    .usect "G729AMAIN", 1
ptr_qlpc_subfrm   .usect "G729AMAIN", 1
ptr_Ap1_subfrm    .usect "G729AMAIN", 1
ptr_Ap2_subfrm    .usect "G729AMAIN", 1



ptr_prev_qua_eng  .usect "G729AMAIN", 1     ; past quantized energies in Q14

ptr_lsp_vec       .usect "G729AMAIN", 1     ; current lsp vector pointer
ptr_MA_coef       .usect "G729AMAIN", 1     ; pointer for fg
ptr_MA_sum_inv    .usect "G729AMAIN", 1     ; pointer for fg_sum_inv_Q12
ptr_MA_sum        .usect "G729AMAIN", 1     ; pointer for fg_sum
ptr_status        .usect "G729AMAIN", 1     ; control status for post, Post_Process and Pre_Precess


ptr_prev_ma       .usect "G729AMAIN", 1     ; decoder only
ptr_T0_old        .usect "G729AMAIN", 1     ; decoder only
ptr_T0_first      .usect "G729AMAIN", 1     ; decoder only
ptr_voicing       .usect "G729AMAIN", 1     ; decoder only
ptr_gain_prec     .usect "G729AMAIN", 1     ; decoder only
ptr_synth         .usect "G729AMAIN", 1     ; decoder only
ptr_mem_stp       .usect "G729AMAIN", 1     ; decoder only
ptr_apond2        .usect "G729AMAIN", 1     ; decoder only
ptr_res2          .usect "G729AMAIN", 1     ; decoder only
ptr_pst_out       .usect "G729AMAIN", 1     ; decoder only


ptr_codeword      .usect "G729AMAIN", 1
CodeWord          .usect "G729AMAIN", 11
_CodeWord         .set   CodeWord


ptr_qlsp_old      .usect "G729AMAIN", 1
ptr_lsp_old       .usect "G729AMAIN", 1
ptr_lsp_new       .usect "G729AMAIN", 1
ptr_lar_old       .usect "G729AMAIN", 1
ptr_bflat         .usect "G729AMAIN", 1

ptr_sharp         .usect "G729AMAIN", 1



;------- begin of group 2 ----------------
Lmin1             .usect "G729AMAIN", 2, 1, 1
Lmin2             .usect "G729AMAIN", 2, 1, 1
L2                .usect "G729AMAIN", 1
L3                .usect "G729AMAIN", 1
ptr_L1            .usect "G729AMAIN", 1
ptr_L2            .usect "G729AMAIN", 1
ptr_L3            .usect "G729AMAIN", 1

ptr_sel_lspcb1    .usect "G729AMAIN", 1     ; current selected lspcb1
ptr_sel_lspcb2_L2 .usect "G729AMAIN", 1     ; current selected lspcb2[L2]
ptr_sel_lspcb2_L3 .usect "G729AMAIN", 1     ; current selected lspcb2[L3]

ptr_mean_sqr_err  .usect "G729AMAIN", 1

ptr_Az            .set   ptr_mean_sqr_err

ptr_lsp_coef      .set   ptr_lsp_vec
ptr_lsf_coef      .set   ptr_MA_coef

ptr_ai            .usect "G729AMAIN", 1
ptr_bi            .usect "G729AMAIN", 1
ptr_un            .usect "G729AMAIN", 1
ptr_temp          .usect "G729AMAIN", 1
ptr_xn            .usect "G729AMAIN", 1
ptr_yn            .usect "G729AMAIN", 1

ptr_corr          .usect "G729AMAIN", 1
framenum          .usect "G729AMAIN", 1

G729A_Main_Buf        .usect "G729A_BUF", 1152+128, 1

;--------------------------------------------------------
; Map 1
;--------------------------------------------------------
Addr_rr              .set   G729A_Main_Buf

Addr_coder_buf1      .set    G729A_Main_Buf + 640
Addr_Ap1_1           .set    Addr_coder_buf1            ; [M]
Addr_Ap1_2           .set    Addr_coder_buf1 + 16       ; [M]
Addr_Ap_1           .set    Addr_coder_buf1 + 32       ; [M]
Addr_Ap_2           .set    Addr_coder_buf1 + 48       ; [M]

Addr_Buf6_1          .set    Addr_Ap1_1 + M             ; beginning of 6 available locations
bOldCoef             .set    Addr_Buf6_1                ; [1]
Addr_T0              .set    Addr_Buf6_1 + 1            ; [1]
Addr_T0_frac         .set    Addr_Buf6_1 + 2            ; [1]
Addr_pit_frac        .set    Addr_Buf6_1 + 3            ; [1]
Addr_T0_min          .set    Addr_Buf6_1 + 4            ; [1]
Addr_T0_max          .set    Addr_Buf6_1 + 5            ; [1]

Addr_Buf6_2          .set    Addr_Ap1_2 + M             ;  beginning of 6 available locations
Addr_index           .set    Addr_Buf6_2                ;  decoder only
Addr_bfi             .set    Addr_index + 1             ;  decoder only
Addr_sf_voic         .set    Addr_bfi + 1               ;  decoder only
Addr_i_subfr         .set    Addr_sf_voic + 1            ; [1]

Addr_Buf6_3          .set    Addr_Ap_1 + M             ;  beginning of 6 available locations
Addr_Buf6_4          .set    Addr_Ap_2 + M             ;  beginning of 6 available locations

Addr_xn1             .set    Addr_coder_buf1 + 64       ; circular buffer size 40
Addr_Buf24_1         .set    Addr_xn1 + L_SUBFR         ;  beginning of 24 available locations
Addr_g_coeff         .set    Addr_xn1 + L_SUBFR         ; [4]
Addr_gain_pit        .set    Addr_g_coeff+ 4            ; [1], must follow Addr_g_coeff
Addr_gain_code       .set    Addr_gain_pit + 1          ; [1]
Addr_g_coeff_cs      .set    Addr_gain_code + 1         ; [5]
Addr_exp_g_coeff_cs  .set    Addr_g_coeff_cs + 5        ; [5]
ExtraTime            .set    Addr_exp_g_coeff_cs + 5    ; [1]
PulseSign            .set    ExtraTime + 1              ; [1]
PulseIndex           .set    PulseSign + 1              ; [1]
Addr_TempFlag        .set    PulseIndex + 1             ; [1]

Addr_yn1             .set    Addr_coder_buf1  + 128
Addr_Buf24_2         .set    Addr_yn1 + L_SUBFR         ;  beginning of 24 available locations
Addr_SynFilt_Buf     .set    Addr_Buf24_2               ;  buffer for Syn_filt

Addr_h1              .set    Addr_coder_buf1  + 192
Addr_xn2             .set    Addr_h1 + L_SUBFR
Addr_yn2             .set    Addr_xn2 + L_SUBFR
Addr_cn              .set    Addr_yn2 + L_SUBFR
Addr_qlpc_intp       .set    Addr_cn + L_SUBFR           ; [2][M] at address xxx0

Addr_local_buf2      .set    G729A_Main_Buf + 1024

Addr_DnSign          .set    Addr_local_buf2 + 48      ; [L_SUBFR]
Addr_Dn              .set    Addr_DnSign + L_SUBFR     ; [L_SUBFR * 2]
Addr_local_buf3	.set G729A_Main_Buf + 1024+128

;--------------------------------------------------------
; Map 2
;--------------------------------------------------------
Addr_wsig_buf        .set   G729A_Main_Buf

Addr_CorrCoef1       .set    G729A_Main_Buf + L_TOTAL

Addr_LPCoefQ27       .set    G729A_Main_Buf
Addr_lpc_coefQ12     .set    G729A_Main_Buf                 ; [M]
Addr_lpc_coef_intp   .set    Addr_lpc_coefQ12 + 16         ; [M]
Addr_RCoef           .set    G729A_Main_Buf + 32
Addr_lsp_coef        .set    Addr_RCoef + 32               ; [M]
Addr_lsf_coefQ13     .set    Addr_lsp_coef + 32            ; [M]
Addr_lsfq_coefQ13    .set    Addr_lsf_coefQ13 + 16         ; [M]
Addr_lspq_coef       .set    Addr_lsfq_coefQ13 + 16        ; [M]
Addr_wegtQ11         .set    Addr_lspq_coef + 16           ; [M]
Addr_lsp_vecQ13      .set    Addr_wegtQ11 + 16             ; [M]

Addr_lsp_vec_buf1Q13 .set    Addr_lsp_vecQ13 + 16
Addr_lsp_vec_buf2Q13 .set    Addr_lsp_vec_buf1Q13 + 16   ; also use for lsp_inpt(F1, F2)

Addr_lsp_vec_buf1    .set    Addr_lsp_vec_buf1Q13
Addr_buf1            .set    Addr_lsp_vec_buf2Q13
Addr_buf2            .set    Addr_buf1 + 16
Addr_buf3            .set    Addr_buf2 + 16

Addr_lsf_int         .set    Addr_buf1
Addr_lsf_new         .set    Addr_lsf_int + M

Addr_mean_sqr_err    .set    Addr_buf3
Addr_L0              .set    Addr_mean_sqr_err + 4
Addr_L1              .set    Addr_L0 + 1           ; L1[0]
                                                   ; &Lspcb1[L1[0]]
                                                   ; L1[1]
                                                   ; &Lspcb1[L1[1]]
Addr_L2              .set    Addr_L1 + 4           ; L2[0]
                                                   ; &Lspcb2[L2[0]]
                                                   ; L2[1]
                                                   ; &Lspcb2[L2[1]]
Addr_L3              .set    Addr_L2 + 4           ; L3[0]
                                                   ; &Lspcb2[L3[0]]
                                                   ; L3[1]
                                                   ; &Lspcb2[L3[1]]

Addr_gamma           .set    Addr_buf3
Addr_lar_Q11         .set    Addr_gamma + 4

Addr_local_buf1      .set    G729A_Main_Buf + 384

Addr_pitch_ol_buf    .set    Addr_local_buf1
param_lag_max        .set    Addr_pitch_ol_buf + 230
Addr_lag_max_buf     .set    Addr_pitch_ol_buf + 240

Addr_pitch_fr3_buf   .set    Addr_local_buf1		;alloc one page for use.
Addr_norm_corr_buf   .set    Addr_local_buf1 + 128
param_norm_corr      .set    Addr_norm_corr_buf + 100


;--------------------------------------------------------






        .def    ptr_speech_buf
        .def    ptr_old_speech
        .def    ptr_new_speech
        .def    ptr_speech
        .def    ptr_pre_hpf_u
        .def    ptr_hpf_u
        .def    ptr_wsp_un
        .def    ptr_L_exc_err

        .def    ptr_wsp
        .def    ptr_exc
        .def    ptr_mem_err
        .def    ptr_mem_w
        .def    ptr_mem_w0
        .def    ptr_mem_zero
        .def    ptr_mem_syn

        .def    ptr_speech_subfrm
        .def    ptr_exc_subfrm
        .def    ptr_qlpc_subfrm
        .def    ptr_Ap1_subfrm
        .def    ptr_Ap2_subfrm

        .def    ptr_prev_qua_eng

        .def    ptr_prev_lsp_vec
        .def    ptr_lsp_vec

        .def    ptr_MA_coef
        .def    ptr_MA_sum_inv
        .def    ptr_MA_sum

        .def    ptr_status

        .def    ptr_prev_ma
        .def    ptr_T0_old
        .def    ptr_T0_first
        .def    ptr_voicing
        .def    ptr_gain_prec
        .def    ptr_synth
        .def    ptr_mem_stp
        .def    ptr_apond2
        .def    ptr_res2
        .def    ptr_pst_out



        .def    ptr_codeword
        .def    CodeWord
        .def    _CodeWord

        .def    ptr_qlsp_old
        .def    ptr_lsp_old
        .def    ptr_lsp_new

        .def    ptr_lar_old
        .def    ptr_bflat
        .def    ptr_sharp

        .def    Lmin1
        .def    Lmin2
        .def    L2
        .def    L3
        .def    ptr_L1
        .def    ptr_L2
        .def    ptr_L3

        .def    ptr_sel_lspcb1
        .def    ptr_sel_lspcb2_L2
        .def    ptr_sel_lspcb2_L3

        .def    ptr_mean_sqr_err

        .def    ptr_Az

        .def    ptr_lsp_coef
        .def    ptr_lsf_coef

        .def    ptr_ai
        .def    ptr_bi
        .def    ptr_un
        .def    ptr_temp
        .def    ptr_xn
        .def    ptr_yn


        .def    ptr_corr

        .def    param_norm_corr
        .def    param_lag_max


        .def    Addr_wsig_buf
        .def    Addr_CorrCoef1
        .def    Addr_LPCoefQ27
        .def    Addr_lpc_coefQ12
        .def    Addr_lpc_coef_intp
        .def    Addr_qlpc_intp
        .def    Addr_RCoef
        .def    Addr_lsp_coef
        .def    Addr_lsf_coefQ13
        .def    Addr_lsfq_coefQ13
        .def    Addr_lspq_coef
        .def    Addr_wegtQ11
        .def    Addr_lsp_vecQ13
        .def    Addr_lsp_vec_buf1Q13
        .def    Addr_lsp_vec_buf2Q13

        .def    Addr_lsp_vec_buf1
        .def    Addr_buf1
        .def    Addr_buf2
        .def    Addr_lsf_int
        .def    Addr_lsf_new


        .def    Addr_L0
        .def    Addr_L1
        .def    Addr_L2
        .def    Addr_L3

        .def    Addr_mean_sqr_err

        .def    Addr_gamma
        .def    Addr_lar_Q11

        .def    Addr_T0
        .def    Addr_T0_frac
        .def    Addr_pit_frac
        .def    Addr_T0_min
        .def    Addr_T0_max
        .def    Addr_i_subfr

        .def    Addr_index
        .def    Addr_bfi
        .def    Addr_sf_voic

        .def    Addr_local_buf1
        .def    Addr_local_buf2
        .def	  Addr_local_buf3

        .def    Addr_pitch_ol_buf
        .def    Addr_lag_max_buf

        .def    Addr_pitch_fr3_buf
        .def    Addr_norm_corr_buf

        .def    Addr_DnSign
        .def    Addr_Dn

        .def    Addr_Ap1_1
        .def    Addr_Ap1_2
        .def    Addr_Ap_1
        .def    Addr_Ap_2
        .def    bOldCoef


        .def    Addr_g_coeff
        .def    Addr_g_coeff_cs
        .def    Addr_exp_g_coeff_cs
        .def    ExtraTime
        .def    PulseSign
        .def    PulseIndex
        .def    Addr_gain_pit
        .def    Addr_gain_code
        .def    Addr_TempFlag

        .def    Addr_SynFilt_Buf

        .def    Addr_xn1
        .def    Addr_yn1
        .def    Addr_h1
        .def    Addr_xn2
        .def    Addr_yn2
        .def    Addr_cn

        .def    Addr_rr
		.def	framenum
		

⌨️ 快捷键说明

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