WINCE 音频驱动之二:驱动模型

 音频驱动采用Wavedev2模式来实现,这是单层的驱动模式,平台相关的都在hwctxt.h和hwctxt.cpp中,此外还加入了midi支持、software mixer支持、S/PDIF接口、gain class接口、forcespeaker接口等等。

                                                           

(1)音频系统的软件实现

      音频设备驱动程序通过对硬件的控制实现音频数据流传输,同时向上层提供标准的音频接口。其中的一个流接口函数WAV_IOControl()提供应用层控制音频设备的接口,通过输入和输出消息实现对硬件的控制,主要包括两个函数HandleWaveMessage()和HandleMixerMessage (),其中HandleWaveMessage()负责音频数据的传输即播放数字化声音文件和录音操作等;而HandleMixerMessage ()负责对输出音频进行混音处理,如音量调节、高低音控制等。

      在音频数据采样过程中,假如按音频采样频率为44.1KHz、16位每个声道、左右2个声道来计算,码流为1.411Mbps,所以采用DMA控制器来传输十分必要。(有关音频DMA的具体说明,见文:WINCE 平台的DMA)

(2)混音的处理

       如果要WINDOWS CE的声音驱动模型支持混音,则要考虑如下问题:

A,声音设备是否支持硬件混音

B,声音设备需要工作在同一种采样频率下

C,声音设备要能够同时支持录音和放音操作

     而声音的驱动要负责完成声音采集的混音和声音放音的混音。其基本原理如下:

A,将声音设备设定在一个频率下,比如:44.1KHZ,16BIT

B,驱动允许打开多个音频流,每个音频流可以允许不同的采样率,比如: (A:8KHZ,8BIT    B: 44.1KHZ,16BIT)

C,放音的混音在最后的数据准备阶段(即放入到DMA前),用合成算法将所有的流进行数学运算,得出声音设备采样频率下(44.1KHZ,16BIT)的数据。数据通过DMA发送到CODEC中。

D,录音的混音操作,都是从声音设备采样频率下(44.1KHZ,16BIT)下得到采样的基本数据,然后通过数学运算分配到不同的频率下的音频流上。

(3)音频系统软件实现的流程

放音:

                                              

录音:

                                              

 

参考原文:http://blog.csdn.net/cnhighway/archive/2009/05/15/4188016.aspx

参考原文:http://blog.sina.com.cn/s/blog_5f61e2240100czqz.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值