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:
parent
12971a22d2
commit
8467cf27ac
@ -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_);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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); }
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user