From 253def9fa0b5d597125ce0af883d9c1deddd7ef9 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Sun, 14 Sep 2014 12:18:18 -0700 Subject: usb audio: implement microphone mute. Bug: 17321604. Change-Id: I8e3daf2636dfd5f85d990c0093c52c908064afac --- modules/usbaudio/audio_hw.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'modules') 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 @@ struct audio_device { /* input */ alsa_device_profile in_profile; + bool mic_muted; + bool standby; }; @@ -869,6 +871,10 @@ static ssize_t in_read(struct audio_stream_in *stream, void* buffer, size_t byte 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_mode(struct audio_hw_device *dev, audio_mode_t mode) 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; } -- cgit v1.1