diff --git a/webrtc/modules/audio_coding/test/TwoWayCommunication.cc b/webrtc/modules/audio_coding/test/TwoWayCommunication.cc index 3ca7fd217d..161491b061 100644 --- a/webrtc/modules/audio_coding/test/TwoWayCommunication.cc +++ b/webrtc/modules/audio_coding/test/TwoWayCommunication.cc @@ -50,14 +50,6 @@ TwoWayCommunication::~TwoWayCommunication() { delete _channel_B2A; delete _channelRef_A2B; delete _channelRef_B2A; -#ifdef WEBRTC_DTMF_DETECTION - if (_dtmfDetectorA != NULL) { - delete _dtmfDetectorA; - } - if (_dtmfDetectorB != NULL) { - delete _dtmfDetectorB; - } -#endif _inFileA.Close(); _inFileB.Close(); _outFileA.Close(); diff --git a/webrtc/voice_engine/BUILD.gn b/webrtc/voice_engine/BUILD.gn index 9ccc53bf45..899b7333b2 100644 --- a/webrtc/voice_engine/BUILD.gn +++ b/webrtc/voice_engine/BUILD.gn @@ -18,8 +18,6 @@ source_set("voice_engine") { "channel_proxy.h", "dtmf_inband.cc", "dtmf_inband.h", - "dtmf_inband_queue.cc", - "dtmf_inband_queue.h", "include/voe_audio_processing.h", "include/voe_base.h", "include/voe_codec.h", diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index 25ecca1d74..2c747af12b 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -40,10 +40,6 @@ #include "webrtc/voice_engine/transmit_mixer.h" #include "webrtc/voice_engine/utility.h" -#if defined(_WIN32) -#include -#endif - namespace webrtc { namespace voe { @@ -763,14 +759,11 @@ Channel::Channel(int32_t channelId, _outputFilePlayerId(VoEModuleId(instanceId, channelId) + 1025), _outputFileRecorderId(VoEModuleId(instanceId, channelId) + 1026), _outputFileRecording(false), - _inbandDtmfQueue(VoEModuleId(instanceId, channelId)), - _inbandDtmfGenerator(VoEModuleId(instanceId, channelId)), _outputExternalMedia(false), _inputExternalMediaCallbackPtr(NULL), _outputExternalMediaCallbackPtr(NULL), _timeStamp(0), // This is just an offset, RTP module will add it's own // random offset - _sendTelephoneEventPayloadType(106), ntp_estimator_(Clock::GetRealTimeClock()), jitter_buffer_playout_timestamp_(0), playout_timestamp_rtp_(0), @@ -799,7 +792,6 @@ Channel::Channel(int32_t channelId, _panRight(1.0f), _outputGain(1.0f), _playOutbandDtmfEvent(false), - _playInbandDtmfEvent(false), _lastLocalTimeStamp(0), _lastPayloadType(0), _includeAudioLevelIndication(false), @@ -832,8 +824,6 @@ Channel::Channel(int32_t channelId, config.Get().enabled; audio_coding_.reset(AudioCodingModule::Create(acm_config)); - _inbandDtmfQueue.ResetDtmf(); - _inbandDtmfGenerator.Init(); _outputAudioLevel.Clear(); RtpRtcp::Configuration configuration; @@ -2237,20 +2227,6 @@ int Channel::SendTelephoneEventOutband(int event, int duration_ms) { return 0; } -int Channel::SendTelephoneEventInband(unsigned char eventCode, - int lengthMs, - int attenuationDb, - bool playDtmfEvent) { - WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), - "Channel::SendTelephoneEventInband(..., playDtmfEvent=%d)", - playDtmfEvent); - - _playInbandDtmfEvent = playDtmfEvent; - _inbandDtmfQueue.AddDtmf(eventCode, lengthMs, attenuationDb); - - return 0; -} - int Channel::SetSendTelephoneEventPayloadType(unsigned char type) { WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), "Channel::SetSendTelephoneEventPayloadType()"); @@ -2274,12 +2250,6 @@ int Channel::SetSendTelephoneEventPayloadType(unsigned char type) { return -1; } } - _sendTelephoneEventPayloadType = type; - return 0; -} - -int Channel::GetSendTelephoneEventPayloadType(unsigned char& type) { - type = _sendTelephoneEventPayloadType; return 0; } @@ -3029,8 +2999,6 @@ uint32_t Channel::PrepareEncodeAndSend(int mixingFrequency) { } } - InsertInbandDtmfTone(); - if (_includeAudioLevelIndication) { size_t length = _audioFrame.samples_per_channel_ * _audioFrame.num_channels_; @@ -3350,64 +3318,6 @@ int32_t Channel::MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency) { return 0; } -int Channel::InsertInbandDtmfTone() { - // Check if we should start a new tone. - if (_inbandDtmfQueue.PendingDtmf() && !_inbandDtmfGenerator.IsAddingTone() && - _inbandDtmfGenerator.DelaySinceLastTone() > - kMinTelephoneEventSeparationMs) { - int8_t eventCode(0); - uint16_t lengthMs(0); - uint8_t attenuationDb(0); - - eventCode = _inbandDtmfQueue.NextDtmf(&lengthMs, &attenuationDb); - _inbandDtmfGenerator.AddTone(eventCode, lengthMs, attenuationDb); - if (_playInbandDtmfEvent) { - // Add tone to output mixer using a reduced length to minimize - // risk of echo. - _outputMixerPtr->PlayDtmfTone(eventCode, lengthMs - 80, attenuationDb); - } - } - - if (_inbandDtmfGenerator.IsAddingTone()) { - uint16_t frequency(0); - _inbandDtmfGenerator.GetSampleRate(frequency); - - if (frequency != _audioFrame.sample_rate_hz_) { - // Update sample rate of Dtmf tone since the mixing frequency - // has changed. - _inbandDtmfGenerator.SetSampleRate( - (uint16_t)(_audioFrame.sample_rate_hz_)); - // Reset the tone to be added taking the new sample rate into - // account. - _inbandDtmfGenerator.ResetTone(); - } - - int16_t toneBuffer[320]; - uint16_t toneSamples(0); - // Get 10ms tone segment and set time since last tone to zero - if (_inbandDtmfGenerator.Get10msTone(toneBuffer, toneSamples) == -1) { - WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), - "Channel::EncodeAndSend() inserting Dtmf failed"); - return -1; - } - - // Replace mixed audio with DTMF tone. - for (size_t sample = 0; sample < _audioFrame.samples_per_channel_; - sample++) { - for (size_t channel = 0; channel < _audioFrame.num_channels_; channel++) { - const size_t index = sample * _audioFrame.num_channels_ + channel; - _audioFrame.data_[index] = toneBuffer[sample]; - } - } - - assert(_audioFrame.samples_per_channel_ == toneSamples); - } else { - // Add 10ms to "delay-since-last-tone" counter - _inbandDtmfGenerator.UpdateDelaySinceLastTone(); - } - return 0; -} - void Channel::UpdatePlayoutTimestamp(bool rtcp) { uint32_t playout_timestamp = 0; diff --git a/webrtc/voice_engine/channel.h b/webrtc/voice_engine/channel.h index 65c34f66c8..f1f6ba2567 100644 --- a/webrtc/voice_engine/channel.h +++ b/webrtc/voice_engine/channel.h @@ -25,8 +25,6 @@ #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" #include "webrtc/modules/utility/include/file_player.h" #include "webrtc/modules/utility/include/file_recorder.h" -#include "webrtc/voice_engine/dtmf_inband.h" -#include "webrtc/voice_engine/dtmf_inband_queue.h" #include "webrtc/voice_engine/include/voe_audio_processing.h" #include "webrtc/voice_engine/include/voe_network.h" #include "webrtc/voice_engine/level_indicator.h" @@ -298,12 +296,7 @@ class Channel // VoEDtmf int SendTelephoneEventOutband(int event, int duration_ms); - int SendTelephoneEventInband(unsigned char eventCode, - int lengthMs, - int attenuationDb, - bool playDtmfEvent); int SetSendTelephoneEventPayloadType(unsigned char type); - int GetSendTelephoneEventPayloadType(unsigned char& type); // VoEAudioProcessingImpl int UpdateRxVadDetection(AudioFrame& audioFrame); @@ -461,7 +454,6 @@ class Channel bool IsPacketInOrder(const RTPHeader& header) const; bool IsPacketRetransmitted(const RTPHeader& header, bool in_order) const; int ResendPackets(const uint16_t* sequence_numbers, int length); - int InsertInbandDtmfTone(); int32_t MixOrReplaceAudioWithFile(int mixingFrequency); int32_t MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency); void UpdatePlayoutTimestamp(bool rtcp); @@ -507,13 +499,10 @@ class Channel int _outputFilePlayerId; int _outputFileRecorderId; bool _outputFileRecording; - DtmfInbandQueue _inbandDtmfQueue; - DtmfInband _inbandDtmfGenerator; bool _outputExternalMedia; VoEMediaProcess* _inputExternalMediaCallbackPtr; VoEMediaProcess* _outputExternalMediaCallbackPtr; uint32_t _timeStamp; - uint8_t _sendTelephoneEventPayloadType; RemoteNtpTimeEstimator ntp_estimator_ GUARDED_BY(ts_stats_lock_); @@ -559,7 +548,6 @@ class Channel float _outputGain; // VoEDtmf bool _playOutbandDtmfEvent; - bool _playInbandDtmfEvent; // VoeRTP_RTCP uint32_t _lastLocalTimeStamp; int8_t _lastPayloadType; diff --git a/webrtc/voice_engine/dtmf_inband_queue.cc b/webrtc/voice_engine/dtmf_inband_queue.cc deleted file mode 100644 index 4ab74cdf70..0000000000 --- a/webrtc/voice_engine/dtmf_inband_queue.cc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "webrtc/system_wrappers/include/trace.h" -#include "webrtc/voice_engine/dtmf_inband_queue.h" - -namespace webrtc { - -DtmfInbandQueue::DtmfInbandQueue(int32_t id): - _id(id), - _nextEmptyIndex(0) -{ - memset(_DtmfKey,0, sizeof(_DtmfKey)); - memset(_DtmfLen,0, sizeof(_DtmfLen)); - memset(_DtmfLevel,0, sizeof(_DtmfLevel)); -} - -DtmfInbandQueue::~DtmfInbandQueue() -{ -} - -int -DtmfInbandQueue::AddDtmf(uint8_t key, uint16_t len, uint8_t level) -{ - rtc::CritScope lock(&_DtmfCritsect); - - if (_nextEmptyIndex >= kDtmfInbandMax) - { - WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_id,-1), - "DtmfInbandQueue::AddDtmf() unable to add Dtmf tone"); - return -1; - } - int32_t index = _nextEmptyIndex; - _DtmfKey[index] = key; - _DtmfLen[index] = len; - _DtmfLevel[index] = level; - _nextEmptyIndex++; - return 0; -} - -int8_t -DtmfInbandQueue::NextDtmf(uint16_t* len, uint8_t* level) -{ - rtc::CritScope lock(&_DtmfCritsect); - - if(!PendingDtmf()) - { - return -1; - } - int8_t nextDtmf = _DtmfKey[0]; - *len=_DtmfLen[0]; - *level=_DtmfLevel[0]; - - memmove(&(_DtmfKey[0]), &(_DtmfKey[1]), - _nextEmptyIndex*sizeof(uint8_t)); - memmove(&(_DtmfLen[0]), &(_DtmfLen[1]), - _nextEmptyIndex*sizeof(uint16_t)); - memmove(&(_DtmfLevel[0]), &(_DtmfLevel[1]), - _nextEmptyIndex*sizeof(uint8_t)); - - _nextEmptyIndex--; - return nextDtmf; -} - -bool -DtmfInbandQueue::PendingDtmf() -{ - rtc::CritScope lock(&_DtmfCritsect); - return _nextEmptyIndex > 0; -} - -void -DtmfInbandQueue::ResetDtmf() -{ - rtc::CritScope lock(&_DtmfCritsect); - _nextEmptyIndex = 0; -} - -} // namespace webrtc diff --git a/webrtc/voice_engine/dtmf_inband_queue.h b/webrtc/voice_engine/dtmf_inband_queue.h deleted file mode 100644 index 08e8018316..0000000000 --- a/webrtc/voice_engine/dtmf_inband_queue.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef WEBRTC_VOICE_ENGINE_DTMF_INBAND_QUEUE_H -#define WEBRTC_VOICE_ENGINE_DTMF_INBAND_QUEUE_H - -#include "webrtc/base/criticalsection.h" -#include "webrtc/typedefs.h" -#include "webrtc/voice_engine/voice_engine_defines.h" - - -namespace webrtc { - -class DtmfInbandQueue -{ -public: - - DtmfInbandQueue(int32_t id); - - virtual ~DtmfInbandQueue(); - - int AddDtmf(uint8_t DtmfKey, uint16_t len, uint8_t level); - - int8_t NextDtmf(uint16_t* len, uint8_t* level); - - bool PendingDtmf(); - - void ResetDtmf(); - -private: - enum {kDtmfInbandMax = 20}; - - int32_t _id; - rtc::CriticalSection _DtmfCritsect; - uint8_t _nextEmptyIndex; - uint8_t _DtmfKey[kDtmfInbandMax]; - uint16_t _DtmfLen[kDtmfInbandMax]; - uint8_t _DtmfLevel[kDtmfInbandMax]; -}; - -} // namespace webrtc - -#endif // WEBRTC_VOICE_ENGINE_DTMF_INBAND_QUEUE_H diff --git a/webrtc/voice_engine/transmit_mixer.cc b/webrtc/voice_engine/transmit_mixer.cc index d6a5213217..0240389be1 100644 --- a/webrtc/voice_engine/transmit_mixer.cc +++ b/webrtc/voice_engine/transmit_mixer.cc @@ -205,7 +205,6 @@ TransmitMixer::TransmitMixer(uint32_t instanceId) : external_postproc_ptr_(NULL), external_preproc_ptr_(NULL), _mute(false), - _remainingMuteMicTimeMs(0), stereo_codec_(false), swap_stereo_channels_(false) { @@ -359,17 +358,6 @@ TransmitMixer::PrepareDemux(const void* audioSamples, TypingDetection(keyPressed); #endif - // --- Mute during DTMF tone if direct feedback is enabled - if (_remainingMuteMicTimeMs > 0) - { - AudioFrameOperations::Mute(_audioFrame); - _remainingMuteMicTimeMs -= 10; - if (_remainingMuteMicTimeMs < 0) - { - _remainingMuteMicTimeMs = 0; - } - } - // --- Mute signal if (_mute) { @@ -477,15 +465,6 @@ uint32_t TransmitMixer::CaptureLevel() const return _captureLevel; } -void -TransmitMixer::UpdateMuteMicrophoneTime(uint32_t lengthMs) -{ - WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), - "TransmitMixer::UpdateMuteMicrophoneTime(lengthMs=%d)", - lengthMs); - _remainingMuteMicTimeMs = lengthMs; -} - int32_t TransmitMixer::StopSend() { diff --git a/webrtc/voice_engine/transmit_mixer.h b/webrtc/voice_engine/transmit_mixer.h index b5c483aa4b..483af0518a 100644 --- a/webrtc/voice_engine/transmit_mixer.h +++ b/webrtc/voice_engine/transmit_mixer.h @@ -75,9 +75,6 @@ public: int32_t StopSend(); - // VoEDtmf - void UpdateMuteMicrophoneTime(uint32_t lengthMs); - // VoEExternalMedia int RegisterExternalMediaProcessing(VoEMediaProcess* object, ProcessingTypes type); @@ -226,7 +223,6 @@ private: VoEMediaProcess* external_postproc_ptr_; VoEMediaProcess* external_preproc_ptr_; bool _mute; - int32_t _remainingMuteMicTimeMs; bool stereo_codec_; bool swap_stereo_channels_; }; diff --git a/webrtc/voice_engine/voice_engine.gyp b/webrtc/voice_engine/voice_engine.gyp index 7935be89cf..a848d6c668 100644 --- a/webrtc/voice_engine/voice_engine.gyp +++ b/webrtc/voice_engine/voice_engine.gyp @@ -54,8 +54,6 @@ 'channel_proxy.h', 'dtmf_inband.cc', 'dtmf_inband.h', - 'dtmf_inband_queue.cc', - 'dtmf_inband_queue.h', 'level_indicator.cc', 'level_indicator.h', 'monitor_module.cc',