我在AudioBuffer中有一些数据(来自录音)。在将此缓冲区写入文件之前,我想对PCM样本执行某些操作。如何从AudioBuffer的mData字段读取,就像我可以使用fread读取一样? 我可以在.mm或.m文件中使用fread吗?
答案 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。
请记住,您还有责任将数据转换为正确的类型。