summaryrefslogtreecommitdiffstats
path: root/hal/voice_extn
diff options
context:
space:
mode:
authorNarsinga Rao Chella <nrchella@codeaurora.org>2015-08-14 18:00:08 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-08-28 03:39:56 -0700
commit884fa889e8567bc466f968083f7d671a9673a63d (patch)
tree38fdba413739c601c281aef59b53abd491f664e1 /hal/voice_extn
parent4d9aeab542fa71640a426ef24d3c1c891c27aea5 (diff)
downloadhardware_qcom_audio-884fa889e8567bc466f968083f7d671a9673a63d.tar.gz
hardware_qcom_audio-884fa889e8567bc466f968083f7d671a9673a63d.tar.bz2
hardware_qcom_audio-884fa889e8567bc466f968083f7d671a9673a63d.zip
hal: enable sidetone for VoIP calls on voice path
Add support for sidetone for VoIP calls on voice path. Enable/disbale sidetone during VoIP call set up/tear down and also during device switch. CRs-fixed: 890371 Change-Id: Ib79eed79ddcd2bfed1d9bc322195036736a67cb2
Diffstat (limited to 'hal/voice_extn')
-rw-r--r--hal/voice_extn/compress_voip.c52
-rw-r--r--hal/voice_extn/voice_extn.h7
2 files changed, 37 insertions, 22 deletions
diff --git a/hal/voice_extn/compress_voip.c b/hal/voice_extn/compress_voip.c
index 04e0cd0c..bb1caf98 100644
--- a/hal/voice_extn/compress_voip.c
+++ b/hal/voice_extn/compress_voip.c
@@ -238,6 +238,7 @@ static int voip_stop_call(struct audio_device *adev)
__func__, USECASE_COMPRESS_VOIP_CALL);
return -EINVAL;
}
+ voice_set_sidetone(adev, uc_info->out_snd_device, false);
/* 1. Close the PCM devices */
if (voip_data.pcm_rx) {
@@ -309,6 +310,19 @@ static int voip_start_call(struct audio_device *adev,
goto error_start_voip;
}
+ ALOGD("%s: Opening PCM capture device card_id(%d) device_id(%d)",
+ __func__, adev->snd_card, pcm_dev_tx_id);
+ voip_data.pcm_tx = pcm_open(adev->snd_card,
+ pcm_dev_tx_id,
+ PCM_IN, voip_config);
+ if (voip_data.pcm_tx && !pcm_is_ready(voip_data.pcm_tx)) {
+ ALOGE("%s: %s", __func__, pcm_get_error(voip_data.pcm_tx));
+ pcm_close(voip_data.pcm_tx);
+ voip_data.pcm_tx = NULL;
+ ret = -EIO;
+ goto error_start_voip;
+ }
+
ALOGD("%s: Opening PCM playback device card_id(%d) device_id(%d)",
__func__, adev->snd_card, pcm_dev_rx_id);
voip_data.pcm_rx = pcm_open(adev->snd_card,
@@ -318,35 +332,19 @@ static int voip_start_call(struct audio_device *adev,
ALOGE("%s: %s", __func__, pcm_get_error(voip_data.pcm_rx));
pcm_close(voip_data.pcm_rx);
voip_data.pcm_rx = NULL;
- ret = -EIO;
- goto error_start_voip;
- }
-
- ALOGD("%s: Opening PCM capture device card_id(%d) device_id(%d)",
- __func__, adev->snd_card, pcm_dev_tx_id);
- voip_data.pcm_tx = pcm_open(adev->snd_card,
- pcm_dev_tx_id,
- PCM_IN, voip_config);
- if (voip_data.pcm_tx && !pcm_is_ready(voip_data.pcm_tx)) {
- ALOGE("%s: %s", __func__, pcm_get_error(voip_data.pcm_tx));
- pcm_close(voip_data.pcm_rx);
- voip_data.pcm_tx = NULL;
- if (voip_data.pcm_rx) {
- pcm_close(voip_data.pcm_rx);
- voip_data.pcm_rx = NULL;
+ if (voip_data.pcm_tx) {
+ pcm_close(voip_data.pcm_tx);
+ voip_data.pcm_tx = NULL;
}
ret = -EIO;
goto error_start_voip;
}
- pcm_start(voip_data.pcm_rx);
+
pcm_start(voip_data.pcm_tx);
+ pcm_start(voip_data.pcm_rx);
+ voice_set_sidetone(adev, uc_info->out_snd_device, true);
voice_extn_compress_voip_set_volume(adev, adev->voice.volume);
-
- if (ret < 0) {
- ALOGE("%s: error %d\n", __func__, ret);
- goto error_start_voip;
- }
} else {
ALOGV("%s: voip usecase is already enabled", __func__);
if (voip_data.out_stream)
@@ -730,3 +728,13 @@ bool voice_extn_compress_voip_is_config_supported(struct audio_config *config)
}
return ret;
}
+
+bool voice_extn_compress_voip_is_started(struct audio_device *adev)
+{
+ bool ret = false;
+ if (voice_extn_compress_voip_is_active(adev) &&
+ voip_data.pcm_tx && voip_data.pcm_rx)
+ ret = true;
+
+ return ret;
+}
diff --git a/hal/voice_extn/voice_extn.h b/hal/voice_extn/voice_extn.h
index 4a04adb8..af0ad08b 100644
--- a/hal/voice_extn/voice_extn.h
+++ b/hal/voice_extn/voice_extn.h
@@ -145,6 +145,7 @@ bool voice_extn_compress_voip_pcm_prop_check();
bool voice_extn_compress_voip_is_active(struct audio_device *adev);
bool voice_extn_compress_voip_is_format_supported(audio_format_t format);
bool voice_extn_compress_voip_is_config_supported(struct audio_config *config);
+bool voice_extn_compress_voip_is_started(struct audio_device *adev);
#else
static int voice_extn_compress_voip_close_output_stream(struct audio_stream *stream __unused)
{
@@ -264,6 +265,12 @@ static bool voice_extn_compress_voip_is_config_supported(struct audio_config *co
ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
return true;
}
+
+static bool voice_extn_compress_voip_is_started(struct audio_device *adev __unused)
+{
+ ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
+ return false;
+}
#endif
#endif //VOICE_EXTN_H