/[cvs]/api/include/DShowIDL/control.odl
ViewVC logotype

Annotation of /api/include/DShowIDL/control.odl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (22 years, 11 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
First import

1 bearsoft 1.1 //==========================================================================;
2     //
3     // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
4     // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
5     // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
6     // PURPOSE.
7     //
8     // Copyright (c) 1992 - 1999 Microsoft Corporation. All Rights Reserved.
9     //
10     //--------------------------------------------------------------------------;
11    
12     // Neutral/English language type library for basic Quartz control interfaces
13    
14     // the quartz type library defines the basic control interfaces
15     [
16     uuid(56a868b0-0ad4-11ce-b03a-0020af0ba770),
17     helpstring("ActiveMovie control type library"),
18     lcid(0x0000),
19     version(1.0)
20     ]
21     library QuartzTypeLib
22     {
23     importlib("STDOLE32.TLB");
24    
25     // types are restricted to be automation-compatible
26     typedef double REFTIME; // ReferenceTime
27     typedef LONG_PTR OAEVENT; // should be a HANDLE
28     typedef LONG_PTR OAHWND; // should be an hwnd
29    
30     // from strmif.idl
31     typedef long OAFilterState;
32    
33     // collection interface - represents a collection of IUnknowns
34     // this is used below to collect filter-info objects, registry-filters
35     // pin-info objects and wrapped media type objects
36     [
37     uuid(56a868b9-0ad4-11ce-b03a-0020af0ba770),
38     helpstring("Collection"),
39     odl,
40     oleautomation,
41     dual
42     ]
43     interface IAMCollection : IDispatch
44     {
45     // number of items in collection
46     [propget]
47     HRESULT Count(
48     [out, retval] LONG* plCount);
49    
50     // return IUnknown for contained item by index
51     HRESULT Item(
52     [in] long lItem,
53     [out] IUnknown** ppUnk);
54    
55     // return IUnknown for an object that implements IEnumVARIANT on
56     // this collection
57     [propget]
58     HRESULT _NewEnum(
59     [out, retval] IUnknown** ppUnk);
60     }
61    
62    
63     // core control providing state control
64     [
65     uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
66     helpstring("IMediaControl interface"),
67     odl,
68     oleautomation,
69     dual
70     ]
71     interface IMediaControl : IDispatch
72     {
73     // methods
74     HRESULT Run();
75     HRESULT Pause();
76     HRESULT Stop();
77    
78     //returns the state. same semantics as IMediaFilter::GetState
79    
80     HRESULT GetState(
81     [in] LONG msTimeout,
82     [out] OAFilterState* pfs);
83    
84     // adds and connects filters needed to play the specified file
85     // (same as IFilterGraph::RenderFile)
86     HRESULT RenderFile(
87     [in] BSTR strFilename);
88    
89     // adds to the graph the source filter that can read this file,
90     // and returns an IFilterInfo object for it (actually returns
91     // an IDispatch for the IFilterInfo object).
92     HRESULT AddSourceFilter(
93     [in] BSTR strFilename,
94     [out] IDispatch**ppUnk);
95    
96     // get a collection of IFilterInfo objects representing the
97     // filters in the graph (returns IDispatch for an object
98     // that supports IAMCollection
99     [propget]
100     HRESULT FilterCollection(
101     [out, retval] IDispatch** ppUnk);
102    
103     // get a collection of IRegFilter objects representing the
104     // filters available in the registry
105     [propget]
106     HRESULT RegFilterCollection(
107     [out, retval] IDispatch** ppUnk);
108    
109     HRESULT StopWhenReady();
110     }
111    
112    
113     // provides an event notification scheme passing events
114     // asynchronously to applications. See also IMediaEventSink in
115     // strmif.idl and sdk\h\evcodes.h.
116     //
117     // this interface behaves as if events are held on a queue. A call to
118     // IMediaEventSink::Notify will place an event on this queue. Calling
119     // GetEvent removes the first item off the queue and returns it. Items are
120     // returned in the order they were queued (there is no priority scheme).
121     // The event handle is in a signalled state iff the queue is non-empty.
122     //
123     // Apps that issue multiple Run calls without always picking up the
124     // completion events are advised to call GetEvent or WaitForCompletion
125     // (with a 0 timeout) repeatedly to remove all events from the queue
126     // when in stopped or paused state before each Run method.
127     //
128     // Parameters to events are actually LONG, IUnknown* or BSTR. You need to
129     // look at evcode.h for details of parameters to a specific event code.
130     // In order to correctly free resources, always call FreeEventParams
131     // after receiving an event.
132     //
133    
134     [
135     uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
136     helpstring("IMediaEvent interface"),
137     odl,
138     oleautomation,
139     dual
140     ]
141     interface IMediaEvent : IDispatch
142     {
143     // get back the event handle. This is manual-reset
144     // (don't - it's reset by the event mechanism) and remains set
145     // when events are queued, and reset when the queue is empty.
146     HRESULT GetEventHandle(
147     [out] OAEVENT * hEvent);
148    
149     // remove the next event notification from the head of the queue and
150     // return it. Waits up to msTimeout millisecs if there are no events.
151     // if a timeout occurs without any events, this method will return
152     // E_ABORT, and the value of the event code and other parameters
153     // is undefined.
154     //
155     // If this call returns successfully the caller MUST call
156     // FreeEventParams(lEventCode, lParam1, lParam2) to release
157     // resources held inside the event arguments
158     //
159     HRESULT GetEvent(
160     [out] long * lEventCode,
161     [out] LONG_PTR * lParam1,
162     [out] LONG_PTR * lParam2,
163     [in] long msTimeout
164     );
165    
166     // Calls GetEvent repeatedly discarding events until it finds a
167     // completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
168     // The completion event is removed from the queue and returned
169     // in pEvCode. Note that the object is still in running mode until
170     // a Pause or Stop call is made.
171     // If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
172     // returned.
173     HRESULT WaitForCompletion(
174     [in] long msTimeout,
175     [out] long * pEvCode);
176    
177     // cancels any system handling of the specified event code
178     // and ensures that the events are passed straight to the application
179     // (via GetEvent) and not handled. A good example of this is
180     // EC_REPAINT: default handling for this ensures the painting of the
181     // window and does not get posted to the app.
182     HRESULT CancelDefaultHandling(
183     [in] long lEvCode);
184    
185     // restore the normal system default handling that may have been
186     // cancelled by CancelDefaultHandling().
187     HRESULT RestoreDefaultHandling( [in] long lEvCode);
188    
189     // Free any resources associated with the parameters to an event.
190     // Event parameters may be LONGs, IUnknown* or BSTR. No action
191     // is taken with LONGs. IUnknown are passed addrefed and need a
192     // Release call. BSTR are allocated by the task allocator and will be
193     // freed by calling the task allocator.
194     HRESULT FreeEventParams(
195     [in] long lEvCode,
196     [in] LONG_PTR lParam1,
197     [in] LONG_PTR lParam2
198     );
199     }
200    
201     [
202     uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
203     helpstring("IMediaEventEx interface"),
204     odl
205     ]
206     interface IMediaEventEx : IMediaEvent
207     {
208    
209     // Register a window to send messages to when events occur
210     // Parameters:
211     //
212     // hwnd - handle of window to notify -
213     // pass NULL to stop notification
214     // lMsg - Message id to pass messages with
215     // lInstanceData - will come back in lParam
216     //
217     // The event information must still be retrived by a call
218     // to GetEvent when the window message is received.
219     //
220     // Multiple events may be notified with one window message.
221     //
222     HRESULT SetNotifyWindow(
223     [in] OAHWND hwnd,
224     [in] long lMsg,
225     [in] LONG_PTR lInstanceData
226     );
227    
228     // Turn events notification on or off
229     // lNoNotify = 0x00 event notification is ON
230     // lNoNotify = 0x01 event notification is OFF. The
231     // handle returned by GetEventHandle will be signalled at
232     // end of stream
233     HRESULT SetNotifyFlags(
234     [in] long lNoNotifyFlags
235     );
236     HRESULT GetNotifyFlags(
237     [out] long *lplNoNotifyFlags
238     );
239     }
240    
241    
242    
243    
244     // seek/cueing for positional media
245     [
246     uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770),
247     helpstring("IMediaPosition interface"),
248     odl,
249     oleautomation,
250     dual
251     ]
252     interface IMediaPosition : IDispatch
253     {
254     // properties
255    
256     [propget]
257     HRESULT Duration(
258     [out, retval] REFTIME* plength);
259    
260     [propput]
261     HRESULT CurrentPosition(
262     [in] REFTIME llTime);
263    
264     [propget]
265     HRESULT CurrentPosition(
266     [out, retval] REFTIME* pllTime);
267    
268     [propget]
269     HRESULT StopTime(
270     [out, retval] REFTIME* pllTime);
271     [propput]
272     HRESULT StopTime(
273     [in] REFTIME llTime);
274    
275     [propget]
276     HRESULT PrerollTime(
277     [out, retval] REFTIME* pllTime);
278     [propput]
279     HRESULT PrerollTime(
280     [in] REFTIME llTime);
281    
282     [propput]
283     HRESULT Rate(
284     [in] double dRate);
285     [propget]
286     HRESULT Rate(
287     [out, retval] double * pdRate);
288    
289     HRESULT CanSeekForward([out, retval] LONG *pCanSeekForward);
290     HRESULT CanSeekBackward([out, retval] LONG *pCanSeekBackward);
291     }
292    
293     // basic audio-related functionality
294     [
295     uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
296     helpstring("IBasicAudio interface"),
297     odl,
298     oleautomation,
299     dual
300     ]
301     interface IBasicAudio : IDispatch
302     {
303     // properties
304    
305     [propput]
306     HRESULT Volume(
307     [in] long lVolume);
308     [propget]
309     HRESULT Volume(
310     [out, retval] long * plVolume);
311    
312     [propput]
313     HRESULT Balance(
314     [in] long lBalance);
315     [propget]
316     HRESULT Balance(
317     [out, retval] long * plBalance);
318     }
319    
320     // basic window-related functionality
321     [
322     uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
323     helpstring("IVideoWindow interface"),
324     odl,
325     oleautomation,
326     dual
327     ]
328     interface IVideoWindow : IDispatch
329     {
330     // properties
331    
332     // set and get the window title caption
333    
334     [propput]
335     HRESULT Caption([in] BSTR strCaption);
336     [propget]
337     HRESULT Caption([out, retval] BSTR *strCaption);
338    
339     // change the window styles (as per Win32)
340    
341     [propput]
342     HRESULT WindowStyle([in] long WindowStyle);
343     [propget]
344     HRESULT WindowStyle([out, retval] long *WindowStyle);
345    
346     // change the extended window styles (as per Win32)
347    
348     [propput]
349     HRESULT WindowStyleEx([in] long WindowStyleEx);
350     [propget]
351     HRESULT WindowStyleEx([out, retval] long *WindowStyleEx);
352    
353     [propput]
354     HRESULT AutoShow([in] long AutoShow);
355     [propget]
356     HRESULT AutoShow([out, retval] long *AutoShow);
357    
358     // change the window state (as per Win32)
359    
360     [propput]
361     HRESULT WindowState([in] long WindowState);
362     [propget]
363     HRESULT WindowState([out, retval] long *WindowState);
364    
365     // realise the palette in the background
366    
367     [propput]
368     HRESULT BackgroundPalette([in] long BackgroundPalette);
369     [propget]
370     HRESULT BackgroundPalette([out, retval] long *pBackgroundPalette);
371    
372     // affect the visibility of the window
373    
374     [propput]
375     HRESULT Visible([in] long Visible);
376     [propget]
377     HRESULT Visible([out, retval] long *pVisible);
378    
379     // change the desktop position of the video window
380    
381     [propput]
382     HRESULT Left([in] long Left);
383     [propget]
384     HRESULT Left([out, retval] long *pLeft);
385    
386     [propput]
387     HRESULT Width([in] long Width);
388     [propget]
389     HRESULT Width([out, retval] long *pWidth);
390    
391     [propput]
392     HRESULT Top([in] long Top);
393     [propget]
394     HRESULT Top([out, retval] long *pTop);
395    
396     [propput]
397     HRESULT Height([in] long Height);
398     [propget]
399     HRESULT Height([out, retval] long *pHeight);
400    
401     // change the owning window of the video
402    
403     [propput]
404     HRESULT Owner([in] OAHWND Owner);
405     [propget]
406     HRESULT Owner([out, retval] OAHWND *Owner);
407    
408     // change the window to receive posted messages
409    
410     [propput]
411     HRESULT MessageDrain([in] OAHWND Drain);
412     [propget]
413     HRESULT MessageDrain([out, retval] OAHWND *Drain);
414    
415     [propget]
416     HRESULT BorderColor([out, retval] long *Color);
417    
418     [propput]
419     HRESULT BorderColor([in] long Color);
420    
421     [propget]
422     HRESULT FullScreenMode([out, retval] long *FullScreenMode);
423    
424     [propput]
425     HRESULT FullScreenMode([in] long FullScreenMode);
426    
427     // methods
428    
429     // ask the renderer to grab it's window the foreground
430     // and optionally also give the window the input focus
431     HRESULT SetWindowForeground([in] long Focus);
432    
433     // owners should pass WM_PALETTECHANGED and WM_SYSCOLORCHANGE
434     // messages on the filter graph so they can be distributed
435     // otherwise child renderers never see these messages go by
436    
437     HRESULT NotifyOwnerMessage([in] OAHWND hwnd,
438     [in] long uMsg,
439     [in] LONG_PTR wParam,
440     [in] LONG_PTR lParam
441     );
442    
443     // get and set the window position on the desktop
444    
445     HRESULT SetWindowPosition([in] long Left,
446     [in] long Top,
447     [in] long Width,
448     [in] long Height);
449    
450     HRESULT GetWindowPosition([out] long *pLeft,
451     [out] long *pTop,
452     [out] long *pWidth,
453     [out] long *pHeight);
454    
455     // get the ideal sizes for the video image playback (client) area
456    
457     HRESULT GetMinIdealImageSize([out] long *pWidth,[out] long *pHeight);
458     HRESULT GetMaxIdealImageSize([out] long *pWidth,[out] long *pHeight);
459    
460     // get the restored window size when we're maximised or iconic
461    
462     HRESULT GetRestorePosition([out] long *pLeft,
463     [out] long *pTop,
464     [out] long *pWidth,
465     [out] long *pHeight);
466    
467     // show and hide cursors useful when fullscreen
468     HRESULT HideCursor([in] long HideCursor);
469     HRESULT IsCursorHidden([out] long *CursorHidden);
470     }
471    
472     // basic video-related functionality
473     [
474     uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
475     helpstring("IBasicVideo interface"),
476     odl,
477     oleautomation,
478     dual
479     ]
480     interface IBasicVideo : IDispatch
481     {
482     // properties
483    
484     // Video specific (approximate) bit and frame rates
485    
486     [propget]
487     HRESULT AvgTimePerFrame([out, retval] REFTIME *pAvgTimePerFrame);
488    
489     [propget]
490     HRESULT BitRate([out, retval] long *pBitRate);
491    
492     [propget]
493     HRESULT BitErrorRate([out, retval] long *pBitErrorRate);
494    
495     // read the native video size
496    
497     [propget]
498     HRESULT VideoWidth([out, retval] long *pVideoWidth);
499    
500     [propget]
501     HRESULT VideoHeight([out, retval] long *pVideoHeight);
502    
503     // change the source rectangle for the video
504    
505     [propput]
506     HRESULT SourceLeft([in] long SourceLeft);
507     [propget]
508     HRESULT SourceLeft([out, retval] long *pSourceLeft);
509    
510     [propput]
511     HRESULT SourceWidth([in] long SourceWidth);
512     [propget]
513     HRESULT SourceWidth([out, retval] long *pSourceWidth);
514    
515     [propput]
516     HRESULT SourceTop([in] long SourceTop);
517     [propget]
518     HRESULT SourceTop([out, retval] long *pSourceTop);
519    
520     [propput]
521     HRESULT SourceHeight([in] long SourceHeight);
522     [propget]
523     HRESULT SourceHeight([out, retval] long *pSourceHeight);
524    
525     // change the destination rectangle for the video
526    
527     [propput]
528     HRESULT DestinationLeft([in] long DestinationLeft);
529     [propget]
530     HRESULT DestinationLeft([out, retval] long *pDestinationLeft);
531    
532     [propput]
533     HRESULT DestinationWidth([in] long DestinationWidth);
534     [propget]
535     HRESULT DestinationWidth([out, retval] long *pDestinationWidth);
536    
537     [propput]
538     HRESULT DestinationTop([in] long DestinationTop);
539     [propget]
540     HRESULT DestinationTop([out, retval] long *pDestinationTop);
541    
542     [propput]
543     HRESULT DestinationHeight([in] long DestinationHeight);
544     [propget]
545     HRESULT DestinationHeight([out, retval] long *pDestinationHeight);
546    
547     // methods
548    
549     // get and set the source rectangle position
550    
551     HRESULT SetSourcePosition([in] long Left,
552     [in] long Top,
553     [in] long Width,
554     [in] long Height);
555    
556     HRESULT GetSourcePosition([out] long *pLeft,
557     [out] long *pTop,
558     [out] long *pWidth,
559     [out] long *pHeight);
560    
561     HRESULT SetDefaultSourcePosition();
562    
563     // get and set the destination rectangle position
564    
565     HRESULT SetDestinationPosition([in] long Left,
566     [in] long Top,
567     [in] long Width,
568     [in] long Height);
569    
570     HRESULT GetDestinationPosition([out] long *pLeft,
571     [out] long *pTop,
572     [out] long *pWidth,
573     [out] long *pHeight);
574    
575     HRESULT SetDefaultDestinationPosition();
576    
577     // get the native video dimensions
578    
579     HRESULT GetVideoSize([out] long *pWidth,[out] long *pHeight);
580    
581     // get all or some of the current video palette
582    
583     HRESULT GetVideoPaletteEntries([in] long StartIndex,
584     [in] long Entries,
585     [out] long *pRetrieved,
586     [out] long *pPalette);
587    
588     HRESULT GetCurrentImage([in,out] long *pBufferSize,
589     [out] long *pDIBImage);
590    
591     // are we using a default source or destination
592    
593     HRESULT IsUsingDefaultSource();
594     HRESULT IsUsingDefaultDestination();
595     }
596    
597     // interface extension to IBasicVideo to return preferred aspect ratio
598     [
599     uuid(329bb360-f6ea-11d1-9038-00a0c9697298),
600     helpstring("IBasicVideo2"),
601     odl
602     ]
603     interface IBasicVideo2 : IBasicVideo
604     {
605     // This may not match the native video dimensions because of
606     // non-square pixels or whatever.
607     // The video may not always be displayed in the preferred
608     // aspect ratio for performance reasons
609    
610     HRESULT GetPreferredAspectRatio([out] long *plAspectX,
611     [out] long *plAspectY);
612     }
613    
614     // interface returned to a command that has been queued via IQueueCommand
615     [
616     uuid(56a868b8-0ad4-11ce-b03a-0020af0ba770),
617     helpstring("IDeferredCommand"),
618     odl
619     ]
620     interface IDeferredCommand : IUnknown
621     {
622     HRESULT Cancel();
623     HRESULT Confidence(
624     [out] LONG* pConfidence);
625     HRESULT Postpone(
626     [in] REFTIME newtime);
627     // return value is S_OK if completed. phrResult is set to the
628     // result of the deferred command.
629     HRESULT GetHResult(
630     [out] HRESULT* phrResult);
631     };
632    
633     // queue an IDispatch-based command for execution at a specified time
634     [
635     uuid(56a868b7-0ad4-11ce-b03a-0020af0ba770),
636     helpstring("IQueueCommand"),
637     odl
638     ]
639     interface IQueueCommand : IUnknown
640     {
641     HRESULT InvokeAtStreamTime(
642     [out] IDeferredCommand** pCmd,
643     [in] REFTIME time, // at this streamtime
644     [in] GUID* iid, // call this interface
645     [in] long dispidMethod, // ..and this method
646     [in] short wFlags, // method/property
647     [in] long cArgs, // count of args
648     [in] VARIANT* pDispParams, // actual args
649     [in, out] VARIANT* pvarResult, // return value
650     [out] short* puArgErr // which arg in error
651     );
652    
653     HRESULT InvokeAtPresentationTime(
654     [out] IDeferredCommand** pCmd,
655     [in] REFTIME time, // at this presentation time
656     [in] GUID* iid, // call this interface
657     [in] long dispidMethod, // ..and this method
658     [in] short wFlags, // method/property
659     [in] long cArgs, // count of args
660     [in] VARIANT* pDispParams, // actual args
661     [in, out] VARIANT* pvarResult, // return value
662     [out] short* puArgErr // which arg in error
663     );
664    
665     };
666    
667    
668    
669     // the filgraph object (CLSID_Filgraph)
670     [
671     uuid(e436ebb3-524f-11ce-9f53-0020af0ba770),
672     helpstring("Filtergraph type info")
673     ]
674     coclass FilgraphManager
675     {
676     [default] interface IMediaControl;
677     interface IMediaEvent;
678     interface IMediaPosition;
679     interface IBasicAudio;
680     interface IBasicVideo;
681     interface IVideoWindow;
682    
683     };
684    
685    
686     // represents a filter (you can't QI for IBaseFilter from this object)
687     [
688     uuid(56a868ba-0ad4-11ce-b03a-0020af0ba770),
689     helpstring("FilterInfo"),
690     odl,
691     oleautomation,
692     dual
693     ]
694     interface IFilterInfo : IDispatch
695     {
696     // find a pin given an id - returns an object supporting
697     // IPinInfo
698     HRESULT FindPin(
699     [in] BSTR strPinID,
700     [out] IDispatch** ppUnk);
701    
702     // filter name
703     [propget]
704     HRESULT Name(
705     [out, retval] BSTR* strName);
706    
707     // Vendor info string
708     [propget]
709     HRESULT VendorInfo(
710     [out, retval] BSTR* strVendorInfo);
711    
712     // returns the actual filter object (supports IBaseFilter)
713     [propget]
714     HRESULT Filter(
715     [out, retval] IUnknown **ppUnk);
716    
717     // returns an IAMCollection object containing the PinInfo objects
718     // for this filter
719     [propget]
720     HRESULT Pins(
721     [out, retval] IDispatch ** ppUnk);
722    
723     // returns -1 if true or 0 if false (OATRUE/FALSE)
724     [propget]
725     HRESULT IsFileSource(
726     [out, retval] LONG * pbIsSource);
727    
728     [propget]
729     HRESULT Filename(
730     [out, retval] BSTR* pstrFilename);
731    
732     [propput]
733     HRESULT Filename(
734     [in] BSTR strFilename);
735     }
736    
737     [
738     uuid(56a868bb-0ad4-11ce-b03a-0020af0ba770),
739     helpstring("Registry Filter Info"),
740     odl,
741     oleautomation,
742     dual
743     ]
744     interface IRegFilterInfo : IDispatch
745     {
746     // get the name of this filter
747     [propget]
748     HRESULT Name(
749     [out, retval] BSTR* strName);
750    
751    
752     // make an instance of this filter, add it to the graph and
753     // return an IFilterInfo for it.
754     HRESULT Filter(
755     [out] IDispatch** ppUnk);
756     }
757    
758     // wrapper for a media type
759     [
760     uuid(56a868bc-0ad4-11ce-b03a-0020af0ba770),
761     helpstring("Media Type"),
762     odl,
763     oleautomation,
764     dual
765     ]
766     interface IMediaTypeInfo : IDispatch
767     {
768     // get the major type GUID as a string
769     [propget]
770     HRESULT Type(
771     [out, retval] BSTR* strType);
772    
773     // get the subtype GUID as a string
774     [propget]
775     HRESULT Subtype(
776     [out, retval] BSTR* strType);
777     }
778    
779     [
780     uuid(56a868bd-0ad4-11ce-b03a-0020af0ba770),
781     helpstring("Pin Info"),
782     odl,
783     oleautomation,
784     dual
785     ]
786     interface IPinInfo : IDispatch
787     {
788     // get the pin object (IUnknown for an object that
789     // supports IPin
790     [propget]
791     HRESULT Pin(
792     [out, retval] IUnknown** ppUnk);
793    
794     // get the PinInfo object for the pin we are connected to
795     [propget]
796     HRESULT ConnectedTo(
797     [out, retval] IDispatch** ppUnk);
798    
799     // get the media type on this connection - returns an
800     // object supporting IMediaTypeInfo
801     [propget]
802     HRESULT ConnectionMediaType(
803     [out, retval] IDispatch** ppUnk);
804    
805    
806     // return the FilterInfo object for the filter this pin
807     // is part of
808     [propget]
809     HRESULT FilterInfo(
810     [out, retval] IDispatch** ppUnk);
811    
812     // get the name of this pin
813     [propget]
814     HRESULT Name(
815     [out, retval] BSTR* ppUnk);
816    
817     // pin direction
818     [propget]
819     HRESULT Direction(
820     [out, retval] LONG *ppDirection);
821    
822     // PinID - can pass to IFilterInfo::FindPin
823     [propget]
824     HRESULT PinID(
825     [out, retval] BSTR* strPinID);
826    
827     // collection of preferred media types (IAMCollection)
828     [propget]
829     HRESULT MediaTypes(
830     [out, retval] IDispatch** ppUnk);
831    
832     // Connect to the following pin, using other transform
833     // filters as necessary. pPin can support either IPin or IPinInfo
834     HRESULT Connect(
835     [in] IUnknown* pPin);
836    
837     // Connect directly to the following pin, not using any intermediate
838     // filters
839     HRESULT ConnectDirect(
840     [in] IUnknown* pPin);
841    
842     // Connect directly to the following pin, using the specified
843     // media type only. pPin is an object that must support either
844     // IPin or IPinInfo, and pMediaType must support IMediaTypeInfo.
845     HRESULT ConnectWithType(
846     [in] IUnknown * pPin,
847     [in] IDispatch * pMediaType);
848    
849     // disconnect this pin and the corresponding connected pin from
850     // each other. (Calls IPin::Disconnect on both pins).
851     HRESULT Disconnect(void);
852    
853     // render this pin using any necessary transform and rendering filters
854     HRESULT Render(void);
855     }
856    
857     //--------------------------------------------------------------------
858     //
859     // IAMStats - statistics
860     //
861     // Note that the calls using an index are likely to be much faster
862     //--------------------------------------------------------------------
863    
864     [
865     uuid(bc9bcf80-dcd2-11d2-abf6-00a0c905f375),
866     helpstring("Statistics"),
867     odl,
868     oleautomation,
869     dual
870     ]
871     interface IAMStats : IDispatch {
872     // Reset all stats
873     HRESULT Reset();
874    
875     // Get number of stats collected
876     [propget]
877     HRESULT Count(
878     [out, retval] LONG* plCount);
879    
880     // Pull out a specific value by position
881     HRESULT GetValueByIndex([in] long lIndex,
882     [out] BSTR *szName,
883     [out] long *lCount,
884     [out] double *dLast,
885     [out] double *dAverage,
886     [out] double *dStdDev,
887     [out] double *dMin,
888     [out] double *dMax);
889    
890     // Pull out a specific value by name
891     HRESULT GetValueByName([in] BSTR szName,
892     [out] long *lIndex,
893     [out] long *lCount,
894     [out] double *dLast,
895     [out] double *dAverage,
896     [out] double *dStdDev,
897     [out] double *dMin,
898     [out] double *dMax);
899    
900    
901     // The calls below are for generators of statistics
902    
903     // Return the index for a string - optinally create
904     HRESULT GetIndex([in] BSTR szName,
905     [in] long lCreate,
906     [out] long *plIndex);
907    
908     // Add a new value
909     HRESULT AddValue([in] long lIndex,
910     [in] double dValue);
911     }
912     };

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26