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

📄 encoder.dsp

📁 基于ADSP的G.729语音编解码程序
💻 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 + -