client/extern/include/DShowIDL/iamovie.idl

145 lines
5.1 KiB
Plaintext
Raw Normal View History

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