Reduce redundant flags for audio stream playout state.

Bug: none
Change-Id: Idbcb19cf415dd1fadfe54d01294bb62b8ba9012f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202244
Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33015}
This commit is contained in:
Tomas Gunnarsson 2021-01-17 14:36:44 +01:00 committed by Commit Bot
parent 12971a22d2
commit 8467cf27ac
6 changed files with 25 additions and 19 deletions

View File

@ -173,6 +173,11 @@ void AudioReceiveStream::Stop() {
audio_state()->RemoveReceivingStream(this);
}
bool AudioReceiveStream::IsRunning() const {
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
return playing_;
}
webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats(
bool get_and_clear_legacy_stats) const {
RTC_DCHECK_RUN_ON(&worker_thread_checker_);

View File

@ -71,6 +71,8 @@ class AudioReceiveStream final : public webrtc::AudioReceiveStream,
void Reconfigure(const webrtc::AudioReceiveStream::Config& config) override;
void Start() override;
void Stop() override;
bool IsRunning() const override;
webrtc::AudioReceiveStream::Stats GetStats(
bool get_and_clear_legacy_stats) const override;
void SetSink(AudioSinkInterface* sink) override;

View File

@ -167,6 +167,9 @@ class AudioReceiveStream {
// When a stream is stopped, it can't receive, process or deliver packets.
virtual void Stop() = 0;
// Returns true if the stream has been started.
virtual bool IsRunning() const = 0;
virtual Stats GetStats(bool get_and_clear_legacy_stats) const = 0;
Stats GetStats() { return GetStats(/*get_and_clear_legacy_stats=*/true); }

View File

@ -104,6 +104,7 @@ class FakeAudioReceiveStream final : public webrtc::AudioReceiveStream {
void Reconfigure(const webrtc::AudioReceiveStream::Config& config) override;
void Start() override { started_ = true; }
void Stop() override { started_ = false; }
bool IsRunning() const override { return started_; }
webrtc::AudioReceiveStream::Stats GetStats(
bool get_and_clear_legacy_stats) const override;

View File

@ -1304,7 +1304,6 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
} else {
stream_->Stop();
}
playout_ = playout;
}
bool SetBaseMinimumPlayoutDelayMs(int delay_ms) {
@ -1355,13 +1354,16 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
private:
void RecreateAudioReceiveStream() {
RTC_DCHECK(worker_thread_checker_.IsCurrent());
bool was_running = false;
if (stream_) {
was_running = stream_->IsRunning();
call_->DestroyAudioReceiveStream(stream_);
}
stream_ = call_->CreateAudioReceiveStream(config_);
RTC_CHECK(stream_);
stream_->SetGain(output_volume_);
SetPlayout(playout_);
if (was_running)
SetPlayout(was_running);
stream_->SetSink(raw_audio_sink_.get());
}
@ -1377,7 +1379,6 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
// The stream is owned by WebRtcAudioReceiveStream and may be reallocated if
// configuration changes.
webrtc::AudioReceiveStream* stream_ = nullptr;
bool playout_ = false;
float output_volume_ = 1.0;
std::unique_ptr<webrtc::AudioSinkInterface> raw_audio_sink_;
};
@ -1689,21 +1690,22 @@ bool WebRtcVoiceMediaChannel::SetRecvCodecs(
return true;
}
if (playout_) {
// Receive codecs can not be changed while playing. So we temporarily
// pause playout.
ChangePlayout(false);
}
bool playout_enabled = playout_;
// Receive codecs can not be changed while playing. So we temporarily
// pause playout.
SetPlayout(false);
RTC_DCHECK(!playout_);
decoder_map_ = std::move(decoder_map);
for (auto& kv : recv_streams_) {
kv.second->SetDecoderMap(decoder_map_);
}
recv_codecs_ = codecs;
if (desired_playout_ && !playout_) {
ChangePlayout(desired_playout_);
}
SetPlayout(playout_enabled);
RTC_DCHECK_EQ(playout_, playout_enabled);
return true;
}
@ -1858,12 +1860,7 @@ bool WebRtcVoiceMediaChannel::SetSendCodecs(
}
void WebRtcVoiceMediaChannel::SetPlayout(bool playout) {
desired_playout_ = playout;
return ChangePlayout(desired_playout_);
}
void WebRtcVoiceMediaChannel::ChangePlayout(bool playout) {
TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::ChangePlayout");
TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::SetPlayout");
RTC_DCHECK(worker_thread_checker_.IsCurrent());
if (playout_ == playout) {
return;

View File

@ -276,7 +276,6 @@ class WebRtcVoiceMediaChannel final : public VoiceMediaChannel,
bool MuteStream(uint32_t ssrc, bool mute);
WebRtcVoiceEngine* engine() { return engine_; }
void ChangePlayout(bool playout);
int CreateVoEChannel();
bool DeleteVoEChannel(int channel);
bool SetMaxSendBitrate(int bps);
@ -301,7 +300,6 @@ class WebRtcVoiceMediaChannel final : public VoiceMediaChannel,
int dtmf_payload_freq_ = -1;
bool recv_transport_cc_enabled_ = false;
bool recv_nack_enabled_ = false;
bool desired_playout_ = false;
bool playout_ = false;
bool send_ = false;
webrtc::Call* const call_ = nullptr;