| 1 |
bearsoft |
1.1 |
//------------------------------------------------------------------------------
|
| 2 |
|
|
// File: IAMovie.idl
|
| 3 |
|
|
//
|
| 4 |
|
|
// Desc:
|
| 5 |
|
|
//
|
| 6 |
|
|
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
| 7 |
|
|
//------------------------------------------------------------------------------
|
| 8 |
|
|
|
| 9 |
|
|
|
| 10 |
|
|
[
|
| 11 |
|
|
object,
|
| 12 |
|
|
uuid(359ace10-7688-11cf-8b23-00805f6cef60),
|
| 13 |
|
|
pointer_default(unique)
|
| 14 |
|
|
]
|
| 15 |
|
|
interface IAMovie : IFilterGraph
|
| 16 |
|
|
{
|
| 17 |
|
|
// IGraphBuilder
|
| 18 |
|
|
// Connect these two pins directly or indirectly, using transform filters
|
| 19 |
|
|
// if necessary.
|
| 20 |
|
|
|
| 21 |
|
|
HRESULT Connect
|
| 22 |
|
|
( [in] IPin * ppinOut, // the output pin
|
| 23 |
|
|
[in] IPin * ppinIn // the input pin
|
| 24 |
|
|
);
|
| 25 |
|
|
|
| 26 |
|
|
|
| 27 |
|
|
// Connect this output pin directly or indirectly, using transform filters
|
| 28 |
|
|
// if necessary to something that will render it.
|
| 29 |
|
|
|
| 30 |
|
|
HRESULT Render
|
| 31 |
|
|
( [in] IPin * ppinOut // the output pin
|
| 32 |
|
|
);
|
| 33 |
|
|
|
| 34 |
|
|
|
| 35 |
|
|
// IMediaControl methods
|
| 36 |
|
|
HRESULT Run();
|
| 37 |
|
|
HRESULT Pause();
|
| 38 |
|
|
HRESULT Stop();
|
| 39 |
|
|
|
| 40 |
|
|
//returns the state. same semantics as IMediaFilter::GetState
|
| 41 |
|
|
|
| 42 |
|
|
HRESULT GetState(
|
| 43 |
|
|
[in] LONG msTimeout,
|
| 44 |
|
|
[out] FILTER_STATE* pfs);
|
| 45 |
|
|
|
| 46 |
|
|
// adds and connects filters needed to play the specified file
|
| 47 |
|
|
HRESULT RenderFile(
|
| 48 |
|
|
[in] LPCWSTR strFilename);
|
| 49 |
|
|
|
| 50 |
|
|
// adds to the graph the source filter that can read this file,
|
| 51 |
|
|
// and returns an IFilterInfo object for it
|
| 52 |
|
|
HRESULT AddSourceFilter(
|
| 53 |
|
|
[in] LPCWSTR strFilename,
|
| 54 |
|
|
[out] IBaseFilter ** ppUnk);
|
| 55 |
|
|
|
| 56 |
|
|
// get back the event handle. This is manual-reset
|
| 57 |
|
|
// (don't - it's reset by the event mechanism) and remains set
|
| 58 |
|
|
// when events are queued, and reset when the queue is empty.
|
| 59 |
|
|
HRESULT GetEventHandle(
|
| 60 |
|
|
[out] HEVENT * hEvent);
|
| 61 |
|
|
|
| 62 |
|
|
// remove the next event notification from the head of the queue and
|
| 63 |
|
|
// return it. Waits up to msTimeout millisecs if there are no events.
|
| 64 |
|
|
// if a timeout occurs without any events, this method will return
|
| 65 |
|
|
// E_ABORT, and the value of the event code and other parameters
|
| 66 |
|
|
// is undefined.
|
| 67 |
|
|
HRESULT GetEvent(
|
| 68 |
|
|
[out] long * lEventCode,
|
| 69 |
|
|
[out] long * lParam1,
|
| 70 |
|
|
[out] long * lParam2,
|
| 71 |
|
|
[in] long msTimeout
|
| 72 |
|
|
);
|
| 73 |
|
|
|
| 74 |
|
|
// Calls GetEvent repeatedly discarding events until it finds a
|
| 75 |
|
|
// completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
|
| 76 |
|
|
// The completion event is removed from the queue and returned
|
| 77 |
|
|
// in pEvCode. Note that the object is still in running mode until
|
| 78 |
|
|
// a Pause or Stop call is made.
|
| 79 |
|
|
// If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
|
| 80 |
|
|
// returned.
|
| 81 |
|
|
HRESULT WaitForCompletion(
|
| 82 |
|
|
[in] long msTimeout,
|
| 83 |
|
|
[out] long * pEvCode);
|
| 84 |
|
|
|
| 85 |
|
|
// cancels any system handling of the specified event code
|
| 86 |
|
|
// and ensures that the events are passed straight to the application
|
| 87 |
|
|
// (via GetEvent) and not handled. A good example of this is
|
| 88 |
|
|
// EC_REPAINT: default handling for this ensures the painting of the
|
| 89 |
|
|
// window and does not get posted to the app.
|
| 90 |
|
|
HRESULT CancelDefaultHandling(
|
| 91 |
|
|
[in] long lEvCode);
|
| 92 |
|
|
|
| 93 |
|
|
// restore the normal system default handling that may have been
|
| 94 |
|
|
// cancelled by CancelDefaultHandling().
|
| 95 |
|
|
HRESULT RestoreDefaultHandling( [in] long lEvCode);
|
| 96 |
|
|
|
| 97 |
|
|
// properties
|
| 98 |
|
|
HRESULT get_Duration(
|
| 99 |
|
|
[out] REFTIME* plength);
|
| 100 |
|
|
|
| 101 |
|
|
HRESULT put_CurrentPosition(
|
| 102 |
|
|
[in] REFTIME llTime);
|
| 103 |
|
|
|
| 104 |
|
|
HRESULT get_CurrentPosition(
|
| 105 |
|
|
[out] REFTIME* pllTime);
|
| 106 |
|
|
|
| 107 |
|
|
HRESULT get_StopTime(
|
| 108 |
|
|
[out] REFTIME* pllTime);
|
| 109 |
|
|
|
| 110 |
|
|
HRESULT put_StopTime(
|
| 111 |
|
|
[in] REFTIME llTime);
|
| 112 |
|
|
|
| 113 |
|
|
HRESULT get_PrerollTime(
|
| 114 |
|
|
[out] REFTIME* pllTime);
|
| 115 |
|
|
HRESULT put_PrerollTime(
|
| 116 |
|
|
[in] REFTIME llTime);
|
| 117 |
|
|
|
| 118 |
|
|
HRESULT put_Rate(
|
| 119 |
|
|
[in] double dRate);
|
| 120 |
|
|
HRESULT get_Rate(
|
| 121 |
|
|
[out] double * pdRate);
|
| 122 |
|
|
|
| 123 |
|
|
/* New methods */
|
| 124 |
|
|
HRESULT RemoveAllFilters();
|
| 125 |
|
|
HRESULT Play();
|
| 126 |
|
|
HRESULT PlayFile([in] LPCWSTR strFilename);
|
| 127 |
|
|
HRESULT EnumFiltersByInterface( [in] REFIID riid, [out] IEnumFilters ** ppEnum );
|
| 128 |
|
|
HRESULT EnumPins( [out] IEnumPins ** ppEnum );
|
| 129 |
|
|
HRESULT EnumPinsIn( [out] IEnumPins ** ppEnum );
|
| 130 |
|
|
HRESULT EnumPinsOut( [out] IEnumPins ** ppEnum );
|
| 131 |
|
|
HRESULT RenderAll();
|
| 132 |
|
|
HRESULT RenderNewFile( [in] LPCWSTR strFilename);
|
| 133 |
|
|
|
| 134 |
|
|
// Free any resources associated with the parameters to an event.
|
| 135 |
|
|
// Event parameters may be LONGs, IUnknown* or BSTR. No action
|
| 136 |
|
|
// is taken with LONGs. IUnknown are passed addrefed and need a
|
| 137 |
|
|
// Release call. BSTR are allocated by the task allocator and will be
|
| 138 |
|
|
// freed by calling the task allocator.
|
| 139 |
|
|
HRESULT FreeEventParams(
|
| 140 |
|
|
[in] long lEvCode,
|
| 141 |
|
|
[in] long lParam1,
|
| 142 |
|
|
[in] long lParam2);
|
| 143 |
|
|
}
|
| 144 |
|
|
|