Index: webrtc/voice_engine/channel.cc |
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc |
index 9e27ce8b7b7162905a036f6d52a639c96d17bfa0..b5b2858325d2b688dd39c1eba8ea024c4b3e6ecf 100644 |
--- a/webrtc/voice_engine/channel.cc |
+++ b/webrtc/voice_engine/channel.cc |
@@ -40,13 +40,11 @@ |
#include "webrtc/voice_engine/transmit_mixer.h" |
#include "webrtc/voice_engine/utility.h" |
-#if defined(_WIN32) |
-#include <Qos.h> |
-#endif |
- |
namespace webrtc { |
namespace voe { |
+const int kTelephoneEventAttenuationdB = 10; |
+ |
class TransportFeedbackProxy : public TransportFeedbackObserver { |
public: |
TransportFeedbackProxy() : feedback_observer_(nullptr) { |
@@ -369,7 +367,7 @@ void Channel::OnPlayTelephoneEvent(uint8_t event, |
" volume=%u)", |
event, lengthMs, volume); |
- if (!_playOutbandDtmfEvent || (event > 15)) { |
+ if (event > 15) { |
// Ignore callback since feedback is disabled or event is not a |
// Dtmf tone event. |
return; |
@@ -767,14 +765,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), |
@@ -802,8 +797,6 @@ Channel::Channel(int32_t channelId, |
_panLeft(1.0f), |
_panRight(1.0f), |
_outputGain(1.0f), |
- _playOutbandDtmfEvent(false), |
- _playInbandDtmfEvent(false), |
_lastLocalTimeStamp(0), |
_lastPayloadType(0), |
_includeAudioLevelIndication(false), |
@@ -836,8 +829,6 @@ Channel::Channel(int32_t channelId, |
config.Get<NetEqFastAccelerate>().enabled; |
audio_coding_.reset(AudioCodingModule::Create(acm_config)); |
- _inbandDtmfQueue.ResetDtmf(); |
- _inbandDtmfGenerator.Init(); |
_outputAudioLevel.Clear(); |
RtpRtcp::Configuration configuration; |
@@ -2214,21 +2205,15 @@ int Channel::GetChannelOutputVolumeScaling(float& scaling) const { |
return 0; |
} |
-int Channel::SendTelephoneEventOutband(unsigned char eventCode, |
- int lengthMs, |
- int attenuationDb, |
- bool playDtmfEvent) { |
+int Channel::SendTelephoneEventOutband(uint8_t eventCode, uint16_t lengthMs) { |
hlundin-webrtc
2016/02/24 10:33:20
Update variable name formatting while you are at i
the sun
2016/03/08 15:20:48
Done.
|
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), |
- "Channel::SendTelephoneEventOutband(..., playDtmfEvent=%d)", |
- playDtmfEvent); |
+ "Channel::SendTelephoneEventOutband(...)"); |
if (!Sending()) { |
return -1; |
} |
- _playOutbandDtmfEvent = playDtmfEvent; |
- |
- if (_rtpRtcpModule->SendTelephoneEventOutband(eventCode, lengthMs, |
- attenuationDb) != 0) { |
+ if (_rtpRtcpModule->SendTelephoneEventOutband( |
+ eventCode, lengthMs, kTelephoneEventAttenuationdB) != 0) { |
_engineStatisticsPtr->SetLastError( |
VE_SEND_DTMF_FAILED, kTraceWarning, |
"SendTelephoneEventOutband() failed to send event"); |
@@ -2237,21 +2222,7 @@ int Channel::SendTelephoneEventOutband(unsigned char eventCode, |
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) { |
+int Channel::SetSendTelephoneEventPayloadType(uint8_t type) { |
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), |
"Channel::SetSendTelephoneEventPayloadType()"); |
if (type > 127) { |
@@ -2274,12 +2245,6 @@ int Channel::SetSendTelephoneEventPayloadType(unsigned char type) { |
return -1; |
} |
} |
- _sendTelephoneEventPayloadType = type; |
- return 0; |
-} |
- |
-int Channel::GetSendTelephoneEventPayloadType(unsigned char& type) { |
- type = _sendTelephoneEventPayloadType; |
return 0; |
} |
@@ -3030,8 +2995,6 @@ uint32_t Channel::PrepareEncodeAndSend(int mixingFrequency) { |
} |
} |
- InsertInbandDtmfTone(); |
- |
if (_includeAudioLevelIndication) { |
size_t length = |
_audioFrame.samples_per_channel_ * _audioFrame.num_channels_; |
@@ -3351,64 +3314,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; |