summaryrefslogtreecommitdiffstats
path: root/sdk/dx8sdk/Include/DShowIDL/control.odl
diff options
context:
space:
mode:
Diffstat (limited to 'sdk/dx8sdk/Include/DShowIDL/control.odl')
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/control.odl912
1 files changed, 912 insertions, 0 deletions
diff --git a/sdk/dx8sdk/Include/DShowIDL/control.odl b/sdk/dx8sdk/Include/DShowIDL/control.odl
new file mode 100644
index 00000000..4fba88cf
--- /dev/null
+++ b/sdk/dx8sdk/Include/DShowIDL/control.odl
@@ -0,0 +1,912 @@
+//==========================================================================;
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+// PURPOSE.
+//
+// Copyright (c) 1992 - 2002 Microsoft Corporation. All Rights Reserved.
+//
+//--------------------------------------------------------------------------;
+
+// Neutral/English language type library for basic Quartz control interfaces
+
+// the quartz type library defines the basic control interfaces
+[
+ uuid(56a868b0-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("ActiveMovie control type library"),
+ lcid(0x0000),
+ version(1.0)
+]
+library QuartzTypeLib
+{
+ importlib("STDOLE2.TLB");
+
+ // types are restricted to be automation-compatible
+ typedef double REFTIME; // ReferenceTime
+ typedef LONG_PTR OAEVENT; // should be a HANDLE
+ typedef LONG_PTR OAHWND; // should be an hwnd
+
+ // from strmif.idl
+ typedef long OAFilterState;
+
+ // collection interface - represents a collection of IUnknowns
+ // this is used below to collect filter-info objects, registry-filters
+ // pin-info objects and wrapped media type objects
+ [
+ uuid(56a868b9-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("Collection"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IAMCollection : IDispatch
+ {
+ // number of items in collection
+ [propget]
+ HRESULT Count(
+ [out, retval] LONG* plCount);
+
+ // return IUnknown for contained item by index
+ HRESULT Item(
+ [in] long lItem,
+ [out] IUnknown** ppUnk);
+
+ // return IUnknown for an object that implements IEnumVARIANT on
+ // this collection
+ [propget]
+ HRESULT _NewEnum(
+ [out, retval] IUnknown** ppUnk);
+ }
+
+
+ // core control providing state control
+ [
+ uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IMediaControl interface"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IMediaControl : IDispatch
+ {
+ // methods
+ HRESULT Run();
+ HRESULT Pause();
+ HRESULT Stop();
+
+ //returns the state. same semantics as IMediaFilter::GetState
+
+ HRESULT GetState(
+ [in] LONG msTimeout,
+ [out] OAFilterState* pfs);
+
+ // adds and connects filters needed to play the specified file
+ // (same as IFilterGraph::RenderFile)
+ HRESULT RenderFile(
+ [in] BSTR strFilename);
+
+ // adds to the graph the source filter that can read this file,
+ // and returns an IFilterInfo object for it (actually returns
+ // an IDispatch for the IFilterInfo object).
+ HRESULT AddSourceFilter(
+ [in] BSTR strFilename,
+ [out] IDispatch**ppUnk);
+
+ // get a collection of IFilterInfo objects representing the
+ // filters in the graph (returns IDispatch for an object
+ // that supports IAMCollection
+ [propget]
+ HRESULT FilterCollection(
+ [out, retval] IDispatch** ppUnk);
+
+ // get a collection of IRegFilter objects representing the
+ // filters available in the registry
+ [propget]
+ HRESULT RegFilterCollection(
+ [out, retval] IDispatch** ppUnk);
+
+ HRESULT StopWhenReady();
+ }
+
+
+ // provides an event notification scheme passing events
+ // asynchronously to applications. See also IMediaEventSink in
+ // strmif.idl and sdk\h\evcodes.h.
+ //
+ // this interface behaves as if events are held on a queue. A call to
+ // IMediaEventSink::Notify will place an event on this queue. Calling
+ // GetEvent removes the first item off the queue and returns it. Items are
+ // returned in the order they were queued (there is no priority scheme).
+ // The event handle is in a signalled state iff the queue is non-empty.
+ //
+ // Apps that issue multiple Run calls without always picking up the
+ // completion events are advised to call GetEvent or WaitForCompletion
+ // (with a 0 timeout) repeatedly to remove all events from the queue
+ // when in stopped or paused state before each Run method.
+ //
+ // Parameters to events are actually LONG, IUnknown* or BSTR. You need to
+ // look at evcode.h for details of parameters to a specific event code.
+ // In order to correctly free resources, always call FreeEventParams
+ // after receiving an event.
+ //
+
+ [
+ uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IMediaEvent interface"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IMediaEvent : IDispatch
+ {
+ // 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] OAEVENT * 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.
+ //
+ // If this call returns successfully the caller MUST call
+ // FreeEventParams(lEventCode, lParam1, lParam2) to release
+ // resources held inside the event arguments
+ //
+ HRESULT GetEvent(
+ [out] long * lEventCode,
+ [out] LONG_PTR * lParam1,
+ [out] LONG_PTR * 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);
+
+ // 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_PTR lParam1,
+ [in] LONG_PTR lParam2
+ );
+ }
+
+ [
+ uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IMediaEventEx interface"),
+ odl
+ ]
+ interface IMediaEventEx : IMediaEvent
+ {
+
+ // Register a window to send messages to when events occur
+ // Parameters:
+ //
+ // hwnd - handle of window to notify -
+ // pass NULL to stop notification
+ // lMsg - Message id to pass messages with
+ // lInstanceData - will come back in lParam
+ //
+ // The event information must still be retrived by a call
+ // to GetEvent when the window message is received.
+ //
+ // Multiple events may be notified with one window message.
+ //
+ HRESULT SetNotifyWindow(
+ [in] OAHWND hwnd,
+ [in] long lMsg,
+ [in] LONG_PTR lInstanceData
+ );
+
+ // Turn events notification on or off
+ // lNoNotify = 0x00 event notification is ON
+ // lNoNotify = 0x01 event notification is OFF. The
+ // handle returned by GetEventHandle will be signalled at
+ // end of stream
+ HRESULT SetNotifyFlags(
+ [in] long lNoNotifyFlags
+ );
+ HRESULT GetNotifyFlags(
+ [out] long *lplNoNotifyFlags
+ );
+ }
+
+
+
+
+ // seek/cueing for positional media
+ [
+ uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IMediaPosition interface"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IMediaPosition : IDispatch
+ {
+ // properties
+
+ [propget]
+ HRESULT Duration(
+ [out, retval] REFTIME* plength);
+
+ [propput]
+ HRESULT CurrentPosition(
+ [in] REFTIME llTime);
+
+ [propget]
+ HRESULT CurrentPosition(
+ [out, retval] REFTIME* pllTime);
+
+ [propget]
+ HRESULT StopTime(
+ [out, retval] REFTIME* pllTime);
+ [propput]
+ HRESULT StopTime(
+ [in] REFTIME llTime);
+
+ [propget]
+ HRESULT PrerollTime(
+ [out, retval] REFTIME* pllTime);
+ [propput]
+ HRESULT PrerollTime(
+ [in] REFTIME llTime);
+
+ [propput]
+ HRESULT Rate(
+ [in] double dRate);
+ [propget]
+ HRESULT Rate(
+ [out, retval] double * pdRate);
+
+ HRESULT CanSeekForward([out, retval] LONG *pCanSeekForward);
+ HRESULT CanSeekBackward([out, retval] LONG *pCanSeekBackward);
+ }
+
+ // basic audio-related functionality
+ [
+ uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IBasicAudio interface"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IBasicAudio : IDispatch
+ {
+ // properties
+
+ [propput]
+ HRESULT Volume(
+ [in] long lVolume);
+ [propget]
+ HRESULT Volume(
+ [out, retval] long * plVolume);
+
+ [propput]
+ HRESULT Balance(
+ [in] long lBalance);
+ [propget]
+ HRESULT Balance(
+ [out, retval] long * plBalance);
+ }
+
+ // basic window-related functionality
+ [
+ uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IVideoWindow interface"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IVideoWindow : IDispatch
+ {
+ // properties
+
+ // set and get the window title caption
+
+ [propput]
+ HRESULT Caption([in] BSTR strCaption);
+ [propget]
+ HRESULT Caption([out, retval] BSTR *strCaption);
+
+ // change the window styles (as per Win32)
+
+ [propput]
+ HRESULT WindowStyle([in] long WindowStyle);
+ [propget]
+ HRESULT WindowStyle([out, retval] long *WindowStyle);
+
+ // change the extended window styles (as per Win32)
+
+ [propput]
+ HRESULT WindowStyleEx([in] long WindowStyleEx);
+ [propget]
+ HRESULT WindowStyleEx([out, retval] long *WindowStyleEx);
+
+ [propput]
+ HRESULT AutoShow([in] long AutoShow);
+ [propget]
+ HRESULT AutoShow([out, retval] long *AutoShow);
+
+ // change the window state (as per Win32)
+
+ [propput]
+ HRESULT WindowState([in] long WindowState);
+ [propget]
+ HRESULT WindowState([out, retval] long *WindowState);
+
+ // realise the palette in the background
+
+ [propput]
+ HRESULT BackgroundPalette([in] long BackgroundPalette);
+ [propget]
+ HRESULT BackgroundPalette([out, retval] long *pBackgroundPalette);
+
+ // affect the visibility of the window
+
+ [propput]
+ HRESULT Visible([in] long Visible);
+ [propget]
+ HRESULT Visible([out, retval] long *pVisible);
+
+ // change the desktop position of the video window
+
+ [propput]
+ HRESULT Left([in] long Left);
+ [propget]
+ HRESULT Left([out, retval] long *pLeft);
+
+ [propput]
+ HRESULT Width([in] long Width);
+ [propget]
+ HRESULT Width([out, retval] long *pWidth);
+
+ [propput]
+ HRESULT Top([in] long Top);
+ [propget]
+ HRESULT Top([out, retval] long *pTop);
+
+ [propput]
+ HRESULT Height([in] long Height);
+ [propget]
+ HRESULT Height([out, retval] long *pHeight);
+
+ // change the owning window of the video
+
+ [propput]
+ HRESULT Owner([in] OAHWND Owner);
+ [propget]
+ HRESULT Owner([out, retval] OAHWND *Owner);
+
+ // change the window to receive posted messages
+
+ [propput]
+ HRESULT MessageDrain([in] OAHWND Drain);
+ [propget]
+ HRESULT MessageDrain([out, retval] OAHWND *Drain);
+
+ [propget]
+ HRESULT BorderColor([out, retval] long *Color);
+
+ [propput]
+ HRESULT BorderColor([in] long Color);
+
+ [propget]
+ HRESULT FullScreenMode([out, retval] long *FullScreenMode);
+
+ [propput]
+ HRESULT FullScreenMode([in] long FullScreenMode);
+
+ // methods
+
+ // ask the renderer to grab it's window the foreground
+ // and optionally also give the window the input focus
+ HRESULT SetWindowForeground([in] long Focus);
+
+ // owners should pass WM_PALETTECHANGED and WM_SYSCOLORCHANGE
+ // messages on the filter graph so they can be distributed
+ // otherwise child renderers never see these messages go by
+
+ HRESULT NotifyOwnerMessage([in] OAHWND hwnd,
+ [in] long uMsg,
+ [in] LONG_PTR wParam,
+ [in] LONG_PTR lParam
+ );
+
+ // get and set the window position on the desktop
+
+ HRESULT SetWindowPosition([in] long Left,
+ [in] long Top,
+ [in] long Width,
+ [in] long Height);
+
+ HRESULT GetWindowPosition([out] long *pLeft,
+ [out] long *pTop,
+ [out] long *pWidth,
+ [out] long *pHeight);
+
+ // get the ideal sizes for the video image playback (client) area
+
+ HRESULT GetMinIdealImageSize([out] long *pWidth,[out] long *pHeight);
+ HRESULT GetMaxIdealImageSize([out] long *pWidth,[out] long *pHeight);
+
+ // get the restored window size when we're maximised or iconic
+
+ HRESULT GetRestorePosition([out] long *pLeft,
+ [out] long *pTop,
+ [out] long *pWidth,
+ [out] long *pHeight);
+
+ // show and hide cursors useful when fullscreen
+ HRESULT HideCursor([in] long HideCursor);
+ HRESULT IsCursorHidden([out] long *CursorHidden);
+ }
+
+ // basic video-related functionality
+ [
+ uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IBasicVideo interface"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IBasicVideo : IDispatch
+ {
+ // properties
+
+ // Video specific (approximate) bit and frame rates
+
+ [propget]
+ HRESULT AvgTimePerFrame([out, retval] REFTIME *pAvgTimePerFrame);
+
+ [propget]
+ HRESULT BitRate([out, retval] long *pBitRate);
+
+ [propget]
+ HRESULT BitErrorRate([out, retval] long *pBitErrorRate);
+
+ // read the native video size
+
+ [propget]
+ HRESULT VideoWidth([out, retval] long *pVideoWidth);
+
+ [propget]
+ HRESULT VideoHeight([out, retval] long *pVideoHeight);
+
+ // change the source rectangle for the video
+
+ [propput]
+ HRESULT SourceLeft([in] long SourceLeft);
+ [propget]
+ HRESULT SourceLeft([out, retval] long *pSourceLeft);
+
+ [propput]
+ HRESULT SourceWidth([in] long SourceWidth);
+ [propget]
+ HRESULT SourceWidth([out, retval] long *pSourceWidth);
+
+ [propput]
+ HRESULT SourceTop([in] long SourceTop);
+ [propget]
+ HRESULT SourceTop([out, retval] long *pSourceTop);
+
+ [propput]
+ HRESULT SourceHeight([in] long SourceHeight);
+ [propget]
+ HRESULT SourceHeight([out, retval] long *pSourceHeight);
+
+ // change the destination rectangle for the video
+
+ [propput]
+ HRESULT DestinationLeft([in] long DestinationLeft);
+ [propget]
+ HRESULT DestinationLeft([out, retval] long *pDestinationLeft);
+
+ [propput]
+ HRESULT DestinationWidth([in] long DestinationWidth);
+ [propget]
+ HRESULT DestinationWidth([out, retval] long *pDestinationWidth);
+
+ [propput]
+ HRESULT DestinationTop([in] long DestinationTop);
+ [propget]
+ HRESULT DestinationTop([out, retval] long *pDestinationTop);
+
+ [propput]
+ HRESULT DestinationHeight([in] long DestinationHeight);
+ [propget]
+ HRESULT DestinationHeight([out, retval] long *pDestinationHeight);
+
+ // methods
+
+ // get and set the source rectangle position
+
+ HRESULT SetSourcePosition([in] long Left,
+ [in] long Top,
+ [in] long Width,
+ [in] long Height);
+
+ HRESULT GetSourcePosition([out] long *pLeft,
+ [out] long *pTop,
+ [out] long *pWidth,
+ [out] long *pHeight);
+
+ HRESULT SetDefaultSourcePosition();
+
+ // get and set the destination rectangle position
+
+ HRESULT SetDestinationPosition([in] long Left,
+ [in] long Top,
+ [in] long Width,
+ [in] long Height);
+
+ HRESULT GetDestinationPosition([out] long *pLeft,
+ [out] long *pTop,
+ [out] long *pWidth,
+ [out] long *pHeight);
+
+ HRESULT SetDefaultDestinationPosition();
+
+ // get the native video dimensions
+
+ HRESULT GetVideoSize([out] long *pWidth,[out] long *pHeight);
+
+ // get all or some of the current video palette
+
+ HRESULT GetVideoPaletteEntries([in] long StartIndex,
+ [in] long Entries,
+ [out] long *pRetrieved,
+ [out] long *pPalette);
+
+ HRESULT GetCurrentImage([in,out] long *pBufferSize,
+ [out] long *pDIBImage);
+
+ // are we using a default source or destination
+
+ HRESULT IsUsingDefaultSource();
+ HRESULT IsUsingDefaultDestination();
+ }
+
+ // interface extension to IBasicVideo to return preferred aspect ratio
+ [
+ uuid(329bb360-f6ea-11d1-9038-00a0c9697298),
+ helpstring("IBasicVideo2"),
+ odl
+ ]
+ interface IBasicVideo2 : IBasicVideo
+ {
+ // This may not match the native video dimensions because of
+ // non-square pixels or whatever.
+ // The video may not always be displayed in the preferred
+ // aspect ratio for performance reasons
+
+ HRESULT GetPreferredAspectRatio([out] long *plAspectX,
+ [out] long *plAspectY);
+ }
+
+ // interface returned to a command that has been queued via IQueueCommand
+ [
+ uuid(56a868b8-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IDeferredCommand"),
+ odl
+ ]
+ interface IDeferredCommand : IUnknown
+ {
+ HRESULT Cancel();
+ HRESULT Confidence(
+ [out] LONG* pConfidence);
+ HRESULT Postpone(
+ [in] REFTIME newtime);
+ // return value is S_OK if completed. phrResult is set to the
+ // result of the deferred command.
+ HRESULT GetHResult(
+ [out] HRESULT* phrResult);
+ };
+
+ // queue an IDispatch-based command for execution at a specified time
+ [
+ uuid(56a868b7-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("IQueueCommand"),
+ odl
+ ]
+ interface IQueueCommand : IUnknown
+ {
+ HRESULT InvokeAtStreamTime(
+ [out] IDeferredCommand** pCmd,
+ [in] REFTIME time, // at this streamtime
+ [in] GUID* iid, // call this interface
+ [in] long dispidMethod, // ..and this method
+ [in] short wFlags, // method/property
+ [in] long cArgs, // count of args
+ [in] VARIANT* pDispParams, // actual args
+ [in, out] VARIANT* pvarResult, // return value
+ [out] short* puArgErr // which arg in error
+ );
+
+ HRESULT InvokeAtPresentationTime(
+ [out] IDeferredCommand** pCmd,
+ [in] REFTIME time, // at this presentation time
+ [in] GUID* iid, // call this interface
+ [in] long dispidMethod, // ..and this method
+ [in] short wFlags, // method/property
+ [in] long cArgs, // count of args
+ [in] VARIANT* pDispParams, // actual args
+ [in, out] VARIANT* pvarResult, // return value
+ [out] short* puArgErr // which arg in error
+ );
+
+ };
+
+
+
+ // the filgraph object (CLSID_Filgraph)
+ [
+ uuid(e436ebb3-524f-11ce-9f53-0020af0ba770),
+ helpstring("Filtergraph type info")
+ ]
+ coclass FilgraphManager
+ {
+ [default] interface IMediaControl;
+ interface IMediaEvent;
+ interface IMediaPosition;
+ interface IBasicAudio;
+ interface IBasicVideo;
+ interface IVideoWindow;
+
+ };
+
+
+ // represents a filter (you can't QI for IBaseFilter from this object)
+ [
+ uuid(56a868ba-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("FilterInfo"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IFilterInfo : IDispatch
+ {
+ // find a pin given an id - returns an object supporting
+ // IPinInfo
+ HRESULT FindPin(
+ [in] BSTR strPinID,
+ [out] IDispatch** ppUnk);
+
+ // filter name
+ [propget]
+ HRESULT Name(
+ [out, retval] BSTR* strName);
+
+ // Vendor info string
+ [propget]
+ HRESULT VendorInfo(
+ [out, retval] BSTR* strVendorInfo);
+
+ // returns the actual filter object (supports IBaseFilter)
+ [propget]
+ HRESULT Filter(
+ [out, retval] IUnknown **ppUnk);
+
+ // returns an IAMCollection object containing the PinInfo objects
+ // for this filter
+ [propget]
+ HRESULT Pins(
+ [out, retval] IDispatch ** ppUnk);
+
+ // returns -1 if true or 0 if false (OATRUE/FALSE)
+ [propget]
+ HRESULT IsFileSource(
+ [out, retval] LONG * pbIsSource);
+
+ [propget]
+ HRESULT Filename(
+ [out, retval] BSTR* pstrFilename);
+
+ [propput]
+ HRESULT Filename(
+ [in] BSTR strFilename);
+ }
+
+ [
+ uuid(56a868bb-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("Registry Filter Info"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IRegFilterInfo : IDispatch
+ {
+ // get the name of this filter
+ [propget]
+ HRESULT Name(
+ [out, retval] BSTR* strName);
+
+
+ // make an instance of this filter, add it to the graph and
+ // return an IFilterInfo for it.
+ HRESULT Filter(
+ [out] IDispatch** ppUnk);
+ }
+
+ // wrapper for a media type
+ [
+ uuid(56a868bc-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("Media Type"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IMediaTypeInfo : IDispatch
+ {
+ // get the major type GUID as a string
+ [propget]
+ HRESULT Type(
+ [out, retval] BSTR* strType);
+
+ // get the subtype GUID as a string
+ [propget]
+ HRESULT Subtype(
+ [out, retval] BSTR* strType);
+ }
+
+ [
+ uuid(56a868bd-0ad4-11ce-b03a-0020af0ba770),
+ helpstring("Pin Info"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IPinInfo : IDispatch
+ {
+ // get the pin object (IUnknown for an object that
+ // supports IPin
+ [propget]
+ HRESULT Pin(
+ [out, retval] IUnknown** ppUnk);
+
+ // get the PinInfo object for the pin we are connected to
+ [propget]
+ HRESULT ConnectedTo(
+ [out, retval] IDispatch** ppUnk);
+
+ // get the media type on this connection - returns an
+ // object supporting IMediaTypeInfo
+ [propget]
+ HRESULT ConnectionMediaType(
+ [out, retval] IDispatch** ppUnk);
+
+
+ // return the FilterInfo object for the filter this pin
+ // is part of
+ [propget]
+ HRESULT FilterInfo(
+ [out, retval] IDispatch** ppUnk);
+
+ // get the name of this pin
+ [propget]
+ HRESULT Name(
+ [out, retval] BSTR* ppUnk);
+
+ // pin direction
+ [propget]
+ HRESULT Direction(
+ [out, retval] LONG *ppDirection);
+
+ // PinID - can pass to IFilterInfo::FindPin
+ [propget]
+ HRESULT PinID(
+ [out, retval] BSTR* strPinID);
+
+ // collection of preferred media types (IAMCollection)
+ [propget]
+ HRESULT MediaTypes(
+ [out, retval] IDispatch** ppUnk);
+
+ // Connect to the following pin, using other transform
+ // filters as necessary. pPin can support either IPin or IPinInfo
+ HRESULT Connect(
+ [in] IUnknown* pPin);
+
+ // Connect directly to the following pin, not using any intermediate
+ // filters
+ HRESULT ConnectDirect(
+ [in] IUnknown* pPin);
+
+ // Connect directly to the following pin, using the specified
+ // media type only. pPin is an object that must support either
+ // IPin or IPinInfo, and pMediaType must support IMediaTypeInfo.
+ HRESULT ConnectWithType(
+ [in] IUnknown * pPin,
+ [in] IDispatch * pMediaType);
+
+ // disconnect this pin and the corresponding connected pin from
+ // each other. (Calls IPin::Disconnect on both pins).
+ HRESULT Disconnect(void);
+
+ // render this pin using any necessary transform and rendering filters
+ HRESULT Render(void);
+ }
+
+ //--------------------------------------------------------------------
+ //
+ // IAMStats - statistics
+ //
+ // Note that the calls using an index are likely to be much faster
+ //--------------------------------------------------------------------
+
+ [
+ uuid(bc9bcf80-dcd2-11d2-abf6-00a0c905f375),
+ helpstring("Statistics"),
+ odl,
+ oleautomation,
+ dual
+ ]
+ interface IAMStats : IDispatch {
+ // Reset all stats
+ HRESULT Reset();
+
+ // Get number of stats collected
+ [propget]
+ HRESULT Count(
+ [out, retval] LONG* plCount);
+
+ // Pull out a specific value by position
+ HRESULT GetValueByIndex([in] long lIndex,
+ [out] BSTR *szName,
+ [out] long *lCount,
+ [out] double *dLast,
+ [out] double *dAverage,
+ [out] double *dStdDev,
+ [out] double *dMin,
+ [out] double *dMax);
+
+ // Pull out a specific value by name
+ HRESULT GetValueByName([in] BSTR szName,
+ [out] long *lIndex,
+ [out] long *lCount,
+ [out] double *dLast,
+ [out] double *dAverage,
+ [out] double *dStdDev,
+ [out] double *dMin,
+ [out] double *dMax);
+
+
+ // The calls below are for generators of statistics
+
+ // Return the index for a string - optinally create
+ HRESULT GetIndex([in] BSTR szName,
+ [in] long lCreate,
+ [out] long *plIndex);
+
+ // Add a new value
+ HRESULT AddValue([in] long lIndex,
+ [in] double dValue);
+ }
+};