diff --git a/modules/rtp_rtcp/include/rtp_receiver.h b/modules/rtp_rtcp/include/rtp_receiver.h index d43acb2c7c..e15bbe410d 100644 --- a/modules/rtp_rtcp/include/rtp_receiver.h +++ b/modules/rtp_rtcp/include/rtp_receiver.h @@ -29,9 +29,6 @@ class TelephoneEventHandler { // Forward DTMFs to decoder for playout. virtual void SetTelephoneEventForwardToDecoder(bool forward_to_decoder) = 0; - // Is forwarding of outband telephone events turned on/off? - virtual bool TelephoneEventForwardToDecoder() const = 0; - // Is TelephoneEvent configured with payload type payload_type virtual bool TelephoneEventPayloadType(const int8_t payload_type) const = 0; }; diff --git a/modules/rtp_rtcp/source/rtp_receiver_audio.cc b/modules/rtp_rtcp/source/rtp_receiver_audio.cc index ac571382f5..3d66fd57e4 100644 --- a/modules/rtp_rtcp/source/rtp_receiver_audio.cc +++ b/modules/rtp_rtcp/source/rtp_receiver_audio.cc @@ -27,7 +27,7 @@ RTPReceiverStrategy* RTPReceiverStrategy::CreateAudioStrategy( RTPReceiverAudio::RTPReceiverAudio(RtpData* data_callback) : RTPReceiverStrategy(data_callback), TelephoneEventHandler(), - telephone_event_forward_to_decoder_(false), + telephone_event_forward_to_decoder_(true), telephone_event_payload_type_(-1), cng_nb_payload_type_(-1), cng_wb_payload_type_(-1), @@ -43,12 +43,6 @@ void RTPReceiverAudio::SetTelephoneEventForwardToDecoder( 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(int8_t payload_type) const { rtc::CritScope lock(&crit_sect_); return telephone_event_payload_type_ == payload_type; diff --git a/modules/rtp_rtcp/source/rtp_receiver_audio.h b/modules/rtp_rtcp/source/rtp_receiver_audio.h index 8c82094ab9..1d3d6d42e0 100644 --- a/modules/rtp_rtcp/source/rtp_receiver_audio.h +++ b/modules/rtp_rtcp/source/rtp_receiver_audio.h @@ -32,9 +32,6 @@ class RTPReceiverAudio : public RTPReceiverStrategy, // Forward DTMFs to decoder for playout. void SetTelephoneEventForwardToDecoder(bool forward_to_decoder) override; - // Is forwarding of outband telephone events turned on/off? - bool TelephoneEventForwardToDecoder() const override; - // Is TelephoneEvent configured with |payload_type|. bool TelephoneEventPayloadType(const int8_t payload_type) const override; diff --git a/modules/rtp_rtcp/test/testAPI/test_api_audio.cc b/modules/rtp_rtcp/test/testAPI/test_api_audio.cc index abda7b2120..fdd99decce 100644 --- a/modules/rtp_rtcp/test/testAPI/test_api_audio.cc +++ b/modules/rtp_rtcp/test/testAPI/test_api_audio.cc @@ -39,6 +39,26 @@ const CngCodecSpec kCngCodecs[] = {{13, 8000}, {104, 32000}, {105, 48000}}; +// Rough sanity check of DTMF payload. +void VerifyDtmf(const uint8_t* payloadData, + size_t payloadSize) { + EXPECT_EQ(payloadSize, 4u); + uint8_t p0 = (payloadSize > 0) ? payloadData[0] : 0xff; + uint8_t p1 = (payloadSize > 1) ? payloadData[1] : 0xff; + uint8_t p2 = (payloadSize > 2) ? payloadData[2] : 0xff; + uint8_t p3 = (payloadSize > 3) ? payloadData[3] : 0xff; + uint8_t event = p0; + bool reserved = (p1 >> 6) & 1; + uint8_t volume = p1 & 63; + uint16_t duration = (p2 << 8) | p3; + + // 0-15 are digits, #, *, A-D, 32 is answer tone (see rfc 4734) + EXPECT_LE(event, 32u); + EXPECT_TRUE(event < 16u || event == 32u); + EXPECT_FALSE(reserved); + EXPECT_EQ(volume, 10u); + EXPECT_LE(duration, 6560u); +} class VerifyingAudioReceiver : public RtpData { public: @@ -47,11 +67,13 @@ class VerifyingAudioReceiver : public RtpData { size_t payloadSize, const webrtc::WebRtcRTPHeader* rtpHeader) override { const uint8_t payload_type = rtpHeader->header.payloadType; - if (payload_type == kPcmuPayloadType || payload_type == kDtmfPayloadType) { + if (payload_type == kPcmuPayloadType) { EXPECT_EQ(sizeof(kTestPayload), payloadSize); - // All our test vectors for PCMU and DTMF are equal to |kTestPayload|. + // All our test vectors for PCMU are equal to |kTestPayload|. const size_t min_size = std::min(sizeof(kTestPayload), payloadSize); EXPECT_EQ(0, memcmp(payloadData, kTestPayload, min_size)); + } else if (payload_type == kDtmfPayloadType) { + VerifyDtmf(payloadData, payloadSize); } return 0;