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