Merge "hal: set backend channel number to one for mono speaker"
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index e8da091..0b7fee6 100755
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3226,6 +3226,22 @@
return ret;
}
+static bool check_snd_device_is_speaker(snd_device_t snd_device)
+{
+ bool ret = false;
+
+ if (snd_device == SND_DEVICE_OUT_SPEAKER ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_WSA ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS) {
+ ret = true;
+ }
+ return ret;
+}
+
int check_hdset_combo_device(snd_device_t snd_device)
{
int ret = false;
@@ -6409,7 +6425,12 @@
backend_cfg.bit_width = usecase->stream.out->bit_width;
backend_cfg.sample_rate = usecase->stream.out->sample_rate;
backend_cfg.format = usecase->stream.out->format;
- backend_cfg.channels = audio_channel_count_from_out_mask(usecase->stream.out->channel_mask);
+ if (!(hw_info_is_stereo_spkr(my_data->hw_info)) &&
+ check_snd_device_is_speaker(snd_device))
+ backend_cfg.channels = 1;
+ else
+ backend_cfg.channels =
+ audio_channel_count_from_out_mask(usecase->stream.out->channel_mask);
}
if (audio_extn_is_dsp_bit_width_enforce_mode_supported(usecase->stream.out->flags) &&
(adev->dsp_bit_width_enforce_mode > backend_cfg.bit_width))