145 lines
5.1 KiB
Plaintext
145 lines
5.1 KiB
Plaintext
|
//------------------------------------------------------------------------------
|
||
|
// File: IAMovie.idl
|
||
|
//
|
||
|
// Desc:
|
||
|
//
|
||
|
// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved.
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(359ace10-7688-11cf-8b23-00805f6cef60),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAMovie : IFilterGraph
|
||
|
{
|
||
|
// IGraphBuilder
|
||
|
// Connect these two pins directly or indirectly, using transform filters
|
||
|
// if necessary.
|
||
|
|
||
|
HRESULT Connect
|
||
|
( [in] IPin * ppinOut, // the output pin
|
||
|
[in] IPin * ppinIn // the input pin
|
||
|
);
|
||
|
|
||
|
|
||
|
// Connect this output pin directly or indirectly, using transform filters
|
||
|
// if necessary to something that will render it.
|
||
|
|
||
|
HRESULT Render
|
||
|
( [in] IPin * ppinOut // the output pin
|
||
|
);
|
||
|
|
||
|
|
||
|
// IMediaControl methods
|
||
|
HRESULT Run();
|
||
|
HRESULT Pause();
|
||
|
HRESULT Stop();
|
||
|
|
||
|
//returns the state. same semantics as IMediaFilter::GetState
|
||
|
|
||
|
HRESULT GetState(
|
||
|
[in] LONG msTimeout,
|
||
|
[out] FILTER_STATE* pfs);
|
||
|
|
||
|
// adds and connects filters needed to play the specified file
|
||
|
HRESULT RenderFile(
|
||
|
[in] LPCWSTR strFilename);
|
||
|
|
||
|
// adds to the graph the source filter that can read this file,
|
||
|
// and returns an IFilterInfo object for it
|
||
|
HRESULT AddSourceFilter(
|
||
|
[in] LPCWSTR strFilename,
|
||
|
[out] IBaseFilter ** ppUnk);
|
||
|
|
||
|
// get back the event handle. This is manual-reset
|
||
|
// (don't - it's reset by the event mechanism) and remains set
|
||
|
// when events are queued, and reset when the queue is empty.
|
||
|
HRESULT GetEventHandle(
|
||
|
[out] HEVENT * hEvent);
|
||
|
|
||
|
// remove the next event notification from the head of the queue and
|
||
|
// return it. Waits up to msTimeout millisecs if there are no events.
|
||
|
// if a timeout occurs without any events, this method will return
|
||
|
// E_ABORT, and the value of the event code and other parameters
|
||
|
// is undefined.
|
||
|
HRESULT GetEvent(
|
||
|
[out] long * lEventCode,
|
||
|
[out] long * lParam1,
|
||
|
[out] long * lParam2,
|
||
|
[in] long msTimeout
|
||
|
);
|
||
|
|
||
|
// Calls GetEvent repeatedly discarding events until it finds a
|
||
|
// completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
|
||
|
// The completion event is removed from the queue and returned
|
||
|
// in pEvCode. Note that the object is still in running mode until
|
||
|
// a Pause or Stop call is made.
|
||
|
// If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
|
||
|
// returned.
|
||
|
HRESULT WaitForCompletion(
|
||
|
[in] long msTimeout,
|
||
|
[out] long * pEvCode);
|
||
|
|
||
|
// cancels any system handling of the specified event code
|
||
|
// and ensures that the events are passed straight to the application
|
||
|
// (via GetEvent) and not handled. A good example of this is
|
||
|
// EC_REPAINT: default handling for this ensures the painting of the
|
||
|
// window and does not get posted to the app.
|
||
|
HRESULT CancelDefaultHandling(
|
||
|
[in] long lEvCode);
|
||
|
|
||
|
// restore the normal system default handling that may have been
|
||
|
// cancelled by CancelDefaultHandling().
|
||
|
HRESULT RestoreDefaultHandling( [in] long lEvCode);
|
||
|
|
||
|
// properties
|
||
|
HRESULT get_Duration(
|
||
|
[out] REFTIME* plength);
|
||
|
|
||
|
HRESULT put_CurrentPosition(
|
||
|
[in] REFTIME llTime);
|
||
|
|
||
|
HRESULT get_CurrentPosition(
|
||
|
[out] REFTIME* pllTime);
|
||
|
|
||
|
HRESULT get_StopTime(
|
||
|
[out] REFTIME* pllTime);
|
||
|
|
||
|
HRESULT put_StopTime(
|
||
|
[in] REFTIME llTime);
|
||
|
|
||
|
HRESULT get_PrerollTime(
|
||
|
[out] REFTIME* pllTime);
|
||
|
HRESULT put_PrerollTime(
|
||
|
[in] REFTIME llTime);
|
||
|
|
||
|
HRESULT put_Rate(
|
||
|
[in] double dRate);
|
||
|
HRESULT get_Rate(
|
||
|
[out] double * pdRate);
|
||
|
|
||
|
/* New methods */
|
||
|
HRESULT RemoveAllFilters();
|
||
|
HRESULT Play();
|
||
|
HRESULT PlayFile([in] LPCWSTR strFilename);
|
||
|
HRESULT EnumFiltersByInterface( [in] REFIID riid, [out] IEnumFilters ** ppEnum );
|
||
|
HRESULT EnumPins( [out] IEnumPins ** ppEnum );
|
||
|
HRESULT EnumPinsIn( [out] IEnumPins ** ppEnum );
|
||
|
HRESULT EnumPinsOut( [out] IEnumPins ** ppEnum );
|
||
|
HRESULT RenderAll();
|
||
|
HRESULT RenderNewFile( [in] LPCWSTR strFilename);
|
||
|
|
||
|
// Free any resources associated with the parameters to an event.
|
||
|
// Event parameters may be LONGs, IUnknown* or BSTR. No action
|
||
|
// is taken with LONGs. IUnknown are passed addrefed and need a
|
||
|
// Release call. BSTR are allocated by the task allocator and will be
|
||
|
// freed by calling the task allocator.
|
||
|
HRESULT FreeEventParams(
|
||
|
[in] long lEvCode,
|
||
|
[in] long lParam1,
|
||
|
[in] long lParam2);
|
||
|
}
|
||
|
|