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