[wdmaudiodev] Re: [EXTERNAL] Letting Windows control mute

  • From: Jeff <indirectoffset+wdmaudiodev@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Fri, 31 Jan 2020 13:06:59 -0800

Yes. That is the thrust of my question. :-)

On Fri, Jan 31, 2020, 10:02 AM Matthew van Eerde <
dmarc-noreply@xxxxxxxxxxxxx> wrote:

Actually, I have this backwards, don’t I… if
ENDPOINT_HARDWARE_SUPPORT_MUTE is zero, then it *should* mute the stream
(even though it doesn’t) and it *should* adjust the volume of the signal
(as it does.)

*From: *Matthew van Eerde <dmarc-noreply@xxxxxxxxxxxxx>
*Sent: *Friday, January 31, 2020 9:48 AM
*To: *wdmaudiodev@xxxxxxxxxxxxx
*Subject: *[wdmaudiodev] Re: [EXTERNAL] Letting Windows control mute

   - It does not mute the stream

Good, that is as I expected, since ENDPOINT_HARDWARE_SUPPORT_MUTE

   - Windows adjusts the volume of the signal

That surprises me. What UI are you using to control the volume? There are
several different volume settings.


*From: *Jeff <indirectoffset+wdmaudiodev@xxxxxxxxx>
*Sent: *Friday, January 31, 2020 9:44 AM
*To: *wdmaudiodev@xxxxxxxxxxxxx
*Subject: *[wdmaudiodev] Re: [EXTERNAL] Letting Windows control mute

QueryHardwareSupport() returns zero (as it should because I have removed
the volume and mute nodes from the topology). For testing purposes, my
monitoring app is Audacity. I will do some realtime processing on the
captured audio data stream and then save the result. In any case my device
driver does not offer a power meter node. I do see that Windows adjusts the
volume of the signal before the stream arrives at the loopback capture
interface but it does not mute the stream.


            - Jeff.

On Fri, Jan 31, 2020 at 9:12 AM Matthew van Eerde <
dmarc-noreply@xxxxxxxxxxxxx> wrote:

   - If I mute the master control at the Windows sound control window,
   then my monitoring app receives unattenuated sound.

Monitoring applications are expected to call
IAudioEndpointVolume::QueryHardwareSupport. If the
ENDPOINT_HARDWARE_SUPPORT_VOLUME is set, then the audio received at the
loopback interface will be unattenuated. If the
ENDPOINT_HARDWARE_SUPPORT_MUTE is set, then the audio received at the
loopback interface will be unmuted.

What does your application do with the monitored audio it receives? If it
is just driving a peak meter, I will suggest using IAudioMeterInformation

*From: *Jeff <indirectoffset+wdmaudiodev@xxxxxxxxx>
*Sent: *Friday, January 31, 2020 8:57 AM
*To: *wdmaudiodev@xxxxxxxxxxxxx
*Subject: *[EXTERNAL] [wdmaudiodev] Letting Windows control mute

I have composed a virtual audio driver for Windows 10 based on the
WaveCyclic sample. I have an app that opens the device endpoint's loopback
interface to monitor sound played by other apps into the device. I have
removed the volume and mute nodes from the sample's topology with the
expectation that Windows would manage those functions for me, but it turns
out to manage only volume. If I mute the master control at the Windows
sound control window, then my monitoring app receives unattenuated sound.

How can I get mute to work on the loopback?

Fwiw, when I replace the mute node in the driver's topology, I don't see
its handler called when I mute from sndvol.

Thank you for any advice you may have.

     - Jeff.

Other related posts: