2

我正在尝试使用 AudioFile 和 ExtAudioFile API 编写一个低级音频编写器。我正在使用 AudioFileInitializeWithCallbacks 创建一个新的音频文件,但似乎这需要实现读取和获取大小回调。为什么这不能只接受一个写入回调并相信数据已成功写入。

如果我正在写入一个我无法找到的流(例如 CD 或网络套接字)怎么办?

当然,这应该只是不断地将数据推送到写入回调,如果操作不成功,我有责任在需要返回错误代码的地方写入这些数据。

AudioFile_SetSizeProc 和 AudioFile_WriteProc 的文档似乎不正确,因为它们都谈到了读取操作“inPosition 要读取的数据的偏移量。”、“@result 回调应该返回数据的大小。”。

目前我已经通过只写入文件来解决这个问题,但是在第一次写入过程之后我得到了一个 kExtAudioFileError_InvalidOperationOrder 。这是什么意思?文档中没有关于它的评论。

任何指示或帮助都会非常感激。

4

1 回答 1

1

Apple 文档在这里是错误的。检查头文件 AudioFile.h:

/*!
@typedef    AudioFile_SetSizeProc
@abstract   A callback for setting the size of the file data. used with AudioFileOpenWithCallbacks or AudioFileInitializeWithCallbacks.
@discussion a function that will be called when AudioFile needs to set the size of the file data. This size is for all of the 
            data in the file, not just the audio data. This will only be called if the file is written to.
@param      inClientData    A pointer to the client data as set in the inClientData parameter to AudioFileXXXWithCallbacks.
@result                     The callback should return the size of the data.
*/

typedef OSStatus (*AudioFile_SetSizeProc)(
                            void *      inClientData,
                            SInt64      inSize);
于 2013-03-28T09:02:42.130 回答