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);
|
audio_state()->RemoveReceivingStream(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AudioReceiveStream::IsRunning() const {
|
||||||
|
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||||
|
return playing_;
|
||||||
|
}
|
||||||
|
|
||||||
webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats(
|
webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats(
|
||||||
bool get_and_clear_legacy_stats) const {
|
bool get_and_clear_legacy_stats) const {
|
||||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
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 Reconfigure(const webrtc::AudioReceiveStream::Config& config) override;
|
||||||
void Start() override;
|
void Start() override;
|
||||||
void Stop() override;
|
void Stop() override;
|
||||||
|
bool IsRunning() const override;
|
||||||
|
|
||||||
webrtc::AudioReceiveStream::Stats GetStats(
|
webrtc::AudioReceiveStream::Stats GetStats(
|
||||||
bool get_and_clear_legacy_stats) const override;
|
bool get_and_clear_legacy_stats) const override;
|
||||||
void SetSink(AudioSinkInterface* sink) 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.
|
// When a stream is stopped, it can't receive, process or deliver packets.
|
||||||
virtual void Stop() = 0;
|
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;
|
virtual Stats GetStats(bool get_and_clear_legacy_stats) const = 0;
|
||||||
Stats GetStats() { return GetStats(/*get_and_clear_legacy_stats=*/true); }
|
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 Reconfigure(const webrtc::AudioReceiveStream::Config& config) override;
|
||||||
void Start() override { started_ = true; }
|
void Start() override { started_ = true; }
|
||||||
void Stop() override { started_ = false; }
|
void Stop() override { started_ = false; }
|
||||||
|
bool IsRunning() const override { return started_; }
|
||||||
|
|
||||||
webrtc::AudioReceiveStream::Stats GetStats(
|
webrtc::AudioReceiveStream::Stats GetStats(
|
||||||
bool get_and_clear_legacy_stats) const override;
|
bool get_and_clear_legacy_stats) const override;
|
||||||
|
|||||||
@ -1304,7 +1304,6 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
|
|||||||
} else {
|
} else {
|
||||||
stream_->Stop();
|
stream_->Stop();
|
||||||
}
|
}
|
||||||
playout_ = playout;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SetBaseMinimumPlayoutDelayMs(int delay_ms) {
|
bool SetBaseMinimumPlayoutDelayMs(int delay_ms) {
|
||||||
@ -1355,13 +1354,16 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
|
|||||||
private:
|
private:
|
||||||
void RecreateAudioReceiveStream() {
|
void RecreateAudioReceiveStream() {
|
||||||
RTC_DCHECK(worker_thread_checker_.IsCurrent());
|
RTC_DCHECK(worker_thread_checker_.IsCurrent());
|
||||||
|
bool was_running = false;
|
||||||
if (stream_) {
|
if (stream_) {
|
||||||
|
was_running = stream_->IsRunning();
|
||||||
call_->DestroyAudioReceiveStream(stream_);
|
call_->DestroyAudioReceiveStream(stream_);
|
||||||
}
|
}
|
||||||
stream_ = call_->CreateAudioReceiveStream(config_);
|
stream_ = call_->CreateAudioReceiveStream(config_);
|
||||||
RTC_CHECK(stream_);
|
RTC_CHECK(stream_);
|
||||||
stream_->SetGain(output_volume_);
|
stream_->SetGain(output_volume_);
|
||||||
SetPlayout(playout_);
|
if (was_running)
|
||||||
|
SetPlayout(was_running);
|
||||||
stream_->SetSink(raw_audio_sink_.get());
|
stream_->SetSink(raw_audio_sink_.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1377,7 +1379,6 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
|
|||||||
// The stream is owned by WebRtcAudioReceiveStream and may be reallocated if
|
// The stream is owned by WebRtcAudioReceiveStream and may be reallocated if
|
||||||
// configuration changes.
|
// configuration changes.
|
||||||
webrtc::AudioReceiveStream* stream_ = nullptr;
|
webrtc::AudioReceiveStream* stream_ = nullptr;
|
||||||
bool playout_ = false;
|
|
||||||
float output_volume_ = 1.0;
|
float output_volume_ = 1.0;
|
||||||
std::unique_ptr<webrtc::AudioSinkInterface> raw_audio_sink_;
|
std::unique_ptr<webrtc::AudioSinkInterface> raw_audio_sink_;
|
||||||
};
|
};
|
||||||
@ -1689,21 +1690,22 @@ bool WebRtcVoiceMediaChannel::SetRecvCodecs(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playout_) {
|
bool playout_enabled = playout_;
|
||||||
// Receive codecs can not be changed while playing. So we temporarily
|
// Receive codecs can not be changed while playing. So we temporarily
|
||||||
// pause playout.
|
// pause playout.
|
||||||
ChangePlayout(false);
|
SetPlayout(false);
|
||||||
}
|
RTC_DCHECK(!playout_);
|
||||||
|
|
||||||
decoder_map_ = std::move(decoder_map);
|
decoder_map_ = std::move(decoder_map);
|
||||||
for (auto& kv : recv_streams_) {
|
for (auto& kv : recv_streams_) {
|
||||||
kv.second->SetDecoderMap(decoder_map_);
|
kv.second->SetDecoderMap(decoder_map_);
|
||||||
}
|
}
|
||||||
|
|
||||||
recv_codecs_ = codecs;
|
recv_codecs_ = codecs;
|
||||||
|
|
||||||
if (desired_playout_ && !playout_) {
|
SetPlayout(playout_enabled);
|
||||||
ChangePlayout(desired_playout_);
|
RTC_DCHECK_EQ(playout_, playout_enabled);
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1858,12 +1860,7 @@ bool WebRtcVoiceMediaChannel::SetSendCodecs(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WebRtcVoiceMediaChannel::SetPlayout(bool playout) {
|
void WebRtcVoiceMediaChannel::SetPlayout(bool playout) {
|
||||||
desired_playout_ = playout;
|
TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::SetPlayout");
|
||||||
return ChangePlayout(desired_playout_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebRtcVoiceMediaChannel::ChangePlayout(bool playout) {
|
|
||||||
TRACE_EVENT0("webrtc", "WebRtcVoiceMediaChannel::ChangePlayout");
|
|
||||||
RTC_DCHECK(worker_thread_checker_.IsCurrent());
|
RTC_DCHECK(worker_thread_checker_.IsCurrent());
|
||||||
if (playout_ == playout) {
|
if (playout_ == playout) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -276,7 +276,6 @@ class WebRtcVoiceMediaChannel final : public VoiceMediaChannel,
|
|||||||
bool MuteStream(uint32_t ssrc, bool mute);
|
bool MuteStream(uint32_t ssrc, bool mute);
|
||||||
|
|
||||||
WebRtcVoiceEngine* engine() { return engine_; }
|
WebRtcVoiceEngine* engine() { return engine_; }
|
||||||
void ChangePlayout(bool playout);
|
|
||||||
int CreateVoEChannel();
|
int CreateVoEChannel();
|
||||||
bool DeleteVoEChannel(int channel);
|
bool DeleteVoEChannel(int channel);
|
||||||
bool SetMaxSendBitrate(int bps);
|
bool SetMaxSendBitrate(int bps);
|
||||||
@ -301,7 +300,6 @@ class WebRtcVoiceMediaChannel final : public VoiceMediaChannel,
|
|||||||
int dtmf_payload_freq_ = -1;
|
int dtmf_payload_freq_ = -1;
|
||||||
bool recv_transport_cc_enabled_ = false;
|
bool recv_transport_cc_enabled_ = false;
|
||||||
bool recv_nack_enabled_ = false;
|
bool recv_nack_enabled_ = false;
|
||||||
bool desired_playout_ = false;
|
|
||||||
bool playout_ = false;
|
bool playout_ = false;
|
||||||
bool send_ = false;
|
bool send_ = false;
|
||||||
webrtc::Call* const call_ = nullptr;
|
webrtc::Call* const call_ = nullptr;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user