My english is poor,so I beg your pardon.
My codes are about playing voice,and it doesn't return error,
but it has no voice,why?
Look:
Code:
#define OUT_BUFFER_SIZE 6000
void main()
{
HWAVEOUT hWaveOut ;
PWAVEHDR pWaveHdr ;
WAVEFORMATEX waveformat ;
PBYTE pBuffer;
waveformat.wFormatTag = WAVE_FORMAT_PCM ;
waveformat.nChannels = 2 ;
waveformat.nSamplesPerSec = 44100; ;
waveformat.nAvgBytesPerSec = 44100*16*2/8 ;
waveformat.nBlockAlign = 16*2/8 ;
waveformat.wBitsPerSample = 16 ;
waveformat.cbSize = 0 ;
// open
if (waveOutOpen (&hWaveOut, WAVE_MAPPER, &waveformat,0, 0, 0)!= MMSYSERR_NOERROR)
{
printf("waveOutOpen error \n");
return ;
}
pWaveHdr =(PWAVEHDR)malloc (sizeof (WAVEHDR)) ;
pBuffer = (PBYTE)malloc (OUT_BUFFER_SIZE) ;
// prepare buffer
pWaveHdr->lpData = (char*)pBuffer ;
pWaveHdr->dwBufferLength = OUT_BUFFER_SIZE ;
pWaveHdr->dwBytesRecorded = 0 ;
pWaveHdr->dwUser = 0 ;
pWaveHdr->dwFlags = 0 ;
pWaveHdr->dwLoops = 1 ;
pWaveHdr->lpNext = NULL ;
pWaveHdr->reserved = 0 ;
if(waveOutPrepareHeader(hWaveOut, pWaveHdr,sizeof (WAVEHDR))!=MMSYSERR_NOERROR)
{
printf("waveOutPrepareHeader error \n");
return ;
}
// play
memset(pBuffer,70,OUT_BUFFER_SIZE);
if(waveOutWrite (hWaveOut, pWaveHdr, sizeof (WAVEHDR)) !=MMSYSERR_NOERROR)
{
printf("waveOutWrite error \n");
return ;
}
// clean
if(waveOutReset(hWaveOut) !=MMSYSERR_NOERROR)
{
printf("waveOutReset error \n");
return ;
}
if(waveOutUnprepareHeader (hWaveOut, pWaveHdr, sizeof (WAVEHDR)) !=MMSYSERR_NOERROR)
{
printf("waveOutUnprepareHeader error \n");
return ;
}
if(waveOutClose(hWaveOut)!=MMSYSERR_NOERROR)
{
printf("waveOutClose error \n");
return ;
}
}