Revert "alsa_sound: fix for SIP call mute issue."

This reverts commit f859d3e80b790d4b525515918f1c6889383cc495.

bug: 7250052
reopens-bug: 7213748
Change-Id: I33312c0be196b327887edc93c0b766bcf86a94bc
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/alsa_sound/ALSAStreamOps.cpp b/alsa_sound/ALSAStreamOps.cpp
index 0ce9494..bb3dfe6 100644
--- a/alsa_sound/ALSAStreamOps.cpp
+++ b/alsa_sound/ALSAStreamOps.cpp
@@ -61,6 +61,7 @@
             }
        }
        mParent->mVoipStreamCount = 0;
+       mParent->mVoipMicMute = 0;
        mParent->mVoipBitRate = 0;
     }
     close();
@@ -347,6 +348,7 @@
     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 8613cd0..ed82f52 100644
--- a/alsa_sound/AudioHardwareALSA.cpp
+++ b/alsa_sound/AudioHardwareALSA.cpp
@@ -71,7 +71,7 @@
 }
 
 AudioHardwareALSA::AudioHardwareALSA() :
-    mALSADevice(0),mVoipStreamCount(0),mVoipBitRate(0)
+    mALSADevice(0),mVoipStreamCount(0),mVoipMicMute(false),mVoipBitRate(0)
     ,mCallState(0),mAcdbHandle(NULL),mCsdHandle(NULL)
 {
     FILE *fp;
@@ -737,6 +737,7 @@
         }
       if(voipstream_active == false) {
          mVoipStreamCount = 0;
+         mVoipMicMute = false;
          alsa_handle_t alsa_handle;
          unsigned long bufferSize;
          if(*sampleRate == VOIP_SAMPLING_RATE_8K) {
@@ -1031,6 +1032,7 @@
         }
         if(voipstream_active == false) {
            mVoipStreamCount = 0;
+           mVoipMicMute = false;
            alsa_handle_t alsa_handle;
            unsigned long bufferSize;
            if(*sampleRate == VOIP_SAMPLING_RATE_8K) {
@@ -1289,11 +1291,26 @@
 
 status_t AudioHardwareALSA::setMicMute(bool state)
 {
-    if (mMicMute != state) {
-        mMicMute = state;
-        ALOGD("setMicMute: mMicMute %d", mMicMute);
-        if(mALSADevice) {
-            mALSADevice->setMicMute(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);
+              }
         }
     }
     return NO_ERROR;
@@ -1301,7 +1318,12 @@
 
 status_t AudioHardwareALSA::getMicMute(bool *state)
 {
-    *state = mMicMute;
+    int newMode = mode();
+    if(newMode == AudioSystem::MODE_IN_COMMUNICATION) {
+        *state = mVoipMicMute;
+    } else {
+        *state = mMicMute;
+    }
     return NO_ERROR;
 }
 
diff --git a/alsa_sound/AudioHardwareALSA.h b/alsa_sound/AudioHardwareALSA.h
index 957bf75..3d952a4 100644
--- a/alsa_sound/AudioHardwareALSA.h
+++ b/alsa_sound/AudioHardwareALSA.h
@@ -566,6 +566,7 @@
      * 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 031d477..30de979 100644
--- a/alsa_sound/AudioStreamInALSA.cpp
+++ b/alsa_sound/AudioStreamInALSA.cpp
@@ -445,10 +445,6 @@
             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;
             }
 
@@ -495,6 +491,7 @@
                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 c9ea6b5..be6951e 100644
--- a/alsa_sound/AudioStreamOutALSA.cpp
+++ b/alsa_sound/AudioStreamOutALSA.cpp
@@ -299,6 +299,7 @@
                 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)) ||