Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Feb 2026 14:47:26 +0100
From:      "Christos Margiolis" <christos@FreeBSD.org>
To:        "Sean C. Farley" <scf@FreeBSD.org>
Cc:        <freebsd-multimedia@FreeBSD.org>
Subject:   Re: Muting only affects audio that is playing
Message-ID:  <DGOXUYADHO11.72ZT82BI4R9E@FreeBSD.org>
In-Reply-To: <33ac0089-04d0-1cdf-d9ec-e9eba0be9b72@FreeBSD.org>
References:  <8028333b-f7c1-7992-1016-4194623fce38@FreeBSD.org> <DEUKE1MYMQJY.JDSTZX83BW19@FreeBSD.org> <598a46dd-3abc-2a72-3f58-a9ca16ab3bb0@FreeBSD.org> <DFE9SJR00WMV.6STGABH2CYSU@FreeBSD.org> <33aa299e-2fef-6920-ba56-4307b3b34f8e@FreeBSD.org> <DFICY1MMK3A4.YSKTYH83NUY4@FreeBSD.org> <33ac0089-04d0-1cdf-d9ec-e9eba0be9b72@FreeBSD.org>

index | next in thread | previous in thread | raw e-mail

Hello Sean,

On Wed Feb 25, 2026 at 4:07 AM CET, Sean C. Farley wrote:
> Now, this only fixes what I hear regarding vol.mute.  pcm.mute still 
> exhibits the problem but would have to be fixed elsewhere, probably 
> within the channel code.
>
> A commit message/description of it:
>
> -------------------
>
> sound: enforce MASTER volume mute during playback
>
> MASTER mute (vol.mute) works while audio is playing.  However, if a
> stream is stopped and restarted (PCMTRIG_STOP -> PCMTRIG_START), the
> audio will resume even though the mixer shows the MASTER volume as
> muted.  Other streams that are already playing remain silent.  New
> streams may also start playing audio regardless of the MASTER mute
> state.
>
> The volume feeder now considers the MASTER mute when determining whether
> a channel should be muted.  This ensures MASTER mute is consistently
> enforced for all streams and removes the dependency on trigger-driven
> state propagation.
>
> Tested with Creative Labs CA0132 card.
>
> -------------------
>
> I am also attaching a patch for dsp.c to use chn_getmute_matrix() 
> instead of CHN_GETMUTE(), but it is cosmetic.
>
> Sean

The patches seem reasonable, feel free to submit them for review on
Phabricator.

That being said, the issue still sounds rather strange to me, especially
given that I cannot reproduce this. Even though I understand your
analysis and it does make sense, I don't fully understand exactly how
this happens. The volume/muting mechanism seems a bit complicated
currently, because we still support the legacy mixer interface of OSS
(mixer.c). We keep volumes/mutes in mixer.c which correspond to the OSS
devices (vol, pcm, monitor, ...), but we also keep volumes/mutes in
channel.c, which get used by feeder_volume.

I will look more into how to modernize and clean this up. For now I
think your patches will suffice to address this issue.

Christos


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DGOXUYADHO11.72ZT82BI4R9E>