Subversion Repositories spacemission

Rev

Rev 1 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. (*==========================================================================;
  2.  *
  3.  *  Copyright (C) 1994-1997 Microsoft Corporation.  All Rights Reserved.
  4.  *
  5.  *  DirectX header version 98.08.07
  6.  *
  7.  *  Present by Hiroyuki Hori.
  8.  *
  9.  *  E-Mail: hori@ingjapan.ne.jp
  10.  *  Homepage: http://www.ingjapan.ne.jp/hori/index-e.html
  11.  *
  12.  *  Present unit:
  13.  *    DirectX.pas    DirectX 6 (DirectX 6 SDK)
  14.  *    DShow.pas      DirectShow (DirectX Media SDK 5.1)
  15.  *    DAnim.pas      DirectAnimation (DirectX Media SDK 5.1)
  16.  *
  17.  ***************************************************************************)
  18.  
  19. unit DShow;
  20.  
  21. interface
  22.  
  23. {$Z4}
  24. {$A+}
  25. {$IfNDef D7UP}
  26. {$WEAKPACKAGEUNIT}
  27. {$EndIf}
  28.  
  29. uses Windows, ActiveX, DirectX, MMSystem;
  30.  
  31. (*==========================================================================;
  32.  *
  33.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  34.  *
  35.  *  File:       comlite.h
  36.  *
  37.  ***************************************************************************)
  38.  
  39. function QzInitialize(pvReserved: Pointer): HResult; stdcall;
  40. procedure QzUninitialize; stdcall;
  41. procedure QzFreeUnusedLibraries; stdcall;
  42.  
  43. function QzGetMalloc(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
  44. function QzTaskMemAlloc(cb: Longint): Pointer; stdcall;
  45. function QzTaskMemRealloc(pv: Pointer; cb: Longint): Pointer; stdcall;
  46. procedure QzTaskMemFree(pv: Pointer); stdcall;
  47. function QzCreateFilterObject(const clsid: TCLSID; unkOuter: IUnknown;
  48.   dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
  49. function QzCLSIDFromString(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
  50. function QzStringFromGUID2(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
  51.  
  52. (*==========================================================================;
  53.  *
  54.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  55.  *
  56.  *  File:       errors.h
  57.  *
  58.  ***************************************************************************)
  59.  
  60. const
  61.   VFW_FIRST_CODE = $200;
  62.   MAX_ERROR_TEXT_LEN = 160;
  63.  
  64. type
  65.   AMGETERRORTEXTPROCA = function(hr: HResult; pbuffer: PChar; MaxLen: DWORD): BOOL; stdcall;
  66.  
  67.   AMGETERRORTEXTPROCW = function(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): BOOL; stdcall;
  68.  
  69.   AMGETERRORTEXTPROC = AMGETERRORTEXTPROCA;
  70.  
  71. function AMGetErrorTextA(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  72. function AMGetErrorTextW(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  73. function AMGetErrorText(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  74.  
  75. (*==========================================================================;
  76.  *
  77.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  78.  *
  79.  *  File:       strmif.h
  80.  *
  81.  ***************************************************************************)
  82.  
  83. const
  84.   IID_IPin: TGUID = '{56A86891-0AD4-11CE-B03A-0020AF0BA770}';
  85.   IID_IEnumPins: TGUID = '{56A86892-0AD4-11CE-B03A-0020AF0BA770}';
  86.   IID_IEnumMediaTypes: TGUID = '{89C31040-846B-11CE-97D3-00AA0055595A}';
  87.   IID_IFilterGraph: TGUID = '{56A8689F-0AD4-11CE-B03A-0020AF0BA770}';
  88.   IID_IEnumFilters: TGUID = '{56A86893-0AD4-11CE-B03A-0020AF0BA770}';
  89.   IID_IMediaFilter: TGUID = '{56A86899-0AD4-11CE-B03A-0020AF0BA770}';
  90.   IID_IBaseFilter: TGUID = '{56A86895-0AD4-11CE-B03A-0020AF0BA770}';
  91.   IID_IReferenceClock: TGUID = '{56A86897-0AD4-11CE-B03A-0020AF0BA770}';
  92.   IID_IReferenceClock2: TGUID = '{36B73885-C2C8-11CF-8B46-00805F6CEF60}';
  93.   IID_IMediaSample: TGUID = '{56A8689A-0AD4-11CE-B03A-0020AF0BA770}';
  94.   IID_IMediaSample2: TGUID = '{36B73884-C2C8-11CF-8B46-00805F6CEF60}';
  95.   IID_IMemAllocator: TGUID = '{56A8689C-0AD4-11CE-B03A-0020AF0BA770}';
  96.   IID_IMemInputPin: TGUID = '{56A8689D-0AD4-11CE-B03A-0020AF0BA770}';
  97.   IID_IAMovieSetup: TGUID = '{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}';
  98.   IID_IMediaSeeking: TGUID = '{36B73880-C2C8-11CF-8B46-00805F6CEF60}';
  99.   IID_IEnumRegFilters: TGUID = '{56A868A4-0AD4-11CE-B03A-0020AF0BA770}';
  100.   IID_IFilterMapper: TGUID = '{56A868A3-0AD4-11CE-B03A-0020AF0BA770}';
  101.   IID_IFilterMapper2: TGUID = '{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}';
  102.   IID_IQualityControl: TGUID = '{56A868A5-0AD4-11CE-B03A-0020AF0BA770}';
  103.   IID_IOverlayNotify: TGUID = '{56A868A0-0AD4-11CE-B03A-0020AF0BA770}';
  104.   IID_IOverlay: TGUID = '{56A868A1-0AD4-11CE-B03A-0020AF0BA770}';
  105.   IID_IMediaEventSink: TGUID = '{56A868A2-0AD4-11CE-B03A-0020AF0BA770}';
  106.   IID_IFileSourceFilter: TGUID = '{56A868A6-0AD4-11CE-B03A-0020AF0BA770}';
  107.   IID_IFileSinkFilter: TGUID = '{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}';
  108.   IID_IFileSinkFilter2: TGUID = '{00855B90-CE1B-11D0-BD4F-00A0C911CE86}';
  109.   IID_IFileAsyncIO: TGUID = '{56A868A7-0AD4-11CE-B03A-0020AF0BA770}';
  110.   IID_IGraphBuilder: TGUID = '{56A868A9-0AD4-11CE-B03A-0020AF0BA770}';
  111.   IID_ICaptureGraphBuilder: TGUID = '{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}';
  112.   IID_IAMCopyCaptureFileProgress: TGUID = '{670D1D20-A068-11D0-B3F0-00AA003761C5}';
  113.   IID_IFilterGraph2: TGUID = '{36B73882-C2C8-11CF-8B46-00805F6CEF60}';
  114.   IID_IStreamBuilder: TGUID = '{56A868BF-0AD4-11CE-B03A-0020AF0BA770}';
  115.   IID_IAsyncReader: TGUID = '{56A868AA-0AD4-11CE-B03A-0020AF0BA770}';
  116.   IID_IGraphVersion: TGUID = '{56A868AB-0AD4-11CE-B03A-0020AF0BA770}';
  117.   IID_IResourceConsumer: TGUID = '{56A868AD-0AD4-11CE-B03A-0020AF0BA770}';
  118.   IID_IResourceManager: TGUID = '{56A868AC-0AD4-11CE-B03A-0020AF0BA770}';
  119.   IID_IDistributorNotify: TGUID = '{56A868AF-0AD4-11CE-B03A-0020AF0BA770}';
  120.   IID_IAMStreamControl: TGUID = '{36b73881-c2c8-11cf-8b46-00805f6cef60}';
  121.   IID_ISeekingPassThru: TGUID = '{36B73883-C2C8-11CF-8B46-00805F6CEF60}';
  122.   IID_IAMStreamConfig: TGUID = '{C6E13340-30AC-11d0-A18C-00A0C9118956}';
  123.   IID_IConfigInterleaving: TGUID = '{BEE3D220-157B-11d0-BD23-00A0C911CE86}';
  124.   IID_IConfigAviMux: TGUID = '{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}';
  125.   IID_IAMVideoCompression: TGUID = '{C6E13343-30AC-11d0-A18C-00A0C9118956}';
  126.   IID_IAMVfwCaptureDialogs: TGUID = '{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}';
  127.   IID_IAMVfwCompressDialogs: TGUID = '{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}';
  128.   IID_IAMDroppedFrames: TGUID = '{C6E13344-30AC-11d0-A18C-00A0C9118956}';
  129.   IID_IAMAudioInputMixer: TGUID = '{54C39221-8380-11d0-B3F0-00AA003761C5}';
  130.   IID_IAMAnalogVideoDecoder: TGUID = '{C6E13350-30AC-11d0-A18C-00A0C9118956}';
  131.   IID_IAMVideoProcAmp: TGUID = '{C6E13360-30AC-11d0-A18C-00A0C9118956}';
  132.   IID_IAMCameraControl: TGUID = '{C6E13370-30AC-11d0-A18C-00A0C9118956}';
  133.   IID_IAMCrossbar: TGUID = '{C6E13380-30AC-11d0-A18C-00A0C9118956}';
  134.   IID_IAMTuner: TGUID = '{211A8761-03AC-11d1-8D13-00AA00BD8339}';
  135.   IID_IAMTunerNotification: TGUID = '{211A8760-03AC-11d1-8D13-00AA00BD8339}';
  136.   IID_IAMTVTuner: TGUID = '{211A8766-03AC-11d1-8D13-00AA00BD8339}';
  137.   IID_IBPCSatelliteTuner: TGUID = '{211A8765-03AC-11d1-8D13-00AA00BD8339}';
  138.   IID_IAMTVAudio: TGUID = '{83EC1C30-23D1-11d1-99E6-00A0C9560266}';
  139.   IID_IAMTVAudioNotification: TGUID = '{83EC1C33-23D1-11D1-99E6-00A0C9560266}';
  140.   IID_IAMAnalogVideoEncoder: TGUID = '{C6E133B0-30AC-11d0-A18C-00A0C9118956}';
  141.   IID_IMediaPropertyBag: TGUID = '{6025A880-C0D5-11D0-BD4E-00A0C911CE86}';
  142.   IID_IPersistMediaPropertyBag: TGUID = '{5738E040-B67F-11d0-BD4D-00A0C911CE86}';
  143.   IID_IAMPhysicalPinInfo: TGUID = '{F938C991-3029-11CF-8C44-00AA006B6814}';
  144.   IID_IAMExtDevice: TGUID = '{B5730A90-1A2C-11CF-8C23-00AA006B6814}';
  145.   IID_IAMExtTransport: TGUID = '{A03CD5F0-3045-11CF-8C44-00AA006B6814}';
  146.   IID_IAMTimecodeReader: TGUID = '{9B496CE1-811B-11CF-8C77-00AA006B6814}';
  147.   IID_IAMTimecodeGenerator: TGUID = '{9B496CE0-811B-11CF-8C77-00AA006B6814}';
  148.   IID_IAMTimecodeDisplay: TGUID = '{9B496CE2-811B-11CF-8C77-00AA006B6814}';
  149.   IID_IAMDevMemoryAllocator: TGUID = '{C6545BF0-E76B-11D0-BD52-00A0C911CE86}';
  150.   IID_IAMDevMemoryControl: TGUID = '{C6545BF1-E76B-11D0-BD52-00A0C911CE86}';
  151.   IID_IAMStreamSelect: TGUID = '{C1960960-17F5-11D1-ABE1-00A0C905F375}';
  152.   IID_IAMovie: TGUID = '{359ACE10-7688-11CF-8B23-00805F6CEF60}';
  153.   IID_ICreateDevEnum: TGUID = '{29840822-5B84-11D0-BD3B-00A0C911CE86}';
  154.   IID_IDvdControl: TGUID = '{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}';
  155.   IID_IDvdInfo: TGUID = '{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}';
  156.   IID_IDvdGraphBuilder: TGUID = '{FCC152B6-F372-11d0-8E00-00C04FD7C08B}';
  157.  
  158. const
  159.   CHARS_IN_GUID = 39;
  160.  
  161.   MAX_PIN_NAME    = 128;
  162.   MAX_FILTER_NAME = 128;
  163.  
  164. type
  165.   TAM_Media_Type = record
  166.     majortype: TGUID;
  167.     subtype: TGUID;
  168.     bFixedSizeSamples: BOOL;
  169.     bTemporalCompression: BOOL;
  170.     lSampleSize: ULONG;
  171.     formattype: TGUID;
  172.     pUnk: IUnknown;
  173.     cbFormat: ULONG;
  174.     pbFormat: Pointer;
  175.   end;
  176.   PAM_Media_Type = ^TAM_Media_Type;
  177.  
  178.   TPin_Direction = (
  179.     PINDIR_INPUT,
  180.     PINDIR_OUTPUT
  181.   );
  182.  
  183.   TRefTime = double;
  184.  
  185.   HSEMAPHORE = Longint;
  186.  
  187.   TAllocator_Properties = record
  188.     cBuffers: Longint;
  189.     cbBuffer: Longint;
  190.     cbAlign: Longint;
  191.     cbPrefix: Longint;
  192.   end;
  193.  
  194.   IBaseFilter = interface;
  195.  
  196.   TPin_Info = record
  197.     pFilter: IBaseFilter;
  198.     dir: TPin_Direction;
  199.     achName: array[0..127] of WCHAR;
  200.   end;
  201.  
  202.   IEnumMediaTypes = interface;
  203.  
  204.   IPin = interface(IUnknown)
  205.     ['{56A86891-0AD4-11CE-B03A-0020AF0BA770}']
  206.     function Connect(pReceivePin: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
  207.     function ReceiveConnection(pConnector: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
  208.     function Disconnect: HResult; stdcall;
  209.     function ConnectedTo(out pPin: IPin): HResult; stdcall;
  210.     function ConnectionMediaType(out pmt: TAM_Media_Type): HResult; stdcall;
  211.     function QueryPinInfo(out pInfo: TPin_Info): HResult; stdcall;
  212.     function QueryDirection(var pPinDir: TPin_Direction): HResult; stdcall;
  213.     function QueryId(var Id: LPWSTR): HResult; stdcall;
  214.     function QueryAccept(const pmt: TAM_Media_Type): HResult; stdcall;
  215.     function EnumMediaTypes(out ppEnum: IEnumMediaTypes): HResult; stdcall;
  216.     function QueryInternalConnections(out apPin: IPin; var nPin: ULONG): HResult; stdcall;
  217.     function EndOfStream: HResult; stdcall;
  218.     function BeginFlush: HResult; stdcall;
  219.     function EndFlush: HResult; stdcall;
  220.     function NewSegment(tStart, tStop: TReference_Time; dRate: double): HResult; stdcall;
  221.   end;
  222.  
  223.   IEnumPins = interface(IUnknown)
  224.     ['{56A86892-0AD4-11CE-B03A-0020AF0BA770}']
  225.     function Next(cPins: ULONG; out ppPins; var pcFetched: ULONG): HResult; stdcall;
  226.     function Skip(cPins: ULONG): HResult; stdcall;
  227.     function Reset: HResult; stdcall;
  228.     function Clone(out ppEnum: IEnumPins): HResult; stdcall;
  229.   end;
  230.  
  231.   IEnumMediaTypes = interface(IUnknown)
  232.     ['{89C31040-846B-11CE-97D3-00AA0055595A}']
  233.     function Next(cMediaTypes: ULONG; var ppMediaTypes: PAM_Media_Type;
  234.         var pcFetched: ULONG): HResult; stdcall;
  235.     function Skip(cMediaTypes: ULONG): HResult; stdcall;
  236.     function Reset: HResult; stdcall;
  237.     function Clone(out ppEnum: IEnumMediaTypes): HResult; stdcall;
  238.   end;
  239.  
  240.   IEnumFilters = interface;
  241.  
  242.   IFilterGraph = interface(IUnknown)
  243.     ['{56A8689F-0AD4-11CE-B03A-0020AF0BA770}']
  244.     function AddFilter(pFilter: IBaseFilter; pName: LPCWSTR): HResult; stdcall;
  245.     function RemoveFilter(pFilter: IBaseFilter): HResult; stdcall;
  246.     function EnumFilters(out ppEnum: IEnumFilters): HResult; stdcall;
  247.     function FindFilterByName(pName: LPCWSTR; out ppFilter: IBaseFilter): HResult; stdcall;
  248.     function ConnectDirect(ppinOut, ppinIn: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
  249.     function Reconnect(ppin: IPin): HResult; stdcall;
  250.     function Disconnect(ppin: IPin): HResult; stdcall;
  251.     function SetDefaultSyncSource: HResult; stdcall;
  252.   end;
  253.  
  254.   IEnumFilters = interface(IUnknown)
  255.     ['{56A86893-0AD4-11CE-B03A-0020AF0BA770}']
  256.     function Next(cFilters: ULONG; out ppFilter: IBaseFilter;
  257.         var pcFetched: ULONG): HResult; stdcall;
  258.     function Skip(cFilters: ULONG): HResult; stdcall;
  259.     function Reset: HResult; stdcall;
  260.     function Clone(out ppEnum: IEnumFilters): HResult; stdcall;
  261.   end;
  262.  
  263.   TFilter_State = (
  264.     State_Stopped,
  265.     State_Paused,
  266.     State_Running
  267.   );
  268.  
  269.   IReferenceClock = interface;
  270.  
  271.   IMediaFilter = interface(IPersist)
  272.     ['{56A86899-0AD4-11CE-B03A-0020AF0BA770}']
  273.     function Stop: HResult; stdcall;
  274.     function Pause: HResult; stdcall;
  275.     function Run(tStart: TReference_Time): HResult; stdcall;
  276.     function GetState(dwMilliSecsTimeout: DWORD; var State: TFilter_State): HResult; stdcall;
  277.     function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
  278.     function GetSyncSource(out pClock: IReferenceClock): HResult; stdcall;
  279.   end;
  280.  
  281.   TFilterInfo = record
  282.     achName: array[0..127] of WCHAR;
  283.     pGraph: IFilterGraph;
  284.   end;
  285.  
  286.   IBaseFilter = interface(IMediaFilter)
  287.     ['{56A86895-0AD4-11CE-B03A-0020AF0BA770}']
  288.     function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
  289.     function FindPin(Id: LPCWSTR; out ppPin: IPin): HResult; stdcall;
  290.     function QueryFilterInfo(out pInfo: TFilterInfo): HResult; stdcall;
  291.     function JoinFilterGraph(pGraph: IFilterGraph; pName: LPCWSTR): HResult; stdcall;
  292.     function QueryVendorInfo(var pVendorInfo: LPWSTR): HResult; stdcall;
  293.   end;
  294.  
  295.   IReferenceClock = interface(IUnknown)
  296.     ['{56A86897-0AD4-11CE-B03A-0020AF0BA770}']
  297.     function GetTime(var pTime: TReference_Time): HResult; stdcall;
  298.     function AdviseTime(baseTime, streamTime: TReference_Time;
  299.         hEvent: THandle; var pdwAdviseCookie: DWORD): HResult; stdcall;
  300.     function AdvisePeriodic(startTime, periodTime: TReference_Time;
  301.         hSemaphore: HSEMAPHORE; var pdwAdviseCookie: DWORD): HResult; stdcall;
  302.     function Unadvise(dwAdviseCookie: DWORD): HResult; stdcall;
  303.   end;
  304.  
  305.   IReferenceClock2 = interface(IReferenceClock)
  306.     ['{36B73885-C2C8-11CF-8B46-00805F6CEF60}']
  307.   end;
  308.  
  309.   IMediaSample = interface(IUnknown)
  310.     ['{56A8689A-0AD4-11CE-B03A-0020AF0BA770}']
  311.     function GetPointer(var ppBuffer: Pointer): HResult; stdcall;
  312.     function GetSize: Longint; stdcall;
  313.     function GetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
  314.     function SetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
  315.     function IsSyncPoint: HResult; stdcall;
  316.     function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
  317.     function IsPreroll: HResult; stdcall;
  318.     function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
  319.     function GetActualDataLength: Longint; stdcall;
  320.     function SetActualDataLength(lLen: Longint): HResult; stdcall;
  321.     function GetMediaType(var ppMediaType: PAM_Media_Type): HResult; stdcall;
  322.     function SetMediaType(const pMediaType: TAM_Media_Type): HResult; stdcall;
  323.     function IsDiscontinuity: HResult; stdcall;
  324.     function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
  325.     function GetMediaTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
  326.     function SetMediaTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
  327.   end;                                    
  328.  
  329. const
  330.   AM_SAMPLE_SPLICEPOINT         = $1;
  331.   AM_SAMPLE_PREROLL             = $2;
  332.   AM_SAMPLE_DATADISCONTINUITY   = $4;
  333.   AM_SAMPLE_TYPECHANGED         = $8;
  334.   AM_SAMPLE_TIMEVALID           = $10;
  335.   AM_SAMPLE_TIMEDISCONTINUITY   = $40;
  336.   AM_SAMPLE_FLUSH_ON_PAUSE      = $80;
  337.   AM_SAMPLE_STOPVALID           = $100;
  338.   AM_SAMPLE_ENDOFSTREAM         = $200;
  339.   AM_STREAM_MEDIA               = 0;
  340.   AM_STREAM_CONTROL             = 1;
  341.  
  342. type
  343.   TAM_Sample2_Properties = record
  344.     cbData: DWORD;
  345.     dwTypeSpecificFlags: DWORD;
  346.     dwSampleFlags: DWORD;
  347.     lActual: Longint;
  348.     tStart: TReference_Time;
  349.     tStop: TReference_Time;
  350.     dwStreamId: DWORD;
  351.     pMediaType: PAM_Media_Type;
  352.     pbBuffer: Pointer;
  353.     cbBuffer: Longint;
  354.   end;
  355.  
  356. type
  357.   IMediaSample2 = interface(IMediaSample)
  358.     ['{36B73884-C2C8-11CF-8B46-00805F6CEF60}']
  359.     function GetProperties(cbProperties: DWORD; var pbProperties): HResult; stdcall;
  360.     function SetProperties(cbProperties: DWORD; const pbProperties): HResult; stdcall;
  361.   end;
  362.  
  363. const
  364.   AM_GBF_PREVFRAMESKIPPED = 1;
  365.   AM_GBF_NOTASYNCPOINT    = 2;
  366.   AM_GBF_NOWAIT           = 4;
  367.  
  368. type
  369.   IMemAllocator = interface(IUnknown)
  370.     ['{56A8689C-0AD4-11CE-B03A-0020AF0BA770}']
  371.     function SetProperties(const pRequest: TAllocator_Properties;
  372.         var pActual: TAllocator_Properties): HResult; stdcall;
  373.     function GetProperties(var pProps: TAllocator_Properties): HResult; stdcall;
  374.     function Commit: HResult; stdcall;
  375.     function Decommit: HResult; stdcall;      
  376.     function GetBuffer(out ppBuffer: IMediaSample;
  377.         var pStartTime, pEndTime: TReference_Time; dwFlags: DWORD): HResult; stdcall;
  378.     function ReleaseBuffer(pBuffer: IMediaSample): HResult; stdcall;
  379.   end;
  380.  
  381.   IMemInputPin = interface(IUnknown)
  382.     ['{56A8689D-0AD4-11CE-B03A-0020AF0BA770}']
  383.     function GetAllocator(out ppAllocator: IMemAllocator): HResult; stdcall;
  384.     function NotifyAllocator(pAllocator: IMemAllocator; bReadOnly: BOOL): HResult; stdcall;
  385.     function GetAllocatorRequirements(var pProps: TAllocator_Properties): HResult; stdcall;
  386.     function Receive(pSample: IMediaSample): HResult; stdcall;
  387.     function ReceiveMultiple(const pSamples; nSamples: Longint;
  388.         var nSamplesProcessed: Longint): HResult; stdcall;
  389.     function ReceiveCanBlock: HResult; stdcall;
  390.   end;
  391.  
  392.   IAMovieSetup = interface(IUnknown)
  393.     ['{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}']
  394.     function Register: HResult; stdcall;
  395.     function Unregister: HResult; stdcall;
  396.   end;
  397.  
  398. const
  399.   AM_SEEKING_NoPositioning          = 0;
  400.   AM_SEEKING_AbsolutePositioning    = $1;
  401.   AM_SEEKING_RelativePositioning    = $2;
  402.   AM_SEEKING_IncrementalPositioning = $3;
  403.   AM_SEEKING_PositioningBitsMask    = $3;
  404.   AM_SEEKING_SeekToKeyFrame         = $4;
  405.   AM_SEEKING_ReturnTime             = $8;
  406.   AM_SEEKING_Segment                = $10;
  407.   AM_SEEKING_NoFlush                = $20;
  408.  
  409.   AM_SEEKING_CanSeekAbsolute        = $1;
  410.   AM_SEEKING_CanSeekForwards        = $2;
  411.   AM_SEEKING_CanSeekBackwards       = $4;
  412.   AM_SEEKING_CanGetCurrentPos       = $8;
  413.   AM_SEEKING_CanGetStopPos          = $10;
  414.   AM_SEEKING_CanGetDuration         = $20;
  415.   AM_SEEKING_CanPlayBackwards       = $40;
  416.   AM_SEEKING_CanDoSegments          = $80;
  417.   AM_SEEKING_Source                 = $100;
  418.  
  419. type
  420.   IMediaSeeking = interface(IUnknown)
  421.     ['{36B73880-C2C8-11CF-8B46-00805F6CEF60}']
  422.     function GetCapabilities(var pCapabilities: DWORD): HResult; stdcall;
  423.     function CheckCapabilities(var pCapabilities: DWORD): HResult; stdcall;
  424.     function IsFormatSupported(const pFormat: TGUID): HResult; stdcall;
  425.     function QueryPreferredFormat(var pFormat: TGUID): HResult; stdcall;
  426.     function GetTimeFormat(var pFormat: TGUID): HResult; stdcall;
  427.     function IsUsingTimeFormat(const pFormat: TGUID): HResult; stdcall;
  428.     function SetTimeFormat(const pFormat: TGUID): HResult; stdcall;
  429.     function GetDuration(var pDuration: LONGLONG): HResult; stdcall;
  430.     function GetStopPosition(var pStop: LONGLONG): HResult; stdcall;
  431.     function GetCurrentPosition(var pCurrent: LONGLONG): HResult; stdcall;
  432.     function ConvertTimeFormat(var pTarget: LONGLONG; const pTargetFormat: TGUID;
  433.         Source: LONGLONG; const pSourceFormat: TGUID): HResult; stdcall;
  434.     function SetPositions(var pCurrent: LONGLONG; dwCurrentFlags: DWORD;
  435.         var pStop: LONGLONG; dwStopFlags: DWORD): HResult; stdcall;
  436.     function GetPositions(var pCurrent, pStop: LONGLONG): HResult; stdcall;
  437.     function GetAvailable(var pEarliest, pLatest: LONGLONG): HResult; stdcall;
  438.     function SetRate(dRate: double): HResult; stdcall;
  439.     function GetRate(var pdRate: double): HResult; stdcall;
  440.     function GetPreroll(var pllPreroll: LONGLONG): HResult; stdcall;
  441.   end;
  442.  
  443. const
  444.   AM_MEDIAEVENT_NONOTIFY = $01;
  445.  
  446. type
  447.   TRefFilter = record
  448.     Clsid: TGUID;
  449.     Name: LPWSTR;
  450.   end;
  451.   PRefFilter = ^TRefFilter;
  452.  
  453.   IEnumRegFilters = interface(IUnknown)
  454.     ['{56A868A4-0AD4-11CE-B03A-0020AF0BA770}']
  455.     function Next(cFilters: ULONG; var apRegFilter: PRefFilter;
  456.         var pcFetched: ULONG): HResult; stdcall;
  457.     function Skip(cFilters: ULONG): HResult; stdcall;
  458.     function Reset: HResult; stdcall;
  459.     function Clone(out ppEnum: IEnumRegFilters): HResult; stdcall;
  460.   end;
  461.  
  462. const
  463.   MERIT_PREFERRED       = $800000;
  464.   MERIT_NORMAL          = $600000;
  465.   MERIT_UNLIKELY        = $400000;
  466.   MERIT_DO_NOT_USE      = $200000;
  467.   MERIT_SW_COMPRESSOR   = $100000;
  468.   MERIT_HW_COMPRESSOR   = $100050;
  469.  
  470. type
  471.   IFilterMapper = interface(IUnknown)
  472.     ['{56A868A3-0AD4-11CE-B03A-0020AF0BA770}']
  473.     function RegisterFilter(const clsid: TGUID; Name: LPCWSTR; dwMerit: DWORD): HResult; stdcall;
  474.     function RegisterFilterInstance(const clsid: TGUID; Name: LPCWSTR;
  475.         var MRId: TGUID): HResult; stdcall;
  476.     function RegisterPin(const Filter: TGUID; Name: LPCWSTR;
  477.         bRendered, bOutput, bZero, bMany: BOOL; const ConnectsToFilter: TGUID;
  478.         ConnectsToPin: LPCWSTR): HResult; stdcall;
  479.     function RegisterPinType(const clsFilter: TGUID; strName: LPCWSTR;
  480.         const clsMajorType, clsSubType: TGUID): HResult; stdcall;
  481.     function UnregisterFilter(const Filter: TGUID): HResult; stdcall;
  482.     function UnregisterFilterInstance(const MRId: TGUID): HResult; stdcall;
  483.     function UnregisterPin(const Filter: TGUID; Name: LPCWSTR): HResult; stdcall;
  484.     function EnumMatchingFilters(out ppEnum: IEnumRegFilters; dwMerit: DWORD;
  485.         bInputNeeded: BOOL; const clsInMaj, clsInSub: TGUID;
  486.         bRender, bOututNeeded: BOOL; const clsOutMaj, clsOutSub: TGUID): HResult; stdcall;
  487.   end;
  488.  
  489.   PRefInTypes = ^TRefInTypes;
  490.   TRefInTypes = record
  491.     clsMajorType: PGUID;
  492.     clsMinorType: PGUID;
  493.   end;
  494.  
  495.   PRegFilterPins = ^TRegFilterPins;
  496.   TRegFilterPins = record
  497.     strName: LPWSTR;
  498.     bRendered: BOOL;
  499.     bOutput: BOOL;
  500.     bZero: BOOL;
  501.     bMany: BOOL;
  502.     oFilter: PGUID;
  503.     strConnectsToPin: PWCHAR;
  504.     nMediaTypes: UINT;
  505.     lpMediaType: PRefInTypes;
  506.   end;
  507.  
  508.   PRegPinMedium = ^TRegPinMedium;
  509.   TRegPinMedium = record
  510.     clsMedium: TGUID;
  511.     dw1: DWORD;
  512.     dw2: DWORD;
  513.   end;
  514.  
  515. const
  516.   REG_PINFLAG_B_ZERO     = $1;
  517.   REG_PINFLAG_B_RENDERER = $2;
  518.   REG_PINFLAG_B_MANY     = $4;
  519.   REG_PINFLAG_B_OUTPUT   = $8;
  520.  
  521. type
  522.   PRegFilterPins2 = ^TRegFilterPins2;
  523.   TRegFilterPins2 = record
  524.     dwFlags: DWORD;
  525.     cInstances: UINT;
  526.     nMediaTypes: UINT;
  527.     lpMediaType: PRefInTypes;
  528.     lpMedium: PRegPinMedium;
  529.     clsPinCategory: PGUID;
  530.   end;
  531.  
  532.   TRegFilter2 = record
  533.     dwVersion: DWORD;
  534.     dwMerit: DWORD;
  535.     case Integer of
  536.       0: (
  537.         cPins: ULONG;
  538.         cPins2: ULONG;
  539.       );
  540.       1: (
  541.         rgPins: PRegFilterPins;
  542.         rgPins2: PRegFilterPins2;
  543.       );
  544.   end;
  545.  
  546.   IFilterMapper2 = interface(IUnknown)
  547.     ['{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}']
  548.     function CreateCategory(const clsidCategory: TGUID; dwCategoryMerit: DWORD;
  549.         Description: LPCWSTR): HResult; stdcall;
  550.     function UnregisterFilter(const pclsidCategory: TGUID;
  551.         szInstance: PWCHAR; const Filter: TGUID): HResult; stdcall;
  552.     function RegisterFilter(const clsidFilter: TGUID; Name: LPCWSTR;
  553.         out ppMoniker: IMoniker; const pclsidCategory: TGUID;
  554.         szInstance: PWCHAR; const prf2: TRegFilter2): HResult; stdcall;
  555.  
  556.     function EnumMatchingFilters(out ppEnum: IEnumMoniker; dwFlags: DWORD;
  557.         bExactMatch: BOOL; dwMerit: DWORD; bInputNeeded: BOOL; cInputTypes: DWORD;
  558.         const pInputTypes, pPinCategoryIn: TGUID; bRender, bOutputNeeded: BOOL;
  559.         cOutputTypes: DWORD; const pMedOut: TRegPinMedium;
  560.         const pPinCategoryOut: TGUID): HResult; stdcall;
  561.   end;
  562.  
  563.   TQualityMessageType = (
  564.     Famine,
  565.     Flood
  566.   );
  567.  
  568.   TQuality = record
  569.     Typ: TQualityMessageType;
  570.     Proportion: Longint;
  571.     Late: TReference_Time;
  572.     TimeStamp: TReference_Time;
  573.   end;
  574.  
  575.   IQualityControl = interface(IUnknown)
  576.     ['{56A868A5-0AD4-11CE-B03A-0020AF0BA770}']
  577.     function Notify(pSelf: IBaseFilter; q: TQuality): HResult; stdcall;
  578.     function SetSink(piqc: IQualityControl): HResult; stdcall;
  579.   end;
  580.  
  581. const
  582.   CK_NOCOLORKEY = $0;
  583.   CK_INDEX      = $1;
  584.   CK_RGB        = $2;
  585.  
  586. type
  587.   TColorKey = record
  588.     KeyType: DWORD;
  589.     PaletteIndex: DWORD;
  590.     LowColorValue: COLORREF;
  591.     HighColorValue: COLORREF;
  592.   end;
  593.  
  594. const
  595.   ADVISE_NONE       = 0;
  596.   ADVISE_CLIPPING   = $1;
  597.   ADVISE_PALETTE    = $2;
  598.   ADVISE_COLORKEY   = $4;
  599.   ADVISE_POSITION   = $8;
  600.  
  601.   ADVISE_ALL = ADVISE_CLIPPING or ADVISE_PALETTE or ADVISE_COLORKEY or ADVISE_POSITION;
  602.  
  603. type
  604.   IOverlayNotify = interface(IUnknown)
  605.     ['{56A868A0-0AD4-11CE-B03A-0020AF0BA770}']
  606.     function OnPaletteChange(dwColors: DWORD; const pPalette): HResult; stdcall;
  607.     function OnClipChange(const pSourceRect, pDestinationRect: TRect;
  608.         const pRgnData: TRgnData): HResult; stdcall;
  609.     function OnColorKeyChange(const pColorKey: TColorKey): HResult; stdcall;
  610.     function OnPositionChange(const pSourceRect, pDestinationRect: TRect): HResult; stdcall;
  611.   end;
  612.  
  613.   IOverlay = interface(IUnknown)
  614.     ['{56A868A1-0AD4-11CE-B03A-0020AF0BA770}']
  615.     function GetPalette(var pdwColors: DWORD; var ppPalette): HResult; stdcall;
  616.     function SetPalette(dwColors: DWORD; const pPalette): HResult; stdcall;
  617.     function GetDefaultColorKey(var pColorKey: TColorKey): HResult; stdcall;
  618.     function GetColorKey(var pColorKey: TColorKey): HResult; stdcall;
  619.     function SetColorKey(const pColorKey: TColorKey): HResult; stdcall;
  620.     function GetWindowHandle(var pHwnd: HWND): HResult; stdcall;
  621.     function GetClipList(var pSourceRect, pDestinationRect: TRect;
  622.         var ppRgnData: PRgnData): HResult; stdcall;
  623.     function GetVideoPosition(var pSourceRect, pDestinationRect: TRect): HResult; stdcall;
  624.     function Advise(pOverlayNotify: IOverlayNotify; dwInterests: DWORD): HResult; stdcall;
  625.     function Unadvise: HResult; stdcall;
  626.   end;
  627.  
  628.   IMediaEventSink = interface(IUnknown)
  629.     ['{56A868A2-0AD4-11CE-B03A-0020AF0BA770}']
  630.     function Notify(EventCode, EventParam1, EventParam2: Longint): HResult; stdcall;
  631.   end;
  632.  
  633.   IFileSourceFilter = interface(IUnknown)
  634.     ['{56A868A6-0AD4-11CE-B03A-0020AF0BA770}']
  635.     function Load(pszFileName: PWCHAR; const pmt: TAM_Media_Type): HResult; stdcall;
  636.     function GetCurFile(var ppszFileName: POLESTR; out pmt: TAM_Media_Type): HResult; stdcall;
  637.   end;
  638.  
  639.   IFileSinkFilter = interface(IUnknown)
  640.     ['{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}']
  641.     function SetFileName(pszFileName: POLESTR; const pmt: TAM_Media_Type): HResult; stdcall;
  642.     function GetCurFile(var ppszFileName: POLESTR; out pmt: TAM_Media_Type): HResult; stdcall;
  643.   end;
  644.  
  645.   IFileSinkFilter2 = interface(IFileSinkFilter)
  646.     ['{00855B90-CE1B-11D0-BD4F-00A0C911CE86}']
  647.     function SetMode(dwFlags: DWORD): HResult; stdcall;
  648.     function GetMode(var pdwFlags: DWORD): HResult; stdcall;
  649.   end;
  650.  
  651.   TAM_FileSink_Flags = (
  652.     AM_FILE_INVALID_0,
  653.     AM_FILE_OVERWRITE
  654.   );
  655.  
  656.   PAsyncIOReq = ^TAsyncIOReq;
  657.   TAsyncIOReq = record
  658.     engine: array[0..3] of DWORD;
  659.     lpv: Pointer;
  660.     cb: DWORD;
  661.     dwError: DWORD;
  662.     cbDone: DWORD;
  663.     liPos: TLargeInteger;
  664.     hEvent: DWORD;
  665.     dwUser: DWORD;
  666.   end;
  667.  
  668.   IFileAsyncIO = interface(IUnknown)
  669.     ['{56A868A7-0AD4-11CE-B03A-0020AF0BA770}']
  670.     function QueryAlignment(var pdwAlign: DWORD): HResult; stdcall;
  671.     function Read(const pReq: TAsyncIOReq): HResult; stdcall;
  672.     function Write(const pReq: TAsyncIOReq): HResult; stdcall;
  673.     function WaitForNext(var ppReq: PAsyncIOReq;
  674.         dwTimeout: DWORD): HResult; stdcall;
  675.     function WaitForSpecific(var pReq: TAsyncIOReq;
  676.         dwTimeout: DWORD): HResult; stdcall;
  677.     function DiscardPending: HResult; stdcall;
  678.     function Flush: HResult; stdcall;
  679.   end;
  680.  
  681.   IGraphBuilder = interface(IFilterGraph)
  682.     ['{56A868A9-0AD4-11CE-B03A-0020AF0BA770}']
  683.     function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
  684.     function Render(ppinOut: IPin): HResult; stdcall;
  685.     function RenderFile(lpcwstrFile, lpcwstrPlayList: LPCWSTR): HResult; stdcall;
  686.     function AddSourceFilter(lpcwstrFileName, lpcwstrFilterName: LPCWSTR;
  687.         out ppFilter: IBaseFilter): HResult; stdcall;
  688.     function SetLogFile(hFile: THandle): HResult; stdcall;
  689.     function Abort: HResult; stdcall;
  690.     function ShouldOperationContinue: HResult; stdcall;
  691.   end;
  692.  
  693.   IAMCopyCaptureFileProgress = interface;
  694.  
  695.   ICaptureGraphBuilder = interface(IUnknown)
  696.     ['{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}']
  697.     function SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;
  698.     function GetFiltergraph(out ppfg: IGraphBuilder): HResult; stdcall;
  699.     function SetOutputFileName(const pType: TGUID; lpstrFile: PWCHAR;
  700.         out ppf: IBaseFilter; out ppSink: IFileSinkFilter): HResult; stdcall;
  701.     function FindInterface(const pCategory: TGUID; pf: IBaseFilter;
  702.         const riid: TGUID; out ppint): HResult; stdcall;
  703.     function RenderStream(const pCategory: TGUID; pSource: IUnknown;
  704.         pfCompressor, pfRenderer: IBaseFilter): HResult; stdcall;
  705.     function ControlStream(const pCategory: TGUID; pFilter: IBaseFilter;
  706.         const pstart, pstop: TReference_Time; wStartCookie, wStopCookie: WORD): HResult; stdcall;
  707.     function AllocCapFile(lpstr: PWCHAR; dwlSize: LONGLONG): HResult; stdcall;
  708.     function CopyCaptureFile(lpwstrOld, lpwstrNew: PWCHAR; fAllowEscAbort: Integer;
  709.         pCallback: IAMCopyCaptureFileProgress): HResult; stdcall;
  710.   end;
  711.  
  712.   IAMCopyCaptureFileProgress = interface(IUnknown)
  713.     ['{670D1D20-A068-11D0-B3F0-00AA003761C5}']
  714.     function Progress(iProgress: Integer): HResult; stdcall;
  715.   end;
  716.  
  717. const
  718.   AM_RENDEREX_RENDERTOEXISTINGRENDERERS = $01;
  719.  
  720. type
  721.   IFilterGraph2 = interface(IGraphBuilder)
  722.     ['{36B73882-C2C8-11CF-8B46-00805F6CEF60}']
  723.     function AddSourceFilterForMoniker(pMoniker: IMoniker; pCtx: IBindCtx;
  724.         lpcwstrFilterName: LPCWSTR; out ppFilter: IBaseFilter): HResult; stdcall;
  725.     function ReconnectEx(ppin: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
  726.     function RenderEx(pPinOut: IPin; dwFlags: DWORD; pvContext: Pointer): HResult; stdcall;
  727.   end;
  728.  
  729.   IStreamBuilder = interface(IUnknown)
  730.     ['{56A868BF-0AD4-11CE-B03A-0020AF0BA770}']
  731.     function Render(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
  732.     function Backout(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
  733.   end;
  734.  
  735.   IAsyncReader = interface(IUnknown)
  736.     ['{56A868AA-0AD4-11CE-B03A-0020AF0BA770}']
  737.     function RequestAllocator(pPreferred: IMemAllocator;
  738.         const pProps: TAllocator_Properties; out ppActual: IMemAllocator): HResult; stdcall;
  739.     function Request(pSample: IMediaSample; dwUser: DWORD): HResult; stdcall;
  740.     function WaitForNext(dwTimeout: DWORD; out ppSample: IMediaSample;
  741.         var pdwUser: DWORD): HResult; stdcall;
  742.     function SyncReadAligned(pSample: IMediaSample): HResult; stdcall;
  743.     function SyncRead(llPosition: LONGLONG; lLength: Longint; var pBuffer): HResult; stdcall;
  744.     function Length(var pTotal, pAvailable: LONGLONG): HResult; stdcall;
  745.     function BeginFlush: HResult; stdcall;
  746.     function EndFlush: HResult; stdcall;
  747.   end;
  748.  
  749.   IGraphVersion = interface(IUnknown)
  750.     ['{56A868AB-0AD4-11CE-B03A-0020AF0BA770}']
  751.     function QueryVersion(var pVersion: Longint): HResult; stdcall;
  752.   end;
  753.  
  754.   IResourceConsumer = interface(IUnknown)
  755.     ['{56A868AD-0AD4-11CE-B03A-0020AF0BA770}']
  756.     function AcquireResource(idResource: Longint): HResult; stdcall;
  757.     function ReleaseResource(idResource: Longint): HResult; stdcall;
  758.   end;
  759.  
  760.   IResourceManager = interface(IUnknown)
  761.     ['{56A868AC-0AD4-11CE-B03A-0020AF0BA770}']
  762.     function Register(pName: LPCWSTR; cResource: Longint;
  763.         var plToken: Longint): HResult; stdcall;
  764.     function RegisterGroup(pName: LPCWSTR; cResource: Longint;
  765.         const palTokens: Longint; var plToken: Longint): HResult; stdcall;
  766.     function RequestResource(idResource: Longint; pFocusObject: IUnknown;
  767.         pConsumer: IResourceConsumer): HResult; stdcall;
  768.     function NotifyAcquire(idResource: Longint; pConsumer: IResourceConsumer;
  769.         hr: HResult): HResult; stdcall;
  770.     function NotifyRelease(idResource: Longint; pConsumer: IResourceConsumer;
  771.         bStillWant: BOOL): HResult; stdcall;
  772.     function CancelRequest(idResource: Longint; pConsumer: IResourceConsumer): HResult; stdcall;
  773.     function SetFocus(pFocusObject: IUnknown): HResult; stdcall;
  774.     function ReleaseFocus(pFocusObject: IUnknown): HResult; stdcall;
  775.   end;
  776.  
  777.   IDistributorNotify = interface(IUnknown)
  778.     ['{56A868AF-0AD4-11CE-B03A-0020AF0BA770}']
  779.     function Stop: HResult; stdcall;
  780.     function Pause: HResult; stdcall;
  781.     function Run(tStart: TReference_Time): HResult; stdcall;
  782.     function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
  783.     function NotifyGraphChange: HResult; stdcall;
  784.   end;
  785.  
  786. const
  787.   AM_STREAM_INFO_START_DEFINED   = $1;
  788.   AM_STREAM_INFO_STOP_DEFINED    = $2;
  789.   AM_STREAM_INFO_DISCARDING      = $4;
  790.   AM_STREAM_INFO_STOP_SEND_EXTRA = $10;
  791.  
  792. type
  793.   {TAM_Stream_Info_Flags = (
  794.     AM_STREAM_INFO_INVALID_0,
  795.     AM_STREAM_INFO_START_DEFINED,
  796.     AM_STREAM_INFO_INVALID_1,
  797.     AM_STREAM_INFO_STOP_DEFINED,
  798.     AM_STREAM_INFO_INVALID_3,
  799.     AM_STREAM_INFO_DISCARDING,
  800.     AM_STREAM_INFO_INVALID_4,
  801.     AM_STREAM_INFO_INVALID_5,
  802.     AM_STREAM_INFO_INVALID_6,
  803.     AM_STREAM_INFO_INVALID_7,
  804.     AM_STREAM_INFO_INVALID_8,
  805.     AM_STREAM_INFO_INVALID_9,
  806.     AM_STREAM_INFO_INVALID_10,
  807.     AM_STREAM_INFO_INVALID_11,
  808.     AM_STREAM_INFO_INVALID_12,
  809.     AM_STREAM_INFO_INVALID_13,
  810.     AM_STREAM_INFO_INVALID_14,
  811.     AM_STREAM_INFO_INVALID_15,
  812.     AM_STREAM_INFO_STOP_SEND_EXTRA
  813.   );
  814.       }
  815.   TAM_Stream_Info = record
  816.     tStart: TReference_Time;
  817.     tStop: TReference_Time;
  818.     dwStartCookie: DWORD;
  819.     dwStopCookie: DWORD;
  820.     dwFlags: DWORD;
  821.   end;
  822.  
  823.   IAMStreamControl = interface(IUnknown)
  824.     ['{36b73881-c2c8-11cf-8b46-00805f6cef60}']
  825.     function StartAt(const ptStart: TReference_Time; dwCookie: DWORD): HResult; stdcall;
  826.     function StopAt(const ptStop: TReference_Time; bSendExtra: BOOL;
  827.         dwCookie: DWORD): HResult; stdcall;
  828.     function GetInfo(out pInfo: TAM_Stream_Info): HResult; stdcall;
  829.   end;
  830.  
  831.   ISeekingPassThru = interface(IUnknown)
  832.     ['{36B73883-C2C8-11CF-8B46-00805F6CEF60}']
  833.     function Init(bSupportRendering: BOOL; pPin: IPin): HResult; stdcall;
  834.   end;
  835.  
  836.   TVideo_Stream_Config_Caps = record
  837.     guid: TGUID;
  838.     VideoStandard: ULONG;
  839.     InputSize: TSize;
  840.     MinCroppingSize: TSize;
  841.     MaxCroppingSize: TSize;
  842.     CropGranularityX: Integer;
  843.     CropGranularityY: Integer;
  844.     CropAlignX: Integer;
  845.     CropAlignY: Integer;
  846.     MinOutputSize: TSize;
  847.     MaxOutputSize: TSize;
  848.     OutputGranularityX: Integer;
  849.     OutputGranularityY: Integer;
  850.     StretchTapsX: Integer;
  851.     StretchTapsY: Integer;
  852.     ShrinkTapsX: Integer;
  853.     ShrinkTapsY: Integer;
  854.     MinFrameInterval: LONGLONG;
  855.     MaxFrameInterval: LONGLONG;
  856.     MinBitsPerSecond: Longint;
  857.     MaxBitsPerSecond: Longint;
  858.   end;
  859.  
  860.   TAudio_Stream_Config_Caps = record
  861.     guid: TGUID;
  862.     MinimumChannels: ULONG;
  863.     MaximumChannels: ULONG;
  864.     ChannelsGranularity: ULONG;
  865.     MinimumBitsPerSample: ULONG;
  866.     MaximumBitsPerSample: ULONG;
  867.     BitsPerSampleGranularity: ULONG;
  868.     MinimumSampleFrequency: ULONG;
  869.     MaximumSampleFrequency: ULONG;
  870.     SampleFrequencyGranularity: ULONG;
  871.   end;
  872.  
  873.   IAMStreamConfig = interface(IUnknown)
  874.     ['{C6E13340-30AC-11d0-A18C-00A0C9118956}']
  875.     function SetFormat(const pmt: TAM_Media_Type): HResult; stdcall;
  876.     function GetFormat(var ppmt: PAM_Media_Type): HResult; stdcall;
  877.     function GetNumberOfCapabilities(var piCount, piSize: Integer): HResult; stdcall;
  878.     function GetStreamCaps(iIndex: Integer; var ppmt: PAM_Media_Type;
  879.         var pSCC): HResult; stdcall;
  880.   end;
  881.  
  882.   TInterleavingMode = (
  883.     INTERLEAVE_NONE,
  884.     INTERLEAVE_CAPTURE,
  885.     INTERLEAVE_FULL
  886.   );
  887.  
  888.   IConfigInterleaving = interface(IUnknown)
  889.     ['{BEE3D220-157B-11d0-BD23-00A0C911CE86}']
  890.     function put_Mode(mode: TInterleavingMode): HResult; stdcall;
  891.     function get_Mode(var pMode: TInterleavingMode): HResult; stdcall;
  892.     function put_Interleaving(const prtInterleave, prtPreroll: TReference_Time): HResult; stdcall;
  893.     function get_Interleaving(var prtInterleave, prtPreroll: TReference_Time): HResult; stdcall;
  894.   end;
  895.  
  896.   IConfigAviMux = interface(IUnknown)
  897.     ['{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}']
  898.     function SetMasterStream(iStream: Longint): HResult; stdcall;
  899.     function GetMasterStream(var pStream: Longint): HResult; stdcall;
  900.     function SetOutputCompatibilityIndex(fOldIndex: BOOL): HResult; stdcall;
  901.     function GetOutputCompatibilityIndex(var pfOldIndex: BOOL): HResult; stdcall;
  902.   end;
  903.  
  904. const
  905.   CompressionCaps_CanQuality    = $1;
  906.   CompressionCaps_CanCrunch     = $2;
  907.   CompressionCaps_CanKeyFrame   = $4;
  908.   CompressionCaps_CanBFrame     = $8;
  909.   CompressionCaps_CanWindow     = $10;
  910.  
  911. type
  912.   IAMVideoCompression = interface(IUnknown)
  913.     ['{C6E13343-30AC-11d0-A18C-00A0C9118956}']
  914.     function put_KeyFrameRate(KeyFrameRate: Longint): HResult; stdcall;
  915.     function get_KeyFrameRate(pKeyFrameRate: Longint): HResult; stdcall;
  916.     function put_PFramesPerKeyFrame(PFramesPerKeyFrame: Longint): HResult; stdcall;
  917.     function get_PFramesPerKeyFrame(var pPFramesPerKeyFrame: Longint): HResult; stdcall;
  918.     function put_Quality(Quality: double): HResult; stdcall;
  919.     function get_Quality(var pQuality: double): HResult; stdcall;
  920.     function put_WindowSize(WindowSize: LONGLONG): HResult; stdcall;
  921.     function get_WindowSize(var pWindowSize: LONGLONG): HResult; stdcall;
  922.     function GetInfo(pszVersion: PWCHAR; var pcbVersion: Integer;
  923.         pszDescription: LPWSTR; var pcbDescription: Integer;
  924.         var pDefaultKeyFrameRate, pDefaultPFramesPerKey: Longint;
  925.         var pDefaultQuality: double; pCapabilities: Longint): HResult; stdcall;
  926.     function OverrideKeyFrame(FrameNumber: Longint): HResult; stdcall;
  927.     function OverrideFrameSize(FrameNumber, Size: Longint): HResult; stdcall;
  928.   end;
  929.  
  930. const
  931.   VfwCaptureDialog_Source  = $1;
  932.   VfwCaptureDialog_Format  = $2;
  933.   VfwCaptureDialog_Display = $4;
  934.  
  935.   VfwCompressDialog_Config = $1;
  936.   VfwCompressDialog_About  = $2;
  937.  
  938. type
  939.   IAMVfwCaptureDialogs = interface(IUnknown)
  940.     ['{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}']
  941.     function HasDialog(iDialog: Integer): HResult; stdcall;
  942.     function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
  943.     function SendDriverMessage(iDialog: Integer; uMsg: Integer;
  944.         dw1, dw2: Longint): HResult; stdcall;
  945.   end;
  946.  
  947.   IAMVfwCompressDialogs = interface(IUnknown)
  948.     ['{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}']
  949.     function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
  950.     function GetState(var pState; var pcbState: Integer): HResult; stdcall;
  951.     function SetState(const pState; cbState: Integer): HResult; stdcall;
  952.     function SendDriverMessage(uMsg: Integer; dw1, dw2: Longint): HResult; stdcall;
  953.   end;
  954.  
  955.   IAMDroppedFrames = interface(IUnknown)
  956.     ['{C6E13344-30AC-11d0-A18C-00A0C9118956}']
  957.     function GetNumDropped(var plDropped: Longint): HResult; stdcall;
  958.     function GetNumNotDropped(var plNotDropped: Longint): HResult; stdcall;
  959.     function GetDroppedInfo(lSize: Longint; var plArray: Longint;
  960.         var plNumCopied: Longint): HResult; stdcall;
  961.     function GetAverageFrameSize(var plAverageSize: Longint): HResult; stdcall;
  962.   end;
  963.  
  964. const
  965.   AMF_AUTOMATICGAIN = -1;
  966.  
  967. type
  968.   IAMAudioInputMixer = interface(IUnknown)
  969.     ['{54C39221-8380-11d0-B3F0-00AA003761C5}']
  970.     function put_Enable(fEnable: BOOL): HResult; stdcall;
  971.     function get_Enable(var pfEnable: BOOL): HResult; stdcall;
  972.     function put_Mono(fMono: BOOL): HResult; stdcall;
  973.     function get_Mono(var pfMono: BOOL): HResult; stdcall;
  974.     function put_MixLevel(Level: double): HResult; stdcall;
  975.     function get_MixLevel(var pLevel: double): HResult; stdcall;
  976.     function put_Pan(Pan: double): HResult; stdcall;
  977.     function get_Pan(var pPan: double): HResult; stdcall;
  978.     function put_Loudness(fLoudness: BOOL): HResult; stdcall;
  979.     function get_Loudness(var pfLoudness: BOOL): HResult; stdcall;
  980.     function put_Treble(Treble: double): HResult; stdcall;
  981.     function get_Treble(var pTreble: double): HResult; stdcall;
  982.     function get_TrebleRange(var pRange: double): HResult; stdcall;
  983.     function put_Bass(Bass: double): HResult; stdcall;
  984.     function get_Bass(var pBass: double): HResult; stdcall;
  985.     function get_BassRange(var pRange: double): HResult; stdcall;
  986.   end;
  987.  
  988.   IAMBufferNegotiation = interface(IUnknown)
  989.     ['{56ED71A0-AF5F-11D0-B3F0-00AA003761C5}']
  990.     function SuggestAllocatorProperties(const pprop: TAllocator_Properties): HResult; stdcall;
  991.     function GetAllocatorProperties(var pprop: TAllocator_Properties): HResult; stdcall;
  992.   end;
  993.  
  994. const
  995.   AnalogVideo_None        = 0;
  996.   AnalogVideo_NTSC_M      = $1;
  997.   AnalogVideo_NTSC_M_J    = $2;
  998.   AnalogVideo_NTSC_433    = $4;
  999.   AnalogVideo_PAL_B       = $10;
  1000.   AnalogVideo_PAL_D       = $20;
  1001.   AnalogVideo_PAL_G       = $40;
  1002.   AnalogVideo_PAL_H       = $80;
  1003.   AnalogVideo_PAL_I       = $100;
  1004.   AnalogVideo_PAL_M       = $200;
  1005.   AnalogVideo_PAL_N       = $400;
  1006.   AnalogVideo_PAL_60      = $800;
  1007.   AnalogVideo_SECAM_B     = $1000;
  1008.   AnalogVideo_SECAM_D     = $2000;
  1009.   AnalogVideo_SECAM_G     = $4000;
  1010.   AnalogVideo_SECAM_H     = $8000;
  1011.   AnalogVideo_SECAM_K     = $10000;
  1012.   AnalogVideo_SECAM_K1    = $20000;
  1013.   AnalogVideo_SECAM_L     = $40000;
  1014.   AnalogVideo_SECAM_L1    = $80000;
  1015.  
  1016.   AnalogVideo_NTSC_Mask   = $00000007;
  1017.   AnalogVideo_PAL_Mask    = $00000FF0;
  1018.   AnalogVideo_SECAM_Mask  = $000FF000;
  1019.  
  1020. type
  1021.   TTunerInputType =(
  1022.     TunerInputCable,
  1023.     TunerInputAntenna
  1024.   );
  1025.  
  1026.   TVideoCopyProtectionType = (
  1027.     VideoCopyProtectionMacrovisionBasic,
  1028.     VideoCopyProtectionMacrovisionCBI
  1029.   );
  1030.  
  1031.   TPhysicalConnectorType = (
  1032.     PhysConn_Video_Tuner,
  1033.     PhysConn_Video_Composite,
  1034.     PhysConn_Video_SVideo,
  1035.     PhysConn_Video_RGB,
  1036.     PhysConn_Video_YRYBY,
  1037.     PhysConn_Video_SerialDigital,
  1038.     PhysConn_Video_ParallelDigital,
  1039.     PhysConn_Video_SCSI,
  1040.     PhysConn_Video_AUX,
  1041.     PhysConn_Video_1394,
  1042.     PhysConn_Video_USB,
  1043.     PhysConn_Video_VideoDecoder,
  1044.     PhysConn_Video_VideoEncoder,
  1045.     PhysConn_Video_SCART,
  1046.     PhysConn_Video_Black,
  1047.     PhysConn_Audio_Tuner,
  1048.     PhysConn_Audio_Line,
  1049.     PhysConn_Audio_Mic,
  1050.     PhysConn_Audio_AESDigital,
  1051.     PhysConn_Audio_SPDIFDigital,
  1052.     PhysConn_Audio_SCSI,
  1053.     PhysConn_Audio_AUX,
  1054.     PhysConn_Audio_1394,
  1055.     PhysConn_Audio_USB,
  1056.     PhysConn_Audio_AudioDecoder
  1057.   );
  1058.  
  1059.   IAMAnalogVideoDecoder = interface(IUnknown)
  1060.     ['{C6E13350-30AC-11d0-A18C-00A0C9118956}']
  1061.     function get_AvailableTVFormats(var lAnalogVideoStandard: Longint): HResult; stdcall;
  1062.     function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
  1063.     function get_TVFormat(var plAnalogVideoStandard: Longint): HResult; stdcall;
  1064.     function get_HorizontalLocked(var plLocked: Longint): HResult; stdcall;
  1065.     function put_VCRHorizontalLocking(lVCRHorizontalLocking: Longint): HResult; stdcall;
  1066.     function get_VCRHorizontalLocking(var plVCRHorizontalLocking: Longint): HResult; stdcall;
  1067.     function get_NumberOfLines(var plNumberOfLines: Longint): HResult; stdcall;
  1068.     function put_OutputEnable(lOutputEnable: LongBool): HResult; stdcall;
  1069.     function get_OutputEnable(var plOutputEnable: LongBool): HResult; stdcall;
  1070.   end;
  1071.  
  1072.   TVideoProcAmpProperty = (
  1073.     VideoProcAmp_Brightness,
  1074.     VideoProcAmp_Contrast,
  1075.     VideoProcAmp_Hue,
  1076.     VideoProcAmp_Saturation,
  1077.     VideoProcAmp_Sharpness,
  1078.     VideoProcAmp_Gamma,
  1079.     VideoProcAmp_ColorEnable,
  1080.     VideoProcAmp_WhiteBalance,
  1081.     VideoProcAmp_BacklightCompensation
  1082.   );
  1083.  
  1084.   TVideoProcAmpFlags = (
  1085.     VideoProcAmp_Flags_Manual,
  1086.     VideoProcAmp_Flags_Auto
  1087.   );
  1088.  
  1089.   IAMVideoProcAmp = interface(IUnknown)
  1090.     ['{C6E13360-30AC-11d0-A18C-00A0C9118956}']
  1091.     function GetRange(Property_: TVideoProcAmpProperty;
  1092.         var pMin, pMax, pSteppingDelta, pDefault, pCapsFlags: TVideoProcAmpFlags): HResult; stdcall;
  1093.     function Set_(Property_: TVideoProcAmpProperty; lValue: Longint;
  1094.         Flags: TVideoProcAmpFlags): HResult; stdcall;
  1095.     function Get(Property_: TVideoProcAmpProperty; var lValue: Longint;
  1096.         var Flags: TVideoProcAmpFlags): HResult; stdcall;
  1097.   end;
  1098.  
  1099.   TCameraControlProperty = (
  1100.     CameraControl_Pan,
  1101.     CameraControl_Tilt,
  1102.     CameraControl_Roll,
  1103.     CameraControl_Zoom,
  1104.     CameraControl_Exposure,
  1105.     CameraControl_Iris,
  1106.     CameraControl_Focus
  1107.   );
  1108.  
  1109.   TCameraControlFlags = (
  1110.     CameraControl_Flags_Manual,
  1111.     CameraControl_Flags_Auto
  1112.   );
  1113.  
  1114.   IAMCameraControl = interface(IUnknown)
  1115.     ['{C6E13370-30AC-11d0-A18C-00A0C9118956}']
  1116.     function GetRange(Property_: TCameraControlProperty;
  1117.         var pMin, pMax, pSteppingDelta, pDefault, pCapsFlags: Longint): HResult; stdcall;
  1118.     function Set_(Property_: TCameraControlProperty; lValue: Longint;
  1119.         Flags: TCameraControlFlags): HResult; stdcall;
  1120.     function Get(Property_: TCameraControlProperty; var lValue: Longint;
  1121.         var Flags: TCameraControlFlags): HResult; stdcall;
  1122.   end;
  1123.  
  1124.   IAMCrossbar = interface(IUnknown)
  1125.     ['{C6E13380-30AC-11d0-A18C-00A0C9118956}']
  1126.     function get_PinCounts(var OutputPinCount, InputPinCount: Longint): HResult; stdcall;
  1127.     function CanRoute(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
  1128.     function Route(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
  1129.     function get_IsRoutedTo(OutputPinIndex: Longint;
  1130.         var InputPinIndex: Longint): HResult; stdcall;
  1131.     function get_CrossbarPinInfo(IsInputPin: BOOL; PinIndex: Longint;
  1132.         var PinIndexRelated, PhysicalType: Longint): HResult; stdcall;
  1133.   end;
  1134.  
  1135. const
  1136.   AMTUNER_SUBCHAN_NO_TUNE = -2;
  1137.   AMTUNER_SUBCHAN_DEFAULT = -1;
  1138.  
  1139.   AMTUNER_HASNOSIGNALSTRENGTH = -1;
  1140.   AMTUNER_NOSIGNAL            = 0;
  1141.   AMTUNER_SIGNALPRESENT       = 1;
  1142.  
  1143.   AMTUNER_MODE_DEFAULT    = 0;
  1144.   AMTUNER_MODE_TV         = $1;
  1145.   AMTUNER_MODE_FM_RADIO   = $2;
  1146.   AMTUNER_MODE_AM_RADIO   = $4;
  1147.   AMTUNER_MODE_DSS        = $8;
  1148.  
  1149. type
  1150.   TAMTunerModeType = DWORD;
  1151.  
  1152.   TAMTunerEventType = (
  1153.     AMTUNER_EVENT_CHANGED
  1154.   );
  1155.   //AMTUNER_EVENT_CHANGED   = $1;
  1156.  
  1157.   IAMTunerNotification = interface;
  1158.  
  1159.   IAMTuner = interface(IUnknown)
  1160.     ['{211A8761-03AC-11d1-8D13-00AA00BD8339}']
  1161.     function put_Channel(lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
  1162.     function get_Channel(var lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
  1163.     function ChannelMinMax(var lChannelMin, lChannelMax): HResult; stdcall;
  1164.     function put_CountryCode(lCountryCode: Longint): HResult; stdcall;
  1165.     function get_CountryCode(var lCountryCode: Longint): HResult; stdcall;
  1166.     function put_TuningSpace(lTuningSpace: Longint): HResult; stdcall;
  1167.     function get_TuningSpace(var lTuningSpace: Longint): HResult; stdcall;
  1168.     function Logon(hCurrentUser: THandle): HResult; stdcall;
  1169.     function Logout: HResult; stdcall;
  1170.     function SignalPresent(var plSignalStrength: Longint): HResult; stdcall;
  1171.     function put_Mode(lMode: TAMTunerModeType): HResult; stdcall;
  1172.     function get_Mode(var plMode: TAMTunerModeType): HResult; stdcall;
  1173.     function GetAvailableModes(var plModes: Longint): HResult; stdcall;
  1174.     function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
  1175.         lEvents: Longint): HResult; stdcall;
  1176.     function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
  1177.   end;
  1178.  
  1179.   IAMTunerNotification = interface(IUnknown)
  1180.     ['{211A8760-03AC-11d1-8D13-00AA00BD8339}']
  1181.     function OnEvent(Event: TAMTunerEventType): HResult; stdcall;
  1182.   end;
  1183.  
  1184.   IAMTVTuner = interface(IAMTuner)
  1185.     ['{211A8766-03AC-11d1-8D13-00AA00BD8339}']
  1186.     function get_AvailableTVFormats(var lAnalogVideoStandard: Longint): HResult; stdcall;
  1187.     function get_TVFormat(var plAnalogVideoStandard: Longint): HResult; stdcall;
  1188.     function AutoTune(lChannel: Longint; var plFoundSignal: Longint): HResult; stdcall;
  1189.     function StoreAutoTune: HResult; stdcall;
  1190.     function get_NumInputConnections(var plNumInputConnections: Longint): HResult; stdcall;
  1191.     function put_InputType(lIndex: Longint; InputType: TTunerInputType): HResult; stdcall;
  1192.     function get_InputType(lIndex: Longint; var InputType: TTunerInputType): HResult; stdcall;
  1193.     function put_ConnectInput(lIndex: Longint): HResult; stdcall;
  1194.     function get_ConnectInput(var plIndex: Longint): HResult; stdcall;
  1195.     function get_VideoFrequency(var lFreq: Longint): HResult; stdcall;
  1196.     function get_AudioFrequency(var lFreq: Longint): HResult; stdcall;
  1197.   end;
  1198.  
  1199.   IBPCSatelliteTuner = interface(IAMTuner)
  1200.     ['{211A8765-03AC-11d1-8D13-00AA00BD8339}']
  1201.     function get_DefaultSubChannelTypes(var plDefaultVideoType, plDefaultAudioType: Longint): HResult; stdcall;
  1202.     function put_DefaultSubChannelTypes(lDefaultVideoType, lDefaultAudioType: Longint): HResult; stdcall;
  1203.     function IsTapingPermitted: HResult; stdcall;
  1204.   end;
  1205.  
  1206. const
  1207.   AMTVAUDIO_MODE_MONO   = $1;
  1208.   AMTVAUDIO_MODE_STEREO = $2;
  1209.   AMTVAUDIO_MODE_LANG_A = $10;
  1210.   AMTVAUDIO_MODE_LANG_B = $20;
  1211.   AMTVAUDIO_MODE_LANG_C = $40;
  1212.  
  1213. type
  1214.   TAMTVAudioEventType = (
  1215.     AMTVAUDIO_EVENT_CHANGED
  1216.   );
  1217.  
  1218.   IAMTVAudio = interface(IUnknown)
  1219.     ['{83EC1C30-23D1-11d1-99E6-00A0C9560266}']
  1220.     function GetHardwareSupportedTVAudioModes(var plModes: Longint): HResult; stdcall;
  1221.     function GetAvailableTVAudioModes(var plModes: Longint): HResult; stdcall;
  1222.     function get_TVAudioMode(var plMode: Longint): HResult; stdcall;
  1223.     function put_TVAudioMode(lMode: Longint): HResult; stdcall;
  1224.     function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
  1225.         lEvents: Longint): HResult; stdcall;
  1226.     function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
  1227.   end;
  1228.  
  1229.   IAMTVAudioNotification = interface(IUnknown)
  1230.     ['{83EC1C33-23D1-11D1-99E6-00A0C9560266}']
  1231.     function OnEvent(Event: TAMTVAudioEventType): HResult; stdcall;
  1232.   end;
  1233.  
  1234.   IAMAnalogVideoEncoder = interface(IUnknown)
  1235.     ['{C6E133B0-30AC-11d0-A18C-00A0C9118956}']
  1236.     function get_AvailableTVFormats(var lAnalogVideoStandard: Longint): HResult; stdcall;
  1237.     function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
  1238.     function get_TVFormat(var plAnalogVideoStandard: Longint): HResult; stdcall;
  1239.     function put_CopyProtection(lVideoCopyProtection: Longint): HResult; stdcall;
  1240.     function get_CopyProtection(var lVideoCopyProtection: Longint): HResult; stdcall;
  1241.     function put_CCEnable(lCCEnable: LongBool): HResult; stdcall;
  1242.     function get_CCEnable(var lCCEnable: LongBool): HResult; stdcall;
  1243.   end;
  1244.  
  1245.   TAMProperty_Pin = (
  1246.     AMPROPERTY_PIN_CATEGORY,
  1247.     AMPROPERTY_PIN_MEDIUM
  1248.   );
  1249.  
  1250.   IMediaPropertyBag = interface(IPropertyBag)
  1251.     ['{6025A880-C0D5-11D0-BD4E-00A0C911CE86}']
  1252.     function EnumProperty(iProperty: ULONG; var pvarPropertyName,
  1253.         pvarPropertyValue: Variant): HResult; stdcall;
  1254.   end;
  1255.  
  1256.   IPersistMediaPropertyBag = interface(IPersist)
  1257.      ['{5738E040-B67F-11d0-BD4D-00A0C911CE86}']
  1258.      function InitNew: HResult; stdcall;
  1259.      function Load(pPropBag: IMediaPropertyBag; pErrorLog: IErrorLog): HResult; stdcall;
  1260.      function Save(pPropBag: IMediaPropertyBag; fClearDirty, fSaveAllProperties: BOOL): HResult; stdcall;
  1261.   end;
  1262.  
  1263.   IAMPhysicalPinInfo = interface(IUnknown)
  1264.     ['{F938C991-3029-11CF-8C44-00AA006B6814}']
  1265.     function GetPhysicalType(var pType: Longint; var ppszType: POLESTR): HResult; stdcall;
  1266.   end;
  1267.  
  1268.   IAMExtDevice = interface(IUnknown)
  1269.     ['{B5730A90-1A2C-11CF-8C23-00AA006B6814}']
  1270.     function GetCapability(Capability: Longint; var pValue: Longint; pdblValue: double): HResult; stdcall;
  1271.     function get_ExternalDeviceID(var ppszData: POLESTR): HResult; stdcall;
  1272.     function get_ExternalDeviceVersion(var ppszData: POLESTR): HResult; stdcall;
  1273.     function put_DevicePower(PowerMode: Longint): HResult; stdcall;
  1274.     function get_DevicePower(var pPowerMode: Longint): HResult; stdcall;
  1275.     function Calibrate(hEvent: THandle; Mode: Longint; var pStatus: Longint): HResult; stdcall;
  1276.     function put_DevicePort(DevicePort: Longint): HResult; stdcall;
  1277.     function get_DevicePort(var pDevicePort: Longint): HResult; stdcall;
  1278.   end;
  1279.  
  1280.   IAMExtTransport = interface(IUnknown)
  1281.     ['{A03CD5F0-3045-11CF-8C44-00AA006B6814}']
  1282.     function GetCapability(Capability: Longint; var pValue: Longint; var pdblValue: double): HResult; stdcall;
  1283.     function put_MediaState(State: Longint): HResult; stdcall;
  1284.     function get_MediaState(var pState: Longint): HResult; stdcall;
  1285.     function put_LocalControl(State: Longint): HResult; stdcall;
  1286.     function get_LocalControl(var pState: Longint): HResult; stdcall;
  1287.     function GetStatus(StatusItem: Longint; var pValue: Longint): HResult; stdcall;
  1288.     function GetTransportBasicParameters(Param: Longint; var pValue: Longint; var ppszData: POLESTR): HResult; stdcall;
  1289.     function SetTransportBasicParameters(Param: Longint; Value: Longint; pszData: POLESTR): HResult; stdcall;
  1290.     function GetTransportVideoParameters(Param: Longint; var pValue: Longint): HResult; stdcall;
  1291.     function SetTransportVideoParameters(Param: Longint; Value: Longint): HResult; stdcall;
  1292.     function GetTransportAudioParameters(Param: Longint; var pValue: Longint): HResult; stdcall;
  1293.     function SetTransportAudioParameters(Param: Longint; Value: Longint): HResult; stdcall;
  1294.     function put_Mode(Mode: Longint): HResult; stdcall;
  1295.     function get_Mode(var pMode: Longint): HResult; stdcall;
  1296.     function put_Rate(dblRate: double): HResult; stdcall;
  1297.     function get_Rate(var pdblRate: double): HResult; stdcall;
  1298.     function GetChase(var pEnabled, pOffset: Longint; var phEvent: THandle): HResult; stdcall;
  1299.     function SetChase(Enable, Offset: Longint; hEvent: THandle): HResult; stdcall;
  1300.     function GetBump(var pSpeed, pDuration: Longint): HResult; stdcall;
  1301.     function SetBump(Speed, Duration: Longint): HResult; stdcall;
  1302.     function get_AntiClogControl(var pEnabled: Longint): HResult; stdcall;
  1303.     function put_AntiClogControl(Enable: Longint): HResult; stdcall;
  1304.     function GetEditPropertySet(EditID: Longint; var pState: Longint): HResult; stdcall;
  1305.     function SetEditPropertySet(var pEditID: Longint; State: Longint): HResult; stdcall;
  1306.     function GetEditProperty(EditID, Param: Longint; var pValue: Longint): HResult; stdcall;
  1307.     function SetEditProperty(EditID, Param, Value: Longint): HResult; stdcall;
  1308.     function get_EditStart(var pValue: Longint): HResult; stdcall;
  1309.     function put_EditStart(Value: Longint): HResult; stdcall;
  1310.   end;
  1311.  
  1312.   TTimeCode = record
  1313.     wFrameRate: Word;
  1314.     wFrameFract: Word;
  1315.     dwFrames: DWORD;
  1316.     qw: LONGLONG;
  1317.   end;
  1318.  
  1319.   TTimeCode_Sample = record
  1320.     qwTick: LONGLONG;
  1321.     timecode: TTimeCode;
  1322.     dwUser: DWORD;
  1323.     dwFlags: DWORD;
  1324.   end;
  1325.  
  1326.   IAMTimecodeReader = interface(IUnknown)
  1327.     ['{9B496CE1-811B-11CF-8C77-00AA006B6814}']
  1328.     function GetTCRMode(Param: Longint; var pValue: Longint): HResult; stdcall;
  1329.     function SetTCRMode(Param: Longint; Value: Longint): HResult; stdcall;
  1330.     function put_VITCLine(Line: Longint): HResult; stdcall;
  1331.     function get_VITCLine(var pLine: Longint): HResult; stdcall;
  1332.     function GetTimecode(var pTimecodeSample: TTimeCode_Sample): HResult; stdcall;
  1333.   end;
  1334.  
  1335.   IAMTimecodeGenerator = interface(IUnknown)
  1336.     ['{9B496CE0-811B-11CF-8C77-00AA006B6814}']
  1337.     function GetTCGMode(Param: Longint; var pValue: Longint): HResult; stdcall;
  1338.     function SetTCGMode(Param: Longint; Value: Longint): HResult; stdcall;
  1339.     function put_VITCLine(Line: Longint): HResult; stdcall;
  1340.     function get_VITCLine(var Line: Longint): HResult; stdcall;
  1341.     function SetTimecode(const pTimecodeSample: TTimeCode_Sample): HResult; stdcall;
  1342.     function GetTimecode(var pTimecodeSample: TTimeCode_Sample): HResult; stdcall;
  1343.   end;
  1344.  
  1345.   IAMTimecodeDisplay = interface(IUnknown)
  1346.     ['{9B496CE2-811B-11CF-8C77-00AA006B6814}']
  1347.     function GetTCDisplayEnable(var pState: Longint): HResult; stdcall;
  1348.     function SetTCDisplayEnable(State: Longint): HResult; stdcall;
  1349.     function GetTCDisplay(Param: Longint; var pValue: Longint): HResult; stdcall;
  1350.     function SetTCDisplay(Param, Value: Longint): HResult; stdcall;
  1351.   end;
  1352.  
  1353.   IAMDevMemoryAllocator = interface(IUnknown)
  1354.     ['{C6545BF0-E76B-11D0-BD52-00A0C911CE86}']
  1355.     function GetInfo(var pdwcbTotalFree, pdwcbLargestFree, pdwcbTotalMemory, pdwcbMinimumChunk: DWORD): HResult; stdcall;
  1356.     function CheckMemory(pBuffer: Pointer): HResult; stdcall;
  1357.     function Alloc(var ppBuffer: Pointer; var pdwcbBuffer: DWORD): HResult; stdcall;
  1358.     function Free(pBuffer: Pointer): HResult; stdcall;
  1359.     function GetDevMemoryObject(out ppUnkInnner: IUnknown; pUnkOuter: IUnknown): HResult; stdcall;
  1360.   end;
  1361.  
  1362.   IAMDevMemoryControl = interface(IUnknown)
  1363.     ['{C6545BF1-E76B-11D0-BD52-00A0C911CE86}']
  1364.     function QueryWriteSync: HResult; stdcall;
  1365.     function WriteSync: HResult; stdcall;
  1366.     function GetDevId(var pdwDevId: DWORD): HResult; stdcall;
  1367.   end;
  1368.  
  1369. const
  1370.   AMSTREAMSELECTINFO_ENABLED     = $1;
  1371.   AMSTREAMSELECTINFO_EXCLUSIVE   = $2;
  1372.  
  1373.   AMSTREAMSELECTENABLE_ENABLE    = $1;
  1374.   AMSTREAMSELECTENABLE_ENABLEALL = $2;
  1375.  
  1376. type
  1377.   IAMStreamSelect = interface(IUnknown)
  1378.     ['{C1960960-17F5-11D1-ABE1-00A0C905F375}']
  1379.     function Count(var pcStreams: DWORD): HResult; stdcall;
  1380.     function Info(lIndex: Longint; var ppmt: PAM_Media_Type;
  1381.         var pdwFlags: DWORD; var plcid: LCID; var pdwGroup: DWORD;
  1382.         var ppszName: PWCHAR; out ppObject: IUnknown; out ppUnk : IUnknown): HResult; stdcall;
  1383.     function Enable(lIndex: Longint; dwFlags: DWORD): HResult; stdcall;
  1384.   end;
  1385.  
  1386.   IAMovie = interface(IFilterGraph)
  1387.     ['{359ACE10-7688-11CF-8B23-00805F6CEF60}']
  1388.     function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
  1389.     function Render(ppinOut: IPin): HResult; stdcall;
  1390.     function Run: HResult; stdcall;
  1391.     function Pause: HResult; stdcall;
  1392.     function Stop: HResult; stdcall;
  1393.     function GetState(msTimeout: Longint; var pfs: TFilter_State): HResult; stdcall;
  1394.     function RenderFile(strFilename: LPCWSTR): HResult; stdcall;
  1395.     function AddSourceFilter(strFilename: LPCWSTR; out ppUnk: IBaseFilter): HResult; stdcall;
  1396.     function GetEventHandle(out hEvent: THandle): HResult; stdcall;
  1397.     function GetEvent(var lEventCode, lParam1, lParam2: Longint; msTimeout: Longint): HResult; stdcall;
  1398.     function WaitForCompletion(msTimeout: Longint; var pEvCode: Longint): HResult; stdcall;
  1399.     function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
  1400.     function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
  1401.     function get_Duration(var plength: TRefTime): HResult; stdcall;
  1402.     function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
  1403.     function get_CurrentPosition(var pllTime: TRefTime): HResult; stdcall;
  1404.     function get_StopTime(var pllTime: TRefTime): HResult; stdcall;
  1405.     function put_StopTime(llTime: TRefTime): HResult; stdcall;
  1406.     function get_PrerollTime(var pllTime: TRefTime): HResult; stdcall;
  1407.     function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
  1408.     function put_Rate(dRate: double): HResult; stdcall;
  1409.     function get_Rate(var pdRate: double): HResult; stdcall;
  1410.     function RemoveAllFilters: HResult; stdcall;
  1411.     function Play: HResult; stdcall;
  1412.     function PlayFile(strFilename: LPCWSTR): HResult; stdcall;
  1413.     function EnumFiltersByInterface(const riid: TGUID;
  1414.         out ppEnum: IEnumFilters): HResult; stdcall;
  1415.     function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
  1416.     function EnumPinsIn(out ppEnum: IEnumPins): HResult; stdcall;
  1417.     function EnumPinsOut(out ppEnum: IEnumPins): HResult; stdcall;
  1418.     function RenderAll: HResult; stdcall;
  1419.     function RenderNewFile(strFilename: LPCWSTR): HResult; stdcall;
  1420.     function FreeEventParams(lEvCode, lParam1, lParam2: Longint): HResult; stdcall;
  1421.   end;
  1422.  
  1423. const
  1424.   CDEF_CLASS_DEFAULT        = $1000;
  1425.   CDEF_BYPASS_CLASS_MANAGER = $2000;
  1426.  
  1427. type
  1428.   ICreateDevEnum = interface(IUnknown)
  1429.     ['{29840822-5B84-11D0-BD3B-00A0C911CE86}']
  1430.     function CreateClassEnumerator(const clsidDeviceClass: TGUID;
  1431.         out ppEnumMoniker: IEnumMoniker; dwFlags: DWORD): HResult; stdcall;
  1432.   end;
  1433.  
  1434.   TDVD_Domain = (
  1435.     DVD_DOMAIN_FirstPlay,
  1436.     DVD_DOMAIN_VideoManagerMenu,
  1437.     DVD_DOMAIN_VideoTitleSetMenu,
  1438.     DVD_DOMAIN_Title,
  1439.     DVD_DOMAIN_Stop
  1440.   );
  1441.  
  1442.   TDVD_Menu_ID = (
  1443.     DVD_MENU_INVALID_0,
  1444.     DVD_MENU_INVALID_1,
  1445.     DVD_MENU_Title,
  1446.     DVD_MENU_Root,
  1447.     DVD_MENU_Subpicture,
  1448.     DVD_MENU_Audio,
  1449.     DVD_MENU_Angle,
  1450.     DVD_MENU_Chapter
  1451.   );
  1452.  
  1453.   TDVD_Disc_Side = (
  1454.     DVD_SIDE_INVALID_0,
  1455.     DVD_SIDE_A,
  1456.     DVD_SIDE_B
  1457.   );
  1458.  
  1459.   TDVD_PREFERRED_Display_Mode = (
  1460.     DISPLAY_CONTENT_DEFAULT,
  1461.     DISPLAY_16x9,
  1462.     DISPLAY_4x3_PANSCAN_PREFERRED,
  1463.     DISPLAY_4x3_LETTERBOX_PREFERRED
  1464.   );
  1465.  
  1466.   TDVD_REGISTER = Word;
  1467.  
  1468.   TGPRMArray = array[0..15] of TDVD_REGISTER;
  1469.   TSPRMArray = array[0..23] of TDVD_REGISTER;
  1470.  
  1471.   TDVD_ATR = record
  1472.     ulCAT: ULONG;
  1473.     pbATRI: array[0..767] of Byte;
  1474.   end;
  1475.  
  1476.   TDVD_VideoATR = array[0..1] of Byte;
  1477.   TDVD_AudioATR = array[0..7] of Byte;
  1478.   TDVD_SubpictureATR = array[0..5] of Byte;
  1479.  
  1480.   TDVD_FrameRate = (
  1481.     DVD_FPS_INVALID_0,
  1482.     DVD_FPS_25,
  1483.     DVD_FPS_INVALID_2,
  1484.     DVD_FPS_30NonDrop
  1485.   );
  1486.  
  1487.   TDVD_TimeCode = record
  1488.     Hours1: ULONG;        // Hours
  1489.     Hours10: ULONG;       // Tens of Hours
  1490.  
  1491.     Minutes1: ULONG;      // Minutes
  1492.     Minutes10: ULONG;     // Tens of Minutes
  1493.  
  1494.     Seconds1: ULONG;      // Seconds
  1495.     Seconds10: ULONG;     // Tens of Seconds
  1496.  
  1497.     Frames1: ULONG;       // Frames
  1498.     Frames10: ULONG;      // Tens of Frames
  1499.  
  1500.     FrameRateCode: ULONG; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop
  1501.   end;
  1502.  
  1503.   TDVD_Playback_Location = record
  1504.     TitleNum: ULONG;
  1505.     ChapterNum: ULONG;
  1506.     TimeCode: ULONG;
  1507.   end;
  1508.  
  1509.   TVALID_UOP_SOMTHING_OR_OTHER = DWORD;
  1510.  
  1511. const
  1512.   DVD_PARENTAL_LEVEL_8    = $8000;
  1513.   DVD_PARENTAL_LEVEL_7    = $4000;
  1514.   DVD_PARENTAL_LEVEL_6    = $2000;
  1515.   DVD_PARENTAL_LEVEL_5    = $1000;
  1516.   DVD_PARENTAL_LEVEL_4    = $0800;
  1517.   DVD_PARENTAL_LEVEL_3    = $0400;
  1518.   DVD_PARENTAL_LEVEL_2    = $0200;
  1519.   DVD_PARENTAL_LEVEL_1    = $0100;
  1520.  
  1521. type
  1522.   IDvdControl = interface(IUnknown)
  1523.     ['{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}']
  1524.     function TitlePlay(uiTitle: ULONG): HResult; stdcall;
  1525.     function ChapterPlay(uiTitle: ULONG; uiChapter: ULONG): HResult; stdcall;
  1526.     function TimePlay(uiTitle: ULONG; bcdTime: ULONG): HResult; stdcall;
  1527.     function StopForResume: HResult; stdcall;
  1528.     function GoUp: HResult; stdcall;
  1529.     function TimeSearch(bcdTime: ULONG): HResult; stdcall;
  1530.     function ChapterSearch(Chapter: ULONG): HResult; stdcall;
  1531.     function PrevPGSearch: HResult; stdcall;
  1532.     function TopPGSearch: HResult; stdcall;
  1533.     function NextPGSearch: HResult; stdcall;
  1534.     function ForwardScan(dwSpeed: double): HResult; stdcall;
  1535.     function BackwardScan(dwSpeed: double): HResult; stdcall;
  1536.     function MenuCall(MenuID: TDVD_Menu_ID): HResult; stdcall;
  1537.     function Resume: HResult; stdcall;
  1538.     function UpperButtonSelect: HResult; stdcall;
  1539.     function LowerButtonSelect: HResult; stdcall;
  1540.     function LeftButtonSelect: HResult; stdcall;
  1541.     function RightButtonSelect: HResult; stdcall;
  1542.     function ButtonActivate: HResult; stdcall;
  1543.     function ButtonSelectAndActivate(uiButton: ULONG): HResult; stdcall;
  1544.     function StillOff: HResult; stdcall;
  1545.     function PauseOn: HResult; stdcall;
  1546.     function PauseOff: HResult; stdcall;
  1547.     function MenuLanguageSelect(Language: LCID): HResult; stdcall;
  1548.     function AudioStreamChange(nAudio: ULONG): HResult; stdcall;
  1549.     function SubpictureStreamChange(nSubPicture: ULONG; bDisplay: BOOL): HResult; stdcall;
  1550.     function AngleChange(ulAngle: ULONG): HResult; stdcall;
  1551.     function ParentalLevelSelect(ulParentalLevel: ULONG): HResult; stdcall;
  1552.     function ParentalCountrySelect(wCountry: Word): HResult; stdcall;
  1553.     function KaraokeAudioPresentationModeChange(ulMode: ULONG): HResult; stdcall;
  1554.     function VideoModePreferrence(ulPreferredDisplayMode: ULONG): HResult; stdcall;
  1555.     function SetRoot(pszPath: LPCWSTR): HResult; stdcall;
  1556.     function MouseActivate(const point: TPoint): HResult; stdcall;
  1557.     function MouseSelect(const point: TPoint): HResult; stdcall;
  1558.     function ChapterPlayAutoStop(ulTitle, ulChapter, ulChaptersToPlay: ULONG): HResult; stdcall;
  1559.   end;
  1560.  
  1561.   IDvdInfo = interface(IUnknown)
  1562.     ['{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}']
  1563.     function GetCurrentDomain(var pDomain: TDVD_Domain): HResult; stdcall;
  1564.     function GetCurrentLocation(var pLocation: TDVD_Playback_Location): HResult; stdcall;
  1565.     function GetTotalTitleTime(var pTotalTime: ULONG): HResult; stdcall;
  1566.     function GetCurrentButton(var pnButtonsAvailable, pnCurrentButton: ULONG): HResult; stdcall;
  1567.     function GetCurrentAngle(var pnAnglesAvailable, pnCurrentAngle: ULONG): HResult; stdcall;
  1568.     function GetCurrentAudio(var pnStreamsAvailable, pnCurrentStream: ULONG): HResult; stdcall;
  1569.     function GetCurrentSubpicture(var pnStreamsAvailable, pnCurrentStream: ULONG;
  1570.         pIsDisabled: BOOL): HResult; stdcall;
  1571.     function GetCurrentUOPS(var pUOP: TVALID_UOP_SOMTHING_OR_OTHER): HResult; stdcall;
  1572.     function GetAllSPRMs(var pRegisterArray: TSPRMArray): HResult; stdcall;
  1573.     function GetAllGPRMs(var pRegisterArray: TGPRMArray): HResult; stdcall;
  1574.     function GetAudioLanguage(nStream: ULONG; var pLanguage: LCID): HResult; stdcall;
  1575.     function GetSubpictureLanguage(nStream: ULONG; var pLanguage: LCID): HResult; stdcall;
  1576.     function GetTitleAttributes(nTitle: ULONG; var pATR: TDVD_ATR): HResult; stdcall;
  1577.     function GetVMGAttributes(var pATR: TDVD_ATR): HResult; stdcall;
  1578.     function GetCurrentVideoAttributes(var pATR: TDVD_VideoATR): HResult; stdcall;
  1579.     function GetCurrentAudioAttributes(var pATR: TDVD_AudioATR): HResult; stdcall;
  1580.     function GetCurrentSubpictureAttributes(var pATR: TDVD_SubpictureATR): HResult; stdcall;
  1581.     function GetCurrentVolumeInfo(var pNumOfVol, pThisVolNum: ULONG;
  1582.         var pSide: TDVD_Disc_Side; var pNumOfTitles: ULONG): HResult; stdcall;
  1583.     function GetDVDTextInfo(var pTextManager; cbBufSize: ULONG;
  1584.         var pcbActualSize: ULONG): HResult; stdcall;
  1585.     function GetPlayerParentalLevel(var pParentalLevel, pCountryCode: ULONG): HResult; stdcall;
  1586.     function GetNumberOfChapters(ulTitle: ULONG; var pNumberOfChapters: ULONG): HResult; stdcall;
  1587.     function GetTitleParentalLevels(ulTitle: ULONG; var pParentalLevels: ULONG): HResult; stdcall;
  1588.     function GetRoot(pRoot: PWCHAR; cbBufSize: ULONG; var pcbActualSize: ULONG): HResult; stdcall;
  1589.   end;
  1590.  
  1591. const
  1592.   M_DVD_HWDEC_PREFER     = $1;
  1593.   M_DVD_HWDEC_ONLY       = $2;
  1594.   M_DVD_SWDEC_PREFER     = $4;
  1595.   M_DVD_SWDEC_ONLY       = $8;
  1596.   M_DVD_NOVPE            = $100;
  1597.  
  1598.   AM_DVD_STREAM_VIDEO    = $1;
  1599.   AM_DVD_STREAM_AUDIO    = $2;
  1600.   AM_DVD_STREAM_SUBPIC   = $4;
  1601.  
  1602. type
  1603.   TAM_DVD_RenderStatus = record
  1604.     hrVPEStatus: HResult;
  1605.     bDvdVolInvalid: BOOL;
  1606.     bDvdVolUnknown: BOOL;
  1607.     bNoLine21In: BOOL;
  1608.     bNoLine21Out: BOOL;
  1609.     iNumStreams: Integer;
  1610.     iNumStreamsFailed: Integer;
  1611.     dwFailedStreamsFlag: DWORD;
  1612.   end;
  1613.  
  1614.   IDvdGraphBuilder = interface(IUnknown)
  1615.     ['{FCC152B6-F372-11d0-8E00-00C04FD7C08B}']
  1616.     function GetFiltergraph(out ppGB: IGraphBuilder): HResult; stdcall;
  1617.     function GetDvdInterface(const riid: TGUID; out ppvIF): HResult; stdcall;
  1618.     function RenderDvdVideoVolume(lpcwszPathName: LPCWSTR; dwFlags: DWORD;
  1619.         var pStatus: TAM_DVD_RenderStatus): HResult; stdcall;
  1620.   end;
  1621.  
  1622. (*==========================================================================;
  1623.  *
  1624.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  1625.  *
  1626.  *  File:       mmstream.h
  1627.  *
  1628.  ***************************************************************************)
  1629.  
  1630. const
  1631.   IID_IMultiMediaStream: TGUID = '{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}';
  1632.   IID_IMediaStream: TGUID = '{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}';
  1633.   IID_IStreamSample: TGUID = '{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}';
  1634.  
  1635. const
  1636.   MS_S_PENDING                = $80040401;
  1637.   MS_S_NOUPDATE               = $80040402;
  1638.   MS_S_ENDOFSTREAM            = $80040403;
  1639.   MS_E_SAMPLEALLOC            = $00040001;
  1640.   MS_E_PURPOSEID              = $00040002;
  1641.   MS_E_NOSTREAM               = $00040003;
  1642.   MS_E_NOSEEKING              = $00040004;
  1643.   MS_E_INCOMPATIBLE           = $00040005;
  1644.   MS_E_BUSY                   = $00040006;
  1645.   MS_E_NOTINIT                = $00040007;
  1646.   MS_E_SOURCEALREADYDEFINED   = $00040008;
  1647.   MS_E_INVALIDSTREAMTYPE      = $00040009;
  1648.   MS_E_NOTRUNNING             = $0004000A;
  1649.  
  1650.   MSPID_PrimaryVideo: TGUID = (D1:$A35FF56A;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
  1651.   MSPID_PrimaryAudio: TGUID = (D1:$A35FF56B;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
  1652.  
  1653. type
  1654.   PAPCFUNC = procedure(dwParam: DWORD); stdcall;
  1655.  
  1656.   TStream_Time = LONGLONG;
  1657.  
  1658.   MSPID = TGUID;
  1659.  
  1660.   TStream_Type = (
  1661.     STREAMTYPE_READ,
  1662.     STREAMTYPE_WRITE,
  1663.     STREAMTYPE_TRANSFORM
  1664.   );
  1665.  
  1666.   TStream_State = (
  1667.     STREAMSTATE_STOP,
  1668.     STREAMSTATE_RUN
  1669.   );
  1670.  
  1671.   TCompletion_Status_Flags = (
  1672.     COMPSTAT_INVALID_0,
  1673.     COMPSTAT_NOUPDATEOK,
  1674.     COMPSTAT_WAIT,
  1675.     COMPSTAT_INVALID_3,
  1676.     COMPSTAT_ABORT
  1677.   );
  1678.  
  1679. const
  1680.   MMSSF_HASCLOCK        = $1;
  1681.   MMSSF_SUPPORTSEEK     = $2;
  1682.   MMSSF_ASYNCHRONOUS    = $4;
  1683.  
  1684.   SSUPDATE_ASYNC = $1;
  1685.   SSUPDATE_CONTINUOUS = $2;
  1686.  
  1687. type
  1688.   IMediaStream = interface;
  1689.   IStreamSample = interface;
  1690.  
  1691.   IMultiMediaStream = interface(IUnknown)
  1692.     ['{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}']
  1693.     function GetInformation(var pdwFlags: DWORD; var pStreamType: TStream_Type): HResult; stdcall;
  1694.     function GetMediaStream(const idPurpose: MSPID;
  1695.         out ppMediaStream: IMediaStream): HResult; stdcall;
  1696.     function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream): HResult; stdcall;
  1697.     function GetState(var pCurrentState: TStream_State): HResult; stdcall;
  1698.     function SetState(NewState: TStream_State): HResult; stdcall;
  1699.     function GetTime(var pCurrentTime: TStream_Time): HResult; stdcall;
  1700.     function GetDuration(var pDuration: TStream_Time): HResult; stdcall;
  1701.     function Seek(SeekTime: TStream_Time): HResult; stdcall;
  1702.     function GetEndOfStreamEventHandle(var phEOS: THandle): HResult; stdcall;
  1703.   end;
  1704.  
  1705.   IMediaStream = interface(IUnknown)
  1706.     ['{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}']
  1707.     function GetMultiMediaStream(out ppMultiMediaStream: IMultiMediaStream): HResult; stdcall;
  1708.     function GetInformation(var pPurposeId: MSPID; var pType: TStream_Type): HResult; stdcall;
  1709.     function SetSameFormat(pStreamThatHasDesiredFormat: IMediaStream;
  1710.         dwFlags: DWORD): HResult; stdcall;
  1711.     function AllocateSample(dwFlags: DWORD; out ppSample: IStreamSample): HResult; stdcall;
  1712.     function CreateSharedSample(pExistingSample: IStreamSample; dwFlags: DWORD;
  1713.         out ppNewSample: IStreamSample): HResult; stdcall;
  1714.     function SendEndOfStream(dwFlags: DWORD): HResult; stdcall;
  1715.   end;
  1716.  
  1717.   IStreamSample = interface(IUnknown)
  1718.     ['{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}']
  1719.     function GetMediaStream(out ppMediaStream: IMediaStream): HResult; stdcall;
  1720.     function GetSampleTimes(var pStartTime, pEndTime,
  1721.         pCurrentTime: TStream_Time): HResult; stdcall;
  1722.     function SetSampleTimes(var pStartTime, pEndTime: TStream_Time): HResult; stdcall;
  1723.     function Update(dwFlags: DWORD; hEvent: THandle; pfnAPC: PAPCFUNC;
  1724.         dwAPCData: DWORD): HResult; stdcall;
  1725.     function CompletionStatus(dwFlags: DWORD; dwMilliseconds: DWORD): HResult; stdcall;
  1726.   end;
  1727.  
  1728. (*==========================================================================;
  1729.  *
  1730.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  1731.  *
  1732.  *  File:       amstream.h
  1733.  *
  1734.  ***************************************************************************)
  1735.  
  1736. const
  1737.   IID_IDirectShowStream: TGUID = '{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}';
  1738.   IID_IAMMultiMediaStream: TGUID = '{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}';
  1739.   IID_IAMMediaStream: TGUID = '{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}';
  1740.   IID_IMediaStreamFilter: TGUID = '{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}';
  1741.   IID_IDirectDrawMediaSampleAllocator: TGUID = '{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}';
  1742.   IID_IDirectDrawMediaSample: TGUID = '{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}';
  1743.   IID_IAMMediaTypeStream: TGUID = '{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}';
  1744.   IID_IAMMediaTypeSample: TGUID = '{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}';
  1745.  
  1746. const
  1747.   AMMSF_NOGRAPHTHREAD = $1;
  1748.  
  1749.   AMMSF_ADDDEFAULTRENDERER = $1;
  1750.   AMMSF_CREATEPEER = $2;
  1751.  
  1752.   AMMSF_RENDERTYPEMASK  = $3;
  1753.   AMMSF_RENDERTOEXISTING        = 0;
  1754.   AMMSF_RENDERALLSTREAMS        = $1;
  1755.   AMMSF_NORENDER        = $2;
  1756.   AMMSF_NOCLOCK = $4;
  1757.   AMMSF_RUN     = $8;
  1758.  
  1759. type
  1760.   TOutput_State = (
  1761.     Disabled,
  1762.     ReadData,
  1763.     RenderData
  1764.   );
  1765.  
  1766.   IDirectShowStream = interface(IDispatch)
  1767.     ['{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}']
  1768.     function get_FileName(var pVal: TBSTR): HResult; stdcall;
  1769.     function put_FileName(newVal: TBSTR): HResult; stdcall;
  1770.     function get_Video(var pVal: TOutput_State): HResult; stdcall;
  1771.     function put_Video(newVal: TOutput_State): HResult; stdcall;
  1772.     function get_Audio(var pVal: TOutput_State): HResult; stdcall;
  1773.     function put_Audio(newVal: TOutput_State): HResult; stdcall;
  1774.   end;
  1775.  
  1776.   IMediaStreamFilter = interface;
  1777.  
  1778.   IAMMultiMediaStream = interface(IMultiMediaStream)
  1779.     ['{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}']
  1780.     function Initialize(StreamType: TStream_Type; dwFlags: DWORD;
  1781.         pFilterGraph: IGraphBuilder): HResult; stdcall;
  1782.     function GetFilterGraph(out ppGraphBuilder: IGraphBuilder): HResult; stdcall;
  1783.     function GetFilter(out ppFilter: IMediaStreamFilter): HResult; stdcall;
  1784.     function AddMediaStream(pStreamObject: IUnknown; const PurposeId: MSPID;
  1785.         dwFlags: DWORD; out ppNewStream: IMediaStream): HResult; stdcall;
  1786.     function OpenFile(pszFileName: LPCWSTR; dwFlags: DWORD): HResult; stdcall;
  1787.     function OpenMoniker(pCtx: IBindCtx; pMoniker: IMoniker; dwFlags: DWORD): HResult; stdcall;
  1788.     function Render(dwFlags: DWORD): HResult; stdcall;
  1789.   end;
  1790.  
  1791.   IAMMediaStream = interface(IMediaStream)
  1792.     ['{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}']
  1793.     function Initialize(pSourceObject: IUnknown; dwFlags: DWORD;
  1794.         const PurposeId: MSPID; StreamType: TStream_Type): HResult; stdcall;
  1795.     function SetState(State: TFilter_State): HResult; stdcall;
  1796.     function JoinAMMultiMediaStream(pAMMultiMediaStream: IAMMultiMediaStream): HResult; stdcall;
  1797.     function JoinFilter(pMediaStreamFilter: IMediaStreamFilter): HResult; stdcall;
  1798.     function JoinFilterGraph(pFilterGraph: IFilterGraph): HResult; stdcall;
  1799.   end;
  1800.  
  1801.   IMediaStreamFilter = interface(IBaseFilter)
  1802.     ['{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}']
  1803.     function AddMediaStream(pAMMediaStream: IAMMediaStream): HResult; stdcall;
  1804.     function GetMediaStream(const idPurpose: MSPID;
  1805.         out ppMediaStream: IMediaStream): HResult; stdcall;
  1806.     function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream): HResult; stdcall;
  1807.     function SupportSeeking(bRenderer: BOOL): HResult; stdcall;
  1808.     function ReferenceTimeToStreamTime(var pTime: TReference_Time): HResult; stdcall;
  1809.     function GetCurrentStreamTime(var pCurrentStreamTime: TReference_Time): HResult; stdcall;
  1810.     function WaitUntil(WaitStreamTime: TReference_Time): HResult; stdcall;
  1811.     function Flush(bCancelEOS: BOOL): HResult; stdcall;
  1812.     function EndOfStream: HResult; stdcall;
  1813.   end;
  1814.  
  1815.   IDirectDrawMediaSampleAllocator = interface(IUnknown)
  1816.     ['{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}']
  1817.     function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  1818.   end;
  1819.  
  1820.   IDirectDrawMediaSample = interface(IUnknown)
  1821.     ['{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}']
  1822.     function GetSurfaceAndReleaseLock(out ppDirectDrawSurface: IDirectDrawSurface;
  1823.         var pRect: TRect): HResult; stdcall;
  1824.     function LockMediaSamplePointer: HResult; stdcall;
  1825.   end;
  1826.  
  1827.   IAMMediaTypeSample = interface;
  1828.  
  1829.   IAMMediaTypeStream = interface(IMediaStream)
  1830.     ['{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}']
  1831.     function GetFormat(out pMediaType: TAM_Media_Type; dwFlags: DWORD): HResult; stdcall;
  1832.     function SetFormat(const pMediaType: TAM_Media_Type; dwFlags: DWORD): HResult; stdcall;
  1833.     function CreateSample(lSampleSize: Longint; pbBuffer: Pointer;
  1834.         dwFlags: DWORD; pUnkOuter: IUnknown; out ppAMMediaTypeSample: IAMMediaTypeSample): HResult; stdcall;
  1835.     function GetStreamAllocatorRequirements(var pProps: TAllocator_Properties): HResult; stdcall;
  1836.     function SetStreamAllocatorRequirements(const pProps: TAllocator_Properties): HResult; stdcall;
  1837.   end;
  1838.  
  1839.   IAMMediaTypeSample = interface(IStreamSample)
  1840.     ['{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}']
  1841.     function SetPointer(pBuffer: Pointer; lSize: Longint): HResult; stdcall;
  1842.     function GetPointer(var ppBuffer: Pointer): HResult; stdcall;
  1843.     function GetSize: Longint; stdcall;
  1844.     function GetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
  1845.     function SetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
  1846.     function IsSyncPoint: HResult; stdcall;
  1847.     function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
  1848.     function IsPreroll: HResult; stdcall;
  1849.     function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
  1850.     function GetActualDataLength: Longint; stdcall;
  1851.     function SetActualDataLength(l: Longint): HResult; stdcall;
  1852.     function GetMediaType(var ppMediaType: PAM_Media_Type): HResult; stdcall;
  1853.     function SetMediaType(const pMediaType: TAM_Media_Type): HResult; stdcall;
  1854.     function IsDiscontinuity: HResult; stdcall;
  1855.     function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
  1856.     function GetMediaTime(var pTimeStart, pTimeEnd: LONGLONG): HResult; stdcall;
  1857.     function SetMediaTime(var pTimeStart, pTimeEnd: LONGLONG): HResult; stdcall;
  1858.   end;
  1859.  
  1860. const
  1861. {
  1862. EXTERN_C const IID LIBID_DirectShowStreamLib;
  1863.  
  1864. EXTERN_C const CLSID CLSID_AMMultiMediaStream;
  1865. }
  1866.   CLSID_AMMultiMediaStream: TGUID = '{49C47CE5-9BA4-11D0-8212-00C04FC32C45}';
  1867.  
  1868.   CLSID_AMDirectDrawStream: TGUID = (D1:$49C47CE4;D2:$9BA4;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  1869.   CLSID_AMAudioStream: TGUID = (D1:$8496E040;D2:$AF4C;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  1870.   CLSID_AMAudioData: TGUID = (D1:$F2468580;D2:$AF8A;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  1871.   CLSID_AMMediaTypeStream: TGUID = (D1:$CF0F2F7C;D2:$F7BF;D3:$11D0;D4:($90,$0D,$00,$C0,$4F,$D9,$18,$9D));
  1872.  
  1873. (*==========================================================================;
  1874.  *
  1875.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  1876.  *
  1877.  *  File:       ddstream.h
  1878.  *
  1879.  ***************************************************************************)
  1880.  
  1881. const
  1882.   DDSFF_PROGRESSIVERENDER = $1;
  1883.  
  1884.   IID_IDirectDrawMediaStream: TGUID = '{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}';
  1885.   IID_IDirectDrawStreamSample: TGUID = '{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}';
  1886.  
  1887. type
  1888.   IDirectDrawStreamSample = interface;
  1889.  
  1890.   IDirectDrawMediaStream = interface(IMediaStream)
  1891.     ['{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}']
  1892.     function GetFormat(var pDDSDCurrent: TDDSURFACEDESC;
  1893.         out ppDirectDrawPalette: IDirectDrawPalette;
  1894.         var pDDSDDesired: TDDSURFACEDESC; var pdwFlags: DWORD): HResult; stdcall;
  1895.     function SetFormat(const pDDSurfaceDesc: TDDSURFACEDESC;
  1896.         pDirectDrawPalette: IDirectDrawPalette): HResult; stdcall;
  1897.     function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  1898.     function SetDirectDraw(pDirectDraw: IDirectDraw): HResult; stdcall;
  1899.     function CreateSample(pSurface: IDirectDrawSurface; const pRect: TRect;
  1900.         dwFlags: DWORD; out ppSample: IDirectDrawStreamSample): HResult; stdcall;
  1901.     function GetTimePerFrame(var pFrameTime: TStream_Time): HResult; stdcall;
  1902.   end;
  1903.  
  1904.   IDirectDrawStreamSample = interface(IStreamSample)
  1905.     ['{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}']
  1906.     function GetSurface(out ppDirectDrawSurface: IDirectDrawSurface;
  1907.         var pRect: TRect): HResult; stdcall;
  1908.     function SetRect(const pRect: TRect): HResult; stdcall;
  1909.   end;
  1910.  
  1911. (*==========================================================================;
  1912.  *
  1913.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  1914.  *
  1915.  *  File:       austream.h
  1916.  *
  1917.  ***************************************************************************)
  1918.  
  1919. const
  1920.   IID_IAudioMediaStream: TGUID = '{F7537560-A3BE-11D0-8212-00C04FC32C45}';
  1921.   IID_IAudioStreamSample: TGUID = '{345FEE00-ABA5-11D0-8212-00C04FC32C45}';
  1922.   IID_IMemoryData: TGUID = '{327FC560-AF60-11D0-8212-00C04FC32C45}';
  1923.   IID_IAudioData: TGUID = '{54C719C0-AF60-11D0-8212-00C04FC32C45}';
  1924.  
  1925. type
  1926.   IAudioStreamSample = interface;
  1927.   IAudioData = interface;
  1928.  
  1929.   IAudioMediaStream = interface(IMediaStream)
  1930.     ['{F7537560-A3BE-11D0-8212-00C04FC32C45}']
  1931.     function GetFormat(var pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
  1932.     function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
  1933.     function CreateSample(pAudioData: IAudioData; dwFlags: DWORD;
  1934.         out ppSample: IAudioStreamSample): HResult; stdcall;
  1935.   end;
  1936.  
  1937.   IAudioStreamSample = interface(IStreamSample)
  1938.     ['{345FEE00-ABA5-11D0-8212-00C04FC32C45}']
  1939.     function GetAudioData(out ppAudio: IAudioData): HResult; stdcall;
  1940.   end;
  1941.  
  1942.   IMemoryData = interface(IUnknown)
  1943.     ['{327FC560-AF60-11D0-8212-00C04FC32C45}']
  1944.     function SetBuffer(cbSize: DWORD; pbData: Pointer; dwFlags: DWORD): HResult; stdcall;
  1945.     function GetInfo(var pdwLength: DWORD; var ppbData: Pointer;
  1946.         var pcbActualData: DWORD): HResult; stdcall;
  1947.     function SetActual(cbDataValid: DWORD): HResult; stdcall;
  1948.   end;
  1949.  
  1950.   IAudioData = interface(IMemoryData)
  1951.     ['{54C719C0-AF60-11D0-8212-00C04FC32C45}']
  1952.     function GetFormat(var pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
  1953.     function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
  1954.   end;
  1955.  
  1956. (*==========================================================================;
  1957.  *
  1958.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  1959.  *
  1960.  *  File:       mpconfig.h
  1961.  *
  1962.  ***************************************************************************)
  1963.  
  1964. const
  1965.   IID_IMixerPinConfig: TGUID = (D1:$593CDDE1;D2:$0759;D3:$11D1;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  1966.  
  1967. type
  1968.   TAM_Aspect_Ratio_Mode = (
  1969.     AM_ARMODE_STRETCHED,        // don't do any aspect ratio correction
  1970.     AM_ARMODE_LETTER_BOX,       // letter box the video, paint background color in the excess region
  1971.     AM_ARMODE_CROP,             // crop the video to the right aspect ratio
  1972.     AM_ARMODE_STRETCHED_AS_PRIMARY
  1973.   );
  1974.  
  1975.   IMixerPinConfig = interface(IUnknown)
  1976.     ['{593CDDE1-0759-11D1-9E69-00C04FD7C15B}']
  1977.     function SetRelativePosition(dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
  1978.     function GetRelativePosition(var dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
  1979.     function SetZOrder(dwZOrder: DWORD): HResult; stdcall;
  1980.     function GetZOrder(var dwZOrder: DWORD): HResult; stdcall;
  1981.     function SetColorKey(const pColorKey: TColorKey): HResult; stdcall;
  1982.     function GetColorKey(var pColorKey: TColorKey; var pColor: DWORD): HResult; stdcall;
  1983.     function SetBlendingParameter(dwBlendingParameter: DWORD): HResult; stdcall;
  1984.     function GetBlendingParameter(var dwBlendingParameter: DWORD): HResult; stdcall;
  1985.     function SetAspectRatioMode(amAspectRatioMode: TAM_Aspect_Ratio_Mode): HResult; stdcall;
  1986.     function GetAspectRatioMode(var amAspectRatioMode: TAM_Aspect_Ratio_Mode): HResult; stdcall;
  1987.     function SetStreamTransparent(bStreamTransparent: BOOL): HResult; stdcall;
  1988.     function GetStreamTransparent(var bStreamTransparent: BOOL): HResult; stdcall;
  1989.   end;
  1990.  
  1991. (*==========================================================================;
  1992.  *
  1993.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  1994.  *
  1995.  *  File:       control.h
  1996.  *
  1997.  ***************************************************************************)
  1998.  
  1999. const
  2000.   LIBID_QuartzTypeLib: TGUID = (D1:$56A868B0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2001.  
  2002.   IID_IAMCollection: TGUID = (D1:$56A868B9;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2003.   IID_IMediaControl: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2004.   IID_IMediaEvent: TGUID = (D1:$56A868B6;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2005.   IID_IMediaEventEx: TGUID = (D1:$56A868C0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2006.   IID_IMediaPosition: TGUID = (D1:$56A868B2;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2007.   IID_IBasicAudio: TGUID = (D1:$56A868B3;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2008.   IID_IVideoWindow: TGUID = (D1:$56A868B4;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2009.   IID_IBasicVideo: TGUID = (D1:$56A868B5;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2010.   IID_IDeferredCommand: TGUID = (D1:$56A868B8;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2011.   IID_IQueueCommand: TGUID = (D1:$56A868B7;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2012.  
  2013.   CLSID_FilgraphManager: TGUID = (D1:$E436EBB3;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  2014.  
  2015.   IID_IFilterInfo: TGUID = (D1:$56A868BA;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2016.   IID_IRegFilterInfo: TGUID = (D1:$56A868BB;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2017.   IID_IMediaTypeInfo: TGUID = (D1:$56A868BC;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2018.   IID_IPinInfo: TGUID = (D1:$56A868BD;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2019.  
  2020. type
  2021.   OAEVENT = Longint;
  2022.   OAHWND = Longint;
  2023.   OAFilterState = Longint;
  2024.  
  2025. (* Definition of interface: IAMCollection *)
  2026.   IAMCollection = interface(IDispatch)
  2027.     ['{56A868B9-0AD4-11CE-B03A-0020AF0BA770}']
  2028.     (* IAMCollection methods *)
  2029.     function get_Count(var plCount: Longint): HResult; stdcall;
  2030.     function Item(lItem: Longint; out ppUnk: IUnknown): HResult; stdcall;
  2031.     function get__NewEnum(out ppUnk: IUnknown): HResult; stdcall;
  2032.   end;
  2033.  
  2034. (* Definition of interface: IMediaControl *)
  2035.   IMediaControl = interface(IDispatch)
  2036.     ['{56A868B1-0AD4-11CE-B03A-0020AF0BA770}']
  2037.     (* IMediaControl methods *)
  2038.     function Run: HResult; stdcall;
  2039.     function Pause: HResult; stdcall;
  2040.     function Stop: HResult; stdcall;
  2041.     function GetState(msTimeout: Longint; var pfs: OAFilterState): HResult; stdcall;
  2042.     function RenderFile(strFilename: TBSTR): HResult; stdcall;
  2043.     function AddSourceFilter(strFilename: TBSTR; ppUnk: IDispatch): HResult; stdcall;
  2044.     function get_FilterCollection(out ppUnk: IDispatch): HResult; stdcall;
  2045.     function get_RegFilterCollection(out ppUnk: IDispatch): HResult; stdcall;
  2046.     function StopWhenReady: HResult; stdcall;
  2047.   end;
  2048.                                  
  2049. (* Definition of interface: IMediaEvent *)
  2050.   IMediaEvent = interface(IDispatch)
  2051.     ['{56A868B6-0AD4-11CE-B03A-0020AF0BA770}']
  2052.     (* IMediaEvent methods *)
  2053.     function GetEventHandle(var hEvent: OAEVENT): HResult; stdcall;
  2054.     function GetEvent(var lEventCode: Longint; var lParam1, lParam2: Longint;
  2055.         msTimeout: Longint): HResult; stdcall;
  2056.     function WaitForCompletion(msTimeout: Longint; var pEvCode: Longint): HResult; stdcall;
  2057.     function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
  2058.     function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
  2059.     function FreeEventParams(lEvCode: Longint; lParam1, lParam2: Longint): HResult; stdcall;
  2060.   end;
  2061.  
  2062. (* Definition of interface: IMediaEventEx *)
  2063.   IMediaEventEx = interface(IMediaEvent)
  2064.     ['{56A868C0-0AD4-11CE-B03A-0020AF0BA770}']
  2065.     (* IMediaEventEx methods *)
  2066.     function SetNotifyWindow(hwnd: OAHWND; lMsg: Longint;
  2067.         lInstanceData: Longint): HResult; stdcall;
  2068.     function SetNotifyFlags(lNoNotifyFlags: Longint): HResult; stdcall;
  2069.     function GetNotifyFlags(var lplNoNotifyFlags: Longint): HResult; stdcall;
  2070.   end;
  2071.  
  2072. (* Definition of interface: IMediaPosition *)
  2073.   IMediaPosition = interface(IDispatch)
  2074.     ['{56A868B2-0AD4-11CE-B03A-0020AF0BA770}']
  2075.     (* IMediaPosition methods *)
  2076.     function get_Duration(var plength: TRefTime): HResult; stdcall;
  2077.     function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
  2078.     function get_CurrentPosition(var pllTime: TRefTime): HResult; stdcall;
  2079.     function get_StopTime(var pllTime: TRefTime): HResult; stdcall;
  2080.     function put_StopTime(llTime: TRefTime): HResult; stdcall;
  2081.     function get_PrerollTime(var pllTime: TRefTime): HResult; stdcall;
  2082.     function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
  2083.     function put_Rate(dRate: double): HResult; stdcall;
  2084.     function get_Rate(var pdRate: double): HResult; stdcall;
  2085.     function CanSeekForward(var pCanSeekForward: Longint): HResult; stdcall;
  2086.     function CanSeekBackward(var pCanSeekBackward: Longint): HResult; stdcall;
  2087.   end;
  2088.  
  2089. (* Definition of interface: IBasicAudio *)
  2090.   IBasicAudio = interface(IDispatch)
  2091.     ['{56A868B3-0AD4-11CE-B03A-0020AF0BA770}']
  2092.     (* IBasicAudio methods *)
  2093.     function put_Volume(lVolume: Longint): HResult; stdcall;
  2094.     function get_Volume(var plVolume: Longint): HResult; stdcall;
  2095.     function put_Balance(lBalance: Longint): HResult; stdcall;
  2096.     function get_Balance(var plBalance: Longint): HResult; stdcall;
  2097.   end;
  2098.  
  2099. (* Definition of interface: IVideoWindow *)
  2100.   IVideoWindow = interface(IDispatch)
  2101.     ['{56A868B4-0AD4-11CE-B03A-0020AF0BA770}']
  2102.     (* IVideoWindow methods *)
  2103.     function put_Caption(strCaption: TBSTR): HResult; stdcall;
  2104.     function get_Caption(var strCaption: TBSTR): HResult; stdcall;
  2105.     function put_WindowStyle(WindowStyle: Longint): HResult; stdcall;
  2106.     function get_WindowStyle(var WindowStyle: Longint): HResult; stdcall;
  2107.     function put_WindowStyleEx(WindowStyleEx: Longint): HResult; stdcall;
  2108.     function get_WindowStyleEx(var WindowStyleEx: Longint): HResult; stdcall;
  2109.     function put_AutoShow(AutoShow: LongBool): HResult; stdcall;
  2110.     function get_AutoShow(var AutoShow: LongBool): HResult; stdcall;
  2111.     function put_WindowState(WindowState: Longint): HResult; stdcall;
  2112.     function get_WindowState(var WindowState: Longint): HResult; stdcall;
  2113.     function put_BackgroundPalette(BackgroundPalette: Longint): HResult; stdcall;
  2114.     function get_BackgroundPalette(var pBackgroundPalette: Longint): HResult; stdcall;
  2115.     function put_Visible(Visible: LongBool): HResult; stdcall;
  2116.     function get_Visible(var pVisible: LongBool): HResult; stdcall;
  2117.     function put_Left(Left: Longint): HResult; stdcall;
  2118.     function get_Left(var pLeft: Longint): HResult; stdcall;
  2119.     function put_Width(Width: Longint): HResult; stdcall;
  2120.     function get_Width(var pWidth: Longint): HResult; stdcall;
  2121.     function put_Top(Top: Longint): HResult; stdcall;
  2122.     function get_Top(var pTop: Longint): HResult; stdcall;
  2123.     function put_Height(Height: Longint): HResult; stdcall;
  2124.     function get_Height(var pHeight: Longint): HResult; stdcall;
  2125.     function put_Owner(Owner: OAHWND): HResult; stdcall;
  2126.     function get_Owner(var Owner: OAHWND): HResult; stdcall;
  2127.     function put_MessageDrain(Drain: OAHWND): HResult; stdcall;
  2128.     function get_MessageDrain(var Drain: OAHWND): HResult; stdcall;
  2129.     function get_BorderColor(var Color: Longint): HResult; stdcall;
  2130.     function put_BorderColor(Color: Longint): HResult; stdcall;
  2131.     function get_FullScreenMode(var FullScreenMode: LongBool): HResult; stdcall;
  2132.     function put_FullScreenMode(FullScreenMode: LongBool): HResult; stdcall;
  2133.     function SetWindowForeground(Focus: Longint): HResult; stdcall;
  2134.     function NotifyOwnerMessage(hwnd: Longint; uMsg, wParam, lParam: Longint): HResult; stdcall;
  2135.     function SetWindowPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  2136.     function GetWindowPosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  2137.     function GetMinIdealImageSize(var pWidth, pHeight: Longint): HResult; stdcall;
  2138.     function GetMaxIdealImageSize(var pWidth, pHeight: Longint): HResult; stdcall;
  2139.     function GetRestorePosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  2140.     function HideCursor(HideCursor: LongBool): HResult; stdcall;
  2141.     function IsCursorHidden(var CursorHidden: LongBool): HResult; stdcall;
  2142.   end;
  2143.  
  2144. (* Definition of interface: IBasicVideo *)
  2145.   IBasicVideo = interface(IDispatch)
  2146.     ['{56A868B5-0AD4-11CE-B03A-0020AF0BA770}']
  2147.     (* IBasicVideo methods *)
  2148.     function get_AvgTimePerFrame(var pAvgTimePerFrame: TRefTime): HResult; stdcall;
  2149.     function get_BitRate(var pBitRate: Longint): HResult; stdcall;
  2150.     function get_BitErrorRate(var pBitErrorRate: Longint): HResult; stdcall;
  2151.     function get_VideoWidth(var pVideoWidth: Longint): HResult; stdcall;
  2152.     function get_VideoHeight(var pVideoHeight: Longint): HResult; stdcall;
  2153.     function put_SourceLeft(SourceLeft: Longint): HResult; stdcall;
  2154.     function get_SourceLeft(var pSourceLeft: Longint): HResult; stdcall;
  2155.     function put_SourceWidth(SourceWidth: Longint): HResult; stdcall;
  2156.     function get_SourceWidth(var pSourceWidth: Longint): HResult; stdcall;
  2157.     function put_SourceTop(SourceTop: Longint): HResult; stdcall;
  2158.     function get_SourceTop(var pSourceTop: Longint): HResult; stdcall;
  2159.     function put_SourceHeight(SourceHeight: Longint): HResult; stdcall;
  2160.     function get_SourceHeight(var pSourceHeight: Longint): HResult; stdcall;
  2161.     function put_DestinationLeft(DestinationLeft: Longint): HResult; stdcall;
  2162.     function get_DestinationLeft(var pDestinationLeft: Longint): HResult; stdcall;
  2163.     function put_DestinationWidth(DestinationWidth: Longint): HResult; stdcall;
  2164.     function get_DestinationWidth(var pDestinationWidth: Longint): HResult; stdcall;
  2165.     function put_DestinationTop(DestinationTop: Longint): HResult; stdcall;
  2166.     function get_DestinationTop(var pDestinationTop: Longint): HResult; stdcall;
  2167.     function put_DestinationHeight(DestinationHeight: Longint): HResult; stdcall;
  2168.     function get_DestinationHeight(var pDestinationHeight: Longint): HResult; stdcall;
  2169.     function SetSourcePosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  2170.     function GetSourcePosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  2171.     function SetDefaultSourcePosition: HResult; stdcall;
  2172.     function SetDestinationPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  2173.     function GetDestinationPosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  2174.     function SetDefaultDestinationPosition: HResult; stdcall;
  2175.     function GetVideoSize(var pWidth, Height: Longint): HResult; stdcall;
  2176.     function GetVideoPaletteEntries(StartIndex, Entries: Longint;
  2177.         var pRetrieved: Longint; var pPalette): HResult; stdcall;
  2178.     function GetCurrentImage(var BufferSize: Longint; var pDIBImage): HResult; stdcall;
  2179.     function IsUsingDefaultSource: HResult; stdcall;
  2180.     function IsUsingDefaultDestination: HResult; stdcall;
  2181.   end;
  2182.  
  2183. (* Definition of interface: IDeferredCommand *)
  2184.   IDeferredCommand = interface(IDispatch)
  2185.     ['{56A868B8-0AD4-11CE-B03A-0020AF0BA770}']
  2186.     (* IDeferredCommand methods *)
  2187.     function Cancel: HResult; stdcall;
  2188.     function Confidence(var pConfidence: Longint): HResult; stdcall;
  2189.     function Postpone(newtime: TRefTime): HResult; stdcall;
  2190.     function GetHResult(var phrResult: HResult): HResult; stdcall;
  2191.   end;
  2192.  
  2193. (* Definition of interface: IQueueCommand *)
  2194.   IQueueCommand = interface(IUnknown)
  2195.     ['{56A868B7-0AD4-11CE-B03A-0020AF0BA770}']
  2196.     (* IQueueCommand methods *)
  2197.     function InvokeAtStreamTime(out pCmd: IDeferredCommand; time: TRefTime;
  2198.         const iid: TGUID; dispidMethod: Longint; wFlags: SmallInt;
  2199.         cArgs: Longint; const pDispParams: Variant; var pvarResult: Variant;
  2200.         var puArgErr: SmallInt):  HResult; stdcall;
  2201.     function InvokeAtPresentationTime(out pCmd: IDeferredCommand;
  2202.         time: TRefTime; const iid: TGUID; dispidMethod: Longint;
  2203.         wFlags: SmallInt; cArgs: Longint; const pDispParams: Variant;
  2204.         var pvarResult: Variant; var puArgErr: SmallInt): HResult; stdcall;
  2205.   end;
  2206.  
  2207. (* Definition of interface: IFilterInfo *)
  2208.   IFilterInfo = interface(IDispatch)
  2209.     ['{56A868BA-0AD4-11CE-B03A-0020AF0BA770}']
  2210.     (* IFilterInfo methods *)
  2211.     function FindPin(strPinID: TBSTR; out ppUnk: IDispatch): HResult; stdcall;
  2212.     function get_Name(var strName: TBSTR): HResult; stdcall;
  2213.     function get_VendorInfo(var strVendorInfo: TBSTR): HResult; stdcall;
  2214.     function get_Filter(out ppUnk: IUnknown): HResult; stdcall;
  2215.     function get_Pins(out ppUnk: IDispatch): HResult; stdcall;
  2216.     function get_IsFileSource(var pbIsSource: LongBool): HResult; stdcall;
  2217.     function get_Filename(var pstrFilename: TBSTR): HResult; stdcall;
  2218.     function put_Filename(strFilename: TBSTR): HResult; stdcall;
  2219.   end;
  2220.  
  2221. (* Definition of interface: IRegFilterInfo *)
  2222.   IRegFilterInfo = interface(IDispatch)
  2223.     ['{56A868BB-0AD4-11CE-B03A-0020AF0BA770}']
  2224.     (* IRegFilterInfo methods *)
  2225.     function get_Name(var strName: TBSTR): HResult; stdcall;
  2226.     function Filter(out ppUnk: IDispatch): HResult; stdcall;
  2227.   end;
  2228.  
  2229. (* Definition of interface: IMediaTypeInfo *)
  2230.   IMediaTypeInfo = interface(IDispatch)
  2231.     ['{56A868BC-0AD4-11CE-B03A-0020AF0BA770}']
  2232.     (* IMediaTypeInfo methods *)
  2233.     function get_Type(var strType: TBSTR): HResult; stdcall;
  2234.     function get_Subtype(var strType: TBSTR): HResult; stdcall;
  2235.   end;
  2236.  
  2237. (* Definition of interface: IPinInfo *)
  2238.   IPinInfo = interface(IDispatch)
  2239.     ['{56A868BD-0AD4-11CE-B03A-0020AF0BA770}']
  2240.     (* IPinInfo methods *)
  2241.     function get_Pin(out ppUnk: IUnknown): HResult; stdcall;
  2242.     function get_ConnectedTo(out ppUnk: IDispatch): HResult; stdcall;
  2243.     function get_ConnectionMediaType(out ppUnk: IDispatch): HResult; stdcall;
  2244.     function get_FilterInfo(out ppUnk: IDispatch): HResult; stdcall;
  2245.     function get_Name(var ppUnk: TBSTR): HResult; stdcall;
  2246.     function get_Direction(var ppDirection: Longint): HResult; stdcall;
  2247.     function get_PinID(var strPinID: TBSTR): HResult; stdcall;
  2248.     function get_MediaTypes(out ppUnk: IDispatch): HResult; stdcall;
  2249.     function Connect(pPin: IUnknown): HResult; stdcall;
  2250.     function ConnectDirect(pPin: IUnknown): HResult; stdcall;
  2251.     function ConnectWithType(pPin: IUnknown; pMediaType: IDispatch): HResult; stdcall;
  2252.     function Disconnect: HResult; stdcall;
  2253.     function Render: HResult; stdcall;
  2254.   end;
  2255.  
  2256. (*==========================================================================;
  2257.  *
  2258.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  2259.  *
  2260.  *  File:       qnetwork.h
  2261.  *
  2262.  ***************************************************************************)
  2263.  
  2264. const
  2265.   LIBID_QuartzNetTypeLib: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  2266.  
  2267.   IID_IAMNetShowConfig: TGUID = (D1:$FA2AA8F1;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2268.   IID_IAMChannelInfo: TGUID = (D1:$FA2AA8F2;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2269.   IID_IAMNetworkStatus: TGUID = (D1:$FA2AA8F3;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2270.   IID_IAMExtendedSeeking: TGUID = (D1:$FA2AA8F9;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2271.   IID_IAMNetShowExProps: TGUID = (D1:$FA2AA8F5;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2272.   IID_IAMExtendedErrorInfo: TGUID = (D1:$FA2AA8F6;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2273.   IID_IAMMediaContent: TGUID = (D1:$FA2AA8EF;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  2274.  
  2275. type
  2276.   TAMExtendedSeekingCapabilities = (
  2277.     AM_EXSEEK_INVALID_0,
  2278.     AM_EXSEEK_CANSEEK,
  2279.     AM_EXSEEK_CANSCAN,
  2280.     AM_EXSEEK_INVALID_3,
  2281.     AM_EXSEEK_MARKERSEEK,
  2282.     AM_EXSEEK_INVALID_5,
  2283.     AM_EXSEEK_INVALID_6,
  2284.     AM_EXSEEK_INVALID_7,
  2285.     AM_EXSEEK_SCANWITHOUTCLOCK,
  2286.     AM_EXSEEK_INVALID_9,
  2287.     AM_EXSEEK_INVALID_10,
  2288.     AM_EXSEEK_INVALID_11,
  2289.     AM_EXSEEK_INVALID_12,
  2290.     AM_EXSEEK_INVALID_13,
  2291.     AM_EXSEEK_INVALID_14,
  2292.     AM_EXSEEK_INVALID_15,
  2293.     AM_EXSEEK_NOSTANDARDREPAINT
  2294.   );
  2295.  
  2296.   TDate = record
  2297.     da_year: Integer;   // Year - 1980
  2298.     da_day: Byte;       // Day of the month
  2299.     da_mon: Byte;       // Month (1 = Jan)
  2300.   end;
  2301.  
  2302. (* Definition of interface: IAMNetShowConfig *)
  2303.   IAMNetShowConfig = interface(IDispatch)
  2304.     ['{FA2AA8F1-8B62-11D0-A520-000000000000}']