你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
多路音频实时采样压缩存盘DLL的实现和使用(三)
 

extern "C" void va_g729a_init_decoder();//解压缩库初始化函数

extern "C" void va_g729a_decoder(unsigned char *bitstream, short *synth_short, int bfi);// 解压缩

int _stdcall InitSD878AU();//初始化音频输入

int _stdcall StarAudioIn(int ChanNum);//启动音频输入。

void _stdcall SaveAudioStream(int ChanNum,char *Aubufp,int bufsize,int AuMutFlag)//音频回调函数,每路音频采样//4800个样例, 通知应用程序处理的函数

va_g729a_encoder(short *speech, unsigned char *bitstream); //压缩编码函数,每次压缩8216位数据 输出10 字节的压缩数据, speech是指向16位数据指针,bitstream是指向压缩数据指针,在此要注意采样数据类型charshort  *speech的转换:pin=(short*)Aubufp 即强制变成16位指针。

如一次压缩 48016位数据的程序片段如下:

va_g729a_encoder(alldataptr,   codedataptr);

// alldataptr源数据首指针,

//codedataptr  存放编码数据首指针

va_g729a_encoder(alldataptr+80,  codedataptr+10);

 va_g729a_encoder(alldataptr+160, codedataptr+20);

 va_g729a_encoder(alldataptr+240, codedataptr+30);

 va_g729a_encoder(alldataptr+320, codedataptr+40);

 va_g729a_encoder(alldataptr+400, codedataptr+50);

 48016位数据压缩后变成60个字节数据。

 

3 编程技巧

31 任务调度

本程序要实时采样1---30路音频数据,要对各路采样数据实时进行分析处理,还要实时压缩音频数据, 这除了需要很高的运行速度,还要对采样、分析处理与压缩过程进行合理的调度,这里采用了线程技术,采样、分析处理过程安排在C主程序中,压缩过程安排在一个线程中,与采样、分析处理过程并行运行,这样压缩过程的运行不影响C主过程的运行,可在C主过程中启动或挂起线程。下面是有关线程函数:
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089