17
17
#define KSDDKAPI DECLSPEC_IMPORT
20
#define STATIC_IID_IKsObject 0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
21
#define STATIC_IID_IKsPinEx 0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
22
#define STATIC_IID_IKsPin 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
23
#define STATIC_IID_IKsPinPipe 0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
24
#define STATIC_IID_IKsDataTypeHandler 0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
25
#define STATIC_IID_IKsDataTypeCompletion 0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
26
#define STATIC_IID_IKsInterfaceHandler 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
27
#define STATIC_IID_IKsClockPropertySet 0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
28
#define STATIC_IID_IKsAllocator 0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
29
#define STATIC_IID_IKsAllocatorEx 0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
20
#define STATIC_IID_IKsObject \
21
0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
23
#define STATIC_IID_IKsPinEx \
24
0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
26
#define STATIC_IID_IKsPin \
27
0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
29
#define STATIC_IID_IKsPinPipe \
30
0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
32
#define STATIC_IID_IKsDataTypeHandler \
33
0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
35
#define STATIC_IID_IKsDataTypeCompletion \
36
0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
38
#define STATIC_IID_IKsInterfaceHandler \
39
0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
41
#define STATIC_IID_IKsClockPropertySet \
42
0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
44
#define STATIC_IID_IKsAllocator \
45
0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
47
#define STATIC_IID_IKsAllocatorEx \
48
0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
30
50
#ifndef STATIC_IID_IKsPropertySet
31
#define STATIC_IID_IKsPropertySet 0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
51
#define STATIC_IID_IKsPropertySet \
52
0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
33
#define STATIC_IID_IKsTopology 0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
55
#define STATIC_IID_IKsTopology \
56
0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
34
58
#ifndef STATIC_IID_IKsControl
35
#define STATIC_IID_IKsControl 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
59
#define STATIC_IID_IKsControl \
60
0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
37
#define STATIC_IID_IKsAggregateControl 0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
38
#define STATIC_CLSID_Proxy 0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
63
#define STATIC_IID_IKsAggregateControl \
64
0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
66
#define STATIC_CLSID_Proxy \
67
0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
40
DEFINE_GUIDEX(IID_IKsObject);
41
DEFINE_GUIDEX(IID_IKsPin);
42
DEFINE_GUIDEX(IID_IKsPinEx);
43
DEFINE_GUIDEX(IID_IKsPinPipe);
44
DEFINE_GUIDEX(IID_IKsDataTypeHandler);
45
DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
46
DEFINE_GUIDEX(IID_IKsInterfaceHandler);
47
DEFINE_GUIDEX(IID_IKsClockPropertySet);
48
DEFINE_GUIDEX(IID_IKsAllocator);
49
DEFINE_GUIDEX(IID_IKsAllocatorEx);
71
DEFINE_GUIDEX(IID_IKsObject);
73
DEFINE_GUIDEX(IID_IKsPin);
75
DEFINE_GUIDEX(IID_IKsPinEx);
77
DEFINE_GUIDEX(IID_IKsPinPipe);
79
DEFINE_GUIDEX(IID_IKsDataTypeHandler);
81
DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
83
DEFINE_GUIDEX(IID_IKsInterfaceHandler);
85
DEFINE_GUIDEX(IID_IKsClockPropertySet);
87
DEFINE_GUIDEX(IID_IKsAllocator);
89
DEFINE_GUIDEX(IID_IKsAllocatorEx);
50
91
#define IID_IKsQualityForwarder KSCATEGORY_QUALITY
51
92
#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
54
KsAllocatorMode_User,KsAllocatorMode_Kernel
58
FramingProp_Uninitialized,FramingProp_None,FramingProp_Old,FramingProp_Ex
61
typedef FRAMING_PROP *PFRAMING_PROP;
64
Framing_Cache_Update,Framing_Cache_ReadLast,Framing_Cache_ReadOrig,Framing_Cache_Write
68
LONGLONG MinTotalNominator;
69
LONGLONG MaxTotalNominator;
70
LONGLONG TotalDenominator;
71
} OPTIMAL_WEIGHT_TOTALS;
73
typedef struct IPin IPin;
74
typedef struct IKsPin IKsPin;
75
typedef struct IKsAllocator IKsAllocator;
76
typedef struct IKsAllocatorEx IKsAllocatorEx;
78
#define AllocatorStrategy_DontCare 0
79
#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001
80
#define AllocatorStrategy_MinimizeFrameSize 0x00000002
81
#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004
82
#define AllocatorStrategy_MaximizeSpeed 0x00000008
84
#define PipeFactor_None 0
85
#define PipeFactor_UserModeUpstream 0x00000001
86
#define PipeFactor_UserModeDownstream 0x00000002
87
#define PipeFactor_MemoryTypes 0x00000004
88
#define PipeFactor_Flags 0x00000008
89
#define PipeFactor_PhysicalRanges 0x00000010
90
#define PipeFactor_OptimalRanges 0x00000020
91
#define PipeFactor_FixedCompression 0x00000040
92
#define PipeFactor_UnknownCompression 0x00000080
94
#define PipeFactor_Buffers 0x00000100
95
#define PipeFactor_Align 0x00000200
96
#define PipeFactor_PhysicalEnd 0x00000400
97
#define PipeFactor_LogicalEnd 0x00000800
100
PipeState_DontCare,PipeState_RangeNotFixed,PipeState_RangeFixed,PipeState_CompressionUnknown,PipeState_Finalized
103
typedef struct _PIPE_DIMENSIONS {
104
KS_COMPRESSION AllocatorPin;
105
KS_COMPRESSION MaxExpansionPin;
106
KS_COMPRESSION EndPin;
107
} PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
110
Pipe_Allocator_None,Pipe_Allocator_FirstPin,Pipe_Allocator_LastPin,Pipe_Allocator_MiddlePin
111
} PIPE_ALLOCATOR_PLACE;
113
typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
116
KS_MemoryTypeDontCare = 0,KS_MemoryTypeKernelPaged,KS_MemoryTypeKernelNonPaged,KS_MemoryTypeDeviceHostMapped,KS_MemoryTypeDeviceSpecific,
117
KS_MemoryTypeUser,KS_MemoryTypeAnyHost
118
} KS_LogicalMemoryType;
120
typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
122
typedef struct _PIPE_TERMINATION {
124
ULONG OutsideFactors;
126
KS_FRAMING_RANGE PhysicalRange;
127
KS_FRAMING_RANGE_WEIGHTED OptimalRange;
128
KS_COMPRESSION Compression;
131
typedef struct _ALLOCATOR_PROPERTIES_EX {
140
PIPE_TERMINATION Input;
141
PIPE_TERMINATION Output;
145
KS_LogicalMemoryType LogicalMemoryType;
146
PIPE_ALLOCATOR_PLACE AllocatorPlace;
147
PIPE_DIMENSIONS Dimensions;
148
KS_FRAMING_RANGE PhysicalRange;
149
IKsAllocatorEx *PrevSegment;
150
ULONG CountNextSegments;
151
IKsAllocatorEx **NextSegments;
154
} ALLOCATOR_PROPERTIES_EX;
156
typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
96
KsAllocatorMode_Kernel
100
FramingProp_Uninitialized,
106
typedef FRAMING_PROP *PFRAMING_PROP;
109
Framing_Cache_Update,
110
Framing_Cache_ReadLast,
111
Framing_Cache_ReadOrig,
116
LONGLONG MinTotalNominator;
117
LONGLONG MaxTotalNominator;
118
LONGLONG TotalDenominator;
119
} OPTIMAL_WEIGHT_TOTALS;
121
typedef struct IPin IPin;
122
typedef struct IKsPin IKsPin;
123
typedef struct IKsAllocator IKsAllocator;
124
typedef struct IKsAllocatorEx IKsAllocatorEx;
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
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
142
#define PipeFactor_Buffers 0x00000100
143
#define PipeFactor_Align 0x00000200
144
#define PipeFactor_PhysicalEnd 0x00000400
145
#define PipeFactor_LogicalEnd 0x00000800
149
PipeState_RangeNotFixed,
150
PipeState_RangeFixed,
151
PipeState_CompressionUnknown,
155
typedef struct _PIPE_DIMENSIONS {
156
KS_COMPRESSION AllocatorPin;
157
KS_COMPRESSION MaxExpansionPin;
158
KS_COMPRESSION EndPin;
159
} PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
163
Pipe_Allocator_FirstPin,
164
Pipe_Allocator_LastPin,
165
Pipe_Allocator_MiddlePin
166
} PIPE_ALLOCATOR_PLACE;
168
typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
171
KS_MemoryTypeDontCare = 0,
172
KS_MemoryTypeKernelPaged,
173
KS_MemoryTypeKernelNonPaged,
174
KS_MemoryTypeDeviceHostMapped,
175
KS_MemoryTypeDeviceSpecific,
178
} KS_LogicalMemoryType;
180
typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
182
typedef struct _PIPE_TERMINATION {
184
ULONG OutsideFactors;
186
KS_FRAMING_RANGE PhysicalRange;
187
KS_FRAMING_RANGE_WEIGHTED OptimalRange;
188
KS_COMPRESSION Compression;
191
typedef struct _ALLOCATOR_PROPERTIES_EX
201
PIPE_TERMINATION Input;
202
PIPE_TERMINATION Output;
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;
215
} ALLOCATOR_PROPERTIES_EX;
217
typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
158
219
#ifdef __STREAMS__
159
struct IKsClockPropertySet;
221
struct IKsClockPropertySet;
161
223
#define INTERFACE IKsClockPropertySet
162
DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown) {
163
STDMETHOD(KsGetTime)(THIS_ LONGLONG *Time) PURE;
164
STDMETHOD(KsSetTime)(THIS_ LONGLONG Time) PURE;
165
STDMETHOD(KsGetPhysicalTime)(THIS_ LONGLONG *Time) PURE;
166
STDMETHOD(KsSetPhysicalTime)(THIS_ LONGLONG Time) PURE;
167
STDMETHOD(KsGetCorrelatedTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
168
STDMETHOD(KsSetCorrelatedTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
169
STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
170
STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
171
STDMETHOD(KsGetResolution)(THIS_ KSRESOLUTION *Resolution) PURE;
172
STDMETHOD(KsGetState)(THIS_ KSSTATE *State) PURE;
224
DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
226
STDMETHOD(KsGetTime) (THIS_
229
STDMETHOD(KsSetTime) (THIS_
232
STDMETHOD(KsGetPhysicalTime) (THIS_
235
STDMETHOD(KsSetPhysicalTime) (THIS_
238
STDMETHOD(KsGetCorrelatedTime) (THIS_
239
KSCORRELATED_TIME *CorrelatedTime
241
STDMETHOD(KsSetCorrelatedTime) (THIS_
242
KSCORRELATED_TIME *CorrelatedTime
244
STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
245
KSCORRELATED_TIME *CorrelatedTime
247
STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
248
KSCORRELATED_TIME *CorrelatedTime
250
STDMETHOD(KsGetResolution) (THIS_
251
KSRESOLUTION *Resolution
253
STDMETHOD(KsGetState) (THIS_
177
260
#define INTERFACE IKsAllocator
178
DECLARE_INTERFACE_(IKsAllocator,IUnknown) {
179
STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
180
STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
181
STDMETHOD(KsGetAllocatorStatus)(THIS_ PKSSTREAMALLOCATOR_STATUS AllocatorStatus) PURE;
182
STDMETHOD_(VOID,KsSetAllocatorMode)(THIS_ KSALLOCATORMODE Mode) PURE;
261
DECLARE_INTERFACE_(IKsAllocator,IUnknown)
263
STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
264
STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
265
STDMETHOD(KsGetAllocatorStatus) (THIS_
266
PKSSTREAMALLOCATOR_STATUS AllocatorStatus
268
STDMETHOD_(VOID,KsSetAllocatorMode) (THIS_
185
struct IKsAllocatorEx;
273
struct IKsAllocatorEx;
187
275
#define INTERFACE IKsAllocatorEx
188
DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator) {
189
STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
190
STDMETHOD_(VOID,KsSetProperties)(THIS_ PALLOCATOR_PROPERTIES_EX) PURE;
191
STDMETHOD_(VOID,KsSetAllocatorHandle)(THIS_ HANDLE AllocatorHandle) PURE;
192
STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_ IKsPin *KsPin) PURE;
196
KsPeekOperation_PeekOnly,KsPeekOperation_AddRef
199
typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
276
DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
278
STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
279
STDMETHOD_(VOID,KsSetProperties) (THIS_
280
PALLOCATOR_PROPERTIES_EX
282
STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_
283
HANDLE AllocatorHandle
285
STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
291
KsPeekOperation_PeekOnly,
292
KsPeekOperation_AddRef
295
typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
203
299
#define INTERFACE IKsPin
204
DECLARE_INTERFACE_(IKsPin,IUnknown) {
205
STDMETHOD(KsQueryMediums)(THIS_ PKSMULTIPLE_ITEM *MediumList) PURE;
206
STDMETHOD(KsQueryInterfaces)(THIS_ PKSMULTIPLE_ITEM *InterfaceList) PURE;
207
STDMETHOD(KsCreateSinkPinHandle)(THIS_ KSPIN_INTERFACE& Interface,KSPIN_MEDIUM& Medium) PURE;
208
STDMETHOD(KsGetCurrentCommunication)(THIS_ KSPIN_COMMUNICATION *Communication,KSPIN_INTERFACE *Interface,KSPIN_MEDIUM *Medium) PURE;
209
STDMETHOD(KsPropagateAcquire)(THIS) PURE;
210
STDMETHOD(KsDeliver)(THIS_ IMediaSample *Sample,ULONG Flags) PURE;
211
STDMETHOD(KsMediaSamplesCompleted)(THIS_ PKSSTREAM_SEGMENT StreamSegment) PURE;
212
STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_ KSPEEKOPERATION Operation) PURE;
213
STDMETHOD(KsReceiveAllocator)(THIS_ IMemAllocator *MemAllocator) PURE;
214
STDMETHOD(KsRenegotiateAllocator)(THIS) PURE;
215
STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
216
STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
217
STDMETHOD(KsQualityNotify)(THIS_ ULONG Proportion,REFERENCE_TIME TimeDelta) PURE;
300
DECLARE_INTERFACE_(IKsPin,IUnknown)
302
STDMETHOD(KsQueryMediums) (THIS_
303
PKSMULTIPLE_ITEM *MediumList
305
STDMETHOD(KsQueryInterfaces) (THIS_
306
PKSMULTIPLE_ITEM *InterfaceList
308
STDMETHOD(KsCreateSinkPinHandle) (THIS_
309
KSPIN_INTERFACE& Interface,
312
STDMETHOD(KsGetCurrentCommunication) (THIS_
313
KSPIN_COMMUNICATION *Communication,
314
KSPIN_INTERFACE *Interface,
317
STDMETHOD(KsPropagateAcquire) (THIS) PURE;
318
STDMETHOD(KsDeliver) (THIS_
319
IMediaSample *Sample,
322
STDMETHOD(KsMediaSamplesCompleted) (THIS_
323
PKSSTREAM_SEGMENT StreamSegment
325
STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
326
KSPEEKOPERATION Operation
328
STDMETHOD(KsReceiveAllocator) (THIS_
329
IMemAllocator *MemAllocator
331
STDMETHOD(KsRenegotiateAllocator) (THIS) PURE;
332
STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
333
STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
334
STDMETHOD(KsQualityNotify) (THIS_
336
REFERENCE_TIME TimeDelta
222
342
#define INTERFACE IKsPinEx
223
DECLARE_INTERFACE_(IKsPinEx,IKsPin) {
224
STDMETHOD_(VOID,KsNotifyError)(THIS_ IMediaSample *Sample,HRESULT hr) PURE;
343
DECLARE_INTERFACE_(IKsPinEx,IKsPin)
345
STDMETHOD_(VOID,KsNotifyError) (THIS_
346
IMediaSample *Sample,
229
353
#define INTERFACE IKsPinPipe
230
DECLARE_INTERFACE_(IKsPinPipe,IUnknown) {
231
STDMETHOD(KsGetPinFramingCache)(THIS_ PKSALLOCATOR_FRAMING_EX *FramingEx,PFRAMING_PROP FramingProp,FRAMING_CACHE_OPS Option) PURE;
232
STDMETHOD(KsSetPinFramingCache)(THIS_ PKSALLOCATOR_FRAMING_EX FramingEx,PFRAMING_PROP FramingProp,FRAMING_CACHE_OPS Option) PURE;
233
STDMETHOD_(IPin*,KsGetConnectedPin)(THIS) PURE;
234
STDMETHOD_(IKsAllocatorEx*,KsGetPipe)(THIS_ KSPEEKOPERATION Operation) PURE;
235
STDMETHOD(KsSetPipe)(THIS_ IKsAllocatorEx *KsAllocator) PURE;
236
STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
237
STDMETHOD(KsSetPipeAllocatorFlag)(THIS_ ULONG Flag) PURE;
238
STDMETHOD_(GUID,KsGetPinBusCache)(THIS) PURE;
239
STDMETHOD(KsSetPinBusCache)(THIS_ GUID Bus) PURE;
240
STDMETHOD_(PWCHAR,KsGetPinName)(THIS) PURE;
241
STDMETHOD_(PWCHAR,KsGetFilterName)(THIS) PURE;
354
DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
356
STDMETHOD(KsGetPinFramingCache) (THIS_
357
PKSALLOCATOR_FRAMING_EX *FramingEx,
358
PFRAMING_PROP FramingProp,
359
FRAMING_CACHE_OPS Option
361
STDMETHOD(KsSetPinFramingCache) (THIS_
362
PKSALLOCATOR_FRAMING_EX FramingEx,
363
PFRAMING_PROP FramingProp,
364
FRAMING_CACHE_OPS Option
366
STDMETHOD_(IPin*,KsGetConnectedPin) (THIS) PURE;
367
STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_
368
KSPEEKOPERATION Operation
370
STDMETHOD(KsSetPipe) (THIS_
371
IKsAllocatorEx *KsAllocator
373
STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
374
STDMETHOD(KsSetPipeAllocatorFlag) (THIS_
377
STDMETHOD_(GUID,KsGetPinBusCache) (THIS) PURE;
378
STDMETHOD(KsSetPinBusCache) (THIS_
381
STDMETHOD_(PWCHAR,KsGetPinName) (THIS) PURE;
382
STDMETHOD_(PWCHAR,KsGetFilterName) (THIS) PURE;
244
struct IKsPinFactory;
385
struct IKsPinFactory;
246
387
#define INTERFACE IKsPinFactory
247
DECLARE_INTERFACE_(IKsPinFactory,IUnknown) {
248
STDMETHOD(KsPinFactory)(THIS_ ULONG *PinFactory) PURE;
252
KsIoOperation_Write,KsIoOperation_Read
255
struct IKsDataTypeHandler;
388
DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
390
STDMETHOD(KsPinFactory) (THIS_
400
struct IKsDataTypeHandler;
257
402
#define INTERFACE IKsDataTypeHandler
258
DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown) {
259
STDMETHOD(KsCompleteIoOperation)(THIS_ IMediaSample *Sample,PVOID StreamHeader,KSIOOPERATION IoOperation,WINBOOL Cancelled) PURE;
260
STDMETHOD(KsIsMediaTypeInRanges)(THIS_ PVOID DataRanges) PURE;
261
STDMETHOD(KsPrepareIoOperation)(THIS_ IMediaSample *Sample,PVOID StreamHeader,KSIOOPERATION IoOperation) PURE;
262
STDMETHOD(KsQueryExtendedSize)(THIS_ ULONG *ExtendedSize) PURE;
263
STDMETHOD(KsSetMediaType)(THIS_ const AM_MEDIA_TYPE *AmMediaType) PURE;
403
DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
405
STDMETHOD(KsCompleteIoOperation) (THIS_
406
IMediaSample *Sample,
408
KSIOOPERATION IoOperation,
411
STDMETHOD(KsIsMediaTypeInRanges) (THIS_
414
STDMETHOD(KsPrepareIoOperation) (THIS_
415
IMediaSample *Sample,
417
KSIOOPERATION IoOperation
419
STDMETHOD(KsQueryExtendedSize) (THIS_
422
STDMETHOD(KsSetMediaType) (THIS_
423
const AM_MEDIA_TYPE *AmMediaType
266
struct IKsDataTypeCompletion;
427
struct IKsDataTypeCompletion;
268
429
#define INTERFACE IKsDataTypeCompletion
269
DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown) {
270
STDMETHOD(KsCompleteMediaType)(THIS_ HANDLE FilterHandle,ULONG PinFactoryId,AM_MEDIA_TYPE *AmMediaType) PURE;
430
DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
432
STDMETHOD(KsCompleteMediaType) (THIS_
435
AM_MEDIA_TYPE *AmMediaType
273
struct IKsInterfaceHandler;
439
struct IKsInterfaceHandler;
275
441
#define INTERFACE IKsInterfaceHandler
276
DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown) {
277
STDMETHOD(KsSetPin)(THIS_ IKsPin *KsPin) PURE;
278
STDMETHOD(KsProcessMediaSamples)(THIS_ IKsDataTypeHandler *KsDataTypeHandler,IMediaSample **SampleList,PLONG SampleCount,KSIOOPERATION IoOperation,PKSSTREAM_SEGMENT *StreamSegment) PURE;
279
STDMETHOD(KsCompleteIo)(THIS_ PKSSTREAM_SEGMENT StreamSegment) PURE;
282
typedef struct _KSSTREAM_SEGMENT {
283
IKsInterfaceHandler *KsInterfaceHandler;
284
IKsDataTypeHandler *KsDataTypeHandler;
285
KSIOOPERATION IoOperation;
286
HANDLE CompletionEvent;
442
DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
444
STDMETHOD(KsSetPin) (THIS_
447
STDMETHOD(KsProcessMediaSamples) (THIS_
448
IKsDataTypeHandler *KsDataTypeHandler,
449
IMediaSample **SampleList,
451
KSIOOPERATION IoOperation,
452
PKSSTREAM_SEGMENT *StreamSegment
454
STDMETHOD(KsCompleteIo) (THIS_
455
PKSSTREAM_SEGMENT StreamSegment
459
typedef struct _KSSTREAM_SEGMENT {
460
IKsInterfaceHandler *KsInterfaceHandler;
461
IKsDataTypeHandler *KsDataTypeHandler;
462
KSIOOPERATION IoOperation;
463
HANDLE CompletionEvent;
291
468
#define INTERFACE IKsObject
292
DECLARE_INTERFACE_(IKsObject,IUnknown) {
293
STDMETHOD_(HANDLE,KsGetObjectHandle)(THIS) PURE;
469
DECLARE_INTERFACE_(IKsObject,IUnknown)
471
STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
296
struct IKsQualityForwarder;
474
struct IKsQualityForwarder;
298
476
#define INTERFACE IKsQualityForwarder
299
DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject) {
300
STDMETHOD_(VOID,KsFlushClient)(THIS_ IKsPin *Pin) PURE;
477
DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
479
STDMETHOD_(VOID,KsFlushClient) (THIS_
303
struct IKsNotifyEvent;
484
struct IKsNotifyEvent;
305
486
#define INTERFACE IKsNotifyEvent
306
DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown) {
307
STDMETHOD(KsNotifyEvent)(THIS_ ULONG Event,ULONG_PTR lParam1,ULONG_PTR lParam2) PURE;
487
DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
489
STDMETHOD(KsNotifyEvent) (THIS_
310
KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
311
KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
312
KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
313
KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
314
KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
315
KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
496
KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
497
KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
498
KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
499
KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
500
KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
501
KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
502
#endif /* __STREAMS__ */
318
504
#ifndef _IKsPropertySet_
319
DEFINE_GUIDEX(IID_IKsPropertySet);
505
DEFINE_GUIDEX(IID_IKsPropertySet);
322
508
#ifndef _IKsControl_
323
DEFINE_GUIDEX(IID_IKsControl);
509
DEFINE_GUIDEX(IID_IKsControl);
326
DEFINE_GUIDEX(IID_IKsAggregateControl);
512
DEFINE_GUIDEX(IID_IKsAggregateControl);
327
513
#ifndef _IKsTopology_
328
DEFINE_GUIDEX(IID_IKsTopology);
514
DEFINE_GUIDEX(IID_IKsTopology);
330
DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
516
DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
331
517
#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
334
521
#ifndef _IKsPropertySet_
335
DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
337
DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
522
DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
525
DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
340
529
#ifndef _IKsPropertySet_
341
530
#define _IKsPropertySet_