am 991c0925: am a9024def: audio: implement mute on hdmi multichannel
* commit '991c092525c6f2ca9f4c6cd2f3cee1713d33fc23':
audio: implement mute on hdmi multichannel
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 3782c32..55ab055 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1380,6 +1380,12 @@
static int out_set_volume(struct audio_stream_out *stream, float left,
float right)
{
+ struct stream_out *out = (struct stream_out *)stream;
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_MULTI_CH) {
+ /* only take left channel into account: the API is for stereo anyway */
+ out->muted = (left == 0.0f);
+ return 0;
+ }
return -ENOSYS;
}
@@ -1402,6 +1408,8 @@
}
if (out->pcm) {
+ if (out->muted)
+ memset((void *)buffer, 0, bytes);
//ALOGV("%s: writing buffer (%d bytes) to pcm device", __func__, bytes);
ret = pcm_write(out->pcm, (void *)buffer, bytes);
}
@@ -1712,6 +1720,7 @@
out->dev = adev;
out->standby = 1;
+ /* out->muted = false; by calloc() */
config->format = out->stream.common.get_format(&out->stream.common);
config->channel_mask = out->stream.common.get_channels(&out->stream.common);
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 7bc2ecb..0ac03fa 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -158,6 +158,7 @@
audio_usecase_t usecase;
/* Array of supported channel mask configurations. +1 so that the last entry is always 0 */
audio_channel_mask_t supported_channel_masks[MAX_SUPPORTED_CHANNEL_MASKS + 1];
+ bool muted;
struct audio_device *dev;
};