读取AudioFileInitializeWithCallbacks所需的回调? Apple AudioFile API

时间:2012-06-16 13:23:29

标签: c core-audio extaudiofile

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

如果我正在写一个我无法访问的流,例如CD或网络套接字,该怎么办?

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

AudioFile_SetSizeProc和AudioFile_WriteProc的文档似乎不正确,因为它们都讨论了读取操作“inPosition一个偏移到要读取的数据。”,“@ result回调应该返回数据的大小。”。< / p>

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

任何指针或帮助都会受到很多关注。

1 个答案:

答案 0 :(得分: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);