在iOS中将GSM编码音频转换为线性PCM

时间:2012-03-08 18:01:24

标签: ios gsm pcm linear

过去几个月我一直在努力将GSM6.10转换为iOS中的线性PCM,但却无法让它发挥作用。我很感激任何建议!

我正在从Windows程序接收流数据。数据以具有多种不同数据包类型的数据包接收。某些数据包类型包含显示数据。一种数据包类型包含音频数据。音频数据采用Microsoft WAV格式,每秒8000个样本,每个样本8位,单声道,使用GSM6.10压缩。我无法控制Windows程序,因此无法更改数据的流式传输方式。

我的iOS程序将流数据解析为不同的数据包类型。显示数据用于更新显示并正常工作。我遇到的问题是音频数据。

当我的iOS程序连接到流时,没有规范的WAVE描述符。我基本上是连接中游。

起初我尝试使用音频文件流服务,将解析后的音频数据包作为输入传递。没运气。我工作和工作,无法解决典型?问题。

然后我尝试了音频队列服务并成功获得了音频。但是,使用音频队列服务所涉及的延迟使显示和音频不同步(差不多4秒)。

我现在正致力于使用音频图表。我尝试过将转换器单元和远程IO单元一起使用。我也尝试过只使用远程IO设备。在这两种情况下,似乎我都不能指定GSM6.10作为输入。我正在使用我在工作音频队列解决方案中使用的相同AudioStreamBasicDescription。但是,当我尝试初始化图形时,我收到错误。

转换器单元和/或远程I / O单元是否将GSM6.10转换为线性PCM?文档中不清楚这些单元是否将压缩格式转换为线性PCM或仅转换线性PCM格式(例如,不同的采样率)。

有没有更好的方法将GSM6.10转换为线性PCM?也许我在解析音频数据包时可以调用Core Audio转换器?

建议非常感谢!

0 个答案:

没有答案