Удаление последнего буфера, воспроизведенного из памяти - PullRequest
0 голосов
/ 10 марта 2012

У меня есть аудиоприложение Objective-C, основанное на аудиоустройстве, и моя проблема в том, что когда я воспроизводю звук, затем останавливаю его, затем воспроизводит другой звук, я слышу последний буфер из первого звука. Я думаю, что я должен просто освободить ioData или что-то еще, но все мои попытки потерпели неудачу.

static OSStatus playbackCallback(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames,  AudioBufferList *ioData)
{
    RemoteIOPlayer *remoteIOplayer = (__bridge RemoteIOPlayer *)inRefCon;

    for (int i = 0 ; i < ioData->mNumberBuffers; i++)
    {
        AudioBuffer buffer = ioData->mBuffers[i];
        UInt32 *frameBuffer = buffer.mData;

        for (int j = 0; j < inNumberFrames; j++)
        {
             frameBuffer[j]= [[remoteIOplayer inMemoryAudioFile] getNextPacket:inBusNumber];
        }
    }
    return noErr;
}

Пожалуйста, помогите :) Спасибо.

1 Ответ

0 голосов
/ 13 июня 2012

Хорошо, это почти что деинициализация augraph и инициализация его снова после того, как пользователь останавливается

...