静音时为何有嘟嘟声?在线等待
匪六哥 2003-12-23 09:50:50 我在做音频解码,格式为PCM,在编码器静音时,解出的声音为嘟嘟声,按道理应该没有声音,在有声音时,有杂音,我不知道是为什么。具体实现如下:
LPWAVEFORMATEX lpFormat;
LONG cbFormat;
cbFormat = 50000;
lpFormat = (LPWAVEFORMATEX)malloc(cbFormat);
lpFormat->wFormatTag = WAVE_FORMAT_PCM;
lpFormat->nChannels = 1;
lpFormat->nSamplesPerSec = 8000;
lpFormat->nAvgBytesPerSec = 8000*1*2;
lpFormat->nBlockAlign = 2;
lpFormat->wBitsPerSample = 16;
w = waveOutOpen(&shWaveOut, WAVE_MAPPER, lpFormat,
0, 0L, CALLBACK_NULL);//打开音频设备
for (swBuffers = 0; swBuffers < MAX_AUDIO_BUFFERS; swBuffers++) {
if (!(salpAudioBuf[swBuffers] =(LPWAVEHDR)malloc((DWORD)(sizeof(WAVEHDR) + AUDIO_BUFFER_SIZE*4 ))))//申请buffer
break
salpAudioBuf[swBuffers]->dwFlags = WHDR_DONE;
salpAudioBuf[swBuffers]->lpData = (char*) salpAudioBuf[swBuffers] + sizeof(WAVEHDR);
salpAudioBuf[swBuffers]->dwBufferLength = AUDIO_BUFFER_SIZE;
if (!waveOutPrepareHeader(shWaveOut, salpAudioBuf[swBuffers],sizeof(WAVEHDR)))
continue;
free((LPBYTE) salpAudioBuf[swBuffers]);
break;
}
salpAudioBuf[swNextBuffer]->lpData = (char*) salpAudioBuf[swNextBuffer]
+ sizeof(WAVEHDR);
memcpy((salpAudioBuf[swNextBuffer]->lpData)+bufferNo, s, wParam);//写buffer
waveOutWrite(shWaveOut, salpAudioBuf[swNextBuffer],sizeof(WAVEHDR));//播放音频