hal: Support for usb audio features
Added support for usb audio feature and
related proxy device support
Change-Id: Ia64e9eff20fbbada6f08795686cdbc0ba462bafb
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index e80f88f..7a65925 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -186,6 +186,15 @@
return 0;
}
+ /* start usb playback thread */
+ if(SND_DEVICE_OUT_USB_HEADSET == snd_device ||
+ SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET == snd_device)
+ audio_extn_usb_start_playback(adev);
+
+ /* start usb capture thread */
+ if(SND_DEVICE_IN_USB_HEADSET_MIC == snd_device)
+ audio_extn_usb_start_capture(adev);
+
if (platform_send_audio_calibration(adev->platform, snd_device) < 0) {
adev->snd_dev_ref_cnt[snd_device]--;
return -EINVAL;
@@ -214,6 +223,16 @@
return -EINVAL;
}
adev->snd_dev_ref_cnt[snd_device]--;
+
+ /* exit usb play back thread */
+ if(SND_DEVICE_OUT_USB_HEADSET == snd_device ||
+ SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET == snd_device)
+ audio_extn_usb_stop_playback();
+
+ /* exit usb capture thread */
+ if(SND_DEVICE_IN_USB_HEADSET_MIC == snd_device)
+ audio_extn_usb_stop_capture(adev);
+
if (adev->snd_dev_ref_cnt[snd_device] == 0) {
ALOGV("%s: snd_device(%d: %s)", __func__,
snd_device, platform_get_snd_device_name(snd_device));