hal: Fix incorrect audio calibration after device switch
Start mp3 offload playback on headset, plug-out headset and
resume playback on speaker very quickly (within 500ms) and
plug-in the headset back within next 2s. Observe that music
sound louder because the playback continues with previous
speaker calibration as headset calibration is not pushed.
Push the calibration data before enabling every use case
instead of pushing only once while enabling the sound device
to fix the issue.
Bug: 23568067
Change-Id: Iade2e42183009b460991bb6ee48b09cff0bcfa8b
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 70ce0dc..86072c0 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -308,6 +308,8 @@
return -EINVAL;
}
+ platform_send_audio_calibration(adev->platform, snd_device);
+
adev->snd_dev_ref_cnt[snd_device]++;
if (adev->snd_dev_ref_cnt[snd_device] > 1) {
ALOGV("%s: snd_device(%d: %s) is already active",
@@ -323,13 +325,6 @@
if (audio_extn_spkr_prot_is_enabled())
audio_extn_spkr_prot_calib_cancel(adev);
- if (platform_send_audio_calibration(adev->platform, snd_device) < 0) {
- adev->snd_dev_ref_cnt[snd_device]--;
- audio_extn_sound_trigger_update_device_status(snd_device,
- ST_EVENT_SND_DEVICE_FREE);
- return -EINVAL;
- }
-
audio_extn_dsm_feedback_enable(adev, snd_device, true);
if ((snd_device == SND_DEVICE_OUT_SPEAKER ||