xref: /reactos/sdk/include/dxsdk/dyngraph.idl (revision 1734f297)
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19interface IPinConnection;
20interface IPinFlowControl;
21interface IGraphConfig;
22interface IGraphConfigCallback;
23
24[
25    local,
26    object,
27    uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
28    pointer_default(unique)
29]
30interface 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]
47interface IPinFlowControl : IUnknown
48{
49    HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
50}
51
52enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
53{
54    AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
55};
56
57typedef 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
64enum _REM_FILTER_FLAGS
65{
66    REMFILTERF_LEAVECONNECTED = 0x00000001
67};
68
69typedef 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]
80interface 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]
122interface 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]
133interface 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}
151