Пробую разбираться с написанием драйверов на базе AVStream
Драйвер примитивный,в дескрипторе фильтра описаны 2 пина:
const
KSPIN_DISPATCH
renderPinDispatch = {
DispatchCreate, // Pin Create
NULL, // Pin Close
DispatchProcess, // Pin Process
NULL, // Pin Reset
DispatchSetFormat, // Pin Set Data Format
DispatchSetState, // Pin Set Device State
NULL, // Pin Connect
NULL, // Pin Disconnect
NULL, // Clock Dispatch
NULL // Allocator Dispatch
};
static const KSPIN_DESCRIPTOR_EX
renderFilterPinDescriptors[] = {
{ //Audio Input Pin
&renderPinDispatch, // Dispatch
NULL, // AutomationTable
{ // PinDescriptor
DEFINE_KSPIN_DEFAULT_INTERFACES, // Interfaces
DEFINE_KSPIN_DEFAULT_MEDIUMS, // Mediums
SIZEOF_ARRAY(audioPinDataRanges), // Range Count
audioPinDataRanges, // Ranges
KSPIN_DATAFLOW_IN, // Dataflow
KSPIN_COMMUNICATION_SINK, // Communication
&KSCATEGORY_AUDIO, // Category
NULL, // Name
0 // Reserved
},
KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL | KSPIN_FLAG_ASYNCHRONOUS_PROCESSING | KSPIN_FLAG_HYPERCRITICAL_PROCESSING | KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING,
1, // Instances Possible
0, // Instances Necessary
&audioPinAllocatorFraming, // Allocator Framing
(PFNKSINTERSECTHANDLEREX)(IntersectHandler) // IntersectHandler
},
{ // Audio Output Pin
NULL, // Dispatch
NULL, // AutomationTable
{ // PinDescriptor
DEFINE_KSPIN_DEFAULT_INTERFACES, // Interfaces
DEFINE_KSPIN_DEFAULT_MEDIUMS, // Mediums
0, // Range Count
NULL, // Ranges
KSPIN_DATAFLOW_OUT, // Dataflow
KSPIN_COMMUNICATION_BRIDGE, // Communication
&KSNODETYPE_HEADPHONES, // Category
NULL, // Name
0 // Reserved
},
0, // Flags
0, // Instances Possible
0, // Instances Necessary
NULL, // Allocator Framing
NULL // IntersectHandler
}
};
На всех обработчиках стоят заглушки который возвращают STATUS_SUCCESS. Нодов нет, в коннектах пин 0 соединен с пином 1.
Столкнулся со следующей проблемой: устройство воспроизведения видно, при проигрывании обработчик DispatchSetState вызывается, в KSSTATE_RUN переходит, а дальше DispatchProcess не вызывается. Вернее вызывается, когда я проигрываю звук через KS, а когда проигрываю через DS и стандартными средствами — не вызывается.
Просьба сильно не пинать, т.к. в этой области я начинающий