Remove more unneeded things from ChannelSend

- SetNACKStatus() - only affects NetEq and RTP receiver
- GetRtpTimestampRateHz() - never used.
- ResendPackets() - never used.

Bug: webrtc:9801
Change-Id: I280b620723eb6917624f30f503eb8b8c88144e6d
Reviewed-on: https://webrtc-review.googlesource.com/c/111460
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25721}
This commit is contained in:
Fredrik Solenberg 2018-11-21 09:21:23 +01:00 committed by Commit Bot
parent a13be01901
commit c69a56ef04
10 changed files with 2 additions and 84 deletions

View File

@ -255,13 +255,6 @@ void AudioSendStream::ConfigureStream(
if (first_time || old_config.rtp.c_name != new_config.rtp.c_name) { if (first_time || old_config.rtp.c_name != new_config.rtp.c_name) {
channel_send->SetRTCP_CNAME(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 (first_time || new_config.send_transport != old_config.send_transport) {
if (old_config.send_transport) { if (old_config.send_transport) {

View File

@ -151,7 +151,6 @@ struct ConfigHelper {
stream_config_.send_codec_spec = stream_config_.send_codec_spec =
AudioSendStream::Config::SendCodecSpec(kIsacPayloadType, kIsacFormat); AudioSendStream::Config::SendCodecSpec(kIsacPayloadType, kIsacFormat);
stream_config_.rtp.ssrc = kSsrc; stream_config_.rtp.ssrc = kSsrc;
stream_config_.rtp.nack.rtp_history_ms = 200;
stream_config_.rtp.c_name = kCName; stream_config_.rtp.c_name = kCName;
stream_config_.rtp.extensions.push_back( stream_config_.rtp.extensions.push_back(
RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId)); RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId));
@ -195,7 +194,6 @@ struct ConfigHelper {
})); }));
EXPECT_CALL(*channel_send_, SetLocalSSRC(kSsrc)).Times(1); EXPECT_CALL(*channel_send_, SetLocalSSRC(kSsrc)).Times(1);
EXPECT_CALL(*channel_send_, SetRTCP_CNAME(StrEq(kCName))).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_, SetFrameEncryptor(_)).Times(1);
EXPECT_CALL(*channel_send_, SetExtmapAllowMixed(false)).Times(1); EXPECT_CALL(*channel_send_, SetExtmapAllowMixed(false)).Times(1);
EXPECT_CALL(*channel_send_, EXPECT_CALL(*channel_send_,
@ -335,8 +333,8 @@ TEST(AudioSendStreamTest, ConfigToString) {
config.rtcp_report_interval_ms = 2500; config.rtcp_report_interval_ms = 2500;
EXPECT_EQ( EXPECT_EQ(
"{rtp: {ssrc: 1234, extmap-allow-mixed: true, extensions: [{uri: " "{rtp: {ssrc: 1234, extmap-allow-mixed: true, extensions: [{uri: "
"urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 2}], nack: " "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 2}], "
"{rtp_history_ms: 0}, c_name: foo_name}, rtcp_report_interval_ms: 2500, " "c_name: foo_name}, rtcp_report_interval_ms: 2500, "
"send_transport: null, media_transport: null, " "send_transport: null, media_transport: null, "
"min_bitrate_bps: 12000, max_bitrate_bps: 34000, " "min_bitrate_bps: 12000, max_bitrate_bps: 34000, "
"send_codec_spec: {nack_enabled: true, transport_cc_enabled: false, " "send_codec_spec: {nack_enabled: true, transport_cc_enabled: false, "

View File

@ -146,7 +146,6 @@ class ChannelSend
void SetRTCP_CNAME(absl::string_view c_name) override; void SetRTCP_CNAME(absl::string_view c_name) override;
std::vector<ReportBlock> GetRemoteRTCPReportBlocks() const override; std::vector<ReportBlock> GetRemoteRTCPReportBlocks() const override;
CallSendStatistics GetRTCPStatistics() const override; CallSendStatistics GetRTCPStatistics() const override;
void SetNACKStatus(bool enable, int max_packets) override;
// ProcessAndEncodeAudio() posts a task on the shared encoder task queue, // ProcessAndEncodeAudio() posts a task on the shared encoder task queue,
// which in turn calls (on the queue) ProcessAndEncodeAudioOnTaskQueue() where // which in turn calls (on the queue) ProcessAndEncodeAudioOnTaskQueue() where
@ -199,15 +198,11 @@ class ChannelSend
void OnUplinkPacketLossRate(float packet_loss_rate); void OnUplinkPacketLossRate(float packet_loss_rate);
bool InputMute() const; bool InputMute() const;
int ResendPackets(const uint16_t* sequence_numbers, int length);
int SetSendRtpHeaderExtension(bool enable, RTPExtensionType type, int id); int SetSendRtpHeaderExtension(bool enable, RTPExtensionType type, int id);
void UpdateOverheadForEncoder() void UpdateOverheadForEncoder()
RTC_EXCLUSIVE_LOCKS_REQUIRED(overhead_per_packet_lock_); RTC_EXCLUSIVE_LOCKS_REQUIRED(overhead_per_packet_lock_);
int GetRtpTimestampRateHz() const;
int32_t SendRtpAudio(FrameType frameType, int32_t SendRtpAudio(FrameType frameType,
uint8_t payloadType, uint8_t payloadType,
uint32_t timeStamp, uint32_t timeStamp,
@ -1174,20 +1169,6 @@ CallSendStatistics ChannelSend::GetRTCPStatistics() const {
return stats; 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( void ChannelSend::ProcessAndEncodeAudio(
std::unique_ptr<AudioFrame> audio_frame) { std::unique_ptr<AudioFrame> audio_frame) {
RTC_DCHECK_RUNS_SERIALIZED(&audio_thread_race_checker_); RTC_DCHECK_RUNS_SERIALIZED(&audio_thread_race_checker_);
@ -1293,17 +1274,6 @@ int ChannelSend::SetSendRtpHeaderExtension(bool enable,
return error; 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 { int64_t ChannelSend::GetRTT() const {
if (media_transport_) { if (media_transport_) {
// GetRTT is generally used in the RTCP codepath, where media transport is // GetRTT is generally used in the RTCP codepath, where media transport is

View File

@ -59,7 +59,6 @@ class ChannelSendInterface {
virtual bool ReceivedRTCPPacket(const uint8_t* packet, size_t length) = 0; virtual bool ReceivedRTCPPacket(const uint8_t* packet, size_t length) = 0;
virtual CallSendStatistics GetRTCPStatistics() const = 0; virtual CallSendStatistics GetRTCPStatistics() const = 0;
virtual void SetNACKStatus(bool enable, int max_packets) = 0;
virtual bool SetEncoder(int payload_type, virtual bool SetEncoder(int payload_type,
std::unique_ptr<AudioEncoder> encoder) = 0; std::unique_ptr<AudioEncoder> encoder) = 0;

View File

@ -75,7 +75,6 @@ class MockChannelSend : public voe::ChannelSendInterface {
MOCK_METHOD2(SetMid, void(const std::string& mid, int extension_id)); MOCK_METHOD2(SetMid, void(const std::string& mid, int extension_id));
MOCK_METHOD1(SetLocalSSRC, void(uint32_t ssrc)); MOCK_METHOD1(SetLocalSSRC, void(uint32_t ssrc));
MOCK_METHOD1(SetRTCP_CNAME, void(absl::string_view c_name)); 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_METHOD1(SetExtmapAllowMixed, void(bool extmap_allow_mixed));
MOCK_METHOD2(SetSendAudioLevelIndicationStatus, void(bool enable, int id)); MOCK_METHOD2(SetSendAudioLevelIndicationStatus, void(bool enable, int id));
MOCK_METHOD1(EnableSendTransportSequenceNumber, void(int id)); MOCK_METHOD1(EnableSendTransportSequenceNumber, void(int id));

View File

@ -62,7 +62,6 @@ std::string AudioSendStream::Config::Rtp::ToString() const {
} }
} }
ss << ']'; ss << ']';
ss << ", nack: " << nack.ToString();
ss << ", c_name: " << c_name; ss << ", c_name: " << c_name;
ss << '}'; ss << '}';
return ss.str(); return ss.str();

View File

@ -89,9 +89,6 @@ class AudioSendStream {
// RTP header extensions used for the sent stream. // RTP header extensions used for the sent stream.
std::vector<RtpExtension> extensions; std::vector<RtpExtension> extensions;
// See NackConfig for description.
NackConfig nack;
// RTCP CNAME, see RFC 3550. // RTCP CNAME, see RFC 3550.
std::string c_name; std::string c_name;
} rtp; } rtp;

View File

@ -1024,8 +1024,6 @@ class WebRtcVoiceMediaChannel::WebRtcAudioSendStream
void UpdateSendCodecSpec( void UpdateSendCodecSpec(
const webrtc::AudioSendStream::Config::SendCodecSpec& send_codec_spec) { const webrtc::AudioSendStream::Config::SendCodecSpec& send_codec_spec) {
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 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; config_.send_codec_spec = send_codec_spec;
auto info = auto info =
config_.encoder_factory->QueryAudioEncoder(send_codec_spec.format); config_.encoder_factory->QueryAudioEncoder(send_codec_spec.format);

View File

@ -1635,18 +1635,6 @@ TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthForAudioDoesntAffectBwe) {
SetSendParameters(send_parameters_); 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 that we can enable NACK with opus as callee.
TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) {
EXPECT_TRUE(SetupRecvStream()); EXPECT_TRUE(SetupRecvStream());
@ -1661,7 +1649,6 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) {
EXPECT_TRUE( EXPECT_TRUE(
channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrcX))); 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. // Test that we can enable NACK on receive streams.
@ -1672,29 +1659,11 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackRecvStreams) {
parameters.codecs.push_back(kOpusCodec); parameters.codecs.push_back(kOpusCodec);
parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam(
cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); cricket::kRtcpFbParamNack, cricket::kParamValueEmpty));
EXPECT_EQ(0, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms);
EXPECT_EQ(0, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); EXPECT_EQ(0, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms);
SetSendParameters(parameters); SetSendParameters(parameters);
EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms);
EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).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 that we can disable NACK on receive streams.
TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) {
EXPECT_TRUE(SetupSendStream()); EXPECT_TRUE(SetupSendStream());
@ -1704,13 +1673,11 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) {
parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam( parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam(
cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); cricket::kRtcpFbParamNack, cricket::kParamValueEmpty));
SetSendParameters(parameters); SetSendParameters(parameters);
EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms);
EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms);
parameters.codecs.clear(); parameters.codecs.clear();
parameters.codecs.push_back(kOpusCodec); parameters.codecs.push_back(kOpusCodec);
SetSendParameters(parameters); SetSendParameters(parameters);
EXPECT_EQ(0, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms);
EXPECT_EQ(0, GetRecvStreamConfig(kSsrcY).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( parameters.codecs[0].AddFeedbackParam(cricket::FeedbackParam(
cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)); cricket::kRtcpFbParamNack, cricket::kParamValueEmpty));
SetSendParameters(parameters); SetSendParameters(parameters);
EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms);
EXPECT_TRUE(AddRecvStream(kSsrcY)); EXPECT_TRUE(AddRecvStream(kSsrcY));
EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms);

View File

@ -165,7 +165,6 @@ TEST_F(RetransmissionEndToEndTest, ReceivesNackAndRetransmitsAudio) {
void ModifyAudioConfigs( void ModifyAudioConfigs(
AudioSendStream::Config* send_config, AudioSendStream::Config* send_config,
std::vector<AudioReceiveStream::Config>* receive_configs) override { std::vector<AudioReceiveStream::Config>* receive_configs) override {
send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
(*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
local_ssrc_ = (*receive_configs)[0].rtp.local_ssrc; local_ssrc_ = (*receive_configs)[0].rtp.local_ssrc;
remote_ssrc_ = (*receive_configs)[0].rtp.remote_ssrc; remote_ssrc_ = (*receive_configs)[0].rtp.remote_ssrc;