summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher N. Hesse <raymanfx@gmail.com>2017-02-15 12:18:41 +0100
committerAndreas Schneider <asn@cryptomilk.org>2017-02-16 14:50:48 +0100
commit130da9f065ce68a5ec34542bfa6998ae6d14706c (patch)
tree6e4afd884be55aeffa7abc47090386bad8388758
parent8794541f197972cca7b4c2e81c9107e04330b3e3 (diff)
downloadandroid_hardware_samsung-130da9f065ce68a5ec34542bfa6998ae6d14706c.tar.gz
android_hardware_samsung-130da9f065ce68a5ec34542bfa6998ae6d14706c.tar.bz2
android_hardware_samsung-130da9f065ce68a5ec34542bfa6998ae6d14706c.zip
audio: Cleanup and fix voicecall preparation
* if (usecase == NULL) should actually be if (vc_usecase == NULL) * Avoid unnecessary if-block indentation by updating the control flow Change-Id: If00ac405a1eac429862b953580e8614227015134
-rw-r--r--audio/audio_hw.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index d0aa3dc..f0bfff0 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -905,48 +905,48 @@ static int select_devices(struct audio_device *adev,
}
active_out = (struct stream_out *)usecase->stream;
+
+ /*
+ * If the voice call is active, use the sound devices of voice call usecase
+ * so that it would not result any device switch. All the usecases will
+ * be switched to new device when select_devices() is called for voice call
+ * usecase.
+ */
+ if (usecase->type != VOICE_CALL && adev->voice.in_call) {
+ vc_usecase = get_usecase_from_id(adev, USECASE_VOICE_CALL);
+ if (vc_usecase == NULL) {
+ ALOGE("%s: Could not find the voice call usecase", __func__);
+ } else {
+ in_snd_device = vc_usecase->in_snd_device;
+ out_snd_device = vc_usecase->out_snd_device;
+ }
+ }
+
if (usecase->type == VOICE_CALL) {
- out_snd_device = get_output_snd_device(adev, active_out->devices);
+ usecase->devices = active_out->devices;
prepare_voice_session(adev->voice.session, active_out->devices);
+ out_snd_device = get_output_snd_device(adev, active_out->devices);
in_snd_device = get_input_snd_device(adev, active_out->devices);
+ } else if (usecase->type == PCM_PLAYBACK) {
usecase->devices = active_out->devices;
- } else {
- /*
- * If the voice call is active, use the sound devices of voice call usecase
- * so that it would not result any device switch. All the usecases will
- * be switched to new device when select_devices() is called for voice call
- * usecase.
- */
- if (adev->voice.in_call) {
- vc_usecase = get_usecase_from_id(adev, USECASE_VOICE_CALL);
- if (usecase == NULL) {
- ALOGE("%s: Could not find the voice call usecase", __func__);
- } else {
- in_snd_device = vc_usecase->in_snd_device;
- out_snd_device = vc_usecase->out_snd_device;
+ in_snd_device = SND_DEVICE_NONE;
+ if (out_snd_device == SND_DEVICE_NONE) {
+ out_snd_device = get_output_snd_device(adev, active_out->devices);
+ if (active_out == adev->primary_output &&
+ active_input &&
+ active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ select_devices(adev, active_input->usecase);
}
}
- if (usecase->type == PCM_PLAYBACK) {
- usecase->devices = active_out->devices;
- in_snd_device = SND_DEVICE_NONE;
- if (out_snd_device == SND_DEVICE_NONE) {
- out_snd_device = get_output_snd_device(adev, active_out->devices);
- if (active_out == adev->primary_output &&
- active_input &&
- active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
- select_devices(adev, active_input->usecase);
- }
- }
- } else if (usecase->type == PCM_CAPTURE) {
- usecase->devices = ((struct stream_in *)usecase->stream)->devices;
- out_snd_device = SND_DEVICE_NONE;
- if (in_snd_device == SND_DEVICE_NONE) {
- if (active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
- adev->primary_output && !adev->primary_output->standby) {
- in_snd_device = get_input_snd_device(adev, adev->primary_output->devices);
- } else {
- in_snd_device = get_input_snd_device(adev, AUDIO_DEVICE_NONE);
- }
+ } else if (usecase->type == PCM_CAPTURE) {
+ usecase->devices = ((struct stream_in *)usecase->stream)->devices;
+ out_snd_device = SND_DEVICE_NONE;
+ if (in_snd_device == SND_DEVICE_NONE) {
+ if (active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
+ adev->primary_output && !adev->primary_output->standby) {
+ in_snd_device = get_input_snd_device(adev, adev->primary_output->devices);
+ } else {
+ in_snd_device = get_input_snd_device(adev, AUDIO_DEVICE_NONE);
}
}
}