1

MixerHostAudioを使用して複数のオーディオファイルを同時にロードします。

APPがクラッシュするため、ファイル全体をメモリにロードできません。

誰かがthesaeファイルをバッファリングするためのアルゴリズムを実装するのを手伝ってもらえますか?

または、少なくとも私に例を示しますか?

私はなんとかここまで到達できました:

レンダリング関数の呼び出しが呼び出されるコードを特定しました。

    UInt32 numberOfPacketsToRead = (UInt32) totalFramesInFile;

    result = ExtAudioFileRead (audioFileObject, &numberOfPacketsToRead, bufferList);

    free (bufferList);

    if (noErr != result) {

        [self printErrorMessage: @"ExtAudioFileRead failure - " withStatus: result];

        // If reading from the file failed, then free the memory for the sound buffer.
        free (soundStructArray[audioFile].audioDataLeft);
        soundStructArray[audioFile].audioDataLeft = 0;

        if (2 == channelCount) {
            free (soundStructArray[audioFile].audioDataRight);
            soundStructArray[audioFile].audioDataRight = 0;
        }

        ExtAudioFileDispose (audioFileObject);            
        return;
    }

---バッファリングが終了したときにのみパーツが欠落しているので、プログラムに次のチャンクを取得するように指示できます。

何か案は?

ありがとう

ヘルナン

4

1 に答える 1

1

オーディオを処理するには、リングバッファを使用する必要があります。

ここにある簡単な例があります。

リングバッファ

于 2011-09-14T09:45:58.277 に答える