马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
pWaveHdr2->lpData = (LPSTR)pBuffer2;
pWaveHdr2->dwBufferLength = dwDataLength;
pWaveHdr2->dwBytesRecorded = 0;
pWaveHdr2->dwUser = 0;
pWaveHdr2->dwFlags = 0;
pWaveHdr2->dwLoops = 1;
pWaveHdr2->lpNext = NULL;
pWaveHdr2->reserved = 0;
waveInPrepareHeader(hWaveIn, pWaveHdr2, sizeof(WAVEHDR));
我的问题:一个输入设备为何要两个缓冲区 ?
一个输入设备通常需要两个缓冲区是为了实现连续的音频数据采集。当一个缓冲区正在被设备使用来接收音频数据时,应用程序可以同时准备另一个缓冲区以便在第一个缓冲区被填满后立即切换到第二个缓冲区,以保证连续的数据采集。
在给定的代码中,pBuffer2是第二个缓冲区,pWaveHdr2是第二个缓冲区的WAVEHDR结构。当调用waveInPrepareHeader函数时,通过将第二个缓冲区的信息传递给该函数,设备会为第二个缓冲区做好准备,以便在需要时可以立即使用。
使用两个缓冲区可以实现无间断的数据采集,因为当一个缓冲区被填满时,应用程序可以开始处理已经被填充的缓冲区的数据,而设备可以继续在另一个缓冲区中接收新的音频数据。这样可以避免数据丢失或中断,确保音频数据的连续性。
|