usb audio: implement microphone mute.
Bug: 17321604.
Change-Id: I8e3daf2636dfd5f85d990c0093c52c908064afac
diff --git a/modules/usbaudio/audio_hw.c b/modules/usbaudio/audio_hw.c
index caddf97..664a753 100644
--- a/modules/usbaudio/audio_hw.c
+++ b/modules/usbaudio/audio_hw.c
@@ -66,6 +66,8 @@
/* input */
alsa_device_profile in_profile;
+ bool mic_muted;
+
bool standby;
};
@@ -869,6 +871,10 @@
sample_size_in_bytes, num_read_buff_bytes);
}
}
+
+ /* no need to acquire in->dev->lock to read mic_muted here as we don't change its state */
+ if (num_read_buff_bytes > 0 && in->dev->mic_muted)
+ memset(buffer, 0, num_read_buff_bytes);
}
err:
@@ -1061,6 +1067,10 @@
static int adev_set_mic_mute(struct audio_hw_device *dev, bool state)
{
+ struct audio_device * adev = (struct audio_device *)dev;
+ pthread_mutex_lock(&adev->lock);
+ adev->mic_muted = state;
+ pthread_mutex_unlock(&adev->lock);
return -ENOSYS;
}