以下是一个实现录音、回放同步的程序代码:
(只贴出了一部分,后续一齐贴出)void CTVoicePlayDlg::OnMM_WIM_DATA(UINT wParam, LONG lParam)
{//当缓存已满或者停止录音时的消息
if(bIsStop)
{
waveInClose (hWaveIn) ; //关闭录音
return;
}
if(bIsBuffer1)
{
pWaveHdr1->lpData=(LPTSTR)pBuffer2; //第一块播放完毕换第二块
bIsBuffer1=0;
pWaveHdr2->lpData=(LPTSTR)pBuffer1;
}
else
{
pWaveHdr1->lpData=(LPTSTR)pBuffer1; //第二块播放完毕换第一块
bIsBuffer1=1;
pWaveHdr2->lpData=(LPTSTR)pBuffer2;
}
waveOutWrite (hWaveOut, pWaveHdr2, sizeof (WAVEHDR)) ;
waveInAddBuffer (hWaveIn, pWaveHdr1, sizeof (WAVEHDR)) ;
}
不过,这个东西延时比较大,主要就在上面这段代码,怎么会执行那么多时间。
(只贴出了一部分,后续一齐贴出)void CTVoicePlayDlg::OnMM_WIM_DATA(UINT wParam, LONG lParam)
{//当缓存已满或者停止录音时的消息
if(bIsStop)
{
waveInClose (hWaveIn) ; //关闭录音
return;
}
if(bIsBuffer1)
{
pWaveHdr1->lpData=(LPTSTR)pBuffer2; //第一块播放完毕换第二块
bIsBuffer1=0;
pWaveHdr2->lpData=(LPTSTR)pBuffer1;
}
else
{
pWaveHdr1->lpData=(LPTSTR)pBuffer1; //第二块播放完毕换第一块
bIsBuffer1=1;
pWaveHdr2->lpData=(LPTSTR)pBuffer2;
}
waveOutWrite (hWaveOut, pWaveHdr2, sizeof (WAVEHDR)) ;
waveInAddBuffer (hWaveIn, pWaveHdr1, sizeof (WAVEHDR)) ;
}
不过,这个东西延时比较大,主要就在上面这段代码,怎么会执行那么多时间。
解决方案 »
- ActiveX中获取键盘输入
- 为什么文本框最多显示127个字节?
- 求tiny-c编译器源码?
- 谁有《VisualC++实践与提高系列丛书-网络编程篇》这本书的电子版?
- 多线程网络程序代码发放,欢迎各位朋友,(不管高手,低手)索取,指正
- 再散100分,恭喜一个星期从两个角变成三个角
- vc++与java,c#那个好?
- 如何不出现任何提示信息地终止一个windows程序啊?
- 100分不爽,再开一贴,放分(就今天了,晚了不侯)
- 在非MFC工程中,如何使用MFC的CString类?
- 为什么 钩子子程中捕获不了IE的 打印对话框??急!
- vc6生成的工程转变为VC7工程后,如何将对话框中的按钮变为XP风格?
设小些延迟的问题就能好很多了
但也不要太小,反复调节一下找到一个适中的平衡点