some code cleanup and small fix for audio compression (should not access the info outside the mutex because it might have changed by another thread)
This commit is contained in:
parent
c310aa16cd
commit
a761f9bf9e
2 changed files with 15 additions and 26 deletions
|
@ -320,6 +320,7 @@ CServer::CServer ( const int iNewMaxNumChan,
|
||||||
vecvecdGains.Init ( iMaxNumChannels );
|
vecvecdGains.Init ( iMaxNumChannels );
|
||||||
vecvecsData.Init ( iMaxNumChannels );
|
vecvecsData.Init ( iMaxNumChannels );
|
||||||
vecNumAudioChannels.Init ( iMaxNumChannels );
|
vecNumAudioChannels.Init ( iMaxNumChannels );
|
||||||
|
vecAudioComprType.Init ( iMaxNumChannels );
|
||||||
|
|
||||||
for ( i = 0; i < iMaxNumChannels; i++ )
|
for ( i = 0; i < iMaxNumChannels; i++ )
|
||||||
{
|
{
|
||||||
|
@ -887,11 +888,12 @@ JitterMeas.Measure();
|
||||||
// get actual ID of current channel
|
// get actual ID of current channel
|
||||||
const int iCurChanID = vecChanIDsCurConChan[i];
|
const int iCurChanID = vecChanIDsCurConChan[i];
|
||||||
|
|
||||||
// get and store number of audio channels
|
// get and store number of audio channels and compression type
|
||||||
vecNumAudioChannels[i] = vecChannels[iCurChanID].GetNumAudioChannels();
|
vecNumAudioChannels[i] = vecChannels[iCurChanID].GetNumAudioChannels();
|
||||||
|
vecAudioComprType[i] = vecChannels[iCurChanID].GetAudioCompressionType();
|
||||||
|
|
||||||
// select the opus decoder and raw audio frame length
|
// select the opus decoder and raw audio frame length
|
||||||
if ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS )
|
if ( vecAudioComprType[i] == CT_OPUS )
|
||||||
{
|
{
|
||||||
iCurRawDataLen = DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES;
|
iCurRawDataLen = DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES;
|
||||||
|
|
||||||
|
@ -904,7 +906,7 @@ JitterMeas.Measure();
|
||||||
CurOpusDecoder = OpusDecoderStereo[iCurChanID];
|
CurOpusDecoder = OpusDecoderStereo[iCurChanID];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS64 )
|
else if ( vecAudioComprType[i] == CT_OPUS64 )
|
||||||
{
|
{
|
||||||
iCurRawDataLen = SYSTEM_FRAME_SIZE_SAMPLES_SMALL;
|
iCurRawDataLen = SYSTEM_FRAME_SIZE_SAMPLES_SMALL;
|
||||||
|
|
||||||
|
@ -939,8 +941,8 @@ JitterMeas.Measure();
|
||||||
const int iCeltNumCodedBytes = vecChannels[iCurChanID].GetNetwFrameSize();
|
const int iCeltNumCodedBytes = vecChannels[iCurChanID].GetNetwFrameSize();
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
const bool bIsServerDoubleFrameSize = bUseDoubleSystemFrameSize && ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS64 );
|
const bool bIsServerDoubleFrameSize = bUseDoubleSystemFrameSize && ( vecAudioComprType[i] == CT_OPUS64 );
|
||||||
const bool bIsClientDoubleFrameSize = !bUseDoubleSystemFrameSize && ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS );
|
const bool bIsClientDoubleFrameSize = !bUseDoubleSystemFrameSize && ( vecAudioComprType[i] == CT_OPUS );
|
||||||
const bool bIsCompatibleFramesSize = !( bIsServerDoubleFrameSize || bIsClientDoubleFrameSize );
|
const bool bIsCompatibleFramesSize = !( bIsServerDoubleFrameSize || bIsClientDoubleFrameSize );
|
||||||
//bUseDoubleSystemFrameSize
|
//bUseDoubleSystemFrameSize
|
||||||
//ConvBuf
|
//ConvBuf
|
||||||
|
@ -992,20 +994,6 @@ if ( bIsServerDoubleFrameSize )
|
||||||
iCurRawDataLen );
|
iCurRawDataLen );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// TEST
|
|
||||||
// fid=fopen('v.dat','r');x=fread(fid,'int16');fclose(fid);
|
|
||||||
static FILE* pFileDelay = fopen("c:\\temp\\test2.dat", "wb");
|
|
||||||
short sData[2];
|
|
||||||
for (int i1 = 0; i1 < iNumInBlocks * SYSTEM_FRAME_SIZE_SAMPLES_SMALL; i1++)
|
|
||||||
{
|
|
||||||
sData[0] = (short) vecvecsData[i][i1];
|
|
||||||
fwrite(&sData, size_t(2), size_t(1), pFileDelay);
|
|
||||||
}
|
|
||||||
fflush(pFileDelay);
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// a channel is now disconnected, take action on it
|
// a channel is now disconnected, take action on it
|
||||||
|
@ -1054,11 +1042,11 @@ fflush(pFileDelay);
|
||||||
const int iCeltNumCodedBytes = vecChannels[iCurChanID].GetNetwFrameSize();
|
const int iCeltNumCodedBytes = vecChannels[iCurChanID].GetNetwFrameSize();
|
||||||
|
|
||||||
// select the opus encoder and raw audio frame length
|
// select the opus encoder and raw audio frame length
|
||||||
if ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS )
|
if ( vecAudioComprType[i] == CT_OPUS )
|
||||||
{
|
{
|
||||||
iCurRawDataLen = DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES;
|
iCurRawDataLen = DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES;
|
||||||
|
|
||||||
if ( vecChannels[iCurChanID].GetNumAudioChannels() == 1 )
|
if ( vecNumAudioChannels[i] == 1 )
|
||||||
{
|
{
|
||||||
CurOpusEncoder = OpusEncoderMono[iCurChanID];
|
CurOpusEncoder = OpusEncoderMono[iCurChanID];
|
||||||
}
|
}
|
||||||
|
@ -1067,11 +1055,11 @@ fflush(pFileDelay);
|
||||||
CurOpusEncoder = OpusEncoderStereo[iCurChanID];
|
CurOpusEncoder = OpusEncoderStereo[iCurChanID];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS64 )
|
else if ( vecAudioComprType[i] == CT_OPUS64 )
|
||||||
{
|
{
|
||||||
iCurRawDataLen = SYSTEM_FRAME_SIZE_SAMPLES_SMALL;
|
iCurRawDataLen = SYSTEM_FRAME_SIZE_SAMPLES_SMALL;
|
||||||
|
|
||||||
if ( vecChannels[iCurChanID].GetNumAudioChannels() == 1 )
|
if ( vecNumAudioChannels[i] == 1 )
|
||||||
{
|
{
|
||||||
CurOpusEncoder = Opus64EncoderMono[iCurChanID];
|
CurOpusEncoder = Opus64EncoderMono[iCurChanID];
|
||||||
}
|
}
|
||||||
|
@ -1086,8 +1074,8 @@ fflush(pFileDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO copied code from above!!!
|
// TODO copied code from above!!!
|
||||||
const bool bIsServerDoubleFrameSize = bUseDoubleSystemFrameSize && ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS64 );
|
const bool bIsServerDoubleFrameSize = bUseDoubleSystemFrameSize && ( vecAudioComprType[i] == CT_OPUS64 );
|
||||||
const bool bIsClientDoubleFrameSize = !bUseDoubleSystemFrameSize && ( vecChannels[iCurChanID].GetAudioCompressionType() == CT_OPUS );
|
const bool bIsClientDoubleFrameSize = !bUseDoubleSystemFrameSize && ( vecAudioComprType[i] == CT_OPUS );
|
||||||
const bool bIsCompatibleFramesSize = !( bIsServerDoubleFrameSize || bIsClientDoubleFrameSize );
|
const bool bIsCompatibleFramesSize = !( bIsServerDoubleFrameSize || bIsClientDoubleFrameSize );
|
||||||
|
|
||||||
int iNumInBlocks = 1;
|
int iNumInBlocks = 1;
|
||||||
|
@ -1108,7 +1096,7 @@ opus_custom_encoder_ctl ( CurOpusEncoder,
|
||||||
OPUS_SET_BITRATE ( CalcBitRateBitsPerSecFromCodedBytes ( iCeltNumCodedBytes ) ) );
|
OPUS_SET_BITRATE ( CalcBitRateBitsPerSecFromCodedBytes ( iCeltNumCodedBytes ) ) );
|
||||||
|
|
||||||
opus_custom_encode ( CurOpusEncoder,
|
opus_custom_encode ( CurOpusEncoder,
|
||||||
&vecsSendData[iB * SYSTEM_FRAME_SIZE_SAMPLES_SMALL * vecChannels[iCurChanID].GetNumAudioChannels()],
|
&vecsSendData[iB * SYSTEM_FRAME_SIZE_SAMPLES_SMALL * vecNumAudioChannels[i]],
|
||||||
iCurRawDataLen,
|
iCurRawDataLen,
|
||||||
&vecbyCodedData[0],
|
&vecbyCodedData[0],
|
||||||
iCeltNumCodedBytes );
|
iCeltNumCodedBytes );
|
||||||
|
|
|
@ -250,6 +250,7 @@ protected:
|
||||||
CVector<CVector<double> > vecvecdGains;
|
CVector<CVector<double> > vecvecdGains;
|
||||||
CVector<CVector<int16_t> > vecvecsData;
|
CVector<CVector<int16_t> > vecvecsData;
|
||||||
CVector<int> vecNumAudioChannels;
|
CVector<int> vecNumAudioChannels;
|
||||||
|
CVector<EAudComprType> vecAudioComprType;
|
||||||
CVector<int16_t> vecsSendData;
|
CVector<int16_t> vecsSendData;
|
||||||
CVector<uint8_t> vecbyCodedData;
|
CVector<uint8_t> vecbyCodedData;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue