diff --git a/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.cpp b/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.cpp index e5a59b0911f405becc76d138625e35bff63d5d4a..5e5e1fb70ae52082666631fe3494319182daf667 100644 --- a/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.cpp +++ b/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.cpp @@ -62,6 +62,7 @@ AudioRtpRecord::AudioRtpRecord(ManagerImpl *manager) : _audioCodec(NULL) _audioLayerFrameSize = Manager::instance().getAudioDriver()->getFrameSize(); // in ms _audioLayerSampleRate = Manager::instance().getAudioDriver()->getSampleRate(); + } @@ -308,6 +309,16 @@ void AudioRtpRecord::setSpkrFadeInComplete(bool _spkrFadeInComplete) this->_spkrFadeInComplete = _spkrFadeInComplete; } +void AudioRtpRecord::setAudioProcessing(AudioProcessing *audioProcess) +{ + this->_audioProcess = audioProcess; +} + +void AudioRtpRecord::setNoiseSuppress(NoiseSuppress *noiseSuppress) +{ + this->_noiseSuppress = noiseSuppress; +} + AudioRtpRecordHandler::AudioRtpRecordHandler(ManagerImpl *manager, SIPCall *ca) : _audioRtpRecord(manager), _ca(ca) { // TODO Auto-generated constructor stub @@ -365,6 +376,15 @@ void AudioRtpRecordHandler::initBuffers() Manager::instance().addStream(_ca->getCallId()); } +void AudioRtpRecordHandler::initNoiseSuppress() +{ + NoiseSuppress *noiseSuppress = new NoiseSuppress (getCodecFrameSize(), getCodecSampleRate()); + AudioProcessing *processing = new AudioProcessing (noiseSuppress); + + _audioRtpRecord.setNoiseSuppress(noiseSuppress); + _audioRtpRecord.setAudioProcessing(processing); +} + void AudioRtpRecordHandler::putDtmfEvent(int digit) { sfl::DtmfEvent *dtmf = new sfl::DtmfEvent(); diff --git a/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.h b/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.h index 30140e92e8c98d1558933341a70fd9764938a378..6a92ab5b25a508a504c5b352d9c60b87ad4ef3bc 100644 --- a/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.h +++ b/sflphone-common/src/audio/audiortp/AudioRtpRecordHandler.h @@ -115,6 +115,8 @@ public: void setSpkrDataConverted(SFLDataFormat *_spkrDataConverted); void setSpkrDataDecoded(SFLDataFormat *_spkrDataDecoded); void setSpkrFadeInComplete(bool _spkrFadeInComplete); + void setAudioProcessing(AudioProcessing *audioProcess); + void setNoiseSuppress(NoiseSuppress *noiseSuppress); private: AudioCodec *_audioCodec; @@ -188,10 +190,12 @@ public: /** * Allocate memory for RTP buffers and fill them with zeros - * @prereq Session codec needs to be initialized prior calling this method + * @prereq Session codec needs to be initialized prior calling this method */ void initBuffers (void); + void initNoiseSuppress (void); + /** * Encode audio data from mainbuffer */ diff --git a/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp b/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp index c78bb4e124d7b17cd0d5e400144b016ec127fbda..d0199adf9b560cacd5a2560e94721a288f153892 100644 --- a/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp +++ b/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp @@ -53,7 +53,7 @@ AudioRtpSession::AudioRtpSession (ManagerImpl * manager, SIPCall * sipcall) : , _countNotificationTime (0) , _ca (sipcall) { - setCancel (cancelDefault); + this->setCancel (cancelDefault); assert (_ca); @@ -66,7 +66,7 @@ AudioRtpSession::~AudioRtpSession() _debug ("AudioRtpSession: Delete AudioRtpSession instance"); try { - terminate(); + this->terminate(); } catch (...) { _debugException ("AudioRtpSession: Thread destructor didn't terminate correctly"); throw; @@ -266,7 +266,9 @@ int AudioRtpSession::startRtpThread (AudioCodec* audiocodec) setSessionTimeouts(); setSessionMedia (audiocodec); initBuffers(); - return start (_mainloopSemaphore); + int ret = this->start (_mainloopSemaphore); + this->startRunning(); + return ret; } void AudioRtpSession::run () @@ -284,6 +286,8 @@ void AudioRtpSession::run () threadSleep = getAudioLayerFrameSize(); } + initNoiseSuppress(); + TimerPort::setTimer (threadSleep); // Set recording sampling rate @@ -291,7 +295,7 @@ void AudioRtpSession::run () // Start audio stream (if not started) AND flush all buffers (main and urgent) _manager->getAudioDriver()->startStream(); - startRunning(); + // startRunning(); _debug ("AudioRtpSession: Entering mainloop for call %s",_ca->getCallId().c_str()); diff --git a/sflphone-common/src/audio/audiortp/AudioZrtpSession.cpp b/sflphone-common/src/audio/audiortp/AudioZrtpSession.cpp index b8959c34fa452b81fb800ca2ca5ea1cdd41481da..7da895bfcc4d38567d1c7851fefcd0dece8cc6e7 100644 --- a/sflphone-common/src/audio/audiortp/AudioZrtpSession.cpp +++ b/sflphone-common/src/audio/audiortp/AudioZrtpSession.cpp @@ -335,6 +335,8 @@ void AudioZrtpSession::run () threadSleep = getAudioLayerFrameSize(); } + initNoiseSuppress(); + TimerPort::setTimer (threadSleep); // Set recording sampling rate @@ -348,6 +350,8 @@ void AudioZrtpSession::run () while (!testCancel()) { + _debug("run"); + // Reset timestamp to make sure the timing information are up to date if (_timestampCount > RTP_TIMESTAMP_RESET_FREQ) { _timestamp = getCurrentTimestamp(); diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index 8c165cdb47e40da481f60e956e2347bb055831c7..9ab5cd70ca027ecb202f693bd0ca5ce6d723c203 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -3727,6 +3727,7 @@ void ManagerImpl::loadIptoipProfile() // build a default IP2IP account with default parameters _directIpAccount = AccountCreator::createAccount (AccountCreator::SIP_DIRECT_IP_ACCOUNT, ""); _accountMap[IP2IP_PROFILE] = _directIpAccount; + _accountMap[""] = _directIpAccount; if (_directIpAccount == NULL) { _error ("Manager: Failed to create default \"account\"");