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

📄 decoder4at303.dsp

📁 基于ADSP的G.729语音编解码程序
💻 DSP
字号:
#define        stream_port   0x702	//0x201
#define        speech_port   0x700	//0x200
/**********************************************************************
* Main program of the ITU-T G.729  8 kbit/s decoder.                  *
*    Usage : decoder  bitstream_file  synth_file                      *
* $$01/10/2000 checked Decoder module data variables and function     *
***********************************************************************/
.MODULE/SEG=App_PM        Decoder;

/**********************************************************************/
#include       "ld8a.inc"
#include       "dtx.inc"
#include       "octet.inc"

/***********************************************************************/
.VAR/DM/RAM/SEG=App_DMmem    DecodeParm[PRM_SIZE+2];  /* Synthesis parameters        */
.VAR/DM/RAM/SEG=App_DMmem    InputSerial[SERIAL_SIZE];/* Output bitstream buffer     */
.VAR/DM/RAM/SEG=App_DMbuf    synth_buf[L_FRAME+M];    /* Synthesis buffer            */
.VAR/DM/RAM/SEG=App_DMbuf    Az_dec[MP1*2];           /* Decoded Az for post-filter  */
.VAR/DM/RAM/SEG=App_DMbuf    Dec_T2[2],VadDecode;     /* Pitch lag for 2 subframes   */
.VAR/DM/RAM/SEG=App_DMbuf    bad_lsf,SynthDecode,Decode_FrameID;
.VAR/DM/RAM/SEG=App_DMbuf    Fetch_pointer,segmeant_no;

/***********************************************************************/
.GLOBAL        bad_lsf,SynthDecode,Decode_FrameID;
.GLOBAL        Az_dec,Dec_T2,VadDecode;
.GLOBAL        DecodeParm,InputSerial;
.GLOBAL        Decode_seag;

.EXTERNAL      Init_LPCFilt;
.EXTERNAL      Init_Dec_cng;
.EXTERNAL      Init_Decod_ld8a;
.EXTERNAL      Init_DecodeGain;
.EXTERNAL      Init_Decod_ld8a;
.EXTERNAL      Init_Post_Filter;
.EXTERNAL      Init_Post_Process;
//.EXTERNAL      decode_seag;   
.EXTERNAL      Decod_ld8a;
.EXTERNAL      Post_Filter;
.EXTERNAL	   Post_Process;
.EXTERNAL      bits2prm_ld8a;

/*********************************************************************
*  Initialization of decoder										 *
* $$01/10/2000 main decoder function							     *
**********************************************************************/
.ENTRY         Init_decoder;

//Init_decoder:  CNTR=M;
Init_decoder:  I1=^synth_buf;
			   CNTR=M;
			   DO zero_synth UNTIL CE;
zero_synth:	   DM(I1,M1)=0;
			   AR=PASS 0;
               DM(SynthDecode)=I1;
			   DM(bad_lsf)=AR;
			   CALL Init_LPCFilt;
			   CALL Init_DecodeGain;
			   CALL Init_Decod_ld8a;
			   CALL Init_Post_Filter;
			   CALL Init_Post_Process;
			   CALL Init_Dec_cng;
			   RTS;
/*******************************************************************
*            Main decoder routine                                  *
********************************************************************/
.ENTRY         decode_seag; 

decode_seag:   AR=PASS 0;
			   DM(segmeant_no)=AR;
               I1=^InputSerial;
			   DM(Fetch_pointer)=I1;
decode_frame:  I0=^DecodeParm;
			   CALL bits2prm_ld8a;
   			   DM(Fetch_pointer)=I1;
			   CALL Decod_ld8a;
    {----------Postfilter filtering--------------------------}
			   I1=^Dec_T2;
			   I2=^Az_dec;
			   CALL Post_Filter;
               CNTR=L_FRAME;
			   I1=DM(SynthDecode);
			   CALL Post_Process;			  
			   I1=DM(SynthDecode);


			   CNTR=L_FRAME;		// 80 samples
			   DO put_speech UNTIL CE;
			   SI=DM(I1,M1);
    		   IO(speech_port)=SI;   // +sunny, two channels
put_speech:	   IO(speech_port)=SI;

               AR=DM(segmeant_no);
			   AR=AR+1;
			   DM(segmeant_no)=AR;
			   AR=AR-8;
			   I1=DM(Fetch_pointer);
			   IF LT JUMP decode_frame;
               RTS;
/*********************************************************************/
.ENDMOD;





⌨️ 快捷键说明

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