📄 main.c
字号:
#include "g723_5410cfg.h"
#define mcbsp_init 0x71 /* if *mcbsp_init==0xaa55, then transmit INT for init 'AC01 */
#define mcbsp_reg 0x72
#define dxr10 0x23 /* McBSP0' transmit REG */
#define drr10 0x21 /* McBSP0' receive REG */
int input_buf[128]; /* use to save A/D data */
int process_buf[128]; /* use to processing function saving data */
int wave_buf[128]; /* use to save D/A data */
int Is_output; /* if Is_output==1, then D/A data have been prepared */
int AD_ptr,DA_ptr;
void init_des();
void Decod();
void Coder();
void my_sem_init()
{
SEM_reset(&sem_coder,0);
SEM_reset(&sem_decode,0);
}
main()
{
Is_output=0;
AD_ptr=(int)input_buf;
DA_ptr=(int)wave_buf;
my_sem_init();
init_des();
}
void transmit()
{
int *ptr, *ptr_dxr,*in,*out;
int i;
ptr=(int *)mcbsp_init;
ptr_dxr=(int *)dxr10;
if(*ptr == 0xaa55) // if *mcbsp_init==0xaa55, this INT for init of AC01
{
in=(int *)mcbsp_reg;
*ptr_dxr = *in; // when init AC01, the transmit data is put into A
if( *ptr_dxr == 0x800) // when a=0x800, the last init data !
{ *ptr=0; }
return;
}
else
{
ptr=(int *)DA_ptr; // if not for init AC01,
*ptr_dxr = *ptr++ & 0x0fffc; // then each int send one D/A buffer
if(ptr >= wave_buf+128) // when D/A buffer is over, then reload it !
{
ptr=wave_buf;
if(Is_output)
{ in=process_buf; out=wave_buf;
for(i=0;i<128;i++)
*out++ = *in++; // copy process_buf to wave_buf(D/A buffer)
Is_output=0;
}
}
DA_ptr=(int)ptr; // save D/A buffer's pointer
}
}
void processing(int *in,int *out)
{ int i;
for(i=0;i<128;i++)
*out++ = *in++ ; // copy A/D source data to process buffer !
}
void receive()
{
int *ptr,*ptr_drr;
ptr_drr=(int *)drr10;
ptr=(int *)AD_ptr; // restore A/D data' pointer
*ptr++ = *ptr_drr; // read data from McBSP0
if(ptr >= input_buf+128) // if saved 128, then post SWI processing !
{
ptr=input_buf;
SEM_ipost(&sem_coder);
}
AD_ptr=(int)ptr; // save A/D data' pointer
}
/*--------------------------------------------------------------------
G723 DeCoder Processing Function !
----------------------------------------------------------------------*/
void process_decode()
{
while(1)
{
SEM_pend(&sem_decode,SYS_FOREVER);
processing(input_buf,process_buf);
Decod();
Is_output=1; // D/A data have been prepared !
}
}
/*--------------------------------------------------------------------
G723 Coder Processing Function !
----------------------------------------------------------------------*/
void process_coder()
{
while(1)
{
SEM_pend(&sem_coder,SYS_FOREVER);
Coder();
SEM_post(&sem_decode);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -