语音传输如何解决杂音? 传输中有很有节奏的都督声,似乎是每次发送或接收时产生的。如何解决好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 接收和发送是两个socket,都是双缓冲,但问题依然存在。socket有数据到时,发送MM_WOM_OPEN消息给窗体:void CVoiceSocket::OnReceive(int nErrorCode){ // TODO: 在此添加专用代码和/或调用基类 SendMessage(hwnd,MM_WOM_OPEN,0,0); CAsyncSocket::OnReceive(nErrorCode);}LRESULT Voice::ON_MM_WOM_OPEN(WPARAM wParam, LPARAM lParam){ if(!IsVoiceOn) return 0; int recvcount; if(outfirst) { recvcount=m_voicerecv.Receive(Out1,5120); waveOutUnprepareHeader(hWaveOut,&hout1,sizeof(WAVEHDR)); hout1.dwBufferLength=recvcount; waveOutPrepareHeader(hWaveOut,&hout1,sizeof(WAVEHDR)); waveOutWrite(hWaveOut,&hout1,sizeof(WAVEHDR)); } else { recvcount=m_voicerecv.Receive(Out2,5120); waveOutUnprepareHeader(hWaveOut,&hout2,sizeof(WAVEHDR)); hout2.dwBufferLength=recvcount; waveOutPrepareHeader(hWaveOut,&hout2,sizeof(WAVEHDR)); waveOutWrite(hWaveOut,&hout2,sizeof(WAVEHDR)); } outfirst=!outfirst; return 0;}以下是发送:LRESULT Voice::ON_MM_WIM_DATA(WPARAM wParam, LPARAM lParam){ WAVEHDR* hdr=(WAVEHDR*)lParam; char sendbuf[5120]; int sendlen=(int)hdr->dwBytesRecorded; memcpy(sendbuf,hdr->lpData,sendlen); if(IsVoiceOn) { infirst=!infirst; if(infirst) waveInAddBuffer(hWaveIn,&hin1,sizeof(WAVEHDR)); else waveInAddBuffer(hWaveIn,&hin2,sizeof(WAVEHDR)); char sendbuf2[5120]; DWORD deslen=sendlen; if(!Coded(sendbuf,sendlen,sendbuf2,&deslen)) return 0; for(int i=0;i<voicelist.GetCount();i++) { m_voicesend.SendTo(sendbuf2,(int)deslen,voicelist.GetAt(i).Port,voicelist.GetAt(i).IP); } } return 0;}究竟哪里有问题呢? 有一个实例参考一下http://www.vckbase.com/document/viewdoc/?id=1080 急,如何开发Win32应用程序? 求助啊 ansi 转换 成 unicode 碰到诸多问题, 刚开始学MFC,一个小问题 InstallShield For VC++6.0 谁有??? 怎样才能让用Xtreme ToolKit生成的Outlook左边的“拉帘条”失效? 如何锁定一个View视的大小,禁止用户拖拉边框来进行放大或缩小界面大小。 类似SQL SERVER的SQL Query编辑器是怎么实现的? 求救!!!有谁写过专为VB调用的读写文件的VC的dll?? c++6.0的程序运行总是不通过,求大神分析一下? 急 我的vc出问题了 请大侠们帮帮忙 关于Windows任务管理器-请指教
socket有数据到时,发送MM_WOM_OPEN消息给窗体:
void CVoiceSocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
SendMessage(hwnd,MM_WOM_OPEN,0,0);
CAsyncSocket::OnReceive(nErrorCode);
}LRESULT Voice::ON_MM_WOM_OPEN(WPARAM wParam, LPARAM lParam)
{
if(!IsVoiceOn)
return 0;
int recvcount;
if(outfirst)
{
recvcount=m_voicerecv.Receive(Out1,5120);
waveOutUnprepareHeader(hWaveOut,&hout1,sizeof(WAVEHDR));
hout1.dwBufferLength=recvcount;
waveOutPrepareHeader(hWaveOut,&hout1,sizeof(WAVEHDR));
waveOutWrite(hWaveOut,&hout1,sizeof(WAVEHDR));
}
else
{
recvcount=m_voicerecv.Receive(Out2,5120);
waveOutUnprepareHeader(hWaveOut,&hout2,sizeof(WAVEHDR));
hout2.dwBufferLength=recvcount;
waveOutPrepareHeader(hWaveOut,&hout2,sizeof(WAVEHDR));
waveOutWrite(hWaveOut,&hout2,sizeof(WAVEHDR));
}
outfirst=!outfirst;
return 0;
}以下是发送:
LRESULT Voice::ON_MM_WIM_DATA(WPARAM wParam, LPARAM lParam)
{
WAVEHDR* hdr=(WAVEHDR*)lParam;
char sendbuf[5120];
int sendlen=(int)hdr->dwBytesRecorded;
memcpy(sendbuf,hdr->lpData,sendlen); if(IsVoiceOn)
{
infirst=!infirst;
if(infirst)
waveInAddBuffer(hWaveIn,&hin1,sizeof(WAVEHDR));
else
waveInAddBuffer(hWaveIn,&hin2,sizeof(WAVEHDR));
char sendbuf2[5120];
DWORD deslen=sendlen;
if(!Coded(sendbuf,sendlen,sendbuf2,&deslen))
return 0;
for(int i=0;i<voicelist.GetCount();i++)
{
m_voicesend.SendTo(sendbuf2,(int)deslen,voicelist.GetAt(i).Port,voicelist.GetAt(i).IP);
}
}
return 0;
}究竟哪里有问题呢?