Better handling of conflicting section information between
[wine] / include / dyngraph.idl
1 /*
2  * Copyright (C) 2002 Robert Shearman
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 interface IPinConnection;
20 interface IPinFlowControl;
21 interface IGraphConfig;
22 interface IGraphConfigCallback;
23
24 [
25     local,
26     object,
27     uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
28     pointer_default(unique)
29 ]
30 interface IPinConnection : IUnknown
31 {
32     HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
33
34     HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
35
36     HRESULT IsEndPin();
37
38     HRESULT DynamicDisconnect();
39 };
40
41 [
42     local,
43     object,
44     uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
45     pointer_default(unique)
46 ]
47 interface IPinFlowControl : IUnknown
48 {
49     HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
50 }
51
52 enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
53 {
54     AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
55 };
56
57 typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS
58 {
59     AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
60     AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
61     AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
62 } AM_GRAPH_CONFIG_RECONNECT_FLAGS;
63
64 enum _REM_FILTER_FLAGS
65 {
66     REMFILTERF_LEAVECONNECTED = 0x00000001
67 };
68
69 typedef enum _AM_FILTER_FLAGS
70 {
71      AM_FILTER_FLAGS_REMOVABLE = 0x00000001
72 } AM_FILTER_FLAGS;
73
74 [
75     local,
76     object,
77     uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
78     pointer_default(unique)
79 ]
80 interface IGraphConfig : IUnknown
81 {
82     HRESULT Reconnect(
83         [in] IPin *pOutputPin,
84         [in] IPin *pInputPin,
85         [in] const AM_MEDIA_TYPE *pmtFirstConnection,
86         [in] IBaseFilter *pUsingFilter,
87         [in] HANDLE hAbortEvent,
88         [in] DWORD dwFlags);
89
90     HRESULT Reconfigure(
91         [in] IGraphConfigCallback *pCallback,
92         [in] PVOID pvContext,
93         [in] DWORD dwFlags,
94         [in] HANDLE hAbortEvent);
95
96     HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
97
98     HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
99
100     HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
101
102     HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
103
104     HRESULT PushThroughData(
105         [in] IPin *pOutputPin,
106         [in] IPinConnection *pConnection,
107         [in] HANDLE hEventAbort);
108
109     HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
110
111     HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
112
113     HRESULT RemoveFilterEx([in] IBaseFilter *pFilter, DWORD Flags);
114 }
115
116 [
117     local,
118     object,
119     uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
120     pointer_default(unique)
121 ]
122 interface IGraphConfigCallback : IUnknown
123 {
124     HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
125 }
126
127 [
128     local,
129     object,
130     uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
131     pointer_default(unique)
132 ]
133 interface IFilterChain : IUnknown
134 {
135     HRESULT StartChain(
136         [in] IBaseFilter *pStartFilter,
137         [in] IBaseFilter *pEndFilter);
138
139     HRESULT PauseChain(
140         [in] IBaseFilter *pStartFilter,
141         [in] IBaseFilter *pEndFilter);
142
143     HRESULT StopChain(
144         [in] IBaseFilter *pStartFilter,
145         [in] IBaseFilter *pEndFilter);
146
147     HRESULT RemoveChain(
148         [in] IBaseFilter *pStartFilter,
149         [in] IBaseFilter *pEndFilter);
150 }