Index: webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc |
index cd25d9ef87aebbf51fa59718c4b5573dd5cf340c..38b2830b79cbe9c3e903044b8c3b2eb746d49fdb 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc |
@@ -25,7 +25,9 @@ |
RTPReceiverAudio::RTPReceiverAudio(RtpData* data_callback) |
: RTPReceiverStrategy(data_callback), |
+ TelephoneEventHandler(), |
last_received_frequency_(8000), |
+ telephone_event_forward_to_decoder_(false), |
telephone_event_payload_type_(-1), |
cng_nb_payload_type_(-1), |
cng_wb_payload_type_(-1), |
@@ -38,6 +40,19 @@ |
current_remote_energy_() { |
last_payload_.Audio.channels = 1; |
memset(current_remote_energy_, 0, sizeof(current_remote_energy_)); |
+} |
+ |
+// Outband TelephoneEvent(DTMF) detection |
+void RTPReceiverAudio::SetTelephoneEventForwardToDecoder( |
+ bool forward_to_decoder) { |
+ rtc::CritScope lock(&crit_sect_); |
+ telephone_event_forward_to_decoder_ = forward_to_decoder; |
+} |
+ |
+// Is forwarding of outband telephone events turned on/off? |
+bool RTPReceiverAudio::TelephoneEventForwardToDecoder() const { |
+ rtc::CritScope lock(&crit_sect_); |
+ return telephone_event_forward_to_decoder_; |
} |
bool RTPReceiverAudio::TelephoneEventPayloadType( |
@@ -341,6 +356,10 @@ |
// check if it's a DTMF event, hence something we can playout |
if (telephone_event_packet) { |
+ if (!telephone_event_forward_to_decoder_) { |
+ // don't forward event to decoder |
+ return 0; |
+ } |
std::set<uint8_t>::iterator first = |
telephone_event_reported_.begin(); |
if (first != telephone_event_reported_.end() && *first > 15) { |