如何从iOS中的AudioBuffer的mData字段读取数据?

时间:2011-03-22 08:48:38

标签: ios file-io audio

我在AudioBuffer中有一些数据(来自录音)。在将此缓冲区写入文件之前,我想对PCM样本执行某些操作。如何从AudioBuffer的mData字段读取,就像我可以使用fread读取一样? 我可以在.mm或.m文件中使用fread吗?

1 个答案:

答案 0 :(得分:3)

AudioBuffer结构将数据保存在内存中,而不是文件中。因此fread无关紧要。 mBuffer只是指向数据开头的指针,您可以使用结构的其他两个字段来正确读取数据。来自this link

struct AudioBuffer {
   UInt32 mNumberChannels;
   UInt32 mDataByteSize;
   void   *mData;
};

mDataByteSize告诉您缓冲区保留的字节数(因此您不会通过缓冲区的末尾访问内存),而mNumberChannels会告诉您如何重新排序数据,例如:如果缓冲区有两个通道,则数据是隔行扫描的,即样本1,3,5,...来自通道1,而2,4,6,......来自通道2。

请记住,您还有责任将数据转换为正确的类型。