Audio Processing Module: add play-out audio device runtime information
Add a runtime setting that notifies play-out audio device changes.
The payload is a pair indicating a device id and its maximum play-out
volume.
kPlayoutVolumeChange is now forwarded not only to capture, but also
render (required by render_pre_processor).
Bug: webrtc:10608
Change-Id: I8997c207422c1dcd1d53775397d6290939ef3db8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159002
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Ã…hgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29725}
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index cab7677..c718838 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -801,16 +801,20 @@
void AudioProcessingImpl::SetRuntimeSetting(RuntimeSetting setting) {
switch (setting.type()) {
case RuntimeSetting::Type::kCustomRenderProcessingRuntimeSetting:
+ case RuntimeSetting::Type::kPlayoutAudioDeviceChange:
render_runtime_settings_enqueuer_.Enqueue(setting);
return;
- case RuntimeSetting::Type::kNotSpecified:
- RTC_NOTREACHED();
- return;
case RuntimeSetting::Type::kCapturePreGain:
case RuntimeSetting::Type::kCaptureCompressionGain:
case RuntimeSetting::Type::kCaptureFixedPostGain:
+ capture_runtime_settings_enqueuer_.Enqueue(setting);
+ return;
case RuntimeSetting::Type::kPlayoutVolumeChange:
capture_runtime_settings_enqueuer_.Enqueue(setting);
+ render_runtime_settings_enqueuer_.Enqueue(setting);
+ return;
+ case RuntimeSetting::Type::kNotSpecified:
+ RTC_NOTREACHED();
return;
}
// The language allows the enum to have a non-enumerator
@@ -947,6 +951,9 @@
capture_.playout_volume = value;
break;
}
+ case RuntimeSetting::Type::kPlayoutAudioDeviceChange:
+ RTC_NOTREACHED();
+ break;
case RuntimeSetting::Type::kCustomRenderProcessingRuntimeSetting:
RTC_NOTREACHED();
break;
@@ -964,6 +971,7 @@
aec_dump_->WriteRuntimeSetting(setting);
}
switch (setting.type()) {
+ case RuntimeSetting::Type::kPlayoutAudioDeviceChange: // fall-through
case RuntimeSetting::Type::kCustomRenderProcessingRuntimeSetting:
if (submodules_.render_pre_processor) {
submodules_.render_pre_processor->SetRuntimeSetting(setting);