audio: add linein to BT headset loopback support
- Add AUDIO_DEVICE_OUT_BLUETOOTH_A2DP as the sink
device to support linein to BT headset loopback.
- set device_connect parameter in transcode loopback
test app to load A2DP source IPC library.
Change-Id: Ib52fdf9aa966f50834ffa34884f5fa76053df15e
diff --git a/hal/audio_extn/hw_loopback.c b/hal/audio_extn/hw_loopback.c
index 7516717..c76319f 100644
--- a/hal/audio_extn/hw_loopback.c
+++ b/hal/audio_extn/hw_loopback.c
@@ -171,6 +171,7 @@
if((sink_device_mask & AUDIO_DEVICE_OUT_SPEAKER) ||
(sink_device_mask & AUDIO_DEVICE_OUT_WIRED_HEADSET) ||
(sink_device_mask & AUDIO_DEVICE_OUT_WIRED_HEADPHONE) ||
+ (sink_device_mask & AUDIO_DEVICE_OUT_BLUETOOTH_A2DP) ||
(sink_device_mask & AUDIO_DEVICE_OUT_LINE)) {
return true;
}
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index f918a86..413b75c 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2366,6 +2366,8 @@
}
} else if ((usecase->stream.out != NULL) &&
!(usecase->stream.out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) &&
+ (usecase->type != TRANSCODE_LOOPBACK_TX) &&
+ (usecase->type != TRANSCODE_LOOPBACK_RX) &&
usecase->stream.out->started) {
if (is_bt_soc_on(adev) == false) {
ALOGD("BT SCO/A2dp disconnected while in connection");
diff --git a/qahw_api/test/trans_loopback_test.c b/qahw_api/test/trans_loopback_test.c
index 6f5cb75..e7194f0 100644
--- a/qahw_api/test/trans_loopback_test.c
+++ b/qahw_api/test/trans_loopback_test.c
@@ -579,6 +579,7 @@
log_file = stdout;
transcode_loopback_config_t *transcode_loopback_config = NULL;
transcode_loopback_config_t *temp = NULL;
+ char param[100] = {0};
struct option long_options[] = {
/* These options set a flag. */
@@ -654,6 +655,12 @@
exit_process_thread = true;
goto exit_transcode_loopback_test;
}
+
+ if (sink_device == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP) {
+ snprintf(param, sizeof(param), "%s=%d", "connect", sink_device);
+ qahw_set_parameters(primary_hal_handle, param);
+ }
+
transcode_loopback_config->hal_handle = primary_hal_handle;
fprintf(log_file,"\nLoading HAL for loopback usecase done\n");