ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/axextend.idl
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
File size: 37809 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 /*
2 * Copyright (C) 2002 Robert Shearman
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 interface IAMAnalogVideoDecoder;
20 interface IAMAnalogVideoEncoder;
21 interface IAMAudioInputMixer;
22 interface IAMAudioRendererStats;
23 interface IAMBufferNegotiation;
24 interface IAMCameraControl;
25 interface IAMCertifiedOutputProtection;
26 interface IAMClockSlave;
27 interface IAMCopyCaptureFileProgress;
28 interface IAMCrossbar;
29 interface IAMDevMemoryAllocator;
30 interface IAMDevMemoryControl;
31 interface IAMDroppedFrames;
32 interface IAMExtDevice;
33 interface IAMExtTransport;
34 interface IAMGraphStreams;
35 interface IAMLatency;
36 interface IAMOpenProgress;
37 interface IAMOverlayFX;
38 interface IAMPhysicalPinInfo;
39 interface IAMPushSource;
40 interface IAMStreamConfig;
41 interface IAMTimecodeDisplay;
42 interface IAMTimecodeGenerator;
43 interface IAMTimecodeReader;
44 interface IAMTVTuner;
45 interface IAMVfwCaptureDialogs;
46 interface IAMVfwCompressDialogs;
47 interface IAMVideoCompression;
48 interface IAMVideoDecimationProperties;
49 interface IAMVideoProcAmp;
50 interface IAMGraphBuilderCallback;
51 interface ICaptureGraphBuilder;
52 interface ICaptureGraphBuilder2;
53 interface IConfigAviMux;
54 interface IConfigInterleaving;
55 interface IDecimateVideoImage;
56 interface IDrawVideoImage;
57 interface IEnumRegFilters;
58 interface IEnumStreamIdMap;
59 interface IFileSourceFilter;
60 interface IFileSinkFilter;
61 interface IFileSinkFilter2;
62 interface IFilterMapper;
63 interface IFilterMapper2;
64 interface IGraphBuilder;
65 interface IKsPropertySet;
66 interface IMediaEventSink;
67 interface IMpeg2Demultiplexer;
68 interface IMPEG2StreamIdMap;
69 interface IOverlay;
70 interface IOverlayNotify;
71 interface IOverlayNotify2;
72 interface IQualityControl;
73 interface ISeekingPassThru;
74
75 #include <axextendenums.h>
76
77 typedef struct
78 {
79 CLSID Clsid;
80 LPWSTR Name;
81 } REGFILTER;
82
83 typedef enum tagTVAudioMode {
84 AMTVAUDIO_MODE_MONO = 0x0001,
85 AMTVAUDIO_MODE_STEREO = 0x0002,
86 AMTVAUDIO_MODE_LANG_A = 0x0010,
87 AMTVAUDIO_MODE_LANG_B = 0x0020,
88 AMTVAUDIO_MODE_LANG_C = 0x0040,
89 AMTVAUDIO_PRESET_STEREO = 0x0200,
90 AMTVAUDIO_PRESET_LANG_A = 0x1000,
91 AMTVAUDIO_PRESET_LANG_B = 0x2000,
92 AMTVAUDIO_PRESET_LANG_C = 0x4000
93 } TVAudioMode;
94
95 [
96 object,
97 uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
98 pointer_default(unique)
99 ]
100 interface IEnumRegFilters : IUnknown
101 {
102 HRESULT Next
103 ( [in] ULONG cFilters,
104 [out] REGFILTER ** apRegFilter,
105 [out] ULONG * pcFetched
106 );
107
108 HRESULT Skip(
109 [in] ULONG cFilters
110 );
111
112 HRESULT Reset(void);
113
114 HRESULT Clone(
115 [out] IEnumRegFilters **ppEnum
116 );
117 }
118
119
120 typedef IEnumRegFilters *PENUMREGFILTERS;
121
122 [
123 object,
124 uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
125 pointer_default(unique)
126 ]
127 interface IFilterMapper : IUnknown
128 {
129 enum { MERIT_PREFERRED = 0x800000,
130 MERIT_NORMAL = 0x600000,
131 MERIT_UNLIKELY = 0x400000,
132 MERIT_DO_NOT_USE = 0x200000,
133 MERIT_SW_COMPRESSOR = 0x100000,
134 MERIT_HW_COMPRESSOR = 0x100050
135 };
136
137 HRESULT RegisterFilter
138 ( [in] CLSID clsid,
139 [in] LPCWSTR Name,
140 [in] DWORD dwMerit
141 );
142
143 HRESULT RegisterFilterInstance
144 ( [in] CLSID clsid,
145 [in] LPCWSTR Name,
146 [out] CLSID *MRId
147 );
148
149
150 HRESULT RegisterPin
151 ( [in] CLSID Filter,
152 [in] LPCWSTR Name,
153 [in] BOOL bRendered,
154 [in] BOOL bOutput,
155 [in] BOOL bZero,
156 [in] BOOL bMany,
157 [in] CLSID ConnectsToFilter,
158 [in] LPCWSTR ConnectsToPin
159 );
160
161 HRESULT RegisterPinType
162 ( [in] CLSID clsFilter,
163 [in] LPCWSTR strName,
164 [in] CLSID clsMajorType,
165 [in] CLSID clsSubType
166 );
167
168
169 HRESULT UnregisterFilter
170 ( [in] CLSID Filter
171 );
172
173
174 HRESULT UnregisterFilterInstance
175 ( [in] CLSID MRId
176 );
177
178
179 HRESULT UnregisterPin
180 ( [in] CLSID Filter,
181 [in] LPCWSTR Name
182 );
183
184 HRESULT EnumMatchingFilters
185 ( [out] IEnumRegFilters **ppEnum,
186 [in] DWORD dwMerit,
187 [in] BOOL bInputNeeded,
188 [in] CLSID clsInMaj,
189 [in] CLSID clsInSub,
190 [in] BOOL bRender,
191 [in] BOOL bOutputNeeded,
192 [in] CLSID clsOutMaj,
193 [in] CLSID clsOutSub
194 );
195
196 }
197
198 typedef struct
199 {
200 const CLSID * clsMajorType;
201 const CLSID * clsMinorType;
202 } REGPINTYPES;
203
204 typedef struct
205 {
206 LPWSTR strName;
207 BOOL bRendered;
208 BOOL bOutput;
209 BOOL bZero;
210 BOOL bMany;
211 const CLSID * clsConnectsToFilter;
212 const WCHAR * strConnectsToPin;
213 UINT nMediaTypes;
214 const REGPINTYPES * lpMediaType;
215 } REGFILTERPINS;
216
217 typedef struct
218 {
219 CLSID clsMedium;
220 DWORD dw1;
221 DWORD dw2;
222 } REGPINMEDIUM;
223
224 enum
225 {
226 REG_PINFLAG_B_ZERO = 0x1,
227 REG_PINFLAG_B_RENDERER = 0x2,
228 REG_PINFLAG_B_MANY = 0x4,
229 REG_PINFLAG_B_OUTPUT = 0x8
230 };
231
232
233 typedef struct
234 {
235 DWORD dwFlags;
236 UINT cInstances;
237 UINT nMediaTypes;
238 [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
239 UINT nMediums;
240 [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
241 const CLSID *clsPinCategory;
242 } REGFILTERPINS2;
243
244 typedef struct
245 {
246 DWORD dwVersion;
247 DWORD dwMerit;
248 [switch_is(dwVersion)] [switch_type(DWORD)] union
249 {
250 [case(1)]
251 struct
252 {
253 ULONG cPins;
254 [size_is(cPins)] const REGFILTERPINS *rgPins;
255 };
256
257 [case(2)]
258 struct
259 {
260 ULONG cPins2;
261 [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
262 };
263
264 [default]
265 ;
266 };
267
268 } REGFILTER2;
269
270
271 [
272 object,
273 uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
274 pointer_default(unique)
275 ]
276 interface IFilterMapper2 : IUnknown
277 {
278 HRESULT CreateCategory
279 ( [in] REFCLSID clsidCategory,
280 [in] DWORD dwCategoryMerit,
281 [in] LPCWSTR Description
282 );
283
284 HRESULT UnregisterFilter
285 ( [in] const CLSID *pclsidCategory,
286 [in] LPCOLESTR szInstance,
287 [in] REFCLSID Filter
288 );
289
290 HRESULT RegisterFilter
291 ( [in] REFCLSID clsidFilter,
292 [in] LPCWSTR Name,
293 [in, out] IMoniker **ppMoniker,
294 [in] const CLSID *pclsidCategory,
295 [in] LPCOLESTR szInstance,
296 [in] const REGFILTER2 *prf2
297 );
298
299 HRESULT EnumMatchingFilters
300 ( [out] IEnumMoniker **ppEnum,
301 [in] DWORD dwFlags,
302 [in] BOOL bExactMatch,
303 [in] DWORD dwMerit,
304 [in] BOOL bInputNeeded,
305 [in] DWORD cInputTypes,
306 [size_is(cInputTypes*2)] const GUID *pInputTypes,
307 [in] const REGPINMEDIUM *pMedIn,
308 [in] const CLSID *pPinCategoryIn,
309 [in] BOOL bRender,
310 [in] BOOL bOutputNeeded,
311 [in] DWORD cOutputTypes,
312 [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
313 [in] const REGPINMEDIUM *pMedOut,
314 [in] const CLSID *pPinCategoryOut
315 );
316 }
317
318 [
319 object,
320 uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
321 pointer_default(unique)
322 ]
323 interface IFilterMapper3 : IFilterMapper2
324 {
325 HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
326 }
327
328 typedef enum tagQualityMessageType
329 {
330 Famine,
331 Flood
332 } QualityMessageType;
333
334 typedef struct tagQuality
335 {
336 QualityMessageType Type;
337 LONG Proportion;
338 REFERENCE_TIME Late;
339 REFERENCE_TIME TimeStamp;
340 } Quality;
341
342 typedef IQualityControl *PQUALITYCONTROL;
343
344 [
345 object,
346 uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
347 pointer_default(unique)
348 ]
349 interface IQualityControl : IUnknown
350 {
351 HRESULT Notify
352 ( [in] IBaseFilter * pSelf,
353 [in] Quality q
354 );
355
356 HRESULT SetSink
357 ( [in] IQualityControl * piqc
358 );
359 }
360
361 enum
362 {
363 CK_NOCOLORKEY = 0x0,
364 CK_INDEX = 0x1,
365 CK_RGB = 0x2
366 };
367
368 typedef struct tagCOLORKEY
369 {
370 DWORD KeyType;
371 DWORD PaletteIndex;
372 COLORREF LowColorValue;
373 COLORREF HighColorValue;
374 } COLORKEY;
375
376 enum
377 {
378 ADVISE_NONE = 0x0,
379 ADVISE_CLIPPING = 0x1,
380 ADVISE_PALETTE = 0x2,
381 ADVISE_COLORKEY = 0x4,
382 ADVISE_POSITION = 0x8,
383 ADVISE_DISPLAY_CHANGE = 0x10
384 };
385
386 const DWORD ADVISE_ALL = ADVISE_CLIPPING |
387 ADVISE_PALETTE |
388 ADVISE_COLORKEY |
389 ADVISE_POSITION;
390
391 const DWORD ADVISE_ALL2 = ADVISE_ALL |
392 ADVISE_DISPLAY_CHANGE;
393
394 cpp_quote("#ifndef _WINGDI_")
395
396 /* already defined in wingdi.h, but needed for WIDL */
397
398 typedef struct _RGNDATAHEADER
399 {
400 DWORD dwSize;
401 DWORD iType;
402 DWORD nCount;
403 DWORD nRgnSize;
404 RECT rcBound;
405 } RGNDATAHEADER;
406
407 typedef struct _RGNDATA
408 {
409 RGNDATAHEADER rdh;
410 char Buffer[1];
411 } RGNDATA;
412
413 cpp_quote("#endif /* _WINGDI_ */")
414
415 [
416 object,
417 local,
418 uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
419 pointer_default(unique)
420 ]
421 interface IOverlayNotify : IUnknown
422 {
423 HRESULT OnPaletteChange(
424 [in] DWORD dwColors,
425 [in] const PALETTEENTRY *pPalette);
426
427 HRESULT OnClipChange(
428 [in] const RECT *pSourceRect,
429 [in] const RECT *pDestinationRect,
430 [in] const RGNDATA *pRgnData);
431
432 HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
433
434 HRESULT OnPositionChange([in] const RECT *pSourceRect,
435 [in] const RECT *pDestinationRect);
436 }
437
438 typedef IOverlayNotify *POVERLAYNOTIFY;
439
440 cpp_quote("#if 0")
441 typedef HANDLE HMONITOR;
442 cpp_quote("#endif /* 0 */")
443
444 [
445 object,
446 local,
447 uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
448 pointer_default(unique)
449 ]
450 interface IOverlayNotify2 : IOverlayNotify
451 {
452 HRESULT OnDisplayChange(
453 HMONITOR hMonitor);
454 }
455
456 typedef IOverlayNotify2 *POVERLAYNOTIFY2;
457
458 [
459 object,
460 local,
461 uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
462 pointer_default(unique)
463 ]
464 interface IOverlay : IUnknown
465 {
466 HRESULT GetPalette(
467 [out] DWORD *pdwColors,
468 [out] PALETTEENTRY **ppPalette);
469
470 HRESULT SetPalette(
471 [in] DWORD dwColors,
472 [in] PALETTEENTRY *pPalette);
473
474 HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
475
476 HRESULT GetColorKey([out] COLORKEY *pColorKey);
477
478 HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
479
480 HRESULT GetWindowHandle([out] HWND *pHwnd);
481
482 HRESULT GetClipList([out] RECT *pSourceRect,
483 [out] RECT *pDestinationRect,
484 [out] RGNDATA **ppRgnData);
485
486 HRESULT GetVideoPosition([out] RECT *pSourceRect,
487 [out] RECT *pDestinationRect);
488
489 HRESULT Advise(
490 [in] IOverlayNotify *pOverlayNotify,
491 [in] DWORD dwInterests);
492
493 HRESULT Unadvise();
494 }
495
496 typedef IOverlay *POVERLAY;
497
498 [
499 object,
500 uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
501 pointer_default(unique)
502 ]
503 interface IMediaEventSink : IUnknown
504 {
505 HRESULT Notify(
506 [in] LONG EventCode,
507 [in] LONG_PTR EventParam1,
508 [in] LONG_PTR EventParam2
509 );
510 }
511
512 typedef IMediaEventSink *PMEDIAEVENTSINK;
513
514 [
515 object,
516 uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
517 pointer_default(unique)
518 ]
519 interface IFileSourceFilter : IUnknown
520 {
521 HRESULT Load(
522 [in] LPCOLESTR pszFileName,
523 [in, unique] const AM_MEDIA_TYPE *pmt
524 );
525
526 HRESULT GetCurFile(
527 [out] LPOLESTR *ppszFileName,
528 [out] AM_MEDIA_TYPE *pmt
529 );
530 }
531
532 typedef IFileSourceFilter *PFILTERFILESOURCE;
533
534 [
535 object,
536 uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
537 pointer_default(unique)
538 ]
539 interface IFileSinkFilter : IUnknown
540 {
541 HRESULT SetFileName(
542 [in] LPCOLESTR pszFileName,
543 [in, unique] const AM_MEDIA_TYPE *pmt
544 );
545
546 HRESULT GetCurFile(
547 [out] LPOLESTR *ppszFileName,
548 [out] AM_MEDIA_TYPE *pmt
549 );
550 }
551
552 typedef IFileSinkFilter *PFILTERFILESINK;
553
554 [
555 object,
556 uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
557 pointer_default(unique)
558 ]
559 interface IFileSinkFilter2 : IFileSinkFilter
560 {
561 HRESULT SetMode(
562 [in] DWORD dwFlags
563 );
564
565 HRESULT GetMode(
566 [out] DWORD *pdwFlags
567 );
568 }
569
570 typedef IFileSinkFilter2 *PFILESINKFILTER2;
571
572 typedef enum
573 {
574 AM_FILE_OVERWRITE = 0x00000001,
575 } AM_FILESINK_FLAGS;
576
577 [
578 object,
579 uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
580 pointer_default(unique)
581 ]
582 interface IGraphBuilder : IFilterGraph
583 {
584 HRESULT Connect
585 ( [in] IPin * ppinOut,
586 [in] IPin * ppinIn
587 );
588
589 HRESULT Render
590 ( [in] IPin * ppinOut
591 );
592
593 HRESULT RenderFile
594 ( [in] LPCWSTR lpcwstrFile,
595 [in, unique] LPCWSTR lpcwstrPlayList
596 );
597
598 HRESULT AddSourceFilter
599 ( [in] LPCWSTR lpcwstrFileName,
600 [in, unique] LPCWSTR lpcwstrFilterName,
601 [out] IBaseFilter* *ppFilter
602 );
603
604 HRESULT SetLogFile
605 ( [in] DWORD_PTR hFile
606 );
607
608 HRESULT Abort();
609
610 HRESULT ShouldOperationContinue();
611 }
612
613
614 [
615 object,
616 uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
617 pointer_default(unique)
618 ]
619 interface ICaptureGraphBuilder : IUnknown {
620
621 HRESULT SetFiltergraph(
622 [in] IGraphBuilder *pfg);
623
624 HRESULT GetFiltergraph(
625 [out] IGraphBuilder **ppfg);
626
627 HRESULT SetOutputFileName(
628 [in] const GUID *pType,
629 [in] LPCOLESTR lpstrFile,
630 [out] IBaseFilter **ppf,
631 [out] IFileSinkFilter **ppSink);
632
633 [local] HRESULT FindInterface(
634 [in, unique] const GUID *pCategory,
635 [in] IBaseFilter *pf,
636 [in] REFIID riid,
637 [out] void **ppint);
638
639 [call_as(FindInterface)] HRESULT RemoteFindInterface(
640 [in, unique] const GUID *pCategory,
641 [in] IBaseFilter *pf,
642 [in] REFIID riid,
643 [out] IUnknown **ppint);
644
645 HRESULT RenderStream(
646 [in] const GUID *pCategory,
647 [in] IUnknown *pSource,
648 [in] IBaseFilter *pfCompressor,
649 [in] IBaseFilter *pfRenderer);
650
651 HRESULT ControlStream(
652 [in] const GUID *pCategory,
653 [in] IBaseFilter *pFilter,
654 [in] REFERENCE_TIME *pstart,
655 [in] REFERENCE_TIME *pstop,
656 [in] WORD wStartCookie,
657 [in] WORD wStopCookie);
658
659 HRESULT AllocCapFile(
660 [in] LPCOLESTR lpstr,
661 [in] DWORDLONG dwlSize);
662
663 HRESULT CopyCaptureFile(
664 [in] LPOLESTR lpwstrOld,
665 [in] LPOLESTR lpwstrNew,
666 [in] int fAllowEscAbort,
667 [in] IAMCopyCaptureFileProgress *pCallback);
668 }
669
670 [
671 object,
672 uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
673 pointer_default(unique)
674 ]
675 interface IAMCopyCaptureFileProgress : IUnknown
676 {
677 HRESULT Progress(
678 [in] int iProgress);
679 }
680
681 [
682 object,
683 uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
684 pointer_default(unique)
685 ]
686 interface ICaptureGraphBuilder2 : IUnknown
687 {
688 HRESULT SetFiltergraph(
689 [in] IGraphBuilder *pfg);
690
691 HRESULT GetFiltergraph(
692 [out] IGraphBuilder **ppfg);
693
694 HRESULT SetOutputFileName(
695 [in] const GUID *pType,
696 [in] LPCOLESTR lpstrFile,
697 [out] IBaseFilter **ppf,
698 [out] IFileSinkFilter **ppSink);
699
700 [local] HRESULT FindInterface(
701 [in] const GUID *pCategory,
702 [in] const GUID *pType,
703 [in] IBaseFilter *pf,
704 [in] REFIID riid,
705 [out] void **ppint);
706
707 [call_as(FindInterface)] HRESULT RemoteFindInterface(
708 [in] const GUID *pCategory,
709 [in] const GUID *pType,
710 [in] IBaseFilter *pf,
711 [in] REFIID riid,
712 [out] IUnknown **ppint);
713
714 HRESULT RenderStream(
715 [in] const GUID *pCategory,
716 [in] const GUID *pType,
717 [in] IUnknown *pSource,
718 [in] IBaseFilter *pfCompressor,
719 [in] IBaseFilter *pfRenderer);
720
721 HRESULT ControlStream(
722 [in] const GUID *pCategory,
723 [in] const GUID *pType,
724 [in] IBaseFilter *pFilter,
725 [in] REFERENCE_TIME *pstart,
726 [in] REFERENCE_TIME *pstop,
727 [in] WORD wStartCookie,
728 [in] WORD wStopCookie);
729
730 HRESULT AllocCapFile(
731 [in] LPCOLESTR lpstr,
732 [in] DWORDLONG dwlSize);
733
734 HRESULT CopyCaptureFile(
735 [in] LPOLESTR lpwstrOld,
736 [in] LPOLESTR lpwstrNew,
737 [in] int fAllowEscAbort,
738 [in] IAMCopyCaptureFileProgress *pCallback);
739
740 HRESULT FindPin(
741 [in] IUnknown *pSource,
742 [in] PIN_DIRECTION pindir,
743 [in] const GUID *pCategory,
744 [in] const GUID *pType,
745 [in] BOOL fUnconnected,
746 [in] int num,
747 [out] IPin **ppPin);
748 }
749
750 [
751 local,
752 object,
753 uuid(5acd6aa0-f482-11ce-8b67-00aa00a3f1a6),
754 pointer_default(unique)
755 ]
756 interface IConfigAviMux : IUnknown
757 {
758 HRESULT SetMasterStream(
759 [in] LONG iStream);
760
761 HRESULT GetMasterStream(
762 [out] LONG *pStream);
763
764 HRESULT SetOutputCompatibilityIndex(
765 [in] BOOL fOldIndex);
766
767 HRESULT GetOutputCompatibilityIndex(
768 [out] BOOL *pfOldIndex);
769 }
770
771 [
772 local,
773 object,
774 uuid(bee3d220-157b-11d0-bd23-00a0c911ce86),
775 pointer_default(unique)
776 ]
777 interface IConfigInterleaving : IUnknown
778 {
779 typedef enum InterleavingMode {
780 INTERLEAVE_NONE,
781 INTERLEAVE_CAPTURE,
782 INTERLEAVE_FULL,
783 INTERLEAVE_NONE_BUFFERED
784 } InterleavingMode;
785
786 HRESULT put_Mode(
787 [in] InterleavingMode mode);
788
789 HRESULT get_Mode(
790 [out] InterleavingMode *pMode);
791
792 HRESULT put_Interleaving(
793 [in] const REFERENCE_TIME *prtInterleave,
794 [in] const REFERENCE_TIME *prtPreroll);
795
796 HRESULT get_Interleaving(
797 [out] REFERENCE_TIME *prtInterleave,
798 [out] REFERENCE_TIME *prtPreroll);
799 }
800
801 [
802 local,
803 object,
804 uuid(9fd52741-176d-4b36-8f51-ca8f933223be),
805 pointer_default(unique)
806 ]
807 interface IAMClockSlave : IUnknown
808 {
809 HRESULT SetErrorTolerance(
810 [in] DWORD dwTolerance);
811
812 HRESULT GetErrorTolerance(
813 [out] DWORD *pdwTolerance);
814 }
815
816 typedef struct _AMCOPPSignature {
817 BYTE Signature[256];
818 } AMCOPPSignature;
819
820 typedef struct _AMCOPPCommand {
821 GUID macKDI;
822 GUID guidCommandID;
823 DWORD dwSequence;
824 DWORD bSizeData;
825 BYTE CommandData[4056];
826 } AMCOPPCommand, *LPAMCOPPCommand;
827
828 typedef struct _AMCOPPStatusInput {
829 GUID rApp;
830 GUID guidStatusRequestID;
831 DWORD dwSequence;
832 DWORD cbSizeData;
833 BYTE StatusData[4056];
834 } AMCOPPStatusInput, *LPAMCOPPStatusInput;
835
836 typedef struct _AMCOPPStatusOutput {
837 GUID macKDI;
838 DWORD cbSizeData;
839 BYTE COPPStatus[4076];
840 } AMCOPPStatusOutput, *LPAMCOPPStatusOutput;
841
842 [
843 local,
844 object,
845 uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515),
846 pointer_default(unique)
847 ]
848 interface IAMCertifiedOutputProtection : IUnknown
849 {
850 HRESULT KeyExchange (
851 [out] GUID* pRandom,
852 [out] BYTE** VarLenCertGH,
853 [out] DWORD* pdwLengthCertGH);
854
855 HRESULT SessionSequenceStart(
856 [in] AMCOPPSignature* pSig);
857
858 HRESULT ProtectionCommand(
859 [in] const AMCOPPCommand* cmd);
860
861 HRESULT ProtectionStatus(
862 [in] const AMCOPPStatusInput* pStatusInput,
863 [out] AMCOPPStatusOutput* pStatusOutput);
864 };
865
866 enum _AM_RENSDEREXFLAGS
867 {
868 AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
869 };
870
871 [
872 object,
873 uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
874 pointer_default(unique)
875 ]
876 interface IFilterGraph2: IGraphBuilder
877 {
878 HRESULT AddSourceFilterForMoniker(
879 [in] IMoniker *pMoniker,
880 [in] IBindCtx *pCtx,
881 [in, unique] LPCWSTR lpcwstrFilterName,
882 [out] IBaseFilter **ppFilter
883 );
884
885 HRESULT ReconnectEx
886 ( [in] IPin * ppin,
887 [in, unique] const AM_MEDIA_TYPE *pmt
888 );
889
890 HRESULT RenderEx( [in] IPin *pPinOut,
891 [in] DWORD dwFlags,
892 [in, out] DWORD *pvContext
893 );
894 }
895
896 [
897 object,
898 local,
899 uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
900 pointer_default(unique)
901 ]
902 interface IStreamBuilder : IUnknown
903 {
904 HRESULT Render
905 ( [in] IPin * ppinOut,
906 [in] IGraphBuilder * pGraph
907 );
908
909 HRESULT Backout
910 ( [in] IPin * ppinOut,
911 [in] IGraphBuilder * pGraph
912 );
913 }
914
915
916 /*****************************************************************************
917 * IAMStreamConfig interface
918 */
919 [
920 object,
921 uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
922 pointer_default(unique)
923 ]
924 interface IAMStreamConfig : IUnknown
925 {
926 typedef struct _VIDEO_STREAM_CONFIG_CAPS {
927 GUID guid;
928 ULONG VideoStandard;
929 SIZE InputSize;
930 SIZE MinCroppingSize;
931 SIZE MaxCroppingSize;
932 int CropGranularityX;
933 int CropGranularityY;
934 int CropAlignX;
935 int CropAlignY;
936 SIZE MinOutputSize;
937 SIZE MaxOutputSize;
938 int OutputGranularityX;
939 int OutputGranularityY;
940 int StretchTapsX;
941 int StretchTapsY;
942 int ShrinkTapsX;
943 int ShrinkTapsY;
944 LONGLONG MinFrameInterval;
945 LONGLONG MaxFrameInterval;
946 LONG MinBitsPerSecond;
947 LONG MaxBitsPerSecond;
948 } VIDEO_STREAM_CONFIG_CAPS;
949
950 typedef struct _AUDIO_STREAM_CONFIG_CAPS {
951 GUID guid;
952 ULONG MinimumChannels;
953 ULONG MaximumChannels;
954 ULONG ChannelsGranularity;
955 ULONG MinimumBitsPerSample;
956 ULONG MaximumBitsPerSample;
957 ULONG BitsPerSampleGranularity;
958 ULONG MinimumSampleFrequency;
959 ULONG MaximumSampleFrequency;
960 ULONG SampleFrequencyGranularity;
961 } AUDIO_STREAM_CONFIG_CAPS;
962
963 HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt);
964 HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt);
965 HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize);
966 HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt,
967 [out] BYTE *pSCC);
968 }
969
970
971 typedef enum tagVideoProcAmpProperty
972 {
973 VideoProcAmp_Brightness,
974 VideoProcAmp_Contrast,
975 VideoProcAmp_Hue,
976 VideoProcAmp_Saturation,
977 VideoProcAmp_Sharpness,
978 VideoProcAmp_Gamma,
979 VideoProcAmp_ColorEnable,
980 VideoProcAmp_WhiteBalance,
981 VideoProcAmp_BacklightCompensation,
982 VideoProcAmp_Gain
983 } VideoProcAmpProperty;
984
985 typedef enum tagVideoProcAmpFlags
986 {
987 VideoProcAmp_Flags_Auto = 0x0001,
988 VideoProcAmp_Flags_Manual = 0x0002,
989 } VideoProcAmpFlags;
990
991 /*****************************************************************************
992 * IAMVideoProcAmp interface
993 */
994 [
995 object,
996 uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
997 pointer_default(unique)
998 ]
999 interface IAMVideoProcAmp : IUnknown
1000 {
1001 HRESULT GetRange( [in] LONG Property, [out] LONG *pMin, [out] LONG *pMax,
1002 [out] LONG *pSteppingDelta, [out] LONG *pDefault,
1003 [out] LONG *pCapsFlags);
1004 HRESULT Set( [in] LONG Property, [in] LONG lValue, [in] LONG Flags);
1005 HRESULT Get( [in] LONG Property, [out] LONG *lValue, [out] LONG *Flags);
1006 }
1007
1008
1009 [
1010 object,
1011 uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
1012 pointer_default(unique)
1013 ]
1014 interface IAsyncReader : IUnknown
1015 {
1016 HRESULT RequestAllocator(
1017 [in] IMemAllocator* pPreferred,
1018 [in] ALLOCATOR_PROPERTIES* pProps,
1019 [out] IMemAllocator ** ppActual);
1020
1021 HRESULT Request(
1022 [in] IMediaSample* pSample,
1023 [in] DWORD_PTR dwUser);
1024
1025 HRESULT WaitForNext(
1026 [in] DWORD dwTimeout,
1027 [out] IMediaSample** ppSample,
1028 [out] DWORD_PTR * pdwUser);
1029
1030 HRESULT SyncReadAligned(
1031 [in] IMediaSample* pSample);
1032
1033 HRESULT SyncRead(
1034 [in] LONGLONG llPosition,
1035 [in] LONG lLength,
1036 [out, size_is(lLength)]
1037 BYTE* pBuffer);
1038
1039 HRESULT Length(
1040 [out] LONGLONG* pTotal,
1041 [out] LONGLONG* pAvailable);
1042
1043 HRESULT BeginFlush(void);
1044
1045 HRESULT EndFlush(void);
1046 }
1047
1048
1049 [
1050 object,
1051 uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
1052 pointer_default(unique)
1053 ]
1054 interface IGraphVersion : IUnknown
1055 {
1056 HRESULT QueryVersion(LONG* pVersion);
1057 }
1058
1059 [
1060 object,
1061 uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
1062 pointer_default(unique)
1063 ]
1064 interface IResourceConsumer : IUnknown
1065 {
1066 HRESULT AcquireResource(
1067 [in] LONG idResource);
1068
1069 HRESULT ReleaseResource(
1070 [in] LONG idResource);
1071 }
1072
1073
1074 [
1075 object,
1076 uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
1077 pointer_default(unique)
1078 ]
1079 interface IResourceManager : IUnknown
1080 {
1081 HRESULT Register(
1082 [in] LPCWSTR pName,
1083 [in] LONG cResource,
1084 [out] LONG* plToken
1085 );
1086
1087 HRESULT RegisterGroup(
1088 [in] LPCWSTR pName,
1089 [in] LONG cResource,
1090 [in, size_is(cResource)]
1091 LONG* palTokens,
1092 [out] LONG* plToken
1093 );
1094
1095 HRESULT RequestResource(
1096 [in] LONG idResource,
1097 [in] IUnknown* pFocusObject,
1098 [in] IResourceConsumer* pConsumer
1099 );
1100
1101 HRESULT NotifyAcquire(
1102 [in] LONG idResource,
1103 [in] IResourceConsumer* pConsumer,
1104 [in] HRESULT hr);
1105
1106 HRESULT NotifyRelease(
1107 [in] LONG idResource,
1108 [in] IResourceConsumer* pConsumer,
1109 [in] BOOL bStillWant);
1110
1111 HRESULT CancelRequest(
1112 [in] LONG idResource,
1113 [in] IResourceConsumer* pConsumer);
1114
1115 HRESULT SetFocus(
1116 [in] IUnknown* pFocusObject);
1117
1118 HRESULT ReleaseFocus(
1119 [in] IUnknown* pFocusObject);
1120
1121 }
1122
1123 typedef enum AM_STREAM_INFO_FLAGS
1124 {
1125 AM_STREAM_INFO_START_DEFINED = 0x01,
1126 AM_STREAM_INFO_STOP_DEFINED = 0x02,
1127 AM_STREAM_INFO_DISCARDING = 0x04,
1128 AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10
1129 } AM_STREAM_INFO_FLAGS;
1130
1131 typedef struct AM_STREAM_INFO
1132 {
1133 REFERENCE_TIME tStart;
1134 REFERENCE_TIME tStop;
1135 DWORD dwStartCookie;
1136 DWORD dwStopCookie;
1137 DWORD dwFlags;
1138 } AM_STREAM_INFO;
1139
1140 [
1141 local,
1142 object,
1143 uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
1144 pointer_default(unique)
1145 ]
1146 interface IAMStreamControl : IUnknown
1147 {
1148 HRESULT StartAt(
1149 [in] const REFERENCE_TIME *ptStart,
1150 [in] DWORD dwCookie);
1151
1152 HRESULT StopAt(
1153 [in] const REFERENCE_TIME *ptStop,
1154 [in] BOOL bSendExtra,
1155 [in] DWORD dwCookie);
1156
1157 HRESULT GetInfo(
1158 [out] AM_STREAM_INFO *pInfo);
1159 }
1160
1161 cpp_quote("#ifndef _IKsPropertySet_")
1162 cpp_quote("#define _IKsPropertySet_")
1163 cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
1164 cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
1165
1166 typedef enum AMPROPERTY_PIN
1167 {
1168 AMPROPERTY_PIN_CATEGORY,
1169 AMPROPERTY_PIN_MEDIUM,
1170 } AMPROPERTY_PIN;
1171
1172 [
1173 object,
1174 uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
1175 pointer_default(unique),
1176 local
1177 ]
1178 interface IKsPropertySet : IUnknown
1179 {
1180 HRESULT Set( [in] REFGUID guidPropSet,
1181 [in] DWORD dwPropID,
1182 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1183 [in] DWORD cbInstanceData,
1184 [in, size_is(cbPropData)] LPVOID pPropData,
1185 [in] DWORD cbPropData );
1186
1187 HRESULT Get( [in] REFGUID guidPropSet,
1188 [in] DWORD dwPropID,
1189 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1190 [in] DWORD cbInstanceData,
1191 [out, size_is(cbPropData)] LPVOID pPropData,
1192 [in] DWORD cbPropData,
1193 [out] DWORD *pcbReturned );
1194
1195 HRESULT QuerySupported( [in] REFGUID guidPropSet,
1196 [in] DWORD dwPropID,
1197 [out] DWORD *pTypeSupport);
1198 }
1199 cpp_quote("#endif /* _IKsPropertySet_ */")
1200
1201 [
1202 local,
1203 object,
1204 uuid(6025a880-c0d5-11d0-bd4e-00a0c911ce86),
1205 pointer_default(unique)
1206 ]
1207 interface IMediaPropertyBag : IPropertyBag
1208 {
1209 typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG;
1210
1211 HRESULT EnumProperty(
1212 [in] ULONG iProperty,
1213 [in, out] VARIANT *pvarPropertyName,
1214 [in, out] VARIANT *pvarPropertyValue);
1215 }
1216
1217
1218 [
1219 local,
1220 object,
1221 uuid(5738e040-b67f-11d0-bd4d-00a0c911ce86),
1222 pointer_default(unique)
1223 ]
1224 interface IPersistMediaPropertyBag : IPersist
1225 {
1226 HRESULT InitNew(void);
1227
1228 HRESULT Load(
1229 [in] IMediaPropertyBag *pPropBag,
1230 [in] IErrorLog *pErrorLog);
1231
1232 HRESULT Save(
1233 [in] IMediaPropertyBag *pPropBag,
1234 [in] BOOL fClearDirty,
1235 [in] BOOL fSaveAllProperties);
1236
1237 typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG;
1238 }
1239
1240 [
1241 object,
1242 uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
1243 pointer_default(unique)
1244 ]
1245 interface ISeekingPassThru : IUnknown
1246 {
1247 HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
1248 }
1249
1250 enum _AM_FILTER_MISC_FLAGS
1251 {
1252 AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
1253 AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
1254 };
1255
1256 [
1257 local,
1258 object,
1259 uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
1260 pointer_default(unique)
1261 ]
1262 interface IAMFilterMiscFlags : IUnknown
1263 {
1264 ULONG GetMiscFlags();
1265 }
1266
1267 [
1268 local,
1269 object,
1270 uuid(4995f511-9ddb-4f12-bd3b-f04611807b79),
1271 pointer_default(unique)
1272 ]
1273 interface IAMGraphBuilderCallback : IUnknown
1274 {
1275 HRESULT SelectedFilter(
1276 [in] IMoniker *pMon);
1277
1278 HRESULT CreatedFilter(
1279 [in] IBaseFilter *pFil);
1280 }
1281
1282 [
1283 local,
1284 object,
1285 uuid(d8d715a0-6e5e-11d0-b3f0-00aa003761c5),
1286 pointer_default(unique)
1287 ]
1288 interface IAMVfwCaptureDialogs : IUnknown
1289 {
1290 HRESULT HasDialog(
1291 [in] int dialog);
1292 HRESULT ShowDialog(
1293 [in] int dialog,
1294 [in] HWND hwnd);
1295 HRESULT SendDriverMessage(
1296 [in] int dialog,
1297 [in] int msg,
1298 [in] long data1,
1299 [in] long data2);
1300 }
1301
1302 [
1303 local,
1304 object,
1305 uuid(c6e13370-30ac-11d0-a18c-00a0c9118956),
1306 pointer_default(unique)
1307 ]
1308 interface IAMCameraControl : IUnknown
1309 {
1310 HRESULT GetRange([in] long property, [out] long *min, [out] long *max,
1311 [out] long *stepping_delta, [out] long *default_value, [out] long *flags);
1312 HRESULT Set([in] long property, [in] long property_value, [in] long flags);
1313 HRESULT Get([in] long property, [out] long *property_value, [out] long *flags);
1314 }
1315
1316 [
1317 local,
1318 object,
1319 uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
1320 pointer_default(unique)
1321 ]
1322 interface IAMVideoControl : IUnknown
1323 {
1324 HRESULT GetCaps([in] IPin *pin, [out] long *flags);
1325 HRESULT SetMode([in] IPin *pin, long mode);
1326 HRESULT GetMode([in] IPin *pin, [out] long *mode);
1327 HRESULT GetCurrentActualFrameRate([in] IPin *pin, [out] LONGLONG *frame_rate);
1328 HRESULT GetMaxAvailableFrameRate([in] IPin *pin, [in] long index,
1329 [in] SIZE dimensions, [out] LONGLONG *frame_rate);
1330 HRESULT GetFrameRateList([in] IPin *pin, [in] long index, [in] SIZE dimensions,
1331 [out] long *list_size, [out] LONGLONG **frame_rate);
1332 }
1333
1334 [
1335 local,
1336 object,
1337 uuid(56ed71a0-af5f-11d0-b3f0-00aa003761c5),
1338 pointer_default(unique)
1339 ]
1340 interface IAMBufferNegotiation : IUnknown
1341 {
1342 HRESULT SuggestAllocatorProperties([in] const ALLOCATOR_PROPERTIES *prop);
1343 HRESULT GetAllocatorProperties([out] ALLOCATOR_PROPERTIES *prop);
1344 }
1345
1346 [
1347 local,
1348 object,
1349 uuid(c6e13344-30ac-11d0-a18c-00a0c9118956),
1350 pointer_default(unique)
1351 ]
1352 interface IAMDroppedFrames : IUnknown
1353 {
1354 HRESULT GetNumDropped([out] long *number);
1355 HRESULT GetNumNotDropped([out] long *number);
1356 HRESULT GetDroppedInfo([in] long size, [out] long *array, [out] long *copied);
1357 HRESULT GetAverageFrameSize([out] long *size);
1358 }
1359
1360 [
1361 local,
1362 object,
1363 uuid(62ea93ba-ec62-11d2-b770-00c04fb6bd3d),
1364 pointer_default(unique)
1365 ]
1366 interface IAMLatency : IUnknown
1367 {
1368 HRESULT GetLatency([in, out] REFERENCE_TIME *latency);
1369 }
1370
1371 [
1372 local,
1373 object,
1374 uuid(f185fe76-e64e-11d2-b76e-00c04fb6bd3d),
1375 pointer_default(unique)
1376 ]
1377 interface IAMPushSource : IAMLatency
1378 {
1379 HRESULT GetPushSourceFlags([out] ULONG *flags);
1380 HRESULT SetPushSourceFlags([in] ULONG flags);
1381 HRESULT SetStreamOffset([in] REFERENCE_TIME offset);
1382 HRESULT GetStreamOffset([out] REFERENCE_TIME *offset);
1383 HRESULT GetMaxStreamOffset([out] REFERENCE_TIME *offset);
1384 HRESULT SetMaxStreamOffset([in] REFERENCE_TIME offset);
1385 }
1386
1387 [
1388 local,
1389 object,
1390 uuid(c6e13343-30ac-11d0-a18c-00a0c9118956),
1391 pointer_default(unique)
1392 ]
1393 interface IAMVideoCompression : IUnknown
1394 {
1395 HRESULT put_KeyFrameRate([in] long frame_rate);
1396 HRESULT get_KeyFrameRate([out] long *frame_rate);
1397 HRESULT put_PFramesPerKeyFrame([in] long frame);
1398 HRESULT get_PFramesPerKeyFrame([out] long *frame);
1399 HRESULT put_Quality([in] double quality);
1400 HRESULT get_Quality([out] double *quality);
1401 HRESULT put_WindowSize([in] DWORDLONG size);
1402 HRESULT get_WindowSize([out] DWORDLONG *size);
1403 HRESULT GetInfo([out, size_is(*version_size)] LPWSTR version, [in, out] int *version_size,
1404 [out, size_is(*description_size)] LPWSTR description, [in, out] int *description_size,
1405 [out] long *frame_rate, [out] long *key, [out] double *quality, [out] long *capabilities);
1406 HRESULT OverrideKeyFrame([in] long number);
1407 HRESULT OverrideFrameSize([in] long number, [in] long size);
1408 }
1409
1410 [
1411 local,
1412 object,
1413 uuid(c6e13380-30ac-11d0-a18c-00a0c9118956),
1414 pointer_default(unique)
1415 ]
1416 interface IAMCrossbar : IUnknown
1417 {
1418 HRESULT get_PinCounts([out] long *output, [out] long *intput);
1419 HRESULT CanRoute([in] long output, [in] long input);
1420 HRESULT Route([in] long output, [in] long input);
1421 HRESULT get_IsRoutedTo([in] long output, [out] long *input);
1422 HRESULT get_CrossbarPinInfo([in] BOOL is_input, [in] long index,
1423 [out] long *related, [out] long *type);
1424 }
1425
1426 typedef enum tagAMTunerEventType
1427 {
1428 AMTUNER_EVENT_CHANGED = 0x0001,
1429 } AMTunerEventType;
1430
1431 [
1432 local,
1433 object,
1434 uuid(211a8760-03ac-11d1-8d13-00aa00bd8339),
1435 pointer_default(unique)
1436 ]
1437 interface IAMTunerNotification : IUnknown
1438 {
1439 HRESULT OnEvent([in] AMTunerEventType event);
1440 }
1441
1442 typedef enum tagAMTunerModeType
1443 {
1444 AMTUNER_MODE_DEFAULT = 0x0000,
1445 AMTUNER_MODE_TV = 0x0001,
1446 AMTUNER_MODE_FM_RADIO = 0x0002,
1447 AMTUNER_MODE_AM_RADIO = 0x0004,
1448 AMTUNER_MODE_DSS = 0x0008,
1449 } AMTunerModeType;
1450
1451 [
1452 local,
1453 object,
1454 uuid(211a8761-03ac-11d1-8d13-00aa00bd8339),
1455 pointer_default(unique)
1456 ]
1457 interface IAMTuner : IUnknown
1458 {
1459 HRESULT put_Channel([in] long channel, [in] long video, [in] long audio);
1460 HRESULT get_Channel([out] long *channel, [out] long *video, [out] long *audio);
1461 HRESULT ChannelMinMax([out] long *min, [out] long *max);
1462 HRESULT put_CountryCode([in] long country);
1463 HRESULT get_CountryCode([out] long *country);
1464 HRESULT put_TuningSpace([in] long tuning_space);
1465 HRESULT get_TuningSpace([out] long *tuning_space);
1466 [local] HRESULT Logon([in] HANDLE user);
1467 HRESULT Logout();
1468 HRESULT SignalPresent([out] long *signal_strength);
1469 HRESULT put_Mode([in] AMTunerModeType mode);
1470 HRESULT get_Mode([out] AMTunerModeType *mode);
1471 HRESULT GetAvailableModes([out] long *modes);
1472 HRESULT RegisterNotificationCallBack([in] IAMTunerNotification *notify, [in] long events);
1473 HRESULT UnRegisterNotificationCallBack([in] IAMTunerNotification *notify);
1474 }
1475
1476 [
1477 local,
1478 object,
1479 uuid(211a8766-03ac-11d1-8d13-00aa00bd8339),
1480 pointer_default(unique)
1481 ]
1482 interface IAMTVTuner : IAMTuner
1483 {
1484 HRESULT get_AvailableTVFormats([out] long *standard);
1485 HRESULT get_TVFormat([out] long *standard);
1486 HRESULT AutoTune([in] long channel, [out] long *signal);
1487 HRESULT StoreAutoTune();
1488 HRESULT get_NumInputConnections([out] long *number);
1489 HRESULT put_InputType([in] long index, [in] TunerInputType type);
1490 HRESULT get_InputType([in] long index, [out] TunerInputType *type);
1491 HRESULT put_ConnectInput([in] long index);
1492 HRESULT get_ConnectInput([out] long *index);
1493 HRESULT get_VideoFrequency([out] long *freq);
1494 HRESULT get_AudioFrequency([out] long *freq);
1495 }
1496
1497 [
1498 local,
1499 object,
1500 uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a),
1501 pointer_default(unique),
1502 ]
1503 interface IVideoFrameStep : IUnknown
1504 {
1505 HRESULT Step(DWORD frame_count, [in] IUnknown *filter);
1506 HRESULT CanStep(long multiple, [in] IUnknown *filter);
1507 HRESULT CancelStep();
1508 }
1509
1510 cpp_quote("#if (_WIN32_WINNT >= 0x0601)")
1511 [
1512 local,
1513 object,
1514 uuid(cf7b26fc-9a00-485b-8147-3e789d5e8f67),
1515 pointer_default(unique)
1516 ]
1517 interface IAMAsyncReaderTimestampScaling : IUnknown
1518 {
1519 HRESULT GetTimestampMode(
1520 [out] BOOL *pfRaw);
1521 HRESULT SetTimestampMode(
1522 [in] BOOL fRaw);
1523 }
1524
1525 [
1526 local,
1527 object,
1528 uuid(0e26a181-f40c-4635-8786-976284b52981),
1529 pointer_default(unique)
1530 ]
1531 interface IAMPluginControl : IUnknown
1532 {
1533 HRESULT GetPreferredClsid(
1534 [in] REFGUID subType,
1535 [out] CLSID *clsid);
1536 HRESULT GetPreferredClsidByIndex(
1537 [in] DWORD index,
1538 [out] GUID *subType,
1539 [out] CLSID *clsid);
1540 HRESULT SetPreferredClsid(
1541 [in] REFGUID subType,
1542 [in] const CLSID *clsid);
1543 HRESULT IsDisabled(
1544 [in] REFCLSID clsid);
1545 HRESULT GetDisabledByIndex(
1546 [in] DWORD index,
1547 [out] CLSID *clsid);
1548 HRESULT SetDisabled(
1549 [in] REFCLSID clsid,
1550 [in] BOOL disabled);
1551 HRESULT IsLegacyDisabled(
1552 [in] LPCWSTR dllName);
1553 }
1554 cpp_quote("#endif /*(_WIN32_WINNT >= 0x0601)*/")