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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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