[wdmaudiodev] Expose multiple Audio Sources as a single virtual microphone

  • From: Thomas Terhaar <thomas.terhaar@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 12 Jun 2015 15:42:11 +0000

Hello List,

my employer asked me to research the possibility of a very specific task:
Is it possible to write a driver that takes multiple audio signals (at least
2), mix the audio signals and expose the result as a single (virtual)
microphone ?

A bit of background :
We have created a web-based video-chat platform where a web site visitor can
initiate a video-chat with an advisor to discuss things.
The functionality to start a video-chat is embedded into the web site of our
customers (Telecom providers, Banks, Insurance companies,... to name a few).
The Audio/Video streaming stuff is handled by a Flash module or WebRTC when
available.

One of our customers now wants to do the following :
The advisor gets a call from a web site visitor, they start talking.
The discussion becomes more specific and the advisor wants to consult a
colleague/supervisor by calling him over a SIP-Softphone.
The web site visitor should be able to follow the discussion, so we somehow
have to be able to route the audio from the SIP-Phone to the customer over the
wire !
The gotcha here is, the SIP-Phone typically doesn't offer any kind of
audio-device, it receives the audio over the network and renders it directly to
an audio-output.

So the driver I'm envisioning should have the following abilities :

- Take an audio input device (typically a microphone from a headset)
and the default audio-output device (loopback) as input

- Mix the signals

- Expose the result as a virtual microphone that can be selected in
Flash and WebRTC-enabled Browsers as input,
so the customer receives the mixed signal from the advisors (and also himself
because of loopback; that's an issue I'm aware of)

Is this possible at all ?

I'm working (mainly) as a C# developer (with some C/C++ background) but I have
ZERO experience regarding Windows driver development,
so any hint on where to start is much appreciated !

Just finished downloading the WDK and the Samples-Pack, can you recommend some
examples to have a deeper look into ?


Best regards,
Thomas

Other related posts: