| /* | 
 |  * Copyright (C) 2002 Robert Shearman | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | #if 0 | 
 | #pragma makedep install | 
 | #endif | 
 |  | 
 | interface IPinConnection; | 
 | interface IPinFlowControl; | 
 | interface IGraphConfig; | 
 | interface IGraphConfigCallback; | 
 |  | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(4a9a62d3-27d4-403d-91e9-89f540e55534), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IPinConnection : IUnknown | 
 | { | 
 |     HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt); | 
 |  | 
 |     HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent); | 
 |  | 
 |     HRESULT IsEndPin(); | 
 |  | 
 |     HRESULT DynamicDisconnect(); | 
 | } | 
 |  | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(c56e9858-dbf3-4f6b-8119-384af2060deb), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IPinFlowControl : IUnknown | 
 | { | 
 |     HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent); | 
 | } | 
 |  | 
 | enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS | 
 | { | 
 |     AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001, | 
 | }; | 
 |  | 
 | typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS | 
 | { | 
 |     AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001, | 
 |     AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002, | 
 |     AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004 | 
 | } AM_GRAPH_CONFIG_RECONNECT_FLAGS; | 
 |  | 
 | enum _REM_FILTER_FLAGS | 
 | { | 
 |     REMFILTERF_LEAVECONNECTED = 0x00000001 | 
 | }; | 
 |  | 
 | typedef enum _AM_FILTER_FLAGS | 
 | { | 
 |      AM_FILTER_FLAGS_REMOVABLE = 0x00000001 | 
 | } AM_FILTER_FLAGS; | 
 |  | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IGraphConfig : IUnknown | 
 | { | 
 |     HRESULT Reconnect( | 
 |         [in] IPin *pOutputPin, | 
 |         [in] IPin *pInputPin, | 
 |         [in] const AM_MEDIA_TYPE *pmtFirstConnection, | 
 |         [in] IBaseFilter *pUsingFilter, | 
 |         [in] HANDLE hAbortEvent, | 
 |         [in] DWORD dwFlags); | 
 |  | 
 |     HRESULT Reconfigure( | 
 |         [in] IGraphConfigCallback *pCallback, | 
 |         [in] PVOID pvContext, | 
 |         [in] DWORD dwFlags, | 
 |         [in] HANDLE hAbortEvent); | 
 |  | 
 |     HRESULT AddFilterToCache([in] IBaseFilter *pFilter); | 
 |  | 
 |     HRESULT EnumCacheFilter([out] IEnumFilters **pEnum); | 
 |  | 
 |     HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter); | 
 |  | 
 |     HRESULT GetStartTime([out] REFERENCE_TIME *prtStart); | 
 |  | 
 |     HRESULT PushThroughData( | 
 |         [in] IPin *pOutputPin, | 
 |         [in] IPinConnection *pConnection, | 
 |         [in] HANDLE hEventAbort); | 
 |  | 
 |     HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags); | 
 |  | 
 |     HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags); | 
 |  | 
 |     HRESULT RemoveFilterEx([in] IBaseFilter *pFilter, DWORD Flags); | 
 | } | 
 |  | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IGraphConfigCallback : IUnknown | 
 | { | 
 |     HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags); | 
 | } | 
 |  | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IFilterChain : IUnknown | 
 | { | 
 |     HRESULT StartChain( | 
 |         [in] IBaseFilter *pStartFilter, | 
 |         [in] IBaseFilter *pEndFilter); | 
 |  | 
 |     HRESULT PauseChain( | 
 |         [in] IBaseFilter *pStartFilter, | 
 |         [in] IBaseFilter *pEndFilter); | 
 |  | 
 |     HRESULT StopChain( | 
 |         [in] IBaseFilter *pStartFilter, | 
 |         [in] IBaseFilter *pEndFilter); | 
 |  | 
 |     HRESULT RemoveChain( | 
 |         [in] IBaseFilter *pStartFilter, | 
 |         [in] IBaseFilter *pEndFilter); | 
 | } |