A reprodução OpenAL capturou dados de áudio c ++

Estou tentando criar um programa de bate-papo por voz usando o OpenAL. O lado da rede parece bom, mas eu vou dar conselhos sobre isso =]

O problema que estou tendo no momento é tentar reproduzir dados de áudio capturados do microfone. Eu segui o código encontradoaqu para obter a entrada de microfone e ecoar para os alto-falante

Isso funciona bem, mas não consigo reproduzir o áudio totalmente capturado após o término da captur

Quando algum som é capturado, guardo-o em uma lista como essa ...

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

e, depois que a captura terminou, tentei (e falhei) usar o código a seguir para reproduzir o áudio

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));

Ao depurar, vejo que o playbackBuffer possui muitos dados e há uma fração de segundo de ruído reproduzido neste momento, mas nem perto do que foi capturado.

EDIT: eu adicionei a linha

alGenBuffers(1, &tempPlayback);

depois de criar o tempPlayback e antes da chamada para alBufferData (...) e isso agora é reproduzido pelo tempo correto, mas tudo o que ouço é um ruído agudo durante todo o tempo.

questionAnswers(6)

yourAnswerToTheQuestion