diff options
author | henrik.lundin@webrtc.org <henrik.lundin@webrtc.org> | 2014-09-23 13:15:14 +0000 |
---|---|---|
committer | henrik.lundin@webrtc.org <henrik.lundin@webrtc.org> | 2014-09-23 13:15:14 +0000 |
commit | 21cb2625b1bfe4c109ce6b846ab9c4e1c40fde4f (patch) | |
tree | 8c039fd7cedb9e7b93e3536cb2ae73e219f0206b | |
parent | f70e6326b671974c374fd58142c49c44b5848d69 (diff) | |
download | webrtc-21cb2625b1bfe4c109ce6b846ab9c4e1c40fde4f.tar.gz |
Revert "Remove DTMF status methods from Voice Engine" r7276
This change caused some trouble.
TBR=henrika@webrtc.org,pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/29569004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@7277 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | voice_engine/channel.cc | 21 | ||||
-rw-r--r-- | voice_engine/channel.h | 2 | ||||
-rw-r--r-- | voice_engine/include/voe_dtmf.h | 7 | ||||
-rw-r--r-- | voice_engine/test/auto_test/standard/dtmf_test.cc | 12 | ||||
-rw-r--r-- | voice_engine/voe_dtmf_impl.cc | 47 | ||||
-rw-r--r-- | voice_engine/voe_dtmf_impl.h | 4 |
6 files changed, 93 insertions, 0 deletions
diff --git a/voice_engine/channel.cc b/voice_engine/channel.cc index 1d23afd4..93a241be 100644 --- a/voice_engine/channel.cc +++ b/voice_engine/channel.cc @@ -2627,6 +2627,27 @@ int Channel::SendTelephoneEventInband(unsigned char eventCode, } int +Channel::SetDtmfPlayoutStatus(bool enable) +{ + WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), + "Channel::SetDtmfPlayoutStatus()"); + if (audio_coding_->SetDtmfPlayoutStatus(enable) != 0) + { + _engineStatisticsPtr->SetLastError( + VE_AUDIO_CODING_MODULE_ERROR, kTraceWarning, + "SetDtmfPlayoutStatus() failed to set Dtmf playout"); + return -1; + } + return 0; +} + +bool +Channel::DtmfPlayoutStatus() const +{ + return audio_coding_->DtmfPlayoutStatus(); +} + +int Channel::SetSendTelephoneEventPayloadType(unsigned char type) { WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), diff --git a/voice_engine/channel.h b/voice_engine/channel.h index bbc286ba..535922fa 100644 --- a/voice_engine/channel.h +++ b/voice_engine/channel.h @@ -294,6 +294,8 @@ public: int attenuationDb, bool playDtmfEvent); int SendTelephoneEventInband(unsigned char eventCode, int lengthMs, int attenuationDb, bool playDtmfEvent); + int SetDtmfPlayoutStatus(bool enable); + bool DtmfPlayoutStatus() const; int SetSendTelephoneEventPayloadType(unsigned char type); int GetSendTelephoneEventPayloadType(unsigned char& type); diff --git a/voice_engine/include/voe_dtmf.h b/voice_engine/include/voe_dtmf.h index 4fd44961..4db8cbc5 100644 --- a/voice_engine/include/voe_dtmf.h +++ b/voice_engine/include/voe_dtmf.h @@ -71,6 +71,13 @@ public: virtual int GetSendTelephoneEventPayloadType(int channel, unsigned char& type) = 0; + // Enables or disables local tone playout for received DTMF events + // out-of-band. + virtual int SetDtmfPlayoutStatus(int channel, bool enable) = 0; + + // Gets the DTMF playout status. + virtual int GetDtmfPlayoutStatus(int channel, bool& enabled) = 0; + // Toogles DTMF feedback state: when a DTMF tone is sent, the same tone // is played out on the speaker. virtual int SetDtmfFeedbackStatus(bool enable, diff --git a/voice_engine/test/auto_test/standard/dtmf_test.cc b/voice_engine/test/auto_test/standard/dtmf_test.cc index 18faa971..a4feb2eb 100644 --- a/voice_engine/test/auto_test/standard/dtmf_test.cc +++ b/voice_engine/test/auto_test/standard/dtmf_test.cc @@ -52,6 +52,18 @@ TEST_F(DtmfTest, TestTwoNonDtmfEvents) { EXPECT_EQ(0, voe_dtmf_->SendTelephoneEvent(channel_, 110, true)); } +TEST_F(DtmfTest, ManualCanDisableDtmfPlayoutExceptOnIphone) { + TEST_LOG("Disabling DTMF playout (no tone should be heard) \n"); + EXPECT_EQ(0, voe_dtmf_->SetDtmfPlayoutStatus(channel_, false)); + EXPECT_EQ(0, voe_dtmf_->SendTelephoneEvent(channel_, 0, true)); + Sleep(500); + + TEST_LOG("Enabling DTMF playout (tone should be heard) \n"); + EXPECT_EQ(0, voe_dtmf_->SetDtmfPlayoutStatus(channel_, true)); + EXPECT_EQ(0, voe_dtmf_->SendTelephoneEvent(channel_, 0, true)); + Sleep(500); +} + // This test modifies the DTMF payload type from the default 106 to 88 // and then runs through 16 DTMF out.of-band events. TEST_F(DtmfTest, ManualCanChangeDtmfPayloadType) { diff --git a/voice_engine/voe_dtmf_impl.cc b/voice_engine/voe_dtmf_impl.cc index 2d775e34..70872c69 100644 --- a/voice_engine/voe_dtmf_impl.cc +++ b/voice_engine/voe_dtmf_impl.cc @@ -257,6 +257,53 @@ int VoEDtmfImpl::GetDtmfFeedbackStatus(bool& enabled, bool& directFeedback) enabled, directFeedback); return 0; } + +int VoEDtmfImpl::SetDtmfPlayoutStatus(int channel, bool enable) +{ + WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1), + "SetDtmfPlayoutStatus(channel=%d, enable=%d)", + channel, enable); + + if (!_shared->statistics().Initialized()) + { + _shared->SetLastError(VE_NOT_INITED, kTraceError); + return -1; + } + voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel); + voe::Channel* channelPtr = ch.channel(); + if (channelPtr == NULL) + { + _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, + "SetDtmfPlayoutStatus() failed to locate channel"); + return -1; + } + return channelPtr->SetDtmfPlayoutStatus(enable); +} + +int VoEDtmfImpl::GetDtmfPlayoutStatus(int channel, bool& enabled) +{ + WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1), + "GetDtmfPlayoutStatus(channel=%d, enabled=?)", channel); + if (!_shared->statistics().Initialized()) + { + _shared->SetLastError(VE_NOT_INITED, kTraceError); + return -1; + } + voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel); + voe::Channel* channelPtr = ch.channel(); + if (channelPtr == NULL) + { + _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, + "GetDtmfPlayoutStatus() failed to locate channel"); + return -1; + } + enabled = channelPtr->DtmfPlayoutStatus(); + WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, + VoEId(_shared->instance_id(), -1), + "GetDtmfPlayoutStatus() => enabled=%d", enabled); + return 0; +} + #endif // #ifdef WEBRTC_VOICE_ENGINE_DTMF_API } // namespace webrtc diff --git a/voice_engine/voe_dtmf_impl.h b/voice_engine/voe_dtmf_impl.h index 81a95c0b..92162384 100644 --- a/voice_engine/voe_dtmf_impl.h +++ b/voice_engine/voe_dtmf_impl.h @@ -42,6 +42,10 @@ public: int lengthMs = 200, int attenuationDb = 10); + virtual int SetDtmfPlayoutStatus(int channel, bool enable); + + virtual int GetDtmfPlayoutStatus(int channel, bool& enabled); + protected: VoEDtmfImpl(voe::SharedData* shared); virtual ~VoEDtmfImpl(); |