2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Kernel Streaming
4 * FILE: drivers/wdm/audio/filters/splitter/splitter.c
5 * PURPOSE: Splitter entry point
6 * PROGRAMMER: Johannes Anderwald
11 const GUID PIN_VIDEO_CAPTURE
= {0xfb6c4281, 0x0353, 0x11d1, {0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba}};
12 const GUID KSPROPSETID_Audio
= {0x45FFAAA0, 0x6E1B, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}};
13 const GUID KSCATEGORY_AUDIO_SPLITTER
= {0x9EA331FA, 0xB91B, 0x45F8, {0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE}};
14 const GUID KSNAME_Filter
= {0x9b365890, 0x165f, 0x11d0, {0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}};
15 const GUID GUID_NULL
= {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
22 KSPROPERTY_AUDIO_POSITION
,
23 {AudioPositionPropertyHandler
},
25 sizeof(KSAUDIO_POSITION
),
26 {AudioPositionPropertyHandler
},
54 sizeof(PinPropertySet
) / sizeof(KSPROPERTY_SET
),
55 (const KSPROPERTY_SET
*)&PinPropertySet
,
70 NULL
, /* filter centric processing */
99 {STATIC_KSDATAFORMAT_TYPE_AUDIO
},
107 PinDataFormatRanges
[] =
114 KSALLOCATOR_FRAMING_EX
126 {STATIC_KSMEMORY_TYPE_KERNEL_PAGED
},
128 KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE
,
130 0, //KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY | KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO | KSALLOCATOR_OPTIONF_VALID
132 FILE_64_BYTE_ALIGNMENT
,
141 1536, // (48000khz * 2 channels * 16bit / 1000 ) * 8 frames
164 sizeof(PinDataFormatRange
) / sizeof(PKSDATARANGE
),
165 (const PKSDATARANGE
*)&PinDataFormatRange
,
167 KSPIN_COMMUNICATION_BOTH
,
169 (const GUID
*)&PIN_VIDEO_CAPTURE
,
174 KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING
| KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL
|
175 KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING
| KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE
,
178 NULL
, //&AllocatorFraming,
190 (const PKSDATARANGE
*)&PinDataFormatRange
,
192 KSPIN_COMMUNICATION_BOTH
,
199 KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING
| KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL
| KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE
,
202 NULL
, //&AllocatorFraming,
210 {STATIC_KSCATEGORY_AUDIO
},
211 {STATIC_KSCATEGORY_AUDIO_SPLITTER
}
220 NULL
, //automation table
221 &KSCATEGORY_AUDIO_SPLITTER
, //type
233 KSFILTER_DESCRIPTOR_VERSION
,
234 KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING
,
237 sizeof(KSPIN_DESCRIPTOR_EX
),
238 (const KSPIN_DESCRIPTOR_EX
*)&PinDescriptors
,
239 sizeof(Categories
) / sizeof(GUID
),
240 (const GUID
* )&Categories
,
241 sizeof(NodeDescriptor
) / sizeof(KSNODE_DESCRIPTOR
),
242 sizeof(KSNODE_DESCRIPTOR
),
243 (const KSNODE_DESCRIPTOR
*)&NodeDescriptor
,
244 DEFINE_KSFILTER_DEFAULT_CONNECTIONS
,
249 KSFILTER_DESCRIPTOR
*
252 (const KSFILTER_DESCRIPTOR
*)&FilterDescriptor
259 NULL
, //no pnp notifications needed
260 1, // filter descriptor count
261 (const KSFILTER_DESCRIPTOR
* const *)&FilterDescriptors
,
262 0, // pre KSDEVICE_DESCRIPTOR_VERSION
270 PDRIVER_OBJECT DriverObject
,
271 PUNICODE_STRING RegistryPathName
)
273 return KsInitializeDriver(DriverObject
, RegistryPathName
, &DeviceDescriptor
);