自定义CMdaAudioInputStream的buffer大小
设备, 软件 版本: S60 2nd Ed, Feature Pack 2 / S60 2nd Ed, Feature Pack 3 / S60 3rd Edition
详细描述:
对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;
详细描述:
对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;