- 论坛徽章:
- 0
|
招人,招人了(麻烦置顶)
声音采集的静默音排除,传输语音数据(VoiceIP)
case MM_WIM_DATA:
WAVEHDR* pWH = (WAVEHDR*)msg.lParam;
waveInUnprepareHeader( (HWAVEIN)msg.wParam, pWH, sizeof( WAVEHDR ) );
if ( pWH->;dwBytesRecorded != SIZE_AUDIO_FRAME ) break;
memcpy( buffer, pWH->;lpData, pWH->;dwBytesRecorded );
CPeer& rPeer = CPeer::GetSingleton( );
if ( rPeer.GetConnetingFlag( ) )
{
char pchOut[1024];
WORD * p = (WORD*)pchBuffer;
g_dwTime ++;
if ( p[0] < 63000 || g_dwTime < 100 )
{
if ( p[0] < 63000 ) g_dwTime = 0;
float fInputs[ SIZE_AUDIO_FRAME / 2 ];
for ( int i = 0; i < SIZE_AUDIO_FRAME / 2; i ++ )
{
short x = 0;
x = pchBuffer[ i * 2 ] & 0xff;
x = x | ( ( pchBuffer[ i * 2 + 1 ] ) << 8 );
fInputs = x;
}
speex_bits_reset( &m_Bitsenc );
speex_encode( m_pStateenc, fInputs, &m_Bitsenc );
speex_bits_write( &m_Bitsenc, pchOut, 1024 );
rPeer.Send( (char*)&CVoiceDataPeerMsg( pchOut ), sizeof( CVoiceDataPeerMsg ) );
}
} |
|