Hi!
I'm a starter in VC++, and I have a little (for me is a big) problem with real time audio playback. I Use the following code:
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#define SOUNDBUFF 65536;
WAVEFORMATEX wf;
WAVEHDR whdr;
HWAVEIN hWaveIn;
HWAVEOUT hWaveOut;
LPSTR lpData;
int main(void)
{
char clpData[65536];
lpData=clpData;
wf.wFormatTag=WAVE_FORMAT_PCM;
wf.nChannels=1;
wf.nSamplesPerSec=8000;
wf.nAvgBytesPerSec=wf.nSamplesPerSec;
wf.nBlockAlign=1;
wf.wBitsPerSample=8;
wf.cbSize=0;
waveInOpen((LPHWAVEIN)&hWaveIn,WAVE_MAPPER,&wf,0,0,CALLBACK_NULL);
whdr.lpData = lpData;
whdr.dwBufferLength = SOUNDBUFF;
whdr.dwBytesRecorded = 0;
whdr.dwFlags = 0L;
whdr.dwLoops = 0L;
waveInPrepareHeader(hWaveIn,&whdr,sizeof(whdr));
waveInAddBuffer(hWaveIn,&whdr,sizeof(whdr));
waveInStart(hWaveIn);
int n=0;
do {
} while (!(whdr.dwFlags & WHDR_DONE));
waveInUnprepareHeader((HWAVEIN)hWaveOut,&whdr,sizeof(whdr));
waveInClose(hWaveIn);
waveOutOpen(&hWaveOut,WAVE_MAPPER,&wf,0,0,CALLBACK_NULL);
waveOutPrepareHeader(hWaveOut,&whdr,sizeof(whdr));
waveOutWrite(hWaveOut,&whdr,sizeof(whdr));
n=0;
do {
} while (!(whdr.dwFlags & WHDR_DONE));
waveOutUnprepareHeader(hWaveOut,&whdr,sizeof(whdr));
waveOutClose(hWaveOut);
return 0;
}
It's work fine, but I would hear real time, what is input buffer, and continuously. I haven't idea how can i make it, i don't understand, how can i read a buffer when is under writing. Please help, cause I probe it a week ago and no results.
Thanks for everyone!