Symbian OS电话里的音频子系统主要包含两种独立的音频数据流。一种是电话声音数据,另一种是多媒体数据。 电话里这两种至关重要的用例要求有良好的音质和长时间通话的能力。专用于声音数据的数字音频总线用来保证这些需求。 在Symbian OS电话上实际使用的原始硬件音频格式是16位的脉冲编码调制(pulse code modulated, PCM)数据。声音的质量范围介于通话时的单声道8kHz和音乐播放时的立体声48kHz之间。 PCM音频硬件可以很简单,只要求很少的设置以保证音量和选择正确的输出路径。然后所要做的全部工作把数据按照所要求的速率填充到硬件——DMA硬件很便于完成这种任务。如果数据传输发生了延迟,音频硬件将立即产生抖动、重叠不连续等现象。 2.9.1 电话音频 电话声音数据在通话中是最基本的元素。在解决因长距离的卫星传输所产生的滞后问题而让用户有高质量通话的基础上,在声音延迟上还有严格的限制。为了保证做到这点,系统设计者为通话期间的低延迟响应和低电量消耗而优化了控制软件和硬件路径。 BP包含不通过Symbian OS执行声音频带音频处理的DSP。通话期间,Symbian OS将运行于低电模式,只是在显示器需要更新时才被唤醒。 正常的通话将在模拟音频电路中结束。这个电路里包含从模拟到数字和从数字到模拟的转换器,这种转换器被连接到麦克风和扬声器。使用蓝牙(BT)耳机时,PCM数据通过蓝牙耳机自己的专用接口被直接传输到BT模块中。 Symbian OS需要额外的音频路径以把系统声音融合到正在进行中的通话音里。这是为了处理诸如短信提示音、低电和第二个来电等事情。传递通过IPC连接到BP发送的原始音频数据,就可以完成这种声音的融合,在BP里,DSP将系统声音混合进音频流里。 2.9.2 多媒体音频 系统里除语音数据之外而产生的声音中,多媒体音频是很普通的一个部分。主要的多媒体声音有: • 具有多种格式的铃声 • 提示来短信的警告 • 闹钟和日程表产生的提示 • 视频电话 • MP3播放 • 录音机记录的声音 • 视频的收集和播放 在系统的高层,由Symbian多媒体框架(MMF)进行控制,以支持媒体播放器、文件格式和插件。 多媒体设备框架(Multimedia Device Framework, MDF)将包含多媒体数字信号编解码器,多媒体数字信号编解码器将在PCM数据与设备驱动层的DevSound之间提供传输服务。 视频电话(Video telephony, VT)是个特殊的例子,因为这种情况下的实时音频数据不通过Symbian OS传输。电话中的音频部分将与视频一起形成64kb/s的数据流。VT电话系统必须分离到达的数据流,解码音频和视频部分,然后同步地进行播放。这项工作由专用硬件或者DSP来完成,它需要全部的200MHz ARM CPU以运行多媒体数字信号编解码器。 音频系统的主要复杂性是音频源和接收器数量的不断增长,以及它们可能被连接的方式。比如,目前的电话有多媒体耳机、扬声器、蓝牙和调频收音机。如果硬件不能混合并路由所有可能组合中的每一个音频源,就有可能产生问题。现在的一些音频用例还不能相互兼容,而是要求相互中断。 ===================================================================================== 说明: 本文由Bequan翻译自Symbian Press的Symbian OS Internals: Real-time Kernal Programming一书。任何人需要转载或引用,请先通过Email(a-pangu@163.com或symbianchn@gmail.com)与Bequan联系,在获得许可后方可转载或引用,否则视为侵权行为。转载或引用时,请在文章中注明上述翻译信息。 |
Commented by Vincent:
调用过程大致为: Client thread: Client app调用client utility Controller thread: controller plugin->DevSound, DevVideo, DevASR, DevMIDI |
其中controller framekwork目的是为symbian提供多媒体plugin支持。
这些plugin叫做controller plugin,可以把多媒体数据从source传送到一个或多个sink处。
比如,audio controller可以把一个文件源(file source)输出到一个扬声器(speak sink)或把microphone数据源保存到文件中。
controller plugin通常支持一个或多个多媒体格式,比如wav或mpeg4。
plugin是通过ECOM框架管理的,所以允许用户安装扩展。