1 | /**
|
---|
2 | * This file has no copyright assigned and is placed in the Public Domain.
|
---|
3 | * This file is part of the mingw-w64 runtime package.
|
---|
4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
---|
5 | */
|
---|
6 | #ifndef __KSPROXY__
|
---|
7 | #define __KSPROXY__
|
---|
8 |
|
---|
9 | #ifdef __cplusplus
|
---|
10 | extern "C" {
|
---|
11 | #endif
|
---|
12 |
|
---|
13 | #undef KSDDKAPI
|
---|
14 | #ifdef _KSDDK_
|
---|
15 | #define KSDDKAPI
|
---|
16 | #else
|
---|
17 | #define KSDDKAPI DECLSPEC_IMPORT
|
---|
18 | #endif
|
---|
19 |
|
---|
20 | #define STATIC_IID_IKsObject \
|
---|
21 | 0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
|
---|
22 |
|
---|
23 | #define STATIC_IID_IKsPinEx \
|
---|
24 | 0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
|
---|
25 |
|
---|
26 | #define STATIC_IID_IKsPin \
|
---|
27 | 0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
|
---|
28 |
|
---|
29 | #define STATIC_IID_IKsPinPipe \
|
---|
30 | 0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
|
---|
31 |
|
---|
32 | #define STATIC_IID_IKsDataTypeHandler \
|
---|
33 | 0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
|
---|
34 |
|
---|
35 | #define STATIC_IID_IKsDataTypeCompletion \
|
---|
36 | 0x827D1A0E,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
37 |
|
---|
38 | #define STATIC_IID_IKsInterfaceHandler \
|
---|
39 | 0xD3ABC7E0,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
40 |
|
---|
41 | #define STATIC_IID_IKsClockPropertySet \
|
---|
42 | 0x5C5CBD84,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
43 |
|
---|
44 | #define STATIC_IID_IKsAllocator \
|
---|
45 | 0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
|
---|
46 |
|
---|
47 | #define STATIC_IID_IKsAllocatorEx \
|
---|
48 | 0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
|
---|
49 |
|
---|
50 | #ifndef STATIC_IID_IKsPropertySet
|
---|
51 | #define STATIC_IID_IKsPropertySet \
|
---|
52 | 0x31EFAC30,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
|
---|
53 | #endif
|
---|
54 |
|
---|
55 | #define STATIC_IID_IKsTopology \
|
---|
56 | 0x28F54683,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
57 |
|
---|
58 | #ifndef STATIC_IID_IKsControl
|
---|
59 | #define STATIC_IID_IKsControl \
|
---|
60 | 0x28F54685,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
61 | #endif
|
---|
62 |
|
---|
63 | #define STATIC_IID_IKsAggregateControl \
|
---|
64 | 0x7F40EAC0,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
65 |
|
---|
66 | #define STATIC_CLSID_Proxy \
|
---|
67 | 0x17CCA71B,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
|
---|
68 |
|
---|
69 | #ifdef _KS_
|
---|
70 |
|
---|
71 | DEFINE_GUIDEX(IID_IKsObject);
|
---|
72 |
|
---|
73 | DEFINE_GUIDEX(IID_IKsPin);
|
---|
74 |
|
---|
75 | DEFINE_GUIDEX(IID_IKsPinEx);
|
---|
76 |
|
---|
77 | DEFINE_GUIDEX(IID_IKsPinPipe);
|
---|
78 |
|
---|
79 | DEFINE_GUIDEX(IID_IKsDataTypeHandler);
|
---|
80 |
|
---|
81 | DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
|
---|
82 |
|
---|
83 | DEFINE_GUIDEX(IID_IKsInterfaceHandler);
|
---|
84 |
|
---|
85 | DEFINE_GUIDEX(IID_IKsClockPropertySet);
|
---|
86 |
|
---|
87 | DEFINE_GUIDEX(IID_IKsAllocator);
|
---|
88 |
|
---|
89 | DEFINE_GUIDEX(IID_IKsAllocatorEx);
|
---|
90 |
|
---|
91 | #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
|
---|
92 | #define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
|
---|
93 |
|
---|
94 | typedef enum {
|
---|
95 | KsAllocatorMode_User,
|
---|
96 | KsAllocatorMode_Kernel
|
---|
97 | } KSALLOCATORMODE;
|
---|
98 |
|
---|
99 | typedef enum {
|
---|
100 | FramingProp_Uninitialized,
|
---|
101 | FramingProp_None,
|
---|
102 | FramingProp_Old,
|
---|
103 | FramingProp_Ex
|
---|
104 | } FRAMING_PROP;
|
---|
105 |
|
---|
106 | typedef FRAMING_PROP *PFRAMING_PROP;
|
---|
107 |
|
---|
108 | typedef enum {
|
---|
109 | Framing_Cache_Update,
|
---|
110 | Framing_Cache_ReadLast,
|
---|
111 | Framing_Cache_ReadOrig,
|
---|
112 | Framing_Cache_Write
|
---|
113 | } FRAMING_CACHE_OPS;
|
---|
114 |
|
---|
115 | typedef struct {
|
---|
116 | LONGLONG MinTotalNominator;
|
---|
117 | LONGLONG MaxTotalNominator;
|
---|
118 | LONGLONG TotalDenominator;
|
---|
119 | } OPTIMAL_WEIGHT_TOTALS;
|
---|
120 |
|
---|
121 | typedef struct IPin IPin;
|
---|
122 | typedef struct IKsPin IKsPin;
|
---|
123 | typedef struct IKsAllocator IKsAllocator;
|
---|
124 | typedef struct IKsAllocatorEx IKsAllocatorEx;
|
---|
125 |
|
---|
126 | #define AllocatorStrategy_DontCare 0
|
---|
127 | #define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001
|
---|
128 | #define AllocatorStrategy_MinimizeFrameSize 0x00000002
|
---|
129 | #define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004
|
---|
130 | #define AllocatorStrategy_MaximizeSpeed 0x00000008
|
---|
131 |
|
---|
132 | #define PipeFactor_None 0
|
---|
133 | #define PipeFactor_UserModeUpstream 0x00000001
|
---|
134 | #define PipeFactor_UserModeDownstream 0x00000002
|
---|
135 | #define PipeFactor_MemoryTypes 0x00000004
|
---|
136 | #define PipeFactor_Flags 0x00000008
|
---|
137 | #define PipeFactor_PhysicalRanges 0x00000010
|
---|
138 | #define PipeFactor_OptimalRanges 0x00000020
|
---|
139 | #define PipeFactor_FixedCompression 0x00000040
|
---|
140 | #define PipeFactor_UnknownCompression 0x00000080
|
---|
141 |
|
---|
142 | #define PipeFactor_Buffers 0x00000100
|
---|
143 | #define PipeFactor_Align 0x00000200
|
---|
144 | #define PipeFactor_PhysicalEnd 0x00000400
|
---|
145 | #define PipeFactor_LogicalEnd 0x00000800
|
---|
146 |
|
---|
147 | typedef enum {
|
---|
148 | PipeState_DontCare,
|
---|
149 | PipeState_RangeNotFixed,
|
---|
150 | PipeState_RangeFixed,
|
---|
151 | PipeState_CompressionUnknown,
|
---|
152 | PipeState_Finalized
|
---|
153 | } PIPE_STATE;
|
---|
154 |
|
---|
155 | typedef struct _PIPE_DIMENSIONS {
|
---|
156 | KS_COMPRESSION AllocatorPin;
|
---|
157 | KS_COMPRESSION MaxExpansionPin;
|
---|
158 | KS_COMPRESSION EndPin;
|
---|
159 | } PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
|
---|
160 |
|
---|
161 | typedef enum {
|
---|
162 | Pipe_Allocator_None,
|
---|
163 | Pipe_Allocator_FirstPin,
|
---|
164 | Pipe_Allocator_LastPin,
|
---|
165 | Pipe_Allocator_MiddlePin
|
---|
166 | } PIPE_ALLOCATOR_PLACE;
|
---|
167 |
|
---|
168 | typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
|
---|
169 |
|
---|
170 | typedef enum {
|
---|
171 | KS_MemoryTypeDontCare = 0,
|
---|
172 | KS_MemoryTypeKernelPaged,
|
---|
173 | KS_MemoryTypeKernelNonPaged,
|
---|
174 | KS_MemoryTypeDeviceHostMapped,
|
---|
175 | KS_MemoryTypeDeviceSpecific,
|
---|
176 | KS_MemoryTypeUser,
|
---|
177 | KS_MemoryTypeAnyHost
|
---|
178 | } KS_LogicalMemoryType;
|
---|
179 |
|
---|
180 | typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
|
---|
181 |
|
---|
182 | typedef struct _PIPE_TERMINATION {
|
---|
183 | ULONG Flags;
|
---|
184 | ULONG OutsideFactors;
|
---|
185 | ULONG Weigth;
|
---|
186 | KS_FRAMING_RANGE PhysicalRange;
|
---|
187 | KS_FRAMING_RANGE_WEIGHTED OptimalRange;
|
---|
188 | KS_COMPRESSION Compression;
|
---|
189 | } PIPE_TERMINATION;
|
---|
190 |
|
---|
191 | typedef struct _ALLOCATOR_PROPERTIES_EX
|
---|
192 | {
|
---|
193 | __LONG32 cBuffers;
|
---|
194 | __LONG32 cbBuffer;
|
---|
195 | __LONG32 cbAlign;
|
---|
196 | __LONG32 cbPrefix;
|
---|
197 |
|
---|
198 | GUID MemoryType;
|
---|
199 | GUID BusType;
|
---|
200 | PIPE_STATE State;
|
---|
201 | PIPE_TERMINATION Input;
|
---|
202 | PIPE_TERMINATION Output;
|
---|
203 | ULONG Strategy;
|
---|
204 | ULONG Flags;
|
---|
205 | ULONG Weight;
|
---|
206 | KS_LogicalMemoryType LogicalMemoryType;
|
---|
207 | PIPE_ALLOCATOR_PLACE AllocatorPlace;
|
---|
208 | PIPE_DIMENSIONS Dimensions;
|
---|
209 | KS_FRAMING_RANGE PhysicalRange;
|
---|
210 | IKsAllocatorEx *PrevSegment;
|
---|
211 | ULONG CountNextSegments;
|
---|
212 | IKsAllocatorEx **NextSegments;
|
---|
213 | ULONG InsideFactors;
|
---|
214 | ULONG NumberPins;
|
---|
215 | } ALLOCATOR_PROPERTIES_EX;
|
---|
216 |
|
---|
217 | typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
|
---|
218 |
|
---|
219 | #ifdef __STREAMS__
|
---|
220 |
|
---|
221 | struct IKsClockPropertySet;
|
---|
222 |
|
---|
223 | #ifdef __CRT_UUID_DECL
|
---|
224 | __CRT_UUID_DECL(IKsClockPropertySet,0x5c5cbd84,0xe755,0x11d0,0xac,0x18,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
---|
225 | #endif
|
---|
226 |
|
---|
227 | #undef INTERFACE
|
---|
228 | #define INTERFACE IKsClockPropertySet
|
---|
229 | DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
|
---|
230 | {
|
---|
231 | STDMETHOD(KsGetTime) (THIS_
|
---|
232 | LONGLONG *Time
|
---|
233 | ) PURE;
|
---|
234 | STDMETHOD(KsSetTime) (THIS_
|
---|
235 | LONGLONG Time
|
---|
236 | ) PURE;
|
---|
237 | STDMETHOD(KsGetPhysicalTime) (THIS_
|
---|
238 | LONGLONG *Time
|
---|
239 | ) PURE;
|
---|
240 | STDMETHOD(KsSetPhysicalTime) (THIS_
|
---|
241 | LONGLONG Time
|
---|
242 | ) PURE;
|
---|
243 | STDMETHOD(KsGetCorrelatedTime) (THIS_
|
---|
244 | KSCORRELATED_TIME *CorrelatedTime
|
---|
245 | ) PURE;
|
---|
246 | STDMETHOD(KsSetCorrelatedTime) (THIS_
|
---|
247 | KSCORRELATED_TIME *CorrelatedTime
|
---|
248 | ) PURE;
|
---|
249 | STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
|
---|
250 | KSCORRELATED_TIME *CorrelatedTime
|
---|
251 | ) PURE;
|
---|
252 | STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
|
---|
253 | KSCORRELATED_TIME *CorrelatedTime
|
---|
254 | ) PURE;
|
---|
255 | STDMETHOD(KsGetResolution) (THIS_
|
---|
256 | KSRESOLUTION *Resolution
|
---|
257 | ) PURE;
|
---|
258 | STDMETHOD(KsGetState) (THIS_
|
---|
259 | KSSTATE *State
|
---|
260 | ) PURE;
|
---|
261 | };
|
---|
262 |
|
---|
263 | struct IKsAllocator;
|
---|
264 |
|
---|
265 | #ifdef __CRT_UUID_DECL
|
---|
266 | __CRT_UUID_DECL(IKsAllocator,0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a);
|
---|
267 | #endif
|
---|
268 |
|
---|
269 | #undef INTERFACE
|
---|
270 | #define INTERFACE IKsAllocator
|
---|
271 | DECLARE_INTERFACE_(IKsAllocator,IUnknown)
|
---|
272 | {
|
---|
273 | STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
|
---|
274 | STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
|
---|
275 | STDMETHOD(KsGetAllocatorStatus) (THIS_
|
---|
276 | PKSSTREAMALLOCATOR_STATUS AllocatorStatus
|
---|
277 | ) PURE;
|
---|
278 | STDMETHOD_(VOID,KsSetAllocatorMode) (THIS_
|
---|
279 | KSALLOCATORMODE Mode
|
---|
280 | ) PURE;
|
---|
281 | };
|
---|
282 |
|
---|
283 | struct IKsAllocatorEx;
|
---|
284 |
|
---|
285 | #ifdef __CRT_UUID_DECL
|
---|
286 | __CRT_UUID_DECL(IKsAllocatorEx,0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02);
|
---|
287 | #endif
|
---|
288 |
|
---|
289 | #undef INTERFACE
|
---|
290 | #define INTERFACE IKsAllocatorEx
|
---|
291 | DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
|
---|
292 | {
|
---|
293 | STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
|
---|
294 | STDMETHOD_(VOID,KsSetProperties) (THIS_
|
---|
295 | PALLOCATOR_PROPERTIES_EX
|
---|
296 | ) PURE;
|
---|
297 | STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_
|
---|
298 | HANDLE AllocatorHandle
|
---|
299 | ) PURE;
|
---|
300 | STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
|
---|
301 | IKsPin *KsPin
|
---|
302 | ) PURE;
|
---|
303 | };
|
---|
304 |
|
---|
305 | typedef enum {
|
---|
306 | KsPeekOperation_PeekOnly,
|
---|
307 | KsPeekOperation_AddRef
|
---|
308 | } KSPEEKOPERATION;
|
---|
309 |
|
---|
310 | typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
|
---|
311 | struct IKsPin;
|
---|
312 |
|
---|
313 | #ifdef __CRT_UUID_DECL
|
---|
314 | __CRT_UUID_DECL(IKsPin,0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1);
|
---|
315 | #endif
|
---|
316 |
|
---|
317 | #undef INTERFACE
|
---|
318 | #define INTERFACE IKsPin
|
---|
319 | DECLARE_INTERFACE_(IKsPin,IUnknown)
|
---|
320 | {
|
---|
321 | STDMETHOD(KsQueryMediums) (THIS_
|
---|
322 | PKSMULTIPLE_ITEM *MediumList
|
---|
323 | ) PURE;
|
---|
324 | STDMETHOD(KsQueryInterfaces) (THIS_
|
---|
325 | PKSMULTIPLE_ITEM *InterfaceList
|
---|
326 | ) PURE;
|
---|
327 | STDMETHOD(KsCreateSinkPinHandle) (THIS_
|
---|
328 | KSPIN_INTERFACE& Interface,
|
---|
329 | KSPIN_MEDIUM& Medium
|
---|
330 | ) PURE;
|
---|
331 | STDMETHOD(KsGetCurrentCommunication) (THIS_
|
---|
332 | KSPIN_COMMUNICATION *Communication,
|
---|
333 | KSPIN_INTERFACE *Interface,
|
---|
334 | KSPIN_MEDIUM *Medium
|
---|
335 | ) PURE;
|
---|
336 | STDMETHOD(KsPropagateAcquire) (THIS) PURE;
|
---|
337 | STDMETHOD(KsDeliver) (THIS_
|
---|
338 | IMediaSample *Sample,
|
---|
339 | ULONG Flags
|
---|
340 | ) PURE;
|
---|
341 | STDMETHOD(KsMediaSamplesCompleted) (THIS_
|
---|
342 | PKSSTREAM_SEGMENT StreamSegment
|
---|
343 | ) PURE;
|
---|
344 | STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
|
---|
345 | KSPEEKOPERATION Operation
|
---|
346 | ) PURE;
|
---|
347 | STDMETHOD(KsReceiveAllocator) (THIS_
|
---|
348 | IMemAllocator *MemAllocator
|
---|
349 | ) PURE;
|
---|
350 | STDMETHOD(KsRenegotiateAllocator) (THIS) PURE;
|
---|
351 | STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
|
---|
352 | STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
|
---|
353 | STDMETHOD(KsQualityNotify) (THIS_
|
---|
354 | ULONG Proportion,
|
---|
355 | REFERENCE_TIME TimeDelta
|
---|
356 | ) PURE;
|
---|
357 | };
|
---|
358 |
|
---|
359 | struct IKsPinEx;
|
---|
360 |
|
---|
361 | #ifdef __CRT_UUID_DECL
|
---|
362 | __CRT_UUID_DECL(IKsPinEx,0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e);
|
---|
363 | #endif
|
---|
364 |
|
---|
365 | #undef INTERFACE
|
---|
366 | #define INTERFACE IKsPinEx
|
---|
367 | DECLARE_INTERFACE_(IKsPinEx,IKsPin)
|
---|
368 | {
|
---|
369 | STDMETHOD_(VOID,KsNotifyError) (THIS_
|
---|
370 | IMediaSample *Sample,
|
---|
371 | HRESULT hr
|
---|
372 | ) PURE;
|
---|
373 | };
|
---|
374 |
|
---|
375 | struct IKsPinPipe;
|
---|
376 |
|
---|
377 | #ifdef __CRT_UUID_DECL
|
---|
378 | __CRT_UUID_DECL(IKsPinPipe,0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02);
|
---|
379 | #endif
|
---|
380 |
|
---|
381 | #undef INTERFACE
|
---|
382 | #define INTERFACE IKsPinPipe
|
---|
383 | DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
|
---|
384 | {
|
---|
385 | STDMETHOD(KsGetPinFramingCache) (THIS_
|
---|
386 | PKSALLOCATOR_FRAMING_EX *FramingEx,
|
---|
387 | PFRAMING_PROP FramingProp,
|
---|
388 | FRAMING_CACHE_OPS Option
|
---|
389 | ) PURE;
|
---|
390 | STDMETHOD(KsSetPinFramingCache) (THIS_
|
---|
391 | PKSALLOCATOR_FRAMING_EX FramingEx,
|
---|
392 | PFRAMING_PROP FramingProp,
|
---|
393 | FRAMING_CACHE_OPS Option
|
---|
394 | ) PURE;
|
---|
395 | STDMETHOD_(IPin*,KsGetConnectedPin) (THIS) PURE;
|
---|
396 | STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_
|
---|
397 | KSPEEKOPERATION Operation
|
---|
398 | ) PURE;
|
---|
399 | STDMETHOD(KsSetPipe) (THIS_
|
---|
400 | IKsAllocatorEx *KsAllocator
|
---|
401 | ) PURE;
|
---|
402 | STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
|
---|
403 | STDMETHOD(KsSetPipeAllocatorFlag) (THIS_
|
---|
404 | ULONG Flag
|
---|
405 | ) PURE;
|
---|
406 | STDMETHOD_(GUID,KsGetPinBusCache) (THIS) PURE;
|
---|
407 | STDMETHOD(KsSetPinBusCache) (THIS_
|
---|
408 | GUID Bus
|
---|
409 | ) PURE;
|
---|
410 | STDMETHOD_(PWCHAR,KsGetPinName) (THIS) PURE;
|
---|
411 | STDMETHOD_(PWCHAR,KsGetFilterName) (THIS) PURE;
|
---|
412 | };
|
---|
413 |
|
---|
414 | struct IKsPinFactory;
|
---|
415 |
|
---|
416 | #ifdef __CRT_UUID_DECL
|
---|
417 | __CRT_UUID_DECL(IKsPinFactory,0xcd5ebe6b,0x8b6e,0x11d1,0x8a,0xe0,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
---|
418 | #endif
|
---|
419 |
|
---|
420 | #undef INTERFACE
|
---|
421 | #define INTERFACE IKsPinFactory
|
---|
422 | DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
|
---|
423 | {
|
---|
424 | STDMETHOD(KsPinFactory) (THIS_
|
---|
425 | ULONG *PinFactory
|
---|
426 | ) PURE;
|
---|
427 | };
|
---|
428 |
|
---|
429 | typedef enum {
|
---|
430 | KsIoOperation_Write,
|
---|
431 | KsIoOperation_Read
|
---|
432 | } KSIOOPERATION;
|
---|
433 |
|
---|
434 | struct IKsDataTypeHandler;
|
---|
435 |
|
---|
436 | #ifdef __CRT_UUID_DECL
|
---|
437 | __CRT_UUID_DECL(IKsDataTypeHandler,0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1);
|
---|
438 | #endif
|
---|
439 |
|
---|
440 | #undef INTERFACE
|
---|
441 | #define INTERFACE IKsDataTypeHandler
|
---|
442 | DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
|
---|
443 | {
|
---|
444 | STDMETHOD(KsCompleteIoOperation) (THIS_
|
---|
445 | IMediaSample *Sample,
|
---|
446 | PVOID StreamHeader,
|
---|
447 | KSIOOPERATION IoOperation,
|
---|
448 | WINBOOL Cancelled
|
---|
449 | ) PURE;
|
---|
450 | STDMETHOD(KsIsMediaTypeInRanges) (THIS_
|
---|
451 | PVOID DataRanges
|
---|
452 | ) PURE;
|
---|
453 | STDMETHOD(KsPrepareIoOperation) (THIS_
|
---|
454 | IMediaSample *Sample,
|
---|
455 | PVOID StreamHeader,
|
---|
456 | KSIOOPERATION IoOperation
|
---|
457 | ) PURE;
|
---|
458 | STDMETHOD(KsQueryExtendedSize) (THIS_
|
---|
459 | ULONG *ExtendedSize
|
---|
460 | ) PURE;
|
---|
461 | STDMETHOD(KsSetMediaType) (THIS_
|
---|
462 | const AM_MEDIA_TYPE *AmMediaType
|
---|
463 | ) PURE;
|
---|
464 | };
|
---|
465 |
|
---|
466 | struct IKsDataTypeCompletion;
|
---|
467 |
|
---|
468 | #ifdef __CRT_UUID_DECL
|
---|
469 | __CRT_UUID_DECL(IKsDataTypeCompletion,0x827d1a0e,0x0f73,0x11d2,0xb2,0x7a,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
---|
470 | #endif
|
---|
471 |
|
---|
472 | #undef INTERFACE
|
---|
473 | #define INTERFACE IKsDataTypeCompletion
|
---|
474 | DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
|
---|
475 | {
|
---|
476 | STDMETHOD(KsCompleteMediaType) (THIS_
|
---|
477 | HANDLE FilterHandle,
|
---|
478 | ULONG PinFactoryId,
|
---|
479 | AM_MEDIA_TYPE *AmMediaType
|
---|
480 | ) PURE;
|
---|
481 | };
|
---|
482 |
|
---|
483 | struct IKsInterfaceHandler;
|
---|
484 |
|
---|
485 | #ifdef __CRT_UUID_DECL
|
---|
486 | __CRT_UUID_DECL(IKsInterfaceHandler,0xd3abc7e0,0x9a61,0x11d0,0xa4,0x0d,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
---|
487 | #endif
|
---|
488 |
|
---|
489 | #undef INTERFACE
|
---|
490 | #define INTERFACE IKsInterfaceHandler
|
---|
491 | DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
|
---|
492 | {
|
---|
493 | STDMETHOD(KsSetPin) (THIS_
|
---|
494 | IKsPin *KsPin
|
---|
495 | ) PURE;
|
---|
496 | STDMETHOD(KsProcessMediaSamples) (THIS_
|
---|
497 | IKsDataTypeHandler *KsDataTypeHandler,
|
---|
498 | IMediaSample **SampleList,
|
---|
499 | PLONG SampleCount,
|
---|
500 | KSIOOPERATION IoOperation,
|
---|
501 | PKSSTREAM_SEGMENT *StreamSegment
|
---|
502 | ) PURE;
|
---|
503 | STDMETHOD(KsCompleteIo) (THIS_
|
---|
504 | PKSSTREAM_SEGMENT StreamSegment
|
---|
505 | ) PURE;
|
---|
506 | };
|
---|
507 |
|
---|
508 | typedef struct _KSSTREAM_SEGMENT {
|
---|
509 | IKsInterfaceHandler *KsInterfaceHandler;
|
---|
510 | IKsDataTypeHandler *KsDataTypeHandler;
|
---|
511 | KSIOOPERATION IoOperation;
|
---|
512 | HANDLE CompletionEvent;
|
---|
513 | } KSSTREAM_SEGMENT;
|
---|
514 |
|
---|
515 | struct IKsObject;
|
---|
516 |
|
---|
517 | #ifdef __CRT_UUID_DECL
|
---|
518 | __CRT_UUID_DECL(IKsObject,0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1);
|
---|
519 | #endif
|
---|
520 |
|
---|
521 | #undef INTERFACE
|
---|
522 | #define INTERFACE IKsObject
|
---|
523 | DECLARE_INTERFACE_(IKsObject,IUnknown)
|
---|
524 | {
|
---|
525 | STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
|
---|
526 | };
|
---|
527 |
|
---|
528 | struct IKsQualityForwarder;
|
---|
529 |
|
---|
530 | #ifdef __CRT_UUID_DECL
|
---|
531 | __CRT_UUID_DECL(IKsQualityForwarder,0x97ebaacb,0x95bd,0x11d0,0xa3,0xea,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
---|
532 | #endif
|
---|
533 |
|
---|
534 | #undef INTERFACE
|
---|
535 | #define INTERFACE IKsQualityForwarder
|
---|
536 | DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
|
---|
537 | {
|
---|
538 | STDMETHOD_(VOID,KsFlushClient) (THIS_
|
---|
539 | IKsPin *Pin
|
---|
540 | ) PURE;
|
---|
541 | };
|
---|
542 |
|
---|
543 | struct IKsNotifyEvent;
|
---|
544 |
|
---|
545 | #ifdef __CRT_UUID_DECL
|
---|
546 | __CRT_UUID_DECL(IKsNotifyEvent,0x412bd695,0xf84b,0x46c1,0xac,0x73,0x54,0x19,0x6d,0xbc,0x8f,0xa7);
|
---|
547 | #endif
|
---|
548 |
|
---|
549 | #undef INTERFACE
|
---|
550 | #define INTERFACE IKsNotifyEvent
|
---|
551 | DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
|
---|
552 | {
|
---|
553 | STDMETHOD(KsNotifyEvent) (THIS_
|
---|
554 | ULONG Event,
|
---|
555 | ULONG_PTR lParam1,
|
---|
556 | ULONG_PTR lParam2
|
---|
557 | ) PURE;
|
---|
558 | };
|
---|
559 |
|
---|
560 | KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
|
---|
561 | KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
|
---|
562 | KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
|
---|
563 | KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
|
---|
564 | KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
|
---|
565 | KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
|
---|
566 | #endif /* __STREAMS__ */
|
---|
567 |
|
---|
568 | #ifndef _IKsPropertySet_
|
---|
569 | DEFINE_GUIDEX(IID_IKsPropertySet);
|
---|
570 | #endif
|
---|
571 |
|
---|
572 | #ifndef _IKsControl_
|
---|
573 | DEFINE_GUIDEX(IID_IKsControl);
|
---|
574 | #endif
|
---|
575 |
|
---|
576 | DEFINE_GUIDEX(IID_IKsAggregateControl);
|
---|
577 | #ifndef _IKsTopology_
|
---|
578 | DEFINE_GUIDEX(IID_IKsTopology);
|
---|
579 | #endif
|
---|
580 | DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
|
---|
581 | #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
|
---|
582 |
|
---|
583 | #else /* _KS_ */
|
---|
584 |
|
---|
585 | #ifndef _IKsPropertySet_
|
---|
586 | DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
|
---|
587 | #endif
|
---|
588 |
|
---|
589 | DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
|
---|
590 |
|
---|
591 | #endif /* _KS_ */
|
---|
592 |
|
---|
593 | #ifndef _IKsPropertySet_
|
---|
594 | #define _IKsPropertySet_
|
---|
595 | #define KSPROPERTY_SUPPORT_GET 1
|
---|
596 | #define KSPROPERTY_SUPPORT_SET 2
|
---|
597 |
|
---|
598 | #ifdef DECLARE_INTERFACE_
|
---|
599 | struct IKsPropertySet;
|
---|
600 | #undef INTERFACE
|
---|
601 | #define INTERFACE IKsPropertySet
|
---|
602 | DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
|
---|
603 | {
|
---|
604 | STDMETHOD(Set) (THIS_
|
---|
605 | REFGUID PropSet,
|
---|
606 | ULONG Id,
|
---|
607 | LPVOID InstanceData,
|
---|
608 | ULONG InstanceLength,
|
---|
609 | LPVOID PropertyData,
|
---|
610 | ULONG DataLength
|
---|
611 | ) PURE;
|
---|
612 | STDMETHOD(Get) (THIS_
|
---|
613 | REFGUID PropSet,
|
---|
614 | ULONG Id,
|
---|
615 | LPVOID InstanceData,
|
---|
616 | ULONG InstanceLength,
|
---|
617 | LPVOID PropertyData,
|
---|
618 | ULONG DataLength,
|
---|
619 | ULONG *BytesReturned
|
---|
620 | ) PURE;
|
---|
621 | STDMETHOD(QuerySupported) (THIS_
|
---|
622 | REFGUID PropSet,
|
---|
623 | ULONG Id,
|
---|
624 | ULONG *TypeSupport
|
---|
625 | ) PURE;
|
---|
626 | };
|
---|
627 | #endif /* DECLARE_INTERFACE_ */
|
---|
628 | #endif /* _IKsPropertySet_ */
|
---|
629 |
|
---|
630 | #ifndef _IKsControl_
|
---|
631 | #define _IKsControl_
|
---|
632 | #ifdef DECLARE_INTERFACE_
|
---|
633 | struct IKsControl;
|
---|
634 | #undef INTERFACE
|
---|
635 | #define INTERFACE IKsControl
|
---|
636 | DECLARE_INTERFACE_(IKsControl,IUnknown)
|
---|
637 | {
|
---|
638 | STDMETHOD(KsProperty) (THIS_
|
---|
639 | PKSPROPERTY Property,
|
---|
640 | ULONG PropertyLength,
|
---|
641 | LPVOID PropertyData,
|
---|
642 | ULONG DataLength,
|
---|
643 | ULONG *BytesReturned
|
---|
644 | ) PURE;
|
---|
645 | STDMETHOD(KsMethod) (THIS_
|
---|
646 | PKSMETHOD Method,
|
---|
647 | ULONG MethodLength,
|
---|
648 | LPVOID MethodData,
|
---|
649 | ULONG DataLength,
|
---|
650 | ULONG *BytesReturned
|
---|
651 | ) PURE;
|
---|
652 | STDMETHOD(KsEvent) (THIS_
|
---|
653 | PKSEVENT Event,
|
---|
654 | ULONG EventLength,
|
---|
655 | LPVOID EventData,
|
---|
656 | ULONG DataLength,
|
---|
657 | ULONG *BytesReturned
|
---|
658 | ) PURE;
|
---|
659 | };
|
---|
660 | #endif /* DECLARE_INTERFACE_ */
|
---|
661 | #endif /* _IKsControl_ */
|
---|
662 |
|
---|
663 | #ifdef DECLARE_INTERFACE_
|
---|
664 | struct IKsAggregateControl;
|
---|
665 | #undef INTERFACE
|
---|
666 | #define INTERFACE IKsAggregateControl
|
---|
667 | DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)
|
---|
668 | {
|
---|
669 | STDMETHOD(KsAddAggregate) (THIS_
|
---|
670 | REFGUID AggregateClass
|
---|
671 | ) PURE;
|
---|
672 | STDMETHOD(KsRemoveAggregate) (THIS_
|
---|
673 | REFGUID AggregateClass
|
---|
674 | ) PURE;
|
---|
675 | };
|
---|
676 | #endif /* DECLARE_INTERFACE_ */
|
---|
677 |
|
---|
678 | #ifndef _IKsTopology_
|
---|
679 | #define _IKsTopology_
|
---|
680 | #ifdef DECLARE_INTERFACE_
|
---|
681 | struct IKsTopology;
|
---|
682 | #undef INTERFACE
|
---|
683 | #define INTERFACE IKsTopology
|
---|
684 | DECLARE_INTERFACE_(IKsTopology,IUnknown)
|
---|
685 | {
|
---|
686 | STDMETHOD(CreateNodeInstance) (THIS_
|
---|
687 | ULONG NodeId,
|
---|
688 | ULONG Flags,
|
---|
689 | ACCESS_MASK DesiredAccess,
|
---|
690 | IUnknown *UnkOuter,
|
---|
691 | REFGUID InterfaceId,
|
---|
692 | LPVOID *Interface
|
---|
693 | ) PURE;
|
---|
694 | };
|
---|
695 | #endif /* DECLARE_INTERFACE_ */
|
---|
696 | #endif /* _IKsTopology_ */
|
---|
697 |
|
---|
698 | #ifdef __cplusplus
|
---|
699 | }
|
---|
700 | #endif
|
---|
701 |
|
---|
702 | #endif /* __KSPROXY__ */
|
---|
703 |
|
---|