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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun Jul 1 20:47:59 2001 UTC (23 years, 5 months ago) by bearsoft
Branch point for: lazy, MAIN
Initial revision

1 bearsoft 1.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