AudioReceiveStream: Clean up ConfigureStream.
Increases readability of configuration setup by separating
first time configuration setup and reconfiguration.
Bug: None
Change-Id: Ifee29c31bce505a971ab5993cb862a72db94725a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220700
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34159}
diff --git a/audio/audio_receive_stream.cc b/audio/audio_receive_stream.cc
index 467647b..cdbab66 100644
--- a/audio/audio_receive_stream.cc
+++ b/audio/audio_receive_stream.cc
@@ -18,6 +18,7 @@
#include "api/audio_codecs/audio_format.h"
#include "api/call/audio_sink.h"
#include "api/rtp_parameters.h"
+#include "api/sequence_checker.h"
#include "audio/audio_send_stream.h"
#include "audio/audio_state.h"
#include "audio/channel_receive.h"
@@ -118,7 +119,8 @@
const rtc::scoped_refptr<webrtc::AudioState>& audio_state,
webrtc::RtcEventLog* event_log,
std::unique_ptr<voe::ChannelReceiveInterface> channel_receive)
- : audio_state_(audio_state),
+ : config_(config),
+ audio_state_(audio_state),
source_tracker_(clock),
channel_receive_(std::move(channel_receive)) {
RTC_LOG(LS_INFO) << "AudioReceiveStream: " << config.rtp.remote_ssrc;
@@ -140,7 +142,15 @@
// Register with transport.
rtp_stream_receiver_ = receiver_controller->CreateReceiver(
config.rtp.remote_ssrc, channel_receive_.get());
- ConfigureStream(this, config, true);
+
+ // Complete configuration.
+ // TODO(solenberg): Config NACK history window (which is a packet count),
+ // using the actual packet size for the configured codec.
+ channel_receive_->SetNACKStatus(config.rtp.nack.rtp_history_ms != 0,
+ config.rtp.nack.rtp_history_ms / 20);
+ channel_receive_->SetReceiveCodecs(config.decoder_map);
+ channel_receive_->SetDepacketizerToDecoderFrameTransformer(
+ config.frame_transformer);
}
AudioReceiveStream::~AudioReceiveStream() {
@@ -154,7 +164,34 @@
void AudioReceiveStream::Reconfigure(
const webrtc::AudioReceiveStream::Config& config) {
RTC_DCHECK(worker_thread_checker_.IsCurrent());
- ConfigureStream(this, config, false);
+
+ // Configuration parameters which cannot be changed.
+ RTC_DCHECK(config_.rtp.remote_ssrc == config.rtp.remote_ssrc);
+ RTC_DCHECK(config_.rtcp_send_transport == config.rtcp_send_transport);
+ // Decoder factory cannot be changed because it is configured at
+ // voe::Channel construction time.
+ RTC_DCHECK(config_.decoder_factory == config.decoder_factory);
+
+ // SSRC can't be changed mid-stream.
+ RTC_DCHECK_EQ(config_.rtp.local_ssrc, config.rtp.local_ssrc);
+ RTC_DCHECK_EQ(config_.rtp.remote_ssrc, config.rtp.remote_ssrc);
+
+ // TODO(solenberg): Config NACK history window (which is a packet count),
+ // using the actual packet size for the configured codec.
+ if (config_.rtp.nack.rtp_history_ms != config.rtp.nack.rtp_history_ms) {
+ channel_receive_->SetNACKStatus(config.rtp.nack.rtp_history_ms != 0,
+ config.rtp.nack.rtp_history_ms / 20);
+ }
+ if (config_.decoder_map != config.decoder_map) {
+ channel_receive_->SetReceiveCodecs(config.decoder_map);
+ }
+
+ if (config_.frame_transformer != config.frame_transformer) {
+ channel_receive_->SetDepacketizerToDecoderFrameTransformer(
+ config.frame_transformer);
+ }
+
+ config_ = config;
}
void AudioReceiveStream::Start() {
@@ -384,50 +421,5 @@
RTC_DCHECK(audio_state);
return audio_state;
}
-
-void AudioReceiveStream::ConfigureStream(AudioReceiveStream* stream,
- const Config& new_config,
- bool first_time) {
- RTC_LOG(LS_INFO) << "AudioReceiveStream::ConfigureStream: "
- << new_config.ToString();
- RTC_DCHECK(stream);
- const auto& channel_receive = stream->channel_receive_;
- const auto& old_config = stream->config_;
-
- // Configuration parameters which cannot be changed.
- RTC_DCHECK(first_time ||
- old_config.rtp.remote_ssrc == new_config.rtp.remote_ssrc);
- RTC_DCHECK(first_time ||
- old_config.rtcp_send_transport == new_config.rtcp_send_transport);
- // Decoder factory cannot be changed because it is configured at
- // voe::Channel construction time.
- RTC_DCHECK(first_time ||
- old_config.decoder_factory == new_config.decoder_factory);
-
- if (!first_time) {
- // SSRC can't be changed mid-stream.
- RTC_DCHECK_EQ(old_config.rtp.local_ssrc, new_config.rtp.local_ssrc);
- RTC_DCHECK_EQ(old_config.rtp.remote_ssrc, new_config.rtp.remote_ssrc);
- }
-
- // 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_receive->SetNACKStatus(new_config.rtp.nack.rtp_history_ms != 0,
- new_config.rtp.nack.rtp_history_ms / 20);
- }
- if (first_time || old_config.decoder_map != new_config.decoder_map) {
- channel_receive->SetReceiveCodecs(new_config.decoder_map);
- }
-
- if (first_time ||
- old_config.frame_transformer != new_config.frame_transformer) {
- channel_receive->SetDepacketizerToDecoderFrameTransformer(
- new_config.frame_transformer);
- }
-
- stream->config_ = new_config;
-}
} // namespace internal
} // namespace webrtc
diff --git a/audio/audio_receive_stream.h b/audio/audio_receive_stream.h
index a8438c2..769578b 100644
--- a/audio/audio_receive_stream.h
+++ b/audio/audio_receive_stream.h
@@ -102,10 +102,6 @@
const AudioSendStream* GetAssociatedSendStreamForTesting() const;
private:
- static void ConfigureStream(AudioReceiveStream* stream,
- const Config& new_config,
- bool first_time);
-
AudioState* audio_state() const;
SequenceChecker worker_thread_checker_;