/[cvs]/api/include/DShowIDL/dyngraph.idl
ViewVC logotype

Contents of /api/include/DShowIDL/dyngraph.idl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (22 years, 10 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
First import

1 //------------------------------------------------------------------------------
2 // File: DynGraph.idl
3 //
4 // Desc: Dynamic graph interfaces.
5 //
6 // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
7 //------------------------------------------------------------------------------
8
9
10 interface IPinConnection;
11 interface IPinFlowControl;
12 interface IGraphConfig;
13 interface IGraphConfigCallback;
14
15 //--------------------------------------------------------------------
16 //
17 // IPinConnection - supported by input pins
18 //
19 //--------------------------------------------------------------------
20 [
21 local,
22 object,
23 uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
24 pointer_default(unique)
25 ]
26 interface IPinConnection : IUnknown {
27
28 // Do you accept this type chane in your current state?
29 HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
30
31 // Set event when EndOfStream receive - do NOT pass it on
32 // This condition is cancelled by a flush or Stop
33 HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
34
35 // Are you an 'end pin'
36 HRESULT IsEndPin();
37
38 HRESULT DynamicDisconnect();
39 };
40
41 //--------------------------------------------------------------------
42 //
43 // IPinFlowControl - supported by output pins
44 //
45 //--------------------------------------------------------------------
46 [
47 local,
48 object,
49 uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
50 pointer_default(unique)
51 ]
52 interface IPinFlowControl : IUnknown {
53 // Block processing on this pin
54 HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
55 }
56
57 // block flags
58 enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS {
59 AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001, // 0 means unblock
60 };
61
62
63 // Reconnect flags
64 typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
65 AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
66 AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
67 AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
68 } AM_GRAPH_CONFIG_RECONNECT_FLAGS;
69
70 // RemoveFilterEx flags
71 enum _REM_FILTER_FLAGS {
72 REMFILTERF_LEAVECONNECTED = 0x00000001
73 };
74
75 typedef enum _AM_FILTER_FLAGS {
76 AM_FILTER_FLAGS_REMOVABLE = 0x00000001
77 } AM_FILTER_FLAGS;
78
79
80 //--------------------------------------------------------------------
81 //
82 // IGraphConfig
83 //
84 //--------------------------------------------------------------------
85
86 [
87 local,
88 object,
89 uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
90 pointer_default(unique)
91 ]
92 interface IGraphConfig : IUnknown {
93 HRESULT Reconnect([in] IPin *pOutputPin,
94 [in] IPin *pInputPin,
95 [in] const AM_MEDIA_TYPE *pmtFirstConnection,
96 [in] IBaseFilter *pUsingFilter, // can be NULL
97 [in] HANDLE hAbortEvent,
98 [in] DWORD dwFlags);
99
100 HRESULT Reconfigure([in] IGraphConfigCallback *pCallback,
101 [in] PVOID pvContext,
102 [in] DWORD dwFlags,
103 [in] HANDLE hAbortEvent);
104
105
106 HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
107 HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
108 HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
109
110 // Get the start time associated with the last Run() call
111 // If the graph is not running returns VFW_E_WRONG_STATE
112 HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
113
114 HRESULT PushThroughData(
115 [in] IPin *pOutputPin,
116 [in] IPinConnection *pConnection,
117 [in] HANDLE hEventAbort);
118
119 HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
120 HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
121
122 HRESULT RemoveFilterEx( [in] IBaseFilter *pFilter, DWORD Flags );
123 }
124
125 //--------------------------------------------------------------------
126 //
127 // IGraphConfigCallback
128 //
129 //--------------------------------------------------------------------
130
131 [
132 local,
133 object,
134 uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
135 pointer_default(unique)
136 ]
137 interface IGraphConfigCallback : IUnknown
138 {
139 HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
140 }
141
142 // Filter Chain Definition
143 //
144 // Filter chains have the following properties:
145 //
146 // - Each filter chain has one or more filters.
147 //
148 // - Each filter in a filter chain has at most one connected input pin and one
149 // connected output pin. For example, filters A, C, D, F, G, H, I, J and K
150 // (see the diagram below) can be in a filter chain because each one has at
151 // most one connected input pin and one connected output pin.
152 //
153 // - Any filter in a chain is reachable by any other filter in the chain.
154 // For example, in the filter chain F-G-H, F can reach H by following the F-
155 // G connection to G and then following the G-H connection to H. Filters F
156 // and J cannot be in the same filter chain because J is not reachable from
157 // F. Anotherwords, there no sequence of connected filters between F and J.
158 //
159 // - The start filter is the only filter in the filter chain who's input
160 // pin is not connected to another filter in the chain. For instance, F is
161 // the start filter in F-G-H because F's input pin is connected to E and E
162 // is not in the filter chain. G's input pin is connected to F and H's is
163 // connected to G. Both F and G are in the filter chain.
164 //
165 // - The end filter is the only filter in the filter chain who's output pin
166 // is not connected to another filter in the chain. For example, in the
167 // filter chain J-K, K is the end filter because K's output pin is
168 // connected to L. J's output pin is connected to K and K is in the J-K
169 // filter chain.
170 //
171 //
172 // --->|---| |---|--->
173 // | C |--->| D |
174 // |---| |---|--->|---| |---|--->|---| |---| |---| |---|
175 // | A |--->| B | | E |--->| F |--->| G |--->| H |
176 // |---| |---|--->|---|------------>|---| |---| |---| |---|
177 // | I |--->
178 // --->|---|--->
179 //
180 // |---| |---| |---|
181 // | J |--->| K |--->| L |
182 // |---| |---| |---|
183 //
184 // Example Filter Graph
185 //
186 //
187 //
188 // IFilterChain Methods Documentation
189 //
190 // HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
191 //
192 // StartChain() switches all the filters in the chain into the running state
193 // If one of the filters will not switch to the running state, then all the filters
194 // in the chain are stopped. This method can only be called if the filter graph is
195 // running.
196 //
197 // Parameters:
198 // - pStartFilter [in]
199 // The first filter in the filter chain. Note that this can be the same
200 // filter as pEndFilter .
201 //
202 // - pEndFilter [in]
203 // The last filter in the filter chain. Note that this can be the same
204 // filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
205 // from pStartFilter to the last downstream filter which can be in a filter chain.
206 // For example, IFilterChain::StartChain( A, NULL ) would start filter A.
207 // IFilterChain::StartChain( G, NULL ) would start filters G and H.
208 // IFilterChain::StartChain( C, NULL ) would start filters C and D. Finally,
209 // IFilterChain::StartChain( E, NULL ) would fail because E cannot be in a
210 // filter chain (see the Filter Chain Definition section for more information).
211 //
212 // Return Value:
213 // An HRESULT. See the Direct Show SDK and COM SDK documentation for more
214 // information on interpreting HRESULTs.
215 //
216 //
217 //
218 //
219 // HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
220 //
221 // PauseChain() switches all the filters in a chain to the paused state. If it cannot
222 // switch one of the filtres into the paused state, all the filters in the chain are
223 // stopped. This method can only be called if the filter graph is paused.
224 //
225 // Parameters:
226 // - pStartFilter [in]
227 // The first filter in the filter chain. Note that this can be the same
228 // filter as pEndFilter .
229 //
230 // - pEndFilter [in]
231 // The last filter in the filter chain. Note that this can be the same
232 // filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
233 // from pStartFilter to the last downstream filter which can be in a filter chain.
234 // For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
235 // IFilterChain::StopChain( G, NULL ) would stop filters G and H.
236 // IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
237 // IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
238 // chain (see the Filter Chain Definition section for more information).
239 //
240 //
241 // Return Value:
242 // An HRESULT. See the Direct Show SDK and COM SDK documentation for more
243 // information on interpreting HRESULTs.
244 //
245 //
246 //
247 // HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
248 //
249 // StopChain() switches all the filters in chain to the stopped state.
250 //
251 // Parameters:
252 // - pStartFilter [in]
253 // The first filter in the filter chain. Note that this can be the same
254 // filter as pEndFilter .
255 //
256 // - pEndFilter [in]
257 // The last filter in the filter chain. Note that this can be the same
258 // filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
259 // from pStartFilter to the last downstream filter which can be in a filter chain.
260 // For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
261 // IFilterChain::StopChain( G, NULL ) would stop filters G and H.
262 // IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
263 // IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
264 // chain (see the Filter Chain Definition section for more information).
265 //
266 //
267 // Return Value:
268 // An HRESULT. See the Direct Show SDK and COM SDK documentation for more
269 // information on interpreting HRESULTs.
270 //
271 //
272 //
273 //
274 //
275 // HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
276 //
277 // RemoveChain() removes every filter in a chain from the filter graph.
278 // The filters can be removed while the graph is running.
279 //
280 // Parameters:
281 // - pStartFilter [in]
282 // The first filter in the filter chain. Note that this can be the same
283 // filter as pEndFilter .
284 //
285 // - pEndFilter [in]
286 // The last filter in the filter chain. Note that this can be the same
287 // filter as pStartFilter. If pEndFilter is NULL then the filter chain
288 // extends from pStartFilter to the last downstream filter which can be in a
289 // filter chain. For example, IFilterChain::RemoveChain( A, NULL ) would remove
290 // filter A from the filter graph. IFilterChain::RemoveChain( G, NULL ) would
291 // remove filters G and H. IFilterChain::RemoveChain( C, NULL ) would remove
292 // filters C and D. Finally, IFilterChain::RemoveChain( E, NULL ) would fail
293 // because E cannot be in a filter chain (see the Filter Chain Definition
294 // section for more information).
295 //
296 //
297 // Return Value:
298 // An HRESULT. See the Direct Show SDK and COM SDK documentation for more
299 // information on interpreting HRESULTs.
300 //
301 //
302 [
303 local,
304 object,
305 uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
306 pointer_default(unique)
307 ]
308 interface IFilterChain : IUnknown
309 {
310 HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
311 HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
312 HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
313 HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
314 }
315
316
317
318

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26