From c66810830c8ae5e0b1eda753669c386aa39b7cb1 Mon Sep 17 00:00:00 2001 From: Oskar Sundbom Date: Mon, 19 Feb 2018 14:09:21 +0100 Subject: [PATCH] Maintain audio receive stream gain across recreations When a receive stream is created its internal Channel defaults to a gain of 1.0. If a gain has been set for the stream, but it needs to be recreated internally, its volume will not carry over but reset to 1.0. This CL fixes that, for now. Ideally, we'd not recreate these streams internally. Bug: chromium:810848 Change-Id: Ia2ce87a39f1f4d7d3596c1b5ab256b10bdbca3c3 Reviewed-on: https://webrtc-review.googlesource.com/54402 Reviewed-by: Fredrik Solenberg Commit-Queue: Oskar Sundbom Cr-Commit-Position: refs/heads/master@{#22156} --- media/engine/webrtcvoiceengine.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc index b1fb14d64a..51cbba2d0c 100644 --- a/media/engine/webrtcvoiceengine.cc +++ b/media/engine/webrtcvoiceengine.cc @@ -1195,6 +1195,7 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { void SetOutputVolume(double volume) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); + output_volume_ = volume; stream_->SetGain(volume); } @@ -1223,6 +1224,7 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { } stream_ = call_->CreateAudioReceiveStream(config_); RTC_CHECK(stream_); + stream_->SetGain(output_volume_); SetPlayout(playout_); stream_->SetSink(raw_audio_sink_.get()); } @@ -1240,6 +1242,7 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { // configuration changes. webrtc::AudioReceiveStream* stream_ = nullptr; bool playout_ = false; + float output_volume_ = 1.0; std::unique_ptr raw_audio_sink_; RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WebRtcAudioReceiveStream);