|  | /* | 
|  | * 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 | 
|  | */ | 
|  |  | 
|  | 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); | 
|  | } |