初学VC网络编程,最近看一个例子看的有点不明白
void CSound::Init()
{
//初始化音频输入输出设备
...........................
waveOutWrite(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR));
}//播放本地的录音实际上就是将m_cBufferIn的内容拷贝到m_cBufferOut中(就是对这句话不明白)
void CSound::Play()
{
memcpy(m_cBufferOut,m_cBufferIn,MAX_BUFFER_SIZE);
}播放声音是不是通过waveOutWrite()实现的?这个函数是不是只要调用一次它的管理权是不是就交给了 系统负责,只要调用一次它就会不断的读取m_cBufferOut中的内容,我们要做的工作只是把m_cBufferIn的内容拷贝到m_cBufferOut中?
void CSound::Init()
{
//初始化音频输入输出设备
...........................
waveOutWrite(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR));
}//播放本地的录音实际上就是将m_cBufferIn的内容拷贝到m_cBufferOut中(就是对这句话不明白)
void CSound::Play()
{
memcpy(m_cBufferOut,m_cBufferIn,MAX_BUFFER_SIZE);
}播放声音是不是通过waveOutWrite()实现的?这个函数是不是只要调用一次它的管理权是不是就交给了 系统负责,只要调用一次它就会不断的读取m_cBufferOut中的内容,我们要做的工作只是把m_cBufferIn的内容拷贝到m_cBufferOut中?
waveOutWrite (hWaveOut, pWaveHdrOut[nIn], sizeof (WAVEHDR)) ;
采集 然后用gips 或者 speex压缩 传输 也叫编码
另外一端解码 接收端要有一个 jitter buffer也叫抖动buffer.
这个buffer会带来声音的一些延迟,不过会让声音流畅。