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