some GUI work

This commit is contained in:
Volker Fischer 2009-08-02 17:44:45 +00:00
parent 43eb897fd8
commit 9eb7bb9e1f
8 changed files with 167 additions and 187 deletions

View file

@ -29,7 +29,8 @@
/* Implementation *************************************************************/ /* Implementation *************************************************************/
void CNetBuf::Init ( const int iNewBlockSize, const int iNewNumBlocks ) void CNetBuf::Init ( const int iNewBlockSize,
const int iNewNumBlocks )
{ {
// total size -> size of one block times number of blocks // total size -> size of one block times number of blocks
iBlockSize = iNewBlockSize; iBlockSize = iNewBlockSize;
@ -226,9 +227,10 @@ int CNetBuf::GetAvailData() const
void CNetBuf::Clear ( const EClearType eClearType ) void CNetBuf::Clear ( const EClearType eClearType )
{ {
int iMiddleOfBuffer = 0;
int iMiddleOfBuffer; if ( iBlockSize != 0 )
{
#if 0 #if 0
/* with the following operation we set the new get pos to a block /* with the following operation we set the new get pos to a block
boundary (one block below the middle of the buffer in case of odd boundary (one block below the middle of the buffer in case of odd
@ -243,7 +245,7 @@ void CNetBuf::Clear ( const EClearType eClearType )
/* 1: 0 / 2: 1 / 3: 1 / 4: 2 / ... */ /* 1: 0 / 2: 1 / 3: 1 / 4: 2 / ... */
iMiddleOfBuffer = ( ( iMemSize / 2 ) / iBlockSize ) * iBlockSize; iMiddleOfBuffer = ( ( iMemSize / 2 ) / iBlockSize ) * iBlockSize;
#endif #endif
}
// different behaviour for get and put corrections // different behaviour for get and put corrections
if ( eClearType == CT_GET ) if ( eClearType == CT_GET )

View file

@ -36,7 +36,7 @@ CClient::CClient ( const quint16 iPortNumber ) :
vstrIPAddress ( MAX_NUM_SERVER_ADDR_ITEMS, "" ), strName ( "" ), vstrIPAddress ( MAX_NUM_SERVER_ADDR_ITEMS, "" ), strName ( "" ),
bOpenChatOnNewMessage ( true ), bOpenChatOnNewMessage ( true ),
bDoAutoSockBufSize ( true ), bDoAutoSockBufSize ( true ),
iSndCrdPreferredMonoBlSizeIndex ( CSndCrdBufferSizes::GetDefaultIndex() ) iSndCrdPreferredMonoBlSizeIndex ( FRAME_SIZE_FACTOR_DEFAULT )
{ {
// connection for protocol // connection for protocol
QObject::connect ( &Channel, QObject::connect ( &Channel,
@ -148,10 +148,11 @@ bool CClient::SetServerAddr ( QString strNAddr )
void CClient::SetSndCrdPreferredMonoBlSizeIndex ( const int iNewIdx ) void CClient::SetSndCrdPreferredMonoBlSizeIndex ( const int iNewIdx )
{ {
// right now we simply set the internal value // right now we simply set the internal value
if ( ( iNewIdx >= 0 ) && ( CSndCrdBufferSizes::GetNumOfBufferSizes() ) ) if ( ( iNewIdx == FRAME_SIZE_FACTOR_PREFERRED ) ||
( iNewIdx == FRAME_SIZE_FACTOR_DEFAULT ) ||
( iNewIdx == FRAME_SIZE_FACTOR_SAFE ) )
{ {
iSndCrdPreferredMonoBlSizeIndex = iNewIdx; iSndCrdPreferredMonoBlSizeIndex = iNewIdx;
}
// init with new parameter, if client was running then first // init with new parameter, if client was running then first
// stop it and restart again after new initialization // stop it and restart again after new initialization
@ -168,6 +169,7 @@ void CClient::SetSndCrdPreferredMonoBlSizeIndex ( const int iNewIdx )
{ {
Sound.Start(); Sound.Start();
} }
}
} }
QString CClient::SetSndCrdDev ( const int iNewDev ) QString CClient::SetSndCrdDev ( const int iNewDev )
@ -259,8 +261,8 @@ void CClient::AudioCallback ( CVector<int16_t>& psData, void* arg )
void CClient::Init ( const int iPrefMonoBlockSizeSamIndexAtSndCrdSamRate ) void CClient::Init ( const int iPrefMonoBlockSizeSamIndexAtSndCrdSamRate )
{ {
// translate block size index in actual block size // translate block size index in actual block size
const int iPrefMonoBlockSizeSamAtSndCrdSamRate = CSndCrdBufferSizes:: const int iPrefMonoBlockSizeSamAtSndCrdSamRate =
GetBufferSizeFromIndex ( iPrefMonoBlockSizeSamIndexAtSndCrdSamRate ); iPrefMonoBlockSizeSamIndexAtSndCrdSamRate * SYSTEM_BLOCK_FRAME_SAMPLES;
// get actual sound card buffer size using preferred size // get actual sound card buffer size using preferred size
iMonoBlockSizeSam = Sound.Init ( iPrefMonoBlockSizeSamAtSndCrdSamRate ); iMonoBlockSizeSam = Sound.Init ( iPrefMonoBlockSizeSamAtSndCrdSamRate );

View file

@ -65,11 +65,6 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
SliderNetBuf->setRange ( MIN_NET_BUF_SIZE_NUM_BL, MAX_NET_BUF_SIZE_NUM_BL ); SliderNetBuf->setRange ( MIN_NET_BUF_SIZE_NUM_BL, MAX_NET_BUF_SIZE_NUM_BL );
UpdateJitterBufferFrame(); UpdateJitterBufferFrame();
// sound card buffer size
SliderSndCrdBufferDelay->setRange ( 0,
CSndCrdBufferSizes::GetNumOfBufferSizes() - 1 );
SliderSndCrdBufferDelay->setPageStep ( 1 ); // improves setting with a mouse click
// init combo box containing all available sound cards in the system // init combo box containing all available sound cards in the system
cbSoundcard->clear(); cbSoundcard->clear();
for ( int iSndDevIdx = 0; iSndDevIdx < pClient->GetSndCrdNumDev(); iSndDevIdx++ ) for ( int iSndDevIdx = 0; iSndDevIdx < pClient->GetSndCrdNumDev(); iSndDevIdx++ )
@ -88,26 +83,38 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbOpenChatOnNewMessage->setCheckState ( Qt::Unchecked ); cbOpenChatOnNewMessage->setCheckState ( Qt::Unchecked );
} }
// audio compression type // set text for sound card buffer delay radio buttons
rButBufferDelayPreferred->setText ( GenSndCrdBufferDelayString (
FRAME_SIZE_FACTOR_PREFERRED * SYSTEM_BLOCK_FRAME_SAMPLES,
", preferred" ) );
rButBufferDelayDefault->setText ( GenSndCrdBufferDelayString (
FRAME_SIZE_FACTOR_DEFAULT * SYSTEM_BLOCK_FRAME_SAMPLES,
", default" ) );
rButBufferDelaySafe->setText ( GenSndCrdBufferDelayString (
FRAME_SIZE_FACTOR_SAFE * SYSTEM_BLOCK_FRAME_SAMPLES ) );
/* /*
switch ( pClient->GetAudioCompressionOut() ) // sound card buffer delay
switch ( pClient->[]() )
{ {
case CT_NONE: case CT_NONE:
radioButtonNoAudioCompr->setChecked ( true ); rButBufferDelayPreferred->setChecked ( true );
break; break;
case CT_IMAADPCM: case CT_IMAADPCM:
radioButtonIMA_ADPCM->setChecked ( true ); rButBufferDelayDefault->setChecked ( true );
break; break;
case CT_MSADPCM: case CT_MSADPCM:
radioButtonMS_ADPCM->setChecked ( true ); rButBufferDelaySafe->setChecked ( true );
break; break;
} }
*/ */
AudioCompressionButtonGroup.addButton ( radioButtonNoAudioCompr ); SndCrdBufferDelayButtonGroup.addButton ( rButBufferDelayPreferred );
AudioCompressionButtonGroup.addButton ( radioButtonIMA_ADPCM ); SndCrdBufferDelayButtonGroup.addButton ( rButBufferDelayDefault );
AudioCompressionButtonGroup.addButton ( radioButtonMS_ADPCM ); SndCrdBufferDelayButtonGroup.addButton ( rButBufferDelaySafe );
// Connections ------------------------------------------------------------- // Connections -------------------------------------------------------------
@ -120,8 +127,6 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// slider controls // slider controls
QObject::connect ( SliderNetBuf, SIGNAL ( valueChanged ( int ) ), QObject::connect ( SliderNetBuf, SIGNAL ( valueChanged ( int ) ),
this, SLOT ( OnSliderNetBuf ( int ) ) ); this, SLOT ( OnSliderNetBuf ( int ) ) );
QObject::connect ( SliderSndCrdBufferDelay, SIGNAL ( valueChanged ( int ) ),
this, SLOT ( OnSliderSndCrdBufferDelay ( int ) ) );
// check boxes // check boxes
QObject::connect ( cbOpenChatOnNewMessage, SIGNAL ( stateChanged ( int ) ), QObject::connect ( cbOpenChatOnNewMessage, SIGNAL ( stateChanged ( int ) ),
@ -141,9 +146,9 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
QObject::connect ( pClient, SIGNAL ( PingTimeReceived ( int ) ), QObject::connect ( pClient, SIGNAL ( PingTimeReceived ( int ) ),
this, SLOT ( OnPingTimeResult ( int ) ) ); this, SLOT ( OnPingTimeResult ( int ) ) );
QObject::connect ( &AudioCompressionButtonGroup, QObject::connect ( &SndCrdBufferDelayButtonGroup,
SIGNAL ( buttonClicked ( QAbstractButton* ) ), this, SIGNAL ( buttonClicked ( QAbstractButton* ) ), this,
SLOT ( OnAudioCompressionButtonGroupClicked ( QAbstractButton* ) ) ); SLOT ( OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* ) ) );
// Timers ------------------------------------------------------------------ // Timers ------------------------------------------------------------------
@ -164,31 +169,35 @@ void CClientSettingsDlg::UpdateJitterBufferFrame()
TextNetBuf->setEnabled ( !pClient->GetDoAutoSockBufSize() ); TextNetBuf->setEnabled ( !pClient->GetDoAutoSockBufSize() );
} }
QString CClientSettingsDlg::GenSndCrdBufferDelayString ( const int iFrameSize,
const QString strAddText )
{
// use two times the buffer delay for the entire delay since
// we have input and output
return QString().setNum ( (double) iFrameSize * 2 *
1000 / SYSTEM_SAMPLE_RATE, 'f', 2 ) + " ms (" +
QString().setNum ( iFrameSize ) + strAddText + ")";
}
void CClientSettingsDlg::UpdateSoundCardFrame() void CClientSettingsDlg::UpdateSoundCardFrame()
{ {
// update slider value and text // update slider value and text
const int iCurPrefBufIdx = pClient->GetSndCrdPreferredMonoBlSizeIndex(); const int iCurPrefBufIdx = pClient->GetSndCrdPreferredMonoBlSizeIndex();
const int iCurActualBufSize = pClient->GetSndCrdActualMonoBlSize(); const int iCurActualBufSize = pClient->GetSndCrdActualMonoBlSize();
/*
SliderSndCrdBufferDelay->setValue ( iCurPrefBufIdx ); SliderSndCrdBufferDelay->setValue ( iCurPrefBufIdx );
// preferred size // preferred size
const int iPrefBufSize = const int iPrefBufSize =
CSndCrdBufferSizes::GetBufferSizeFromIndex ( iCurPrefBufIdx ); CSndCrdBufferSizes::GetBufferSizeFromIndex ( iCurPrefBufIdx );
*/
// use two times the buffer delay for the entire delay since
// we have input and output
TextLabelPreferredSndCrdBufDelay->setText (
QString().setNum ( (double) iPrefBufSize * 2 *
1000 / SYSTEM_SAMPLE_RATE, 'f', 2 ) + " ms (" +
QString().setNum ( iPrefBufSize ) + ")" );
// actual size (use yellow color if different from preferred size) // actual size (use yellow color if different from preferred size)
const QString strActSizeValues = const QString strActSizeValues =
QString().setNum ( (double) iCurActualBufSize * 2 * GenSndCrdBufferDelayString ( iCurActualBufSize );
1000 / SYSTEM_SAMPLE_RATE, 'f', 2 ) + " ms (" +
QString().setNum ( iCurActualBufSize ) + ")";
if ( iPrefBufSize != iCurActualBufSize ) // if ( iPrefBufSize != iCurActualBufSize )
if ( 0 ) // TEST
{ {
TextLabelActualSndCrdBufDelay->setText ( "<font color=""red"">" + TextLabelActualSndCrdBufDelay->setText ( "<font color=""red"">" +
strActSizeValues + "</font>" ); strActSizeValues + "</font>" );
@ -259,20 +268,20 @@ void CClientSettingsDlg::OnOpenChatOnNewMessageStateChanged ( int value )
UpdateDisplay(); UpdateDisplay();
} }
void CClientSettingsDlg::OnAudioCompressionButtonGroupClicked ( QAbstractButton* button ) void CClientSettingsDlg::OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* button )
{ {
/* /*
if ( button == radioButtonNoAudioCompr ) if ( button == rButBufferDelayPreferred )
{ {
pClient->SetAudioCompressionOut ( CT_NONE ); pClient->SetAudioCompressionOut ( CT_NONE );
} }
if ( button == radioButtonIMA_ADPCM ) if ( button == rButBufferDelayDefault )
{ {
pClient->SetAudioCompressionOut ( CT_IMAADPCM ); pClient->SetAudioCompressionOut ( CT_IMAADPCM );
} }
if ( button == radioButtonMS_ADPCM ) if ( button == rButBufferDelaySafe )
{ {
pClient->SetAudioCompressionOut ( CT_MSADPCM ); pClient->SetAudioCompressionOut ( CT_MSADPCM );
} }

View file

@ -62,26 +62,28 @@ public:
void SetStatus ( const int iMessType, const int iStatus ); void SetStatus ( const int iMessType, const int iStatus );
protected: protected:
CClient* pClient; void UpdateJitterBufferFrame();
QTimer TimerStatus; void UpdateSoundCardFrame();
QTimer TimerPing; QString GenSndCrdBufferDelayString ( const int iFrameSize,
QButtonGroup AudioCompressionButtonGroup; const QString strAddText = "" );
void UpdateDisplay();
virtual void showEvent ( QShowEvent* showEvent ); virtual void showEvent ( QShowEvent* showEvent );
virtual void hideEvent ( QHideEvent* hideEvent ); virtual void hideEvent ( QHideEvent* hideEvent );
void UpdateJitterBufferFrame(); CClient* pClient;
void UpdateSoundCardFrame(); QTimer TimerStatus;
QTimer TimerPing;
QButtonGroup SndCrdBufferDelayButtonGroup;
void UpdateDisplay();
public slots: public slots:
void OnTimerStatus() { UpdateDisplay(); } void OnTimerStatus() { UpdateDisplay(); }
void OnTimerPing(); void OnTimerPing();
void OnSliderNetBuf ( int value ); void OnSliderNetBuf ( int value );
void OnSliderSndCrdBufferDelay ( int value ); void OnSliderSndCrdBufferDelay ( int value );
void OnAutoJitBuf ( int value ); void OnAutoJitBuf ( int value );
void OnOpenChatOnNewMessageStateChanged ( int value ); void OnOpenChatOnNewMessageStateChanged ( int value );
void OnAudioCompressionButtonGroupClicked ( QAbstractButton* button ); void OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* button );
void OnPingTimeResult ( int iPingTime ); void OnPingTimeResult ( int iPingTime );
void OnSoundCrdSelection ( int iSndDevIdx ); void OnSoundCrdSelection ( int iSndDevIdx );
void OnDriverSetupBut(); void OnDriverSetupBut();

View file

@ -212,8 +212,8 @@
</property> </property>
<property name="sizeHint" > <property name="sizeHint" >
<size> <size>
<width>201</width> <width>71</width>
<height>20</height> <height>16</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@ -225,54 +225,32 @@
</property> </property>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout" >
<item> <item>
<widget class="QSlider" name="SliderSndCrdBufferDelay" > <widget class="QRadioButton" name="rButBufferDelayPreferred" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<enum>QSlider::TicksBelow</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" >
<item>
<widget class="QLabel" name="TextSndCrdBufDelayPreferred" >
<property name="text" > <property name="text" >
<string>Preferred</string> <string>(preferred)</string>
</property>
<property name="wordWrap" >
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="TextLabelPreferredSndCrdBufDelay" > <widget class="QRadioButton" name="rButBufferDelayDefault" >
<property name="minimumSize" >
<size>
<width>110</width>
<height>20</height>
</size>
</property>
<property name="frameShape" >
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow" >
<enum>QFrame::Sunken</enum>
</property>
<property name="text" > <property name="text" >
<string>val</string> <string>(default)</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> <item>
<widget class="QRadioButton" name="rButBufferDelaySafe" >
<property name="text" >
<string>(safe)</string>
</property>
</widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" > <layout class="QHBoxLayout" >
<item> <item>
<widget class="QLabel" name="TextSndCrdBufDelayActual" > <widget class="QLabel" name="TextSndCrdBufDelayActual" >
<property name="text" > <property name="text" >
<string>Actual</string> <string>Actual Value</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -323,36 +301,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBoxAudioCompressionType" >
<property name="title" >
<string>Audio Compression</string>
</property>
<layout class="QVBoxLayout" >
<item>
<widget class="QRadioButton" name="radioButtonIMA_ADPCM" >
<property name="text" >
<string>IMA ADPCM</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonMS_ADPCM" >
<property name="text" >
<string>MS ADPCM</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonNoAudioCompr" >
<property name="text" >
<string>None</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer> <spacer>
<property name="orientation" > <property name="orientation" >

View file

@ -66,6 +66,13 @@
( static_cast<double> ( SYSTEM_BLOCK_FRAME_SAMPLES ) / \ ( static_cast<double> ( SYSTEM_BLOCK_FRAME_SAMPLES ) / \
SYSTEM_SAMPLE_RATE * 1000 ) SYSTEM_SAMPLE_RATE * 1000 )
// define the allowed audio frame size factors (since the
// "SYSTEM_BLOCK_FRAME_SAMPLES" is quite small, it may be that on some
// computers a larger value is required)
#define FRAME_SIZE_FACTOR_PREFERRED 1 // 128 (for frame size 128)
#define FRAME_SIZE_FACTOR_DEFAULT 2 // 256 (for frame size 128)
#define FRAME_SIZE_FACTOR_SAFE 4 // 512 (for frame size 128)
// define the maximum mono audio buffer size at a sample rate // define the maximum mono audio buffer size at a sample rate
// of 48 kHz, this is important for defining the maximum number // of 48 kHz, this is important for defining the maximum number
// of bytes to be expected from the network interface // of bytes to be expected from the network interface

View file

@ -110,10 +110,17 @@ void CSettings::ReadIniFile ( const QString& sFileName )
// sound card preferred buffer size index // sound card preferred buffer size index
if ( GetNumericIniSet ( IniXMLDocument, "client", "prefsndcrdbufidx", if ( GetNumericIniSet ( IniXMLDocument, "client", "prefsndcrdbufidx",
0, CSndCrdBufferSizes::GetNumOfBufferSizes(), iValue ) ) FRAME_SIZE_FACTOR_PREFERRED, FRAME_SIZE_FACTOR_SAFE, iValue ) )
{
// additional check required since only a subset of factors are
// defined
if ( ( iValue == FRAME_SIZE_FACTOR_PREFERRED ) ||
( iValue == FRAME_SIZE_FACTOR_DEFAULT ) ||
( iValue == FRAME_SIZE_FACTOR_SAFE ) )
{ {
pClient->SetSndCrdPreferredMonoBlSizeIndex ( iValue ); pClient->SetSndCrdPreferredMonoBlSizeIndex ( iValue );
} }
}
// automatic network jitter buffer size setting // automatic network jitter buffer size setting
if ( GetFlagIniSet ( IniXMLDocument, "client", "autojitbuf", bValue ) ) if ( GetFlagIniSet ( IniXMLDocument, "client", "autojitbuf", bValue ) )

View file

@ -379,15 +379,23 @@ protected:
class CHostAddress class CHostAddress
{ {
public: public:
CHostAddress() : InetAddr ( (quint32) 0 ), iPort ( 0 ) {} CHostAddress() :
CHostAddress ( const QHostAddress NInetAddr, const quint16 iNPort ) : InetAddr ( (quint32) 0 ),
InetAddr ( NInetAddr ), iPort ( iNPort ) {} iPort ( 0 ) {}
CHostAddress ( const QHostAddress NInetAddr,
const quint16 iNPort ) :
InetAddr ( NInetAddr ),
iPort ( iNPort ) {}
CHostAddress ( const CHostAddress& NHAddr ) : CHostAddress ( const CHostAddress& NHAddr ) :
InetAddr ( NHAddr.InetAddr ), iPort ( NHAddr.iPort ) {} InetAddr ( NHAddr.InetAddr ),
iPort ( NHAddr.iPort ) {}
// copy and compare operators // copy and compare operators
CHostAddress& operator= ( const CHostAddress& NHAddr ) CHostAddress& operator= ( const CHostAddress& NHAddr )
{ InetAddr = NHAddr.InetAddr; iPort = NHAddr.iPort; return *this; } { InetAddr = NHAddr.InetAddr; iPort = NHAddr.iPort; return *this; }
bool operator== ( const CHostAddress& CompAddr ) // compare operator bool operator== ( const CHostAddress& CompAddr ) // compare operator
{ return ( ( CompAddr.InetAddr == InetAddr ) && ( CompAddr.iPort == iPort ) ); } { return ( ( CompAddr.InetAddr == InetAddr ) && ( CompAddr.iPort == iPort ) ); }
@ -404,9 +412,17 @@ public:
class CChannelShortInfo class CChannelShortInfo
{ {
public: public:
CChannelShortInfo() : iChanID ( 0 ), iIpAddr ( 0 ), strName ( "" ) {} CChannelShortInfo() :
CChannelShortInfo ( const int iNID, const quint32 nIP, const QString nN ) : iChanID ( 0 ),
iChanID ( iNID ), iIpAddr ( nIP ), strName ( nN ) {} iIpAddr ( 0 ),
strName ( "" ) {}
CChannelShortInfo ( const int iNID,
const quint32 nIP,
const QString nN ) :
iChanID ( iNID ),
iIpAddr ( nIP ),
strName ( nN ) {}
int iChanID; int iChanID;
quint32 iIpAddr; quint32 iIpAddr;
@ -430,16 +446,27 @@ enum EGetDataStat
class CNetworkTransportProps class CNetworkTransportProps
{ {
public: public:
CNetworkTransportProps() : iNetworkPacketSize ( 0 ), iBlockSizeFact ( 0 ), CNetworkTransportProps() :
iNumAudioChannels ( 0 ), iSampleRate ( 0 ), iNetworkPacketSize ( 0 ),
eAudioCodingType ( CT_NONE ), iAudioCodingArg ( 0 ) {} iBlockSizeFact ( 0 ),
iNumAudioChannels ( 0 ),
iSampleRate ( 0 ),
eAudioCodingType ( CT_NONE ),
iAudioCodingArg ( 0 ) {}
CNetworkTransportProps ( const uint32_t iNNPS, const uint16_t iNBSF, CNetworkTransportProps ( const uint32_t iNNPS,
const uint32_t iNNACH, const uint32_t iNSR, const uint16_t iNBSF,
const EAudComprType eNACT, const uint32_t iNVers, const int32_t iNACA ) : const uint32_t iNNACH,
iNetworkPacketSize ( iNNPS ), iBlockSizeFact ( iNBSF ), const uint32_t iNSR,
iNumAudioChannels ( iNNACH ), iSampleRate ( iNSR ), const EAudComprType eNACT,
eAudioCodingType ( eNACT ), iVersion ( iNVers ), const uint32_t iNVers,
const int32_t iNACA ) :
iNetworkPacketSize ( iNNPS ),
iBlockSizeFact ( iNBSF ),
iNumAudioChannels ( iNNACH ),
iSampleRate ( iNSR ),
eAudioCodingType ( eNACT ),
iVersion ( iNVers ),
iAudioCodingArg ( iNACA ) {} iAudioCodingArg ( iNACA ) {}
uint32_t iNetworkPacketSize; uint32_t iNetworkPacketSize;
@ -451,30 +478,6 @@ public:
int32_t iAudioCodingArg; int32_t iAudioCodingArg;
}; };
class CSndCrdBufferSizes
{
public:
// we use a conservative value as default, this value does not
// give perfekt latency results but should work ok on most
// sound cards and drivers
static int GetDefaultIndex() { return 1; }
static int GetNumOfBufferSizes() { return 4; }
static int GetBufferSizeFromIndex ( const int iIdx )
{
if ( ( iIdx >= 0 ) && ( iIdx < 4 ) )
{
const int pSizes[4] = { 128, 256, 512, 1024 };
return pSizes[iIdx];
}
else
{
return 0;
}
}
};
// Audio Reverbration ---------------------------------------------------------- // Audio Reverbration ----------------------------------------------------------
class CAudioReverb class CAudioReverb