OpenAL воспроизводит захваченные аудиоданные c ++

Я пытаюсь создать программу голосового чата с использованием OpenAL. Кажется, что с сетью все в порядке, но я посоветуюсь с этим =]

Проблема, с которой я столкнулся на данный момент, заключается в попытке воспроизвести захваченные аудиоданные с микрофона. Я следовал найденному кодуВот чтобы получить микрофонный вход и отразить его на динамики.

Это работает нормально, но я не могу воспроизвести полностью захваченный звук после завершения захвата.

Когда какой-то звук был захвачен, я сохраняю его в списке примерно так ...

for (int i = 0; i < CAP_SIZE; i++)
{
    playbackBuffer.push_back( buffer[i] );
}

и затем после завершения захвата я попытался (и не смог) использовать следующий код для воспроизведения этого аудио

ALuint  playbackSource;
alGenSources(1, &playbackSource);
errorCode = alGetError();

ALuint tempPlayback;
alBufferData(tempPlayback, AL_FORMAT_MONO16, &playbackBuffer.front(), playbackBuffer.size()*sizeof(ALuint), FREQ);

// Attach the playback buffer to the new playback source
alSourcei(playbackSource, AL_BUFFER, tempPlayback);
alSourcePlay(playbackSource);

ALint sState = 0;
do
{
    alGetSourcei(playbackSource, AL_SOURCE_STATE, &sState);
}
while ((sState == AL_PLAYING));

При отладке я вижу, что в PlayBuffer содержится много данных, и в этот момент воспроизводится шум в доли секунды, но он не близок к тому, который был захвачен.

РЕДАКТИРОВАТЬ: я добавил строку

alGenBuffers(1, &tempPlayback);

после создания tempPlayback и перед вызовом alBufferData (...), и теперь он воспроизводится в течение правильного промежутка времени, но все, что я слышу, - это высокий шум на протяжении всего пути.

Ответы на вопрос(3)

Ваш ответ на вопрос