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.