• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

编写Windows下的G.729插件

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网

不知道为什么Windows附带G.723的插件,却没有G.729的,很是郁闷。于是花了不少时间写了个,一直都是在Linux编程,到了Windows下反而很不习惯,本来应该更方便的东西反倒搞得很复杂,教训大le

需要准备的东西:G.729的代码或者连接库(VoiceAge提供免费的库),Win DDK。

因为在Windows中音频的存储格式一般都是wav,所以首先要了解wav的文件格式,有专门的文章介绍这个,在这里就不多说了。G.729的wav格式可参考这个

WAVEFORMATED FormatG729 =

{

WAVE_FORMAT_MSG729,            // wFormatTag,微软定义了很多wav的标签,这是其中一个(44),但是在我的系统里编译的时候却找不到这个标签,所以我用了另外一个,详细定义可查看mmreg.h这个文件

1,                                             // nChannels,单声道/多声道,1表示单声道

8000,                                        // nSamplesPerSec,采样频率

1000,                                        // nAvgBytesPerSec,码率,我用的是8kbits/s的编解码

10,                                            // nBlockAlign,字节为单位,因为编码源是160字节为单位的pcm16bit的音频流,按16:1的压缩率,编码后就是10字节

0,                                              // wBitsPerSample,没用

2                                               // cbSize,一般就是wSamplesPerBlock(我用的是80)的长度,

}

这个更详细的介绍可以在微软的msdn关于如何编写acm driver的文章里找到。

接下来就要用win ddk了,记住一定要装上windbg,很好用的调试工具。不过在调试状态下录音然后放出来的声音都是噪音,很受不了。

首先要选好跟你的系统匹配的编译环境。接下来就要写sources文件,类似Linux下的makefile文件,定义一下连接库,源文件等,在ddk中找个范例修改一下就好了。还有几个必须的文件如makefile、安装信息文件、rcv文件、resource template文件、def文件都是参考范例写一下就好了。文件齐备了后,直接build就好了。

ACM是一个通用的音频编解码管理器,所以有固定的接口函数:DriverProc,调用插件函数入口;

几个主要的消息:DRV_OPEN,打开插件;DRV_CLOSE,关闭插件;DRV_CONFIGURE,配置插件;ACMDM_STREAM_OPEN,确定是编码流还是解码流;ACMDM_STREAM_CLOSE,关闭音频流;ACMDM_STREAM_CONVERT,调用编/解码函数。

编码时,一般输入的是pcm16bit的音频流。解码输出的也应该是pcm16bit的音频流,如果是8bit的,还需要进行转换。

G.729的编解码函数因为版权问题,我就不细说了,只要设定好匹配的参数(如码率,samplesperblock等),然后封装好填写到stream open消息的处理函数中就行了。

编译通过后你会得到一个*.acm的文件,把它拷贝到win/system32目录下,然后把相关信息写入注册表,就可以使用了。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网