summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRamjee Singh <ramjee@codeaurora.org>2015-02-10 12:05:38 +0530
committerArne Coucheron <arco68@gmail.com>2015-04-07 17:33:37 +0000
commitb1eb3af922372a210017ffd658cbc9caf33b8987 (patch)
treeeaac1090927355ea975b5e678a0c7cc7c63ab7e2
parentdf794795c6531f7d40fcb83efbc96940d6c26b70 (diff)
downloadandroid_hardware_qcom_audio-stable/cm-12.0-caf-8960-YNG4N.tar.gz
android_hardware_qcom_audio-stable/cm-12.0-caf-8960-YNG4N.tar.bz2
android_hardware_qcom_audio-stable/cm-12.0-caf-8960-YNG4N.zip
audio: Retained VOIP Mute State during device switchstable/cm-12.0-caf-8960-YNG4Nstable/cm-12.0-caf-8960-YNG3Ccm-12.0-caf-8960
On L, Audio Policy Manager closes all input streams during device switch. Previous mute state is lost when there is a device switch during VOIP call Fix is to reset mute state only when the call is disconnected and retain it during the device switches Change-Id: Iaa2ad525db92fdad4d598680f5ba96e74a8c3b9c CRs-Fixed: 773035 (cherry picked from commit 5ec16a156c509b5f556923b6aaa869b815fd9a92)
-rw-r--r--legacy/alsa_sound/ALSAStreamOps.cpp10
-rw-r--r--legacy/alsa_sound/AudioHardwareALSA.cpp16
-rw-r--r--legacy/alsa_sound/AudioStreamInALSA.cpp7
3 files changed, 23 insertions, 10 deletions
diff --git a/legacy/alsa_sound/ALSAStreamOps.cpp b/legacy/alsa_sound/ALSAStreamOps.cpp
index e5790567..cd72ac20 100644
--- a/legacy/alsa_sound/ALSAStreamOps.cpp
+++ b/legacy/alsa_sound/ALSAStreamOps.cpp
@@ -62,7 +62,10 @@ ALSAStreamOps::~ALSAStreamOps()
ALOGD("ALSAStreamOps::close() Ignore");
return ;
}
- mParent->mVoipMicMute = 0;
+
+ if(mParent->mMode == AUDIO_MODE_NORMAL) {
+ mParent->mVoipMicMute = false;
+ }
mParent->mVoipBitRate = 0;
}
close();
@@ -483,7 +486,10 @@ void ALSAStreamOps::close()
if((!strncmp(mHandle->useCase, SND_USE_CASE_VERB_IP_VOICECALL, strlen(SND_USE_CASE_VERB_IP_VOICECALL))) ||
(!strncmp(mHandle->useCase, SND_USE_CASE_MOD_PLAY_VOIP, strlen(SND_USE_CASE_MOD_PLAY_VOIP)))) {
- mParent->mVoipMicMute = false;
+
+ if(mParent->mMode == AUDIO_MODE_NORMAL) {
+ mParent->mVoipMicMute = false;
+ }
mParent->mVoipBitRate = 0;
mParent->mVoipInStreamCount = 0;
mParent->mVoipOutStreamCount = 0;
diff --git a/legacy/alsa_sound/AudioHardwareALSA.cpp b/legacy/alsa_sound/AudioHardwareALSA.cpp
index 582a191d..5da49818 100644
--- a/legacy/alsa_sound/AudioHardwareALSA.cpp
+++ b/legacy/alsa_sound/AudioHardwareALSA.cpp
@@ -1932,6 +1932,10 @@ AudioHardwareALSA::openInputStream(uint32_t devices,
ALOGE("Error opening pcm input device");
return NULL;
}
+ err = setMicMute(mVoipMicMute);
+ if(err) {
+ ALOGE("Error calling setMicMute");
+ }
}
if(mVoipInStreamCount>=1){
ALOGE("Trying to Open Multiple inpust Stream: Not supported %d",mVoipInStreamCount);
@@ -2189,13 +2193,11 @@ status_t AudioHardwareALSA::setMicMute(bool state)
int newMode = mode();
ALOGD("setMicMute newMode %d state:%d",newMode,state);
if(newMode == AUDIO_MODE_IN_COMMUNICATION) {
- if (mVoipMicMute != state) {
- mVoipMicMute = state;
- ALOGD("setMicMute: mVoipMicMute %d", mVoipMicMute);
- if(mALSADevice) {
- mALSADevice->setVoipMicMute(state);
- }
- }
+ mVoipMicMute = state;
+ ALOGD("setMicMute: mVoipMicMute %d", mVoipMicMute);
+ if(mALSADevice) {
+ mALSADevice->setVoipMicMute(state);
+ }
} else {
if (mALSADevice) {
mMicMute = state;
diff --git a/legacy/alsa_sound/AudioStreamInALSA.cpp b/legacy/alsa_sound/AudioStreamInALSA.cpp
index dc08f098..58de8932 100644
--- a/legacy/alsa_sound/AudioStreamInALSA.cpp
+++ b/legacy/alsa_sound/AudioStreamInALSA.cpp
@@ -378,6 +378,7 @@ ssize_t AudioStreamInALSA::read(void *buffer, ssize_t bytes)
if((!strcmp(mHandle->useCase, SND_USE_CASE_VERB_IP_VOICECALL)) ||
(!strcmp(mHandle->useCase, SND_USE_CASE_MOD_PLAY_VOIP))) {
err = mHandle->module->startVoipCall(mHandle);
+ mHandle->module->setMicMute(mParent->mVoipMicMute);
}
else
mHandle->module->open(mHandle);
@@ -644,7 +645,11 @@ status_t AudioStreamInALSA::close()
mParent->mVoipInStreamCount,mParent->mVoipOutStreamCount);
return NO_ERROR;
}
- mParent->mVoipMicMute = 0;
+
+ if(mParent->mMode == AUDIO_MODE_NORMAL) {
+ mParent->mVoipMicMute = false;
+ }
+
#ifdef QCOM_USBAUDIO_ENABLED
} else {
ALOGD("Deregistering REC bit, musbRecordingState:%d", mParent->musbRecordingState);