diff options
author | Ramjee Singh <ramjee@codeaurora.org> | 2015-02-10 12:05:38 +0530 |
---|---|---|
committer | Arne Coucheron <arco68@gmail.com> | 2015-04-07 17:33:37 +0000 |
commit | b1eb3af922372a210017ffd658cbc9caf33b8987 (patch) | |
tree | eaac1090927355ea975b5e678a0c7cc7c63ab7e2 | |
parent | df794795c6531f7d40fcb83efbc96940d6c26b70 (diff) | |
download | android_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.cpp | 10 | ||||
-rw-r--r-- | legacy/alsa_sound/AudioHardwareALSA.cpp | 16 | ||||
-rw-r--r-- | legacy/alsa_sound/AudioStreamInALSA.cpp | 7 |
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); |