2

我在这里有一个令人毛骨悚然的时刻,试图使用循环缓冲区调整 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 格式?问:为什么每次读取的帧数不同会得到不同的结果?

开发工具包:iOS 5.1

4

0 回答 0