Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

自定义CMdaAudioInputStream的buffer大小

From Wiki
Jump to: navigation, search
Article Metadata

兼容于
平台: S60 2nd Ed, Feature Pack 2, S60 2nd Ed FP3, S60 3rd Edition
S60 3rd Edition (initial release)
S60 2nd Edition FP3
S60 2nd Edition FP2

文章
huwell 在 27 Jun 2007 创建
最后由 hamishwillee 在 30 May 2013 编辑
  • 详细描述:

对S60 MMF客户端音频程序来说,处理S60设备中输入流时,是否可以自定义buffer的大小。


  • 解决方案:

在S60 MMF架构中缺省的声音I/O数据buffer大小是根据声音硬件和音频编码性能来分配的。使用CMdaAudioInputStream的客户端程序将考虑到下列局限:


但使用PCM16(缺省)格式时: 声音设备返回的input buffer总是320个字节(S60第二版,FP2和FP3)或4096字节(S60第三版)。这也是调用CMdaAudioInputStream::ReadL()所能返回最大数据长度,因此不建议超过此限度大小。


如果传递到客户端ReadL()中的buffer小于该大小,那服务端buffer就会被组成适合大小的块以便传入。如果这样操作后还有剩余,就不会满足这里最大长度大小。例如,当在S60第三版中使用一个3840字节的buffer大小时,第一个返回的buffer为3840字节,而下一个就是(4096-3840)256字节,然后再这样重复继续。

当使用非PCM格式处理流时: 对一个压缩音频格式,每个返回的input buffer都典型的包括一个音频数据的单独帧。例如,当使用AMR-NB格式时(在MaiscOpenComplete()方法):

iInputStream->SetDataTypeL(KMMFFourCCCodeAMR);

调用后,每次返回buffer将包括14个字节(一个单独的AMR-NB frame in ,5.15 kbit/s)可演绎20ms of audio data;

This page was last modified on 30 May 2013, at 04:37.
98 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×