[wdmaudiodev] How to implement KSPROPSETID_AudioSignalProcessing Property Set in AVstream mini-driver

  • From: Yudi Cao <yudi.cao@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Mon, 8 May 2017 16:39:25 +0800

Hello,

I'm working on an AVstream audio driver for USB Headset (add some extra
formats comparing to inbox usbaudio.sys).

To integrate APO DLL to my driver package, I need implement the
KSPROPSETID_AudioSignalProcessing property set.


The property set AutomationTable definitions are below:

DEFINE_KSPROPERTY_TABLE(AudioFilterPropertySetTable)

{

        DEFINE_KSPROPERTY_ITEM

        (

                KSPROPERTY_AUDIOSIGNALPROCESSING_MODES,      // property
item defined in ksmedia.h


CCaptureRenderFilter::FILTERPROP_PropertyAudioSignalProcessing,

                sizeof(KSP_PIN),             // minimum buffer length for
property

                0,       // minimum buffer length for returned data

                NULL,

                NULL,                           // default values

                0,                              // related properties

                NULL,


CCaptureRenderFilter::FILTERPROP_PropertyAudioSignalProcessingBasicSupport,

                0                               // don't serialize

        )

};



DEFINE_KSPROPERTY_SET_TABLE(AudioFilterProperties)

{

        DEFINE_KSPROPERTY_SET

        (

                &KSPROPSETID_AudioSignalProcessing,                     //
property set defined in ksmedia.h

                SIZEOF_ARRAY(AudioFilterPropertySetTable),    // the
properties supported

                AudioFilterPropertySetTable,

                0,                                      // reserved

                NULL                                    // reserved

        )

};



DEFINE_KSAUTOMATION_TABLE(AudioFilterAutomationTable) {

        DEFINE_KSAUTOMATION_PROPERTIES(AudioFilterProperties),

                DEFINE_KSAUTOMATION_METHODS_NULL,

                DEFINE_KSAUTOMATION_EVENTS_NULL

};


        m_KSFilterDesc.AutomationTable = &AudioFilterAutomationTable;

The function declared as below:

NTSTATUS CCaptureRenderFilter::FILTERPROP_PropertyAudioSignalProcessing(IN
PIRP pIrp, IN PKSP_PIN pKSP_Pin, IN OUT PKSMULTIPLE_ITEM pData)

NTSTATUS
CCaptureRenderFilter::FILTERPROP_PropertyAudioSignalProcessingBasicSupport(IN
PIRP pIrp, IN PKSP_PIN  Request, IN OUT PVOID  Data)


The problem is:

The system will call FILTERPROP_PropertyAudioSignalProcessing() for several
times with the pData==NULL. Why the pData is always null?


What's wrong with my code? Is there anywhere to get some sample code for
AVStream mini-driver to support KSPROPSETID_AudioSignalProcessing?


Thank you for your help,

Hunter

Other related posts: