[wdmaudiodev] Re: How to support IMiniportAudioSignalProcessing in WaveCyclic based audio driver?

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 21 Jan 2014 16:38:42 +0000

In particular, implement IMiniportAudioSignalProcessing::GetModes, and respond 
to QueryInterface for IID_IMiniportAudioSignalProcessing, and portcls will call 
into your GetModes() method. This should work even though you are WaveCyclic 
and not WaveRT.

The relevant code in 
http://code.msdn.microsoft.com/windowshardware/slate-system-virtual-audio-f241062f/sourcecode?fileId=86816&pathId=1882676779
 is:

// minwavert.h
class CMiniportWaveRT :
    public IMiniportWaveRT,
    public IMiniportAudioEngineNode,
    public IMiniportAudioSignalProcessing,
    public CUnknown
...

    IMP_IMiniportAudioSignalProcessing;

// minwavert.cpp

STDMETHODIMP_(NTSTATUS)
CMiniportWaveRT::NonDelegatingQueryInterface
...
    else if (IsEqualGUIDAligned(Interface, IID_IMiniportAudioSignalProcessing))
    {
        *Object = PVOID(PMINIPORTAudioSignalProcessing(this));
    }

...

NTSTATUS
CMiniportWaveRT::GetModes
(
    _In_                                        ULONG     Pin,
    _Out_writes_opt_(*NumSignalProcessingModes) GUID*     SignalProcessingModes,
    _Inout_                                     ULONG*    
NumSignalProcessingModes
)

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eerde
Sent: Tuesday, January 21, 2014 8:01 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: How to support IMiniportAudioSignalProcessing in 
WaveCyclic based audio driver?

Yes, the WaveCyclic miniport model supports IMiniportAudioSignalProcessing.

What do you do with the audio data once you get it? That is, what is the layer 
below you? That should determine your choice of WaveCyclic or WaveRT.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx> 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Danny
Sent: Tuesday, January 21, 2014 1:28 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] How to support IMiniportAudioSignalProcessing in 
WaveCyclic based audio driver?

Hello, my driver is a virtual sound driver based on WaveCyclic. It worked fine 
on Windows 8, but during WHCK KsPosition test, the test fails with the 
following error message.

Message

12/6/2013 2:10:26.125 PM

Failed to query for basic support KSPROPERTY_AUDIOSIGNALPROCESSING_MODES: Last 
error:1170


Can I add support for IMiniportAudioSignalProcessing in WaveCyclic based audio 
driver?

I've noticed that the new WDK sample SysVad support 
IMiniportAudioSignalProcessing property. But it was based on WaveRT.

Or should I change my project to WaveRT based example? Does WaveRT works for 
virtual sound driver? (We don't have the codec hardware, just to capture the 
pcm audio data and send out to another stack.)


Thank you!
--
Danny

Other related posts: