OpenAL reproducción de datos de audio capturados c ++

Estoy tratando de crear un programa de chat de voz usando OpenAL. El lado de las redes parece estar bien, pero tomaré un consejo al respecto =]

El problema que tengo en este momento es intentar reproducir los datos de audio capturados desde el micrófono. Seguí el código encontradoaqu para obtener entrada de micrófono y hacer eco a los altavoces.

Esto funciona bien, pero parece que no puedo reproducir el audio capturado completamente después de que la captura ha finalizado.

Cuando se ha capturado algo de sonido, lo almaceno en una lista como esta ...

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

y luego, una vez finalizada la captura, he intentado (y no he podido) utilizar el siguiente código para reproducir ese audio de nuevo

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

Al depurar puedo ver que el Búfer de reproducción tiene una gran cantidad de datos y hay una fracción de segundo de ruido reproducido en este punto, pero ni mucho menos que el capturado.

EDIT: he agregado la línea

alGenBuffers(1, &tempPlayback);

después de crear tempPlayback y antes de la llamada a alBufferData (...) y esto ahora se reproduce durante el tiempo correcto, pero todo lo que escucho es un ruido agudo durante todo el proceso.

Respuestas a la pregunta(6)

Su respuesta a la pregunta