2 * Copyright (C) 2002 Robert Shearman
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.
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.
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
20 #pragma makedep install
23 interface IPinConnection
;
24 interface IPinFlowControl
;
25 interface IGraphConfig
;
26 interface IGraphConfigCallback
;
31 uuid(4a9a62d3
-27d4
-403d
-91e9
-89f540e55534
),
32 pointer_default(unique)
34 interface IPinConnection
: IUnknown
36 HRESULT DynamicQueryAccept
([in] const AM_MEDIA_TYPE
*pmt
);
38 HRESULT NotifyEndOfStream
([in] HANDLE hNotifyEvent
);
42 HRESULT DynamicDisconnect
();
48 uuid(c56e9858
-dbf3
-4f6b
-8119-384af2060deb
),
49 pointer_default(unique)
51 interface IPinFlowControl
: IUnknown
53 HRESULT Block
([in] DWORD dwBlockFlags
, [in] HANDLE hEvent
);
56 enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
58 AM_PIN_FLOW_CONTROL_BLOCK
= 0x00000001,
61 typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS
63 AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT
= 0x00000001,
64 AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS
= 0x00000002,
65 AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS
= 0x00000004
66 } AM_GRAPH_CONFIG_RECONNECT_FLAGS
;
68 enum _REM_FILTER_FLAGS
70 REMFILTERF_LEAVECONNECTED
= 0x00000001
73 typedef enum _AM_FILTER_FLAGS
75 AM_FILTER_FLAGS_REMOVABLE
= 0x00000001
81 uuid(03A1EB8E
-32BF
-4245-8502-114D08A9CB88
),
82 pointer_default(unique)
84 interface IGraphConfig
: IUnknown
87 [in] IPin
*pOutputPin
,
89 [in] const AM_MEDIA_TYPE
*pmtFirstConnection
,
90 [in] IBaseFilter
*pUsingFilter
,
91 [in] HANDLE hAbortEvent
,
95 [in] IGraphConfigCallback
*pCallback
,
98 [in] HANDLE hAbortEvent
);
100 HRESULT AddFilterToCache
([in] IBaseFilter
*pFilter
);
102 HRESULT EnumCacheFilter
([out] IEnumFilters
**pEnum
);
104 HRESULT RemoveFilterFromCache
([in]IBaseFilter
*pFilter
);
106 HRESULT GetStartTime
([out] REFERENCE_TIME
*prtStart
);
108 HRESULT PushThroughData
(
109 [in] IPin
*pOutputPin
,
110 [in] IPinConnection
*pConnection
,
111 [in] HANDLE hEventAbort
);
113 HRESULT SetFilterFlags
([in] IBaseFilter
*pFilter
, [in] DWORD dwFlags
);
115 HRESULT GetFilterFlags
([in] IBaseFilter
*pFilter
, [out] DWORD
*pdwFlags
);
117 HRESULT RemoveFilterEx
([in] IBaseFilter
*pFilter
, DWORD Flags
);
123 uuid(ade0fd60
-d19d
-11d2
-abf6
-00a0c905f375
),
124 pointer_default(unique)
126 interface IGraphConfigCallback
: IUnknown
128 HRESULT Reconfigure
(PVOID pvContext
, DWORD dwFlags
);
134 uuid(DCFBDCF6
-0DC2
-45f5
-9AB2
-7C330EA09C29
),
135 pointer_default(unique)
137 interface IFilterChain
: IUnknown
140 [in] IBaseFilter
*pStartFilter
,
141 [in] IBaseFilter
*pEndFilter
);
144 [in] IBaseFilter
*pStartFilter
,
145 [in] IBaseFilter
*pEndFilter
);
148 [in] IBaseFilter
*pStartFilter
,
149 [in] IBaseFilter
*pEndFilter
);
152 [in] IBaseFilter
*pStartFilter
,
153 [in] IBaseFilter
*pEndFilter
);