2

AudioFileおよびExtAudioFileAPIを使用して低レベルのオーディオライターを作成しようとしています。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 に答える