Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9024def authored by Eric Laurent's avatar Eric Laurent
Browse files

audio: implement mute on hdmi multichannel

On direct output streams the audio HAL must implement
the volume function. In the case of HDMI the only function
required is to mute audio when volume is 0 as volume
is defined as fixed on digital output streams.

Bug 8541062

Change-Id: Ia1342f6ffb7b7c95c7c386e3e2ee5243fe65051b
parent c301186b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1380,6 +1380,12 @@ static uint32_t out_get_latency(const struct audio_stream_out *stream)
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 @@ static ssize_t out_write(struct audio_stream_out *stream, const void *buffer,
    }

    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 @@ static int adev_open_output_stream(struct audio_hw_device *dev,

    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);
+1 −0
Original line number Diff line number Diff line
@@ -158,6 +158,7 @@ struct stream_out {
    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;
};