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

  • From: "Matthew van Eerde" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "Matthew.van.Eerde" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 31 Jan 2020 21:38:46 +0000

I chatted with the devs, and they tell me that the loopback tap should ALWAYS 
be unattenuated AND unmuted, regardless of the flags.

So it’s still a mystery why your loopback is being affected by your volume 
control.

From: Jeff<mailto:indirectoffset+wdmaudiodev@xxxxxxxxx>
Sent: Friday, January 31, 2020 1:08 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: [EXTERNAL] Letting Windows control mute

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

On Fri, Jan 31, 2020, 10:02 AM Matthew van Eerde 
<dmarc-noreply@xxxxxxxxxxxxx<mailto: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<mailto:dmarc-noreply@xxxxxxxxxxxxx>
Sent: Friday, January 31, 2020 9:48 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto: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.
https://matthewvaneerde.wordpress.com/2011/04/22/windows-audio-render-volume-settings-from-local-to-global/<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmatthewvaneerde.wordpress.com%2F2011%2F04%2F22%2Fwindows-audio-render-volume-settings-from-local-to-global%2F&data=02%7C01%7CMatthew.van.Eerde%40microsoft.com%7C7ac2bc30d0144a2477bc08d7a675d62a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637160897351371908&sdata=Kk2wKmjKQm5sc9U1iO%2FH3%2FM8AXXtI0hnQaLTakwfeLQ%3D&reserved=0>

From: Jeff<mailto:indirectoffset+wdmaudiodev@xxxxxxxxx>
Sent: Friday, January 31, 2020 9:44 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto: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<mailto: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 instead.

From: Jeff<mailto:indirectoffset+wdmaudiodev@xxxxxxxxx>
Sent: Friday, January 31, 2020 8:57 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto: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: