alsa_sound: fix for SIP call mute issue.

-Mute VOIP through audio path is not supported by kernel,
 so calling setVoipMicMute() to disable ""Voip Tx Mute"" fails
-Mute VOIP by cleanning buffers read if setMicMute is set
-Remove mVoipMicMute and use mMicMute for voice and VOIP

Bug: 7213748
Change-Id: Ie2a200470c16da2e4ae991c0814ec8dfb4666833
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/alsa_sound/ALSAStreamOps.cpp b/alsa_sound/ALSAStreamOps.cpp
index bb3dfe6..0ce9494 100644
--- a/alsa_sound/ALSAStreamOps.cpp
+++ b/alsa_sound/ALSAStreamOps.cpp
@@ -61,7 +61,6 @@
             }
        }
        mParent->mVoipStreamCount = 0;
-       mParent->mVoipMicMute = 0;
        mParent->mVoipBitRate = 0;
     }
     close();
@@ -348,7 +347,6 @@
     ALOGD("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;
        mParent->mVoipBitRate = 0;
        mParent->mVoipStreamCount = 0;
     }
diff --git a/alsa_sound/AudioHardwareALSA.cpp b/alsa_sound/AudioHardwareALSA.cpp
index ed82f52..8613cd0 100644
--- a/alsa_sound/AudioHardwareALSA.cpp
+++ b/alsa_sound/AudioHardwareALSA.cpp
@@ -71,7 +71,7 @@
 }
 
 AudioHardwareALSA::AudioHardwareALSA() :
-    mALSADevice(0),mVoipStreamCount(0),mVoipMicMute(false),mVoipBitRate(0)
+    mALSADevice(0),mVoipStreamCount(0),mVoipBitRate(0)
     ,mCallState(0),mAcdbHandle(NULL),mCsdHandle(NULL)
 {
     FILE *fp;
@@ -737,7 +737,6 @@
         }
       if(voipstream_active == false) {
          mVoipStreamCount = 0;
-         mVoipMicMute = false;
          alsa_handle_t alsa_handle;
          unsigned long bufferSize;
          if(*sampleRate == VOIP_SAMPLING_RATE_8K) {
@@ -1032,7 +1031,6 @@
         }
         if(voipstream_active == false) {
            mVoipStreamCount = 0;
-           mVoipMicMute = false;
            alsa_handle_t alsa_handle;
            unsigned long bufferSize;
            if(*sampleRate == VOIP_SAMPLING_RATE_8K) {
@@ -1291,26 +1289,11 @@
 
 status_t AudioHardwareALSA::setMicMute(bool state)
 {
-    int newMode = mode();
-    ALOGD("setMicMute  newMode %d",newMode);
-    if(newMode == AudioSystem::MODE_IN_COMMUNICATION) {
-        if (mVoipMicMute != state) {
-             mVoipMicMute = state;
-            ALOGD("setMicMute: mVoipMicMute %d", mVoipMicMute);
-            if(mALSADevice) {
-                mALSADevice->setVoipMicMute(state);
-            }
-        }
-    } else {
-        if (mMicMute != state) {
-              mMicMute = state;
-              ALOGD("setMicMute: mMicMute %d", mMicMute);
-              if(mALSADevice) {
-                 if(mCSCallActive == CS_ACTIVE)
-                    mALSADevice->setMicMute(state);
-                 if(mVolteCallActive == IMS_ACTIVE)
-                    mALSADevice->setVoLTEMicMute(state);
-              }
+    if (mMicMute != state) {
+        mMicMute = state;
+        ALOGD("setMicMute: mMicMute %d", mMicMute);
+        if(mALSADevice) {
+            mALSADevice->setMicMute(state);
         }
     }
     return NO_ERROR;
@@ -1318,12 +1301,7 @@
 
 status_t AudioHardwareALSA::getMicMute(bool *state)
 {
-    int newMode = mode();
-    if(newMode == AudioSystem::MODE_IN_COMMUNICATION) {
-        *state = mVoipMicMute;
-    } else {
-        *state = mMicMute;
-    }
+    *state = mMicMute;
     return NO_ERROR;
 }
 
diff --git a/alsa_sound/AudioHardwareALSA.h b/alsa_sound/AudioHardwareALSA.h
index 3d952a4..957bf75 100644
--- a/alsa_sound/AudioHardwareALSA.h
+++ b/alsa_sound/AudioHardwareALSA.h
@@ -566,7 +566,6 @@
      * Settings and Qualcomm Settings applications */
     uint32_t            mDevSettingsFlag;
     uint32_t            mVoipStreamCount;
-    bool                mVoipMicMute;
     uint32_t            mVoipBitRate;
     uint32_t            mIncallMode;
 
diff --git a/alsa_sound/AudioStreamInALSA.cpp b/alsa_sound/AudioStreamInALSA.cpp
index 30de979..031d477 100644
--- a/alsa_sound/AudioStreamInALSA.cpp
+++ b/alsa_sound/AudioStreamInALSA.cpp
@@ -445,6 +445,10 @@
             else {
                 read += static_cast<ssize_t>((period_size));
                 read_pending -= period_size;
+                //Set mute by cleanning buffers read
+                if (mParent->mMicMute) {
+                    memset(buffer, 0, period_size);
+                }
                 buffer = ((uint8_t *)buffer) + period_size;
             }
 
@@ -491,7 +495,6 @@
                return NO_ERROR;
         }
         mParent->mVoipStreamCount = 0;
-        mParent->mVoipMicMute = 0;
 #ifdef QCOM_USBAUDIO_ENABLED
     } else {
         ALOGD("Deregistering REC bit, musbRecordingState:%d", mParent->musbRecordingState);
diff --git a/alsa_sound/AudioStreamOutALSA.cpp b/alsa_sound/AudioStreamOutALSA.cpp
index be6951e..c9ea6b5 100644
--- a/alsa_sound/AudioStreamOutALSA.cpp
+++ b/alsa_sound/AudioStreamOutALSA.cpp
@@ -299,7 +299,6 @@
                 return NO_ERROR;
          }
          mParent->mVoipStreamCount = 0;
-         mParent->mVoipMicMute = 0;
     }
 #ifdef QCOM_USBAUDIO_ENABLED
       else if((!strcmp(mHandle->useCase, SND_USE_CASE_VERB_HIFI_LOW_POWER)) ||