diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc index 283d9ec4ee..b84cc9527d 100644 --- a/audio/audio_send_stream.cc +++ b/audio/audio_send_stream.cc @@ -255,13 +255,6 @@ void AudioSendStream::ConfigureStream( if (first_time || old_config.rtp.c_name != new_config.rtp.c_name) { channel_send->SetRTCP_CNAME(new_config.rtp.c_name); } - // TODO(solenberg): Config NACK history window (which is a packet count), - // using the actual packet size for the configured codec. - if (first_time || old_config.rtp.nack.rtp_history_ms != - new_config.rtp.nack.rtp_history_ms) { - channel_send->SetNACKStatus(new_config.rtp.nack.rtp_history_ms != 0, - new_config.rtp.nack.rtp_history_ms / 20); - } if (first_time || new_config.send_transport != old_config.send_transport) { if (old_config.send_transport) { diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc index 6930cb1cd0..ddd34084ff 100644 --- a/audio/audio_send_stream_unittest.cc +++ b/audio/audio_send_stream_unittest.cc @@ -151,7 +151,6 @@ struct ConfigHelper { stream_config_.send_codec_spec = AudioSendStream::Config::SendCodecSpec(kIsacPayloadType, kIsacFormat); stream_config_.rtp.ssrc = kSsrc; - stream_config_.rtp.nack.rtp_history_ms = 200; stream_config_.rtp.c_name = kCName; stream_config_.rtp.extensions.push_back( RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId)); @@ -195,7 +194,6 @@ struct ConfigHelper { })); EXPECT_CALL(*channel_send_, SetLocalSSRC(kSsrc)).Times(1); EXPECT_CALL(*channel_send_, SetRTCP_CNAME(StrEq(kCName))).Times(1); - EXPECT_CALL(*channel_send_, SetNACKStatus(true, 10)).Times(1); EXPECT_CALL(*channel_send_, SetFrameEncryptor(_)).Times(1); EXPECT_CALL(*channel_send_, SetExtmapAllowMixed(false)).Times(1); EXPECT_CALL(*channel_send_, @@ -335,8 +333,8 @@ TEST(AudioSendStreamTest, ConfigToString) { config.rtcp_report_interval_ms = 2500; EXPECT_EQ( "{rtp: {ssrc: 1234, extmap-allow-mixed: true, extensions: [{uri: " - "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 2}], nack: " - "{rtp_history_ms: 0}, c_name: foo_name}, rtcp_report_interval_ms: 2500, " + "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 2}], " + "c_name: foo_name}, rtcp_report_interval_ms: 2500, " "send_transport: null, media_transport: null, " "min_bitrate_bps: 12000, max_bitrate_bps: 34000, " "send_codec_spec: {nack_enabled: true, transport_cc_enabled: false, " diff --git a/audio/channel_send.cc b/audio/channel_send.cc index e96b5b790a..014505ffde 100644 --- a/audio/channel_send.cc +++ b/audio/channel_send.cc @@ -146,7 +146,6 @@ class ChannelSend void SetRTCP_CNAME(absl::string_view c_name) override; std::vector GetRemoteRTCPReportBlocks() const override; CallSendStatistics GetRTCPStatistics() const override; - void SetNACKStatus(bool enable, int max_packets) override; // ProcessAndEncodeAudio() posts a task on the shared encoder task queue, // which in turn calls (on the queue) ProcessAndEncodeAudioOnTaskQueue() where @@ -199,15 +198,11 @@ class ChannelSend void OnUplinkPacketLossRate(float packet_loss_rate); bool InputMute() const; - int ResendPackets(const uint16_t* sequence_numbers, int length); - int SetSendRtpHeaderExtension(bool enable, RTPExtensionType type, int id); void UpdateOverheadForEncoder() RTC_EXCLUSIVE_LOCKS_REQUIRED(overhead_per_packet_lock_); - int GetRtpTimestampRateHz() const; - int32_t SendRtpAudio(FrameType frameType, uint8_t payloadType, uint32_t timeStamp, @@ -1174,20 +1169,6 @@ CallSendStatistics ChannelSend::GetRTCPStatistics() const { return stats; } -void ChannelSend::SetNACKStatus(bool enable, int max_packets) { - RTC_DCHECK_RUN_ON(&worker_thread_checker_); - // None of these functions can fail. - if (enable) - audio_coding_->EnableNack(max_packets); - else - audio_coding_->DisableNack(); -} - -// Called when we are missing one or more packets. -int ChannelSend::ResendPackets(const uint16_t* sequence_numbers, int length) { - return _rtpRtcpModule->SendNACK(sequence_numbers, length); -} - void ChannelSend::ProcessAndEncodeAudio( std::unique_ptr audio_frame) { RTC_DCHECK_RUNS_SERIALIZED(&audio_thread_race_checker_); @@ -1293,17 +1274,6 @@ int ChannelSend::SetSendRtpHeaderExtension(bool enable, return error; } -int ChannelSend::GetRtpTimestampRateHz() const { - const auto format = audio_coding_->ReceiveFormat(); - // Default to the playout frequency if we've not gotten any packets yet. - // TODO(ossu): Zero clockrate can only happen if we've added an external - // decoder for a format we don't support internally. Remove once that way of - // adding decoders is gone! - return (format && format->clockrate_hz != 0) - ? format->clockrate_hz - : audio_coding_->PlayoutFrequency(); -} - int64_t ChannelSend::GetRTT() const { if (media_transport_) { // GetRTT is generally used in the RTCP codepath, where media transport is diff --git a/audio/channel_send.h b/audio/channel_send.h index a5f718509f..cbef3659ce 100644 --- a/audio/channel_send.h +++ b/audio/channel_send.h @@ -59,7 +59,6 @@ class ChannelSendInterface { virtual bool ReceivedRTCPPacket(const uint8_t* packet, size_t length) = 0; virtual CallSendStatistics GetRTCPStatistics() const = 0; - virtual void SetNACKStatus(bool enable, int max_packets) = 0; virtual bool SetEncoder(int payload_type, std::unique_ptr encoder) = 0; diff --git a/audio/mock_voe_channel_proxy.h b/audio/mock_voe_channel_proxy.h index ea7a0c0db9..03c26c98b0 100644 --- a/audio/mock_voe_channel_proxy.h +++ b/audio/mock_voe_channel_proxy.h @@ -75,7 +75,6 @@ class MockChannelSend : public voe::ChannelSendInterface { MOCK_METHOD2(SetMid, void(const std::string& mid, int extension_id)); MOCK_METHOD1(SetLocalSSRC, void(uint32_t ssrc)); MOCK_METHOD1(SetRTCP_CNAME, void(absl::string_view c_name)); - MOCK_METHOD2(SetNACKStatus, void(bool enable, int max_packets)); MOCK_METHOD1(SetExtmapAllowMixed, void(bool extmap_allow_mixed)); MOCK_METHOD2(SetSendAudioLevelIndicationStatus, void(bool enable, int id)); MOCK_METHOD1(EnableSendTransportSequenceNumber, void(int id)); diff --git a/call/audio_send_stream.cc b/call/audio_send_stream.cc index 7fc6fa30a2..303b49cbfb 100644 --- a/call/audio_send_stream.cc +++ b/call/audio_send_stream.cc @@ -62,7 +62,6 @@ std::string AudioSendStream::Config::Rtp::ToString() const { } } ss << ']'; - ss << ", nack: " << nack.ToString(); ss << ", c_name: " << c_name; ss << '}'; return ss.str(); diff --git a/call/audio_send_stream.h b/call/audio_send_stream.h index 0cd0894c13..c996dab83d 100644 --- a/call/audio_send_stream.h +++ b/call/audio_send_stream.h @@ -89,9 +89,6 @@ class AudioSendStream { // RTP header extensions used for the sent stream. std::vector extensions; - // See NackConfig for description. - NackConfig nack; - // RTCP CNAME, see RFC 3550. std::string c_name; } rtp; diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc index 9ec7a0c014..51f4582cf4 100644 --- a/media/engine/webrtcvoiceengine.cc +++ b/media/engine/webrtcvoiceengine.cc @@ -1024,8 +1024,6 @@ class WebRtcVoiceMediaChannel::WebRtcAudioSendStream void UpdateSendCodecSpec( const webrtc::AudioSendStream::Config::SendCodecSpec& send_codec_spec) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); - config_.rtp.nack.rtp_history_ms = - send_codec_spec.nack_enabled ? kNackRtpHistoryMs : 0; config_.send_codec_spec = send_codec_spec; auto info = config_.encoder_factory->QueryAudioEncoder(send_codec_spec.format); diff --git a/media/engine/webrtcvoiceengine_unittest.cc b/media/engine/webrtcvoiceengine_unittest.cc index 76f05202b9..9fd5dfb0ad 100644 --- a/media/engine/webrtcvoiceengine_unittest.cc +++ b/media/engine/webrtcvoiceengine_unittest.cc @@ -1635,18 +1635,6 @@ TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthForAudioDoesntAffectBwe) { SetSendParameters(send_parameters_); } -// Test that we can enable NACK with opus as caller. -TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCaller) { - EXPECT_TRUE(SetupSendStream()); - cricket::AudioSendParameters parameters; - parameters.codecs.push_back(kOpusCodec); - parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( - cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); - EXPECT_EQ(0, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); - SetSendParameters(parameters); - EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); -} - // Test that we can enable NACK with opus as callee. TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { EXPECT_TRUE(SetupRecvStream()); @@ -1661,7 +1649,6 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { EXPECT_TRUE( channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrcX))); - EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); } // Test that we can enable NACK on receive streams. @@ -1672,29 +1659,11 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackRecvStreams) { parameters.codecs.push_back(kOpusCodec); parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); - EXPECT_EQ(0, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); EXPECT_EQ(0, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); SetSendParameters(parameters); - EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); } -// Test that we can disable NACK. -TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNack) { - EXPECT_TRUE(SetupSendStream()); - cricket::AudioSendParameters parameters; - parameters.codecs.push_back(kOpusCodec); - parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( - cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); - SetSendParameters(parameters); - EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); - - parameters.codecs.clear(); - parameters.codecs.push_back(kOpusCodec); - SetSendParameters(parameters); - EXPECT_EQ(0, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); -} - // Test that we can disable NACK on receive streams. TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { EXPECT_TRUE(SetupSendStream()); @@ -1704,13 +1673,11 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); SetSendParameters(parameters); - EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); parameters.codecs.clear(); parameters.codecs.push_back(kOpusCodec); SetSendParameters(parameters); - EXPECT_EQ(0, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); EXPECT_EQ(0, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); } @@ -1723,7 +1690,6 @@ TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamEnableNack) { parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); SetSendParameters(parameters); - EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); EXPECT_TRUE(AddRecvStream(kSsrcY)); EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); diff --git a/video/end_to_end_tests/retransmission_tests.cc b/video/end_to_end_tests/retransmission_tests.cc index b8d2d9a694..d1a69e3ed3 100644 --- a/video/end_to_end_tests/retransmission_tests.cc +++ b/video/end_to_end_tests/retransmission_tests.cc @@ -165,7 +165,6 @@ TEST_F(RetransmissionEndToEndTest, ReceivesNackAndRetransmitsAudio) { void ModifyAudioConfigs( AudioSendStream::Config* send_config, std::vector* receive_configs) override { - send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; local_ssrc_ = (*receive_configs)[0].rtp.local_ssrc; remote_ssrc_ = (*receive_configs)[0].rtp.remote_ssrc;