mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
Reland "Add ability to state whether the APM output will be used"
This is a reland of 8be2f201ba
Original change's description:
> Add ability to state whether the APM output will be used
>
> This CL adds the ability for the surrounding code to state that the
> APM output will not be used. The intended usecase for this is to allow
> APM to run at a lower complexity when the endpoint is muted.
> When APM has been informed that the output will not be used, it can
> turn off code that is needed only for ensuring that the output audio
> will sound good.
>
> Bug: b/154437967,b/163802450
> Change-Id: I8e22989e35354372e96191d15da44beb9d1b26ae
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/181200
> Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
> Commit-Queue: Per Åhgren <peah@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31949}
Bug: b/154437967
Bug: b/163802450
Change-Id: Ia77a9e43f913929d1afa72212f1ea6c192d0e519
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/181887
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31957}
This commit is contained in:
parent
88816e373d
commit
552d3e3d5e
6 changed files with 32 additions and 1 deletions
|
@ -203,6 +203,12 @@ void AecDumpImpl::WriteRuntimeSetting(
|
|||
setting->set_capture_fixed_post_gain(x);
|
||||
break;
|
||||
}
|
||||
case AudioProcessing::RuntimeSetting::Type::kCaptureOutputUsed: {
|
||||
bool x;
|
||||
runtime_setting.GetBool(&x);
|
||||
setting->set_capture_output_used(x);
|
||||
break;
|
||||
}
|
||||
case AudioProcessing::RuntimeSetting::Type::kPlayoutVolumeChange: {
|
||||
int x;
|
||||
runtime_setting.GetInt(&x);
|
||||
|
|
|
@ -705,6 +705,7 @@ void AudioProcessingImpl::SetRuntimeSetting(RuntimeSetting setting) {
|
|||
case RuntimeSetting::Type::kCapturePreGain:
|
||||
case RuntimeSetting::Type::kCaptureCompressionGain:
|
||||
case RuntimeSetting::Type::kCaptureFixedPostGain:
|
||||
case RuntimeSetting::Type::kCaptureOutputUsed:
|
||||
capture_runtime_settings_enqueuer_.Enqueue(setting);
|
||||
return;
|
||||
case RuntimeSetting::Type::kPlayoutVolumeChange:
|
||||
|
@ -865,6 +866,10 @@ void AudioProcessingImpl::HandleCaptureRuntimeSettings() {
|
|||
case RuntimeSetting::Type::kNotSpecified:
|
||||
RTC_NOTREACHED();
|
||||
break;
|
||||
case RuntimeSetting::Type::kCaptureOutputUsed:
|
||||
// TODO(b/154437967): Add support for reducing complexity when it is
|
||||
// known that the capture output will not be used.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -886,6 +891,7 @@ void AudioProcessingImpl::HandleRenderRuntimeSettings() {
|
|||
case RuntimeSetting::Type::kCapturePreGain: // fall-through
|
||||
case RuntimeSetting::Type::kCaptureCompressionGain: // fall-through
|
||||
case RuntimeSetting::Type::kCaptureFixedPostGain: // fall-through
|
||||
case RuntimeSetting::Type::kCaptureOutputUsed: // fall-through
|
||||
case RuntimeSetting::Type::kNotSpecified:
|
||||
RTC_NOTREACHED();
|
||||
break;
|
||||
|
|
|
@ -91,6 +91,7 @@ message RuntimeSetting {
|
|||
optional float capture_fixed_post_gain = 3;
|
||||
optional int32 playout_volume_change = 4;
|
||||
optional PlayoutAudioDeviceInfo playout_audio_device_change = 5;
|
||||
optional bool capture_output_used = 6;
|
||||
}
|
||||
|
||||
message Event {
|
||||
|
|
|
@ -384,7 +384,8 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface {
|
|||
kCaptureFixedPostGain,
|
||||
kPlayoutVolumeChange,
|
||||
kCustomRenderProcessingRuntimeSetting,
|
||||
kPlayoutAudioDeviceChange
|
||||
kPlayoutAudioDeviceChange,
|
||||
kCaptureOutputUsed
|
||||
};
|
||||
|
||||
// Play-out audio device properties.
|
||||
|
@ -434,6 +435,10 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface {
|
|||
return {Type::kCustomRenderProcessingRuntimeSetting, payload};
|
||||
}
|
||||
|
||||
static RuntimeSetting CreateCaptureOutputUsedSetting(bool payload) {
|
||||
return {Type::kCaptureOutputUsed, payload};
|
||||
}
|
||||
|
||||
Type type() const { return type_; }
|
||||
// Getters do not return a value but instead modify the argument to protect
|
||||
// from implicit casting.
|
||||
|
@ -445,6 +450,10 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface {
|
|||
RTC_DCHECK(value);
|
||||
*value = value_.int_value;
|
||||
}
|
||||
void GetBool(bool* value) const {
|
||||
RTC_DCHECK(value);
|
||||
*value = value_.bool_value;
|
||||
}
|
||||
void GetPlayoutAudioDeviceInfo(PlayoutAudioDeviceInfo* value) const {
|
||||
RTC_DCHECK(value);
|
||||
*value = value_.playout_audio_device_info;
|
||||
|
@ -463,6 +472,7 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface {
|
|||
U(PlayoutAudioDeviceInfo value) : playout_audio_device_info(value) {}
|
||||
float float_value;
|
||||
int int_value;
|
||||
bool bool_value;
|
||||
PlayoutAudioDeviceInfo playout_audio_device_info;
|
||||
} value_;
|
||||
};
|
||||
|
|
|
@ -544,6 +544,10 @@ void AecDumpBasedSimulator::HandleMessage(
|
|||
AudioProcessing::RuntimeSetting::CreatePlayoutAudioDeviceChange(
|
||||
{msg.playout_audio_device_change().id(),
|
||||
msg.playout_audio_device_change().max_volume()}));
|
||||
} else if (msg.has_capture_output_used()) {
|
||||
ap_->SetRuntimeSetting(
|
||||
AudioProcessing::RuntimeSetting::CreateCaptureOutputUsedSetting(
|
||||
msg.capture_output_used()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,10 @@ void ReplayRuntimeSetting(AudioProcessing* apm,
|
|||
AudioProcessing::RuntimeSetting::CreatePlayoutAudioDeviceChange(
|
||||
{setting.playout_audio_device_change().id(),
|
||||
setting.playout_audio_device_change().max_volume()}));
|
||||
} else if (setting.has_capture_output_used()) {
|
||||
apm->SetRuntimeSetting(
|
||||
AudioProcessing::RuntimeSetting::CreateCaptureOutputUsedSetting(
|
||||
setting.capture_output_used()));
|
||||
}
|
||||
}
|
||||
} // namespace webrtc
|
||||
|
|
Loading…
Reference in a new issue