📄 encoder.dsp
字号:
#define stream_port 0x201
#define speech_port 0x200
/*******************************************************************
* Main program of the ITU-T G.729 8 kbit/s encoder. *
* Usage : encoder speech_file bitstream_file *
* $$01/10/2000 checked Encoder module data variables and function *
********************************************************************/
.MODULE/SEG=App_PM Encoder;
/*******************************************************************/
#include "ld8a.inc"
#include "dtx.inc"
#include "octet.inc"
/*********************************************************************/
.VAR/DM/RAM/SEG=App_DMmem EncodeParm[PRM_SIZE+1];/* Synthesis parameters */
.VAR/DM/RAM/SEG=App_DMmem OutSerial[SERIAL_SIZE];/* Output bitstream buffer */
.VAR/DM/RAM/SEG=App_DMmem Encode_FrameID,Encode_nbwords;
.VAR/DM/RAM/SEG=App_DMbuf Vad_Enable,VadEncode,put_position;
/*********************************************************************/
.GLOBAL put_position;
.GLOBAL EncodeParm,OutSerial;
.GLOBAL Vad_Enable,VadEncode;
.GLOBAL Encode_nbwords,Encode_FrameID;
.EXTERNAL Enc_newspeech,Enc_Frame;
.EXTERNAL read_speech;
.EXTERNAL Coder_ld8a;
.EXTERNAL Pre_Process;
.EXTERNAL Init_LPCFilt;
.EXTERNAL Init_Cod_cng;
.EXTERNAL prm2bits_ld8a;
.EXTERNAL Init_QuantGain;
.EXTERNAL Init_Coder_ld8a;
.EXTERNAL Init_Pre_Process;
//.EXTERNAL EndEncode,PauseEncode,ResumeEncode,StartEncode;
/*********************************************************************
* Initialization of encoder *
* $$01/10/2000 main encoder frame function *
**********************************************************************/
.ENTRY Init_encoder;
Init_encoder: I1=^EncodeParm;
CNTR=PRM_SIZE+1;
DO zero_prm UNTIL CE;
zero_prm: DM(I1,M1)=0;
I1=^OutSerial;
DM(put_position)=I1;
CNTR=SERIAL_SIZE;
DO zero_serial UNTIL CE;
zero_serial: DM(I1,M1)=0;
AR=PASS 0;
DM(Encode_FrameID)=AR;
DM(Encode_nbwords)=AR;
DM(Enc_Frame)=AR;
CALL Init_LPCFilt;
CALL Init_QuantGain;
CALL Init_Pre_Process;
CALL Init_Coder_ld8a;
CALL Init_Cod_cng;
RTS;
/*********************************************************************
* Main encoder routine *
**********************************************************************/
.ENTRY encode_frame;
encode_frame:
{----------Loop for each "L_FRAME" speech data---------}
I1=DM(Enc_newspeech);
CALL read_speech;
AX0=32767;
AY0=DM(Enc_Frame);
AR=AY0+1;
NONE=AX0-AY0;
IF EQ AR=PASS 256;
DM(Enc_Frame)=AR;
{-----------pre process speech signal-------------------}
CNTR=L_FRAME;
I1=DM(Enc_newspeech);
CALL Pre_Process;
I6=^EncodeParm;
CALL Coder_ld8a;
I1=^EncodeParm;
I0=DM(put_position);
CALL prm2bits_ld8a;
DM(put_position)=I0;
RTS;
/*********************************************************************/
.ENDMOD;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -