我在这里有一个令人毛骨悚然的时刻,尝试使用循环缓冲区调整MixerHost示例代码以提高内存效率。但是,当我将代码从读取整个音频文件更改为仅读取一大块4K字节时,问题就出现了。音频文件确实是压缩的,因此clientFormat是LPCM,并且发生了隐式转换,就像在示例代码中一样。但是当我读取较小的块时,收集到bufferList(AudioBufferList *)中的数据似乎是不同的。它取决于ExtAudioFileRead()调用中的number_of_frames参数:
ExtAudioFileRead (
audioFileObject,
&numberOfFramesToRead, // <- this set to chunk size in bytes
bufferList // <- contains 2 buffers, 1 chan each for L, R
);
问:要读取的帧数是否应该表示OUTPUT格式中的数字?那么,如果我指定1024帧,我会得到1024 L,R样本读取为简单的LPCM格式? 问:如果每次读取的帧数不同,为什么会得到不同的结果?
SDK:iOS 5.1