summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorDheeraj CVR <cvr.dheeraj@gmail.com>2015-05-19 00:56:45 +0400
committerforkbomb <keepcalm444@gmail.com>2015-11-25 08:10:07 +1100
commita2733d53f915196b02b50bedbb3e0f2f397b0175 (patch)
tree070eb336441da5b90749f4087d894aa8268e51cb /audio
parent86804d71af3566765f6dce93333c7f21fa87d068 (diff)
downloaddevice_samsung_i9300-a2733d53f915196b02b50bedbb3e0f2f397b0175.zip
device_samsung_i9300-a2733d53f915196b02b50bedbb3e0f2f397b0175.tar.gz
device_samsung_i9300-a2733d53f915196b02b50bedbb3e0f2f397b0175.tar.bz2
audio: enable noise suppression by default
Framework was responsible for enabling or disabling the noise suppression using audio parameters. However, this is currently broken in lollipop and most of the newer devices have noise suppression enabled by default. Use noise suppression when using the default input device (main microphone). Conflicts: audio/audio_hw.c overlay/packages/services/Telephony/res/values/config.xml Change-Id: Ie8bdfe1d9860fdad996640d1664e8111df7d3cec
Diffstat (limited to 'audio')
-rw-r--r--audio/audio_hw.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index e3cf20a..283fb30 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -200,6 +200,7 @@ struct m0_dev_cfg {
static void select_output_device(struct m0_audio_device *adev);
static void select_input_device(struct m0_audio_device *adev);
+static void set_noise_supression(struct m0_audio_device *adev, int enable);
static int adev_set_voice_volume(struct audio_hw_device *dev, float volume);
static int do_input_standby(struct m0_stream_in *in);
static int do_output_standby(struct m0_stream_out *out);
@@ -593,6 +594,7 @@ static void select_mode(struct m0_audio_device *adev)
set_bigroute_by_array(adev->mixer, voicecall_default_disable, 1);
ALOGD("%s: set voicecall route: default_input_disable", __func__);
set_bigroute_by_array(adev->mixer, default_input_disable, 1);
+ set_noise_supression(adev, 0);
ALOGD("%s: set voicecall route: headset_input_disable", __func__);
set_bigroute_by_array(adev->mixer, headset_input_disable, 1);
ALOGD("%s: set voicecall route: bt_disable", __func__);
@@ -671,9 +673,11 @@ static void select_output_device(struct m0_audio_device *adev)
if (speaker_on || earpiece_on || headphone_on) {
ALOGD("%s: set voicecall route: default_input", __func__);
set_bigroute_by_array(adev->mixer, default_input, 1);
+ set_noise_supression(adev, 1);
} else {
ALOGD("%s: set voicecall route: default_input_disable", __func__);
set_bigroute_by_array(adev->mixer, default_input_disable, 1);
+ set_noise_supression(adev, 0);
}
if (headset_on) {
@@ -723,6 +727,21 @@ static void select_input_device(struct m0_audio_device *adev)
select_devices(adev);
}
+static void set_noise_supression(struct m0_audio_device *adev, int enable)
+{
+ if (enable) {
+ // Enable Noise suppression for builtin microphone
+ ALOGE("%s: enabling two mic control", __func__);
+ ril_set_two_mic_control(&adev->ril, AUDIENCE, TWO_MIC_SOLUTION_ON);
+ set_bigroute_by_array(adev->mixer, noise_suppression, 1);
+ } else {
+ // Disable Noise suppression for builtin microphone
+ ALOGE("%s: disabling two mic control", __func__);
+ ril_set_two_mic_control(&adev->ril, AUDIENCE, TWO_MIC_SOLUTION_OFF);
+ set_bigroute_by_array(adev->mixer, noise_suppression_disable, 1);
+ }
+}
+
/* must be called with hw device and output stream mutexes locked */
static int start_output_stream_low_latency(struct m0_stream_out *out)
{
@@ -2540,21 +2559,6 @@ static int adev_set_parameters(struct audio_hw_device *dev, const char *kvpairs)
adev->screen_off = true;
}
- ret = str_parms_get_str(parms, "noise_suppression", value, sizeof(value));
- if (ret >= 0) {
- if (strcmp(value, "on") == 0) {
- ALOGE("%s: enabling two mic control", __func__);
- ril_set_two_mic_control(&adev->ril, AUDIENCE, TWO_MIC_SOLUTION_ON);
- /* sub mic */
- set_bigroute_by_array(adev->mixer, noise_suppression, 1);
- } else {
- ALOGE("%s: disabling two mic control", __func__);
- ril_set_two_mic_control(&adev->ril, AUDIENCE, TWO_MIC_SOLUTION_OFF);
- /* sub mic */
- set_bigroute_by_array(adev->mixer, noise_suppression_disable, 1);
- }
- }
-
str_parms_destroy(parms);
return ret;
}