home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 May / CMCD0504.ISO / Software / Freeware / Programare / dspack / DSPACK231.exe / {app} / src / DirectX9 / DirectShow9.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2003-06-01  |  1.3 MB  |  30,730 lines

Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
  1.  
  2.  {###### ####   ##############################################################
  3.   ##  ###  ### ##       ,######  ##   ##   ######  ###        ###   ##      ##
  4.   ##   ###  ####        ##       ##   ##  ##    ##  ##   #    ##    ##      ##
  5.   ##    ##   ###        ######   #######  ##    ##  \## ### ##/     ##########
  6.   ##    ##  #####         #####  #######  ##    ##   #########              ##
  7.   ##   ##  ##  ###          ,##  ##   ##  ##    ##    ### ###              ###
  8.   ###### ###    ####   #######   ##   ##   ######     ##   ##     ###########
  9.       |                                                                  |
  10.       | Borland Delphi 4,5,6,7 API for Direct Show                       |
  11.       | DirectX 9.0 Win 98, Me, 2000, XP                                 |
  12.       |                                                                  |
  13.       | Portions created by Microsoft are                                |
  14.       | Copyright (C) 1995-2002 Microsoft Corporation.                   |
  15.       | All Rights Reserved.                                             |
  16.       |                                                                  |
  17.       | The original files are:                                          |
  18.       |   comlite.h, errors.h, dv.h, strmif.h, mmstream.h, amstream.h,   |
  19.       |   ddstream.h, austream.h, mpconfig.h, control.h, qnetwork.h,     |
  20.       |   playlist.h, il21dec.h, amvideo.h, amaudio.h, vptype.h,         |
  21.       |   vpconfig.h, vpnotify.h, mpegtype.h, dvdevcod.h, dvdmedia.h,    |
  22.       |   bdatypes.h, activecf.h, vfwmsgs.h,(edevdefs.h, XPrtDefs.h),    |
  23.       |   aviriff.h, evcode.h, uuids.h, ksuuids.h, DXVA.h,AMVA.h,        |
  24.       |   videoacc.h, regbag.h, tuner.h, DXTrans.h, QEdit.h, mpeguids.h, |
  25.       |   dshowasf.h, amparse.h, audevcod.h, atsmedia.h, MediaErr,       |
  26.       |   MedParam.h, mediaobj.h, dmodshow.h, dmoreg.h, DMORt.h,         |
  27.       |   dmoimpl.h, ks.h, ksproxy.h, ksmedia.h, dmksctrl.h, bdamedia.h, |
  28.       |   BDATIF.idl, AMVPE.idl, Mixerocx.idl, Mpeg2Data.idl,            |
  29.       |   Mpeg2Structs.idl, Mpeg2Bits.h, Mpeg2Error.h, EDevCtrl.h,       |
  30.       |   sbe.idl, vmr9.idl                                              |
  31.       |                                                                  |
  32.       | The original Pascal code is: DirectShow9.pas,                    |
  33.       |   released 01 Jun 2003.                                          |
  34.       |                                                                  |
  35.       | The initial developer of the Pascal code is Henri GOURVEST       |
  36.       |   Email    : hgourvest@progdigy.com                              |
  37.       |   WebSite  : http://www.progdigy.com                             |
  38.       |                                                                  |
  39.       | Portions created by Henri GOURVEST are                           |
  40.       | Copyright (C) 2002 Henri GOURVEST.                               |
  41.       |                                                                  |
  42.       | Contributors: Ivo Steinmann                                      |
  43.       |               Peter NEUMANN                                      |
  44.       |               Alexey Barkovoy                                    |
  45.       |               Wayne Sherman                                      |
  46.       |                                                                  |
  47.       | Joint Endeavour of Delphi Innovators (Project JEDI)              |
  48.       |                                                                  |
  49.       | You may retrieve the latest version of this file here:           |
  50.       |   http://www.progdigy.com                                        |
  51.       |                                                                  |
  52.       | The contents of this file are used with permission, subject to   |
  53.       | the Mozilla Public License Version 1.1 (the "License"); you may  |
  54.       | not use this file except in compliance with the License. You may |
  55.       | obtain a copy of the License at                                  |
  56.       | http://www.mozilla.org/MPL/MPL-1.1.html                          |
  57.       |                                                                  |
  58.       | Software distributed under the License is distributed on an      |
  59.       | "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or   |
  60.       | implied. See the License for the specific language governing     |
  61.       | rights and limitations under the License.                        |
  62.       |                                                                  |
  63.       |******************************************************************}
  64.  
  65. {$I DirectX.inc}
  66.  
  67. // To Avoid mistakes with old VMR, comment
  68. {$DEFINE ENABLEVMR7}
  69.  
  70. {$IFDEF DYNAMIC_LINK_ALL}
  71.   {$DEFINE DIRECTSHOW9_DYNAMIC_LINK}
  72. {$ENDIF}
  73.  
  74. unit DirectShow9;
  75. {$HPPEMIT '#define __KS__'}
  76. {$HPPEMIT '#define __STREAMS__'}
  77. {$HPPEMIT '#include "comlite.h"'}
  78. {$HPPEMIT '#include "errors.h"'}
  79. {$HPPEMIT '#include "dv.h"'}
  80. {$HPPEMIT '#include "strmif.h"'}
  81. {$HPPEMIT '#include "mmstream.h"'}
  82. {$HPPEMIT '#include "amstream.h"'}
  83. {$HPPEMIT '#include "ddstream.h"'}
  84. {$HPPEMIT '#include "austream.h"'}
  85. {$HPPEMIT '#include "mpconfig.h"'}
  86. {$HPPEMIT '#include "control.h"'}
  87. {$HPPEMIT '#include "qnetwork.h"'}
  88. {$HPPEMIT '#include "playlist.h"'}
  89. {$HPPEMIT '#include "il21dec.h"'}
  90. {$HPPEMIT '#include "amvideo.h"'}
  91. {$HPPEMIT '#include "amaudio.h"'}
  92. {$HPPEMIT '#include "vptype.h"'}
  93. {$HPPEMIT '#include "vpconfig.h"'}
  94. {$HPPEMIT '#include "vpnotify.h"'}
  95. {$HPPEMIT '#include "mmreg.h"'}
  96. {$HPPEMIT '#include "mpegtype.h"'}
  97. {$HPPEMIT '#include "dvdevcod.h"'}
  98. {$HPPEMIT '#include "dvdmedia.h"'}
  99. {$HPPEMIT '#include "bdatypes.h"'}
  100. {$HPPEMIT '#include "activecf.h"'}
  101. {$HPPEMIT '#include "vfwmsgs.h"'}
  102. {$HPPEMIT '#include "edevdefs.h"'}
  103. {$HPPEMIT '#include "XPrtDefs.h"'}
  104. {$HPPEMIT '#include "aviriff.h"'}
  105. {$HPPEMIT '#include "evcode.h"'}
  106. {$HPPEMIT '#include "DXVA.h"'}
  107. {$HPPEMIT '#include "AMVA.h"'}
  108. {$HPPEMIT '#include "videoacc.h"'}
  109. {$HPPEMIT '#include "regbag.h"'}
  110. {$HPPEMIT '#include "tuner.h"'}
  111. {$HPPEMIT '#include "DXTrans.h"'}
  112. {$HPPEMIT '#include "QEdit.h"'}
  113. {$HPPEMIT '#include "dshowasf.h"'}
  114. {$HPPEMIT '#include "amparse.h"'}
  115. {$HPPEMIT '#include "audevcod.h"'}
  116. {$HPPEMIT '#include "MediaErr.h"'}
  117. {$HPPEMIT '#include "MedParam.h"'}
  118. {$HPPEMIT '#include "mediaobj.h"'}
  119. {$HPPEMIT '#include "dmodshow.h"'}
  120. {$HPPEMIT '#include "dmoreg.h"'}
  121. {$HPPEMIT '#include "DMORt.h"'}
  122. {$HPPEMIT '#include "dmoimpl.h"'}
  123. {$HPPEMIT '#include "uuids.h"'}
  124. {$HPPEMIT '#include "ks.h"'}
  125. {$HPPEMIT '#include "ksproxy.h"'}
  126. {$HPPEMIT '#include "ksmedia.h"'}
  127. {$HPPEMIT '#include "bdamedia.h"'}
  128. {$HPPEMIT '#include "Bdatif.h"'}
  129. {$HPPEMIT '#include "atsmedia.h"'}
  130. {$HPPEMIT '#include "dmksctrl.h"'}
  131. {$HPPEMIT '#include "Mixerocx.h"'}
  132. {$HPPEMIT '#include "Mpeg2Data.h"'}
  133. {$HPPEMIT '#include "Mpeg2Bits.h"'}
  134. {$HPPEMIT '#include "Mpeg2Error.h"'}
  135. {$HPPEMIT '#include "sbe.h"'}
  136. {$HPPEMIT '#include "vmr9.h"'}
  137.  
  138. interface
  139.  
  140. uses
  141.   Windows,
  142.   ActiveX,
  143.   DirectDraw,
  144.   DirectSound,
  145.   Direct3D9,
  146.   MMSystem,
  147.   SyncObjs,
  148.   ComObj;
  149.  
  150. (*==========================================================================;
  151.  *
  152.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  153.  *
  154.  *  File:       comlite.h
  155.  *
  156.  ***************************************************************************)
  157.  
  158. function  QzInitialize(pvReserved: Pointer): HResult; stdcall;
  159. {$EXTERNALSYM QzInitialize}
  160. procedure QzUninitialize; stdcall;
  161. {$EXTERNALSYM QzUninitialize}
  162. procedure QzFreeUnusedLibraries; stdcall;
  163. {$EXTERNALSYM QzFreeUnusedLibraries}
  164.  
  165. function  QzGetMalloc(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
  166. {$EXTERNALSYM QzGetMalloc}
  167. function  QzTaskMemAlloc(cb: Longint): Pointer; stdcall;
  168. {$EXTERNALSYM QzTaskMemAlloc}
  169. function  QzTaskMemRealloc(pv: Pointer; cb: Longint): Pointer; stdcall;
  170. {$EXTERNALSYM QzTaskMemRealloc}
  171. procedure QzTaskMemFree(pv: Pointer); stdcall;
  172. {$EXTERNALSYM QzTaskMemFree}
  173. function  QzCreateFilterObject(const clsid: TCLSID; unkOuter: IUnknown;
  174. {$EXTERNALSYM QzCreateFilterObject}
  175.   dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
  176. function  QzCLSIDFromString(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
  177. {$EXTERNALSYM QzCLSIDFromString}
  178. function  QzStringFromGUID2(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
  179. {$EXTERNALSYM QzStringFromGUID2}
  180.  
  181.  
  182. (*==========================================================================;
  183.  *
  184.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  185.  *
  186.  *  File:       errors.h
  187.  *
  188.  ***************************************************************************)
  189.  
  190. const
  191.   VFW_FIRST_CODE     = $200;
  192.   {$EXTERNALSYM VFW_FIRST_CODE}
  193.   MAX_ERROR_TEXT_LEN = 160;
  194.   {$EXTERNALSYM MAX_ERROR_TEXT_LEN}
  195.  
  196.   function AMGetErrorTextA(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  197.   {$EXTERNALSYM AMGetErrorTextA}
  198.   function AMGetErrorTextW(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  199.   {$EXTERNALSYM AMGetErrorTextW}
  200.  
  201.   {$IFDEF UNICODE}
  202.   function AMGetErrorText(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  203.   {$ELSE}
  204.   function AMGetErrorText(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  205.   {$ENDIF}
  206.   {$EXTERNALSYM AMGetErrorText}
  207.  
  208.  
  209. (*==========================================================================;
  210.  *
  211.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  212.  *
  213.  *  File:       dv.h
  214.  *
  215.  ***************************************************************************)
  216.  
  217. const
  218.   DV_DVSD_NTSC_FRAMESIZE  =      120000;
  219.   {$EXTERNALSYM DV_DVSD_NTSC_FRAMESIZE}
  220.   DV_DVSD_PAL_FRAMESIZE      =      144000;
  221.   {$EXTERNALSYM DV_DVSD_PAL_FRAMESIZE}
  222.  
  223.   DV_SMCHN       = $0000e000;
  224.   {$EXTERNALSYM DV_SMCHN}
  225.   DV_AUDIOMODE   = $00000f00;
  226.   {$EXTERNALSYM DV_AUDIOMODE}
  227.   DV_AUDIOSMP    = $38000000;
  228.   {$EXTERNALSYM DV_AUDIOSMP}
  229.  
  230.   DV_AUDIOQU     = $07000000;
  231.   {$EXTERNALSYM DV_AUDIOQU}
  232.   DV_NTSCPAL       = $00200000;
  233.   {$EXTERNALSYM DV_NTSCPAL}
  234.   DV_STYPE         = $001f0000;
  235.   {$EXTERNALSYM DV_STYPE}
  236.  
  237.   //There are NTSC or PAL DV camcorders
  238.   DV_NTSC     = 0;
  239.   {$EXTERNALSYM DV_NTSC}
  240.   DV_PAL     = 1;
  241.   {$EXTERNALSYM DV_PAL}
  242.  
  243.   //DV camcorder can output sd/hd/sl
  244.   DV_SD          = $00;
  245.   {$EXTERNALSYM DV_SD}
  246.   DV_HD          = $01;
  247.   {$EXTERNALSYM DV_HD}
  248.   DV_SL          = $02;
  249.   {$EXTERNALSYM DV_SL}
  250.  
  251.   //user can choice 12 bits or 16 bits audio from DV camcorder
  252.   DV_CAP_AUD16Bits  =  $00;
  253.   {$EXTERNALSYM DV_CAP_AUD16Bits}
  254.   DV_CAP_AUD12Bits  =  $01;
  255.   {$EXTERNALSYM DV_CAP_AUD12Bits}
  256.  
  257.   SIZE_DVINFO    = $20;
  258.   {$EXTERNALSYM SIZE_DVINFO}
  259.  
  260. type
  261.   Tag_DVAudInfo = record
  262.     bAudStyle: array[0..1] of Byte;
  263.     //LSB 6 bits for starting DIF sequence number
  264.     //MSB 2 bits: 0 for mon. 1: stereo in one 5/6 DIF sequences, 2: stereo audio in both 5/6 DIF sequences
  265.     //example: 0x00: mon, audio in first 5/6 DIF sequence
  266.     //                 0x05: mon, audio in 2nd 5 DIF sequence
  267.     //                 0x15: stereo, audio only in 2nd 5 DIF sequence
  268.     //                 0x10: stereo, audio only in 1st 5/6 DIF sequence
  269.     //                 0x20: stereo, left ch in 1st 5/6 DIF sequence, right ch in 2nd 5/6 DIF sequence
  270.     //                 0x26: stereo, rightch in 1st 6 DIF sequence, left ch in 2nd 6 DIF sequence
  271.     bAudQu: array[0..1] of Byte;            //qbits, only support 12, 16,
  272.  
  273.     bNumAudPin: Byte;                              //how many pin
  274.     wAvgSamplesPerPinPerFrm: array[0..1] of WORD;  //samples size for one audio pin in one frame(which has 10 or 12 DIF sequence)
  275.     wBlkMode : WORD;                               //45 for NTSC, 54 for PAL
  276.     wDIFMode : WORD;                               //5  for NTSC, 6 for PAL
  277.     wBlkDiv  : WORD;                               //15  for NTSC, 18 for PAL
  278.   end;
  279.   {$EXTERNALSYM Tag_DVAudInfo}
  280.   DVAudInfo = Tag_DVAudInfo;
  281.   {$EXTERNALSYM DVAudInfo}
  282.   TDVAudInfo = Tag_DVAudInfo;
  283.  
  284. (*==========================================================================;
  285.  *
  286.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  287.  *
  288.  *  File:       strmif.h
  289.  *
  290.  ***************************************************************************)
  291. const
  292.   IID_IPin                            : TGUID = '{56A86891-0AD4-11CE-B03A-0020AF0BA770}';
  293.   {$EXTERNALSYM IID_IPin}
  294.   IID_IEnumPins                       : TGUID = '{56A86892-0AD4-11CE-B03A-0020AF0BA770}';
  295.   {$EXTERNALSYM IID_IEnumPins}
  296.   IID_IEnumMediaTypes                 : TGUID = '{89C31040-846B-11CE-97D3-00AA0055595A}';
  297.   {$EXTERNALSYM IID_IEnumMediaTypes}
  298.   IID_IFilterGraph                    : TGUID = '{56A8689F-0AD4-11CE-B03A-0020AF0BA770}';
  299.   {$EXTERNALSYM IID_IFilterGraph}
  300.   IID_IEnumFilters                    : TGUID = '{56A86893-0AD4-11CE-B03A-0020AF0BA770}';
  301.   {$EXTERNALSYM IID_IEnumFilters}
  302.   IID_IMediaFilter                    : TGUID = '{56A86899-0AD4-11CE-B03A-0020AF0BA770}';
  303.   {$EXTERNALSYM IID_IMediaFilter}
  304.   IID_IBaseFilter                     : TGUID = '{56A86895-0AD4-11CE-B03A-0020AF0BA770}';
  305.   {$EXTERNALSYM IID_IBaseFilter}
  306.   IID_IReferenceClock                 : TGUID = '{56A86897-0AD4-11CE-B03A-0020AF0BA770}';
  307.   {$EXTERNALSYM IID_IReferenceClock}
  308.   IID_IReferenceClock2                : TGUID = '{36B73885-C2C8-11CF-8B46-00805F6CEF60}';
  309.   {$EXTERNALSYM IID_IReferenceClock2}
  310.   IID_IMediaSample                    : TGUID = '{56A8689A-0AD4-11CE-B03A-0020AF0BA770}';
  311.   {$EXTERNALSYM IID_IMediaSample}
  312.   IID_IMediaSample2                   : TGUID = '{36B73884-C2C8-11CF-8B46-00805F6CEF60}';
  313.   {$EXTERNALSYM IID_IMediaSample2}
  314.   IID_IMemAllocator                   : TGUID = '{56A8689C-0AD4-11CE-B03A-0020AF0BA770}';
  315.   {$EXTERNALSYM IID_IMemAllocator}
  316.   IID_IMemInputPin                    : TGUID = '{56A8689D-0AD4-11CE-B03A-0020AF0BA770}';
  317.   {$EXTERNALSYM IID_IMemInputPin}
  318.   IID_IAMovieSetup                    : TGUID = '{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}'; // deprecated;
  319.   {$EXTERNALSYM IID_IAMovieSetup}
  320.   IID_IMediaSeeking                   : TGUID = '{36B73880-C2C8-11CF-8B46-00805F6CEF60}';
  321.   {$EXTERNALSYM IID_IMediaSeeking}
  322.   IID_IEnumRegFilters                 : TGUID = '{56A868A4-0AD4-11CE-B03A-0020AF0BA770}'; // deprecated;
  323.   {$EXTERNALSYM IID_IEnumRegFilters}
  324.   IID_IFilterMapper                   : TGUID = '{56A868A3-0AD4-11CE-B03A-0020AF0BA770}'; // deprecated;
  325.   {$EXTERNALSYM IID_IFilterMapper}
  326.   IID_IFilterMapper2                  : TGUID = '{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}';
  327.   {$EXTERNALSYM IID_IFilterMapper2}
  328.   IID_IQualityControl                 : TGUID = '{56A868A5-0AD4-11CE-B03A-0020AF0BA770}';
  329.   {$EXTERNALSYM IID_IQualityControl}
  330.   IID_IOverlayNotify                  : TGUID = '{56A868A0-0AD4-11CE-B03A-0020AF0BA770}';
  331.   {$EXTERNALSYM IID_IOverlayNotify}
  332.   IID_IOverlay                        : TGUID = '{56A868A1-0AD4-11CE-B03A-0020AF0BA770}';
  333.   {$EXTERNALSYM IID_IOverlay}
  334.   IID_IMediaEventSink                 : TGUID = '{56A868A2-0AD4-11CE-B03A-0020AF0BA770}';
  335.   {$EXTERNALSYM IID_IMediaEventSink}
  336.   IID_IFileSourceFilter               : TGUID = '{56A868A6-0AD4-11CE-B03A-0020AF0BA770}';
  337.   {$EXTERNALSYM IID_IFileSourceFilter}
  338.   IID_IFileSinkFilter                 : TGUID = '{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}';
  339.   {$EXTERNALSYM IID_IFileSinkFilter}
  340.   IID_IFileSinkFilter2                : TGUID = '{00855B90-CE1B-11D0-BD4F-00A0C911CE86}';
  341.   {$EXTERNALSYM IID_IFileSinkFilter2}
  342.   IID_IFileAsyncIO                    : TGUID = '{56A868A7-0AD4-11CE-B03A-0020AF0BA770}';
  343.   {$EXTERNALSYM IID_IFileAsyncIO}
  344.   IID_IGraphBuilder                   : TGUID = '{56A868A9-0AD4-11CE-B03A-0020AF0BA770}';
  345.   {$EXTERNALSYM IID_IGraphBuilder}
  346.   IID_ICaptureGraphBuilder            : TGUID = '{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}'; // deprecated;
  347.   {$EXTERNALSYM IID_ICaptureGraphBuilder}
  348.   IID_IAMCopyCaptureFileProgress      : TGUID = '{670D1D20-A068-11D0-B3F0-00AA003761C5}';
  349.   {$EXTERNALSYM IID_IAMCopyCaptureFileProgress}
  350.   IID_IFilterGraph2                   : TGUID = '{36B73882-C2C8-11CF-8B46-00805F6CEF60}';
  351.   {$EXTERNALSYM IID_IFilterGraph2}
  352.   IID_IStreamBuilder                  : TGUID = '{56A868BF-0AD4-11CE-B03A-0020AF0BA770}';
  353.   {$EXTERNALSYM IID_IStreamBuilder}
  354.   IID_IAsyncReader                    : TGUID = '{56A868AA-0AD4-11CE-B03A-0020AF0BA770}';
  355.   {$EXTERNALSYM IID_IAsyncReader}
  356.   IID_IGraphVersion                   : TGUID = '{56A868AB-0AD4-11CE-B03A-0020AF0BA770}';
  357.   {$EXTERNALSYM IID_IGraphVersion}
  358.   IID_IResourceConsumer               : TGUID = '{56A868AD-0AD4-11CE-B03A-0020AF0BA770}';
  359.   {$EXTERNALSYM IID_IResourceConsumer}
  360.   IID_IResourceManager                : TGUID = '{56A868AC-0AD4-11CE-B03A-0020AF0BA770}';
  361.   {$EXTERNALSYM IID_IResourceManager}
  362.   IID_IDistributorNotify              : TGUID = '{56A868AF-0AD4-11CE-B03A-0020AF0BA770}';
  363.   {$EXTERNALSYM IID_IDistributorNotify}
  364.   IID_IAMStreamControl                : TGUID = '{36b73881-c2c8-11cf-8b46-00805f6cef60}';
  365.   {$EXTERNALSYM IID_IAMStreamControl}
  366.   IID_ISeekingPassThru                : TGUID = '{36B73883-C2C8-11CF-8B46-00805F6CEF60}';
  367.   {$EXTERNALSYM IID_ISeekingPassThru}
  368.   IID_IAMStreamConfig                 : TGUID = '{C6E13340-30AC-11d0-A18C-00A0C9118956}';
  369.   {$EXTERNALSYM IID_IAMStreamConfig}
  370.   IID_IConfigInterleaving             : TGUID = '{BEE3D220-157B-11d0-BD23-00A0C911CE86}';
  371.   {$EXTERNALSYM IID_IConfigInterleaving}
  372.   IID_IConfigAviMux                   : TGUID = '{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}';
  373.   {$EXTERNALSYM IID_IConfigAviMux}
  374.   IID_IAMVideoCompression             : TGUID = '{C6E13343-30AC-11d0-A18C-00A0C9118956}';
  375.   {$EXTERNALSYM IID_IAMVideoCompression}
  376.   IID_IAMVfwCaptureDialogs            : TGUID = '{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}';
  377.   {$EXTERNALSYM IID_IAMVfwCaptureDialogs}
  378.   IID_IAMVfwCompressDialogs           : TGUID = '{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}';
  379.   {$EXTERNALSYM IID_IAMVfwCompressDialogs}
  380.   IID_IAMDroppedFrames                : TGUID = '{C6E13344-30AC-11d0-A18C-00A0C9118956}';
  381.   {$EXTERNALSYM IID_IAMDroppedFrames}
  382.   IID_IAMAudioInputMixer              : TGUID = '{54C39221-8380-11d0-B3F0-00AA003761C5}';
  383.   {$EXTERNALSYM IID_IAMAudioInputMixer}
  384.   IID_IAMAnalogVideoDecoder           : TGUID = '{C6E13350-30AC-11d0-A18C-00A0C9118956}';
  385.   {$EXTERNALSYM IID_IAMAnalogVideoDecoder}
  386.   IID_IAMVideoProcAmp                 : TGUID = '{C6E13360-30AC-11d0-A18C-00A0C9118956}';
  387.   {$EXTERNALSYM IID_IAMVideoProcAmp}
  388.   IID_IAMCameraControl                : TGUID = '{C6E13370-30AC-11d0-A18C-00A0C9118956}';
  389.   {$EXTERNALSYM IID_IAMCameraControl}
  390.   IID_IAMCrossbar                     : TGUID = '{C6E13380-30AC-11d0-A18C-00A0C9118956}';
  391.   {$EXTERNALSYM IID_IAMCrossbar}
  392.   IID_IAMTuner                        : TGUID = '{211A8761-03AC-11d1-8D13-00AA00BD8339}';
  393.   {$EXTERNALSYM IID_IAMTuner}
  394.   IID_IAMTunerNotification            : TGUID = '{211A8760-03AC-11d1-8D13-00AA00BD8339}';
  395.   {$EXTERNALSYM IID_IAMTunerNotification}
  396.   IID_IAMTVTuner                      : TGUID = '{211A8766-03AC-11d1-8D13-00AA00BD8339}';
  397.   {$EXTERNALSYM IID_IAMTVTuner}
  398.   IID_IBPCSatelliteTuner              : TGUID = '{211A8765-03AC-11d1-8D13-00AA00BD8339}';
  399.   {$EXTERNALSYM IID_IBPCSatelliteTuner}
  400.   IID_IAMTVAudio                      : TGUID = '{83EC1C30-23D1-11d1-99E6-00A0C9560266}';
  401.   {$EXTERNALSYM IID_IAMTVAudio}
  402.   IID_IAMTVAudioNotification          : TGUID = '{83EC1C33-23D1-11D1-99E6-00A0C9560266}';
  403.   {$EXTERNALSYM IID_IAMTVAudioNotification}
  404.   IID_IAMAnalogVideoEncoder           : TGUID = '{C6E133B0-30AC-11d0-A18C-00A0C9118956}'; // deprecated;
  405.   {$EXTERNALSYM IID_IAMAnalogVideoEncoder}
  406.   IID_IMediaPropertyBag               : TGUID = '{6025A880-C0D5-11D0-BD4E-00A0C911CE86}';
  407.   {$EXTERNALSYM IID_IMediaPropertyBag}
  408.   IID_IPersistMediaPropertyBag        : TGUID = '{5738E040-B67F-11d0-BD4D-00A0C911CE86}';
  409.   {$EXTERNALSYM IID_IPersistMediaPropertyBag}
  410.   IID_IAMPhysicalPinInfo              : TGUID = '{F938C991-3029-11CF-8C44-00AA006B6814}'; // deprecated;
  411.   {$EXTERNALSYM IID_IAMPhysicalPinInfo}
  412.   IID_IAMExtDevice                    : TGUID = '{B5730A90-1A2C-11CF-8C23-00AA006B6814}';
  413.   {$EXTERNALSYM IID_IAMExtDevice}
  414.   IID_IAMExtTransport                 : TGUID = '{A03CD5F0-3045-11CF-8C44-00AA006B6814}';
  415.   {$EXTERNALSYM IID_IAMExtTransport}
  416.   IID_IAMTimecodeReader               : TGUID = '{9B496CE1-811B-11CF-8C77-00AA006B6814}';
  417.   {$EXTERNALSYM IID_IAMTimecodeReader}
  418.   IID_IAMTimecodeGenerator            : TGUID = '{9B496CE0-811B-11CF-8C77-00AA006B6814}';
  419.   {$EXTERNALSYM IID_IAMTimecodeGenerator}
  420.   IID_IAMTimecodeDisplay              : TGUID = '{9B496CE2-811B-11CF-8C77-00AA006B6814}';
  421.   {$EXTERNALSYM IID_IAMTimecodeDisplay}
  422.   IID_IAMDevMemoryAllocator           : TGUID = '{C6545BF0-E76B-11D0-BD52-00A0C911CE86}'; // deprecated;
  423.   {$EXTERNALSYM IID_IAMDevMemoryAllocator}
  424.   IID_IAMDevMemoryControl             : TGUID = '{C6545BF1-E76B-11D0-BD52-00A0C911CE86}'; // deprecated;
  425.   {$EXTERNALSYM IID_IAMDevMemoryControl}
  426.   IID_IAMStreamSelect                 : TGUID = '{C1960960-17F5-11D1-ABE1-00A0C905F375}';
  427.   {$EXTERNALSYM IID_IAMStreamSelect}
  428.   IID_IAMovie                         : TGUID = '{359ACE10-7688-11CF-8B23-00805F6CEF60}';
  429.   {$EXTERNALSYM IID_IAMovie}
  430.   IID_ICreateDevEnum                  : TGUID = '{29840822-5B84-11D0-BD3B-00A0C911CE86}';
  431.   {$EXTERNALSYM IID_ICreateDevEnum}
  432.   IID_IDvdControl                     : TGUID = '{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}'; // deprecated;
  433.   {$EXTERNALSYM IID_IDvdControl}
  434.   IID_IDvdControl2                    : TGUID = '{33BC7430-EEC0-11D2-8201-00A0C9D74842}';
  435.   {$EXTERNALSYM IID_IDvdControl2}
  436.   IID_IDvdInfo                        : TGUID = '{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}'; // deprecated;
  437.   {$EXTERNALSYM IID_IDvdInfo}
  438.   IID_IDvdInfo2                       : TGUID = '{34151510-EEC0-11D2-8201-00A0C9D74842}';
  439.   {$EXTERNALSYM IID_IDvdInfo2}
  440.   IID_IDvdGraphBuilder                : TGUID = '{FCC152B6-F372-11d0-8E00-00C04FD7C08B}';
  441.   {$EXTERNALSYM IID_IDvdGraphBuilder}
  442.   IID_IDvdState                       : TGUID = '{86303d6d-1c4a-4087-ab42-f711167048ef}';
  443.   {$EXTERNALSYM IID_IDvdState}
  444.   IID_IDvdCmd                         : TGUID = '{5a4a97e4-94ee-4a55-9751-74b5643aa27d}';
  445.   {$EXTERNALSYM IID_IDvdCmd}
  446.   IID_IVideoFrameStep                 : TGUID = '{e46a9787-2b71-444d-a4b5-1fab7b708d6a}';
  447.   {$EXTERNALSYM IID_IVideoFrameStep}
  448.   IID_IFilterMapper3                  : TGUID = '{b79bb0b1-33c1-11d1-abe1-00a0c905f375}';
  449.   {$EXTERNALSYM IID_IFilterMapper3}
  450.   IID_IOverlayNotify2                 : TGUID = '{680EFA10-D535-11D1-87C8-00A0C9223196}';
  451.   {$EXTERNALSYM IID_IOverlayNotify2}
  452.   IID_ICaptureGraphBuilder2           : TGUID = '{93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D}';
  453.   {$EXTERNALSYM IID_ICaptureGraphBuilder2}
  454.   IID_IMemAllocatorCallbackTemp       : TGUID = '{379a0cf0-c1de-11d2-abf5-00a0c905f375}';
  455.   {$EXTERNALSYM IID_IMemAllocatorCallbackTemp}
  456.   IID_IMemAllocatorNotifyCallbackTemp : TGUID = '{92980b30-c1de-11d2-abf5-00a0c905f375}';
  457.   {$EXTERNALSYM IID_IMemAllocatorNotifyCallbackTemp}
  458.   IID_IAMVideoControl                 : TGUID = '{6a2e0670-28e4-11d0-a18c-00a0c9118956}';
  459.   {$EXTERNALSYM IID_IAMVideoControl}
  460.  
  461.   IID_IKsPropertySet                  : TGUID = '{31EFAC30-515C-11d0-A9AA-00AA0061BE93}';
  462.   {$EXTERNALSYM IID_IKsPropertySet}
  463.   STATIC_IID_IKsPropertySet           : TGUID = '{31EFAC30-515C-11d0-A9AA-00AA0061BE93}';
  464.   {$EXTERNALSYM STATIC_IID_IKsPropertySet}
  465.  
  466.   IID_IAMResourceControl              : TGUID = '{8389d2d0-77d7-11d1-abe6-00a0c905f375}';
  467.   {$EXTERNALSYM IID_IAMResourceControl}
  468.   IID_IAMClockAdjust                  : TGUID = '{4d5466b0-a49c-11d1-abe8-00a0c905f375}';
  469.   {$EXTERNALSYM IID_IAMClockAdjust}
  470.   IID_IAMFilterMiscFlags              : TGUID = '{2dd74950-a890-11d1-abe8-00a0c905f375}';
  471.   {$EXTERNALSYM IID_IAMFilterMiscFlags}
  472.   IID_IDrawVideoImage                 : TGUID = '{48efb120-ab49-11d2-aed2-00a0c995e8d5}';
  473.   {$EXTERNALSYM IID_IDrawVideoImage}
  474.   IID_IDecimateVideoImage             : TGUID = '{2e5ea3e0-e924-11d2-b6da-00a0c995e8df}';
  475.   {$EXTERNALSYM IID_IDecimateVideoImage}
  476.   IID_IAMVideoDecimationProperties    : TGUID = '{60d32930-13da-11d3-9ec6-c4fcaef5c7be}';
  477.   {$EXTERNALSYM IID_IAMVideoDecimationProperties}
  478.   IID_IAMLatency                      : TGUID = '{62EA93BA-EC62-11d2-B770-00C04FB6BD3D}';
  479.   {$EXTERNALSYM IID_IAMLatency}
  480.   IID_IAMPushSource                   : TGUID = '{F185FE76-E64E-11d2-B76E-00C04FB6BD3D}';
  481.   {$EXTERNALSYM IID_IAMPushSource}
  482.   IID_IAMDeviceRemoval                : TGUID = '{f90a6130-b658-11d2-ae49-0000f8754b99}';
  483.   {$EXTERNALSYM IID_IAMDeviceRemoval}
  484.   IID_IDVEnc                          : TGUID = '{d18e17a0-aacb-11d0-afb0-00aa00b67a42}';
  485.   {$EXTERNALSYM IID_IDVEnc}
  486.   IID_IIPDVDec                        : TGUID = '{b8e8bd60-0bfe-11d0-af91-00aa00b67a42}';
  487.   {$EXTERNALSYM IID_IIPDVDec}
  488.   IID_IDVRGB219                       : TGUID = '{58473A19-2BC8-4663-8012-25F81BABDDD1}'; // XP
  489.   {$EXTERNALSYM IID_IDVRGB219}
  490.   IID_IDVSplitter                     : TGUID = '{92a3a302-da7c-4a1f-ba7e-1802bb5d2d02}';
  491.   {$EXTERNALSYM IID_IDVSplitter}
  492.   IID_IAMAudioRendererStats           : TGUID = '{22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93}';
  493.   {$EXTERNALSYM IID_IAMAudioRendererStats}
  494.   IID_IAMGraphStreams                 : TGUID = '{632105FA-072E-11d3-8AF9-00C04FB6BD3D}';
  495.   {$EXTERNALSYM IID_IAMGraphStreams}
  496.   IID_IAMOverlayFX                    : TGUID = '{62fae250-7e65-4460-bfc9-6398b322073c}';
  497.   {$EXTERNALSYM IID_IAMOverlayFX}
  498.   IID_IAMOpenProgress                 : TGUID = '{8E1C39A1-DE53-11cf-AA63-0080C744528D}';
  499.   {$EXTERNALSYM IID_IAMOpenProgress}
  500.   IID_IMpeg2Demultiplexer             : TGUID = '{436eee9c-264f-4242-90e1-4e330c107512}';
  501.   {$EXTERNALSYM IID_IMpeg2Demultiplexer}
  502.   IID_IEnumStreamIdMap                : TGUID = '{945C1566-6202-46fc-96C7-D87F289C6534}';
  503.   {$EXTERNALSYM IID_IEnumStreamIdMap}
  504.   IID_IMPEG2StreamIdMap               : TGUID = '{D0E04C47-25B8-4369-925A-362A01D95444}';
  505.   {$EXTERNALSYM IID_IMPEG2StreamIdMap}
  506.   IID_IRegisterServiceProvider        : TGUID = '{7B3A2F01-0751-48DD-B556-004785171C54}'; // XP
  507.   {$EXTERNALSYM IID_IRegisterServiceProvider}
  508.   IID_IAMDecoderCaps                  : TGUID = '{c0dff467-d499-4986-972b-e1d9090fa941}'; // XP
  509.   {$EXTERNALSYM IID_IAMDecoderCaps}
  510.   IID_IAMClockSlave                   : TGUID = '{9FD52741-176D-4b36-8F51-CA8F933223BE}'; // XP
  511.   {$EXTERNALSYM IID_IAMClockSlave}
  512.   IID_IAMGraphBuilderCallback         : TGUID = '{4995f511-9ddb-4f12-bd3b-f04611807b79}'; // DX9
  513.   {$EXTERNALSYM IID_IAMGraphBuilderCallback}
  514.   IID_IAMFilterGraphCallback          : TGUID = '{56a868fd-0ad4-11ce-b0a3-0020af0ba770}'; // DX9
  515.   {$EXTERNALSYM IID_IAMFilterGraphCallback}
  516.   IID_ICodecAPI                       : TGUID = '{901db4c7-31ce-41a2-85dc-8fa0bf41b8da}'; // DX9
  517.   {$EXTERNALSYM IID_ICodecAPI}
  518.   IID_IEncoderAPI                     : TGUID = '{70423839-6ACC-4b23-B079-21DBF08156A5}'; // DX9
  519.   {$EXTERNALSYM IID_IEncoderAPI}
  520.   IID_IVideoEncoder                   : TGUID = '{02997C3B-8E1B-460e-9270-545E0DE9563E}'; // DX9
  521.   {$EXTERNALSYM IID_IVideoEncoder}
  522.   IID_IGetCapabilitiesKey             : TGUID = '{a8809222-07bb-48ea-951c-33158100625b}'; // DX9
  523.   {$EXTERNALSYM IID_IGetCapabilitiesKey}
  524.   IID_IDDrawExclModeVideo             : TGUID = '{153ACC21-D83B-11d1-82BF-00A0C9696C8F}';
  525.   {$EXTERNALSYM IID_IDDrawExclModeVideo}
  526.   IID_IDDrawExclModeVideoCallback     : TGUID = '{913c24a0-20ab-11d2-9038-00a0c9697298}';
  527.   {$EXTERNALSYM IID_IDDrawExclModeVideoCallback}
  528.   IID_IPinConnection                  : TGUID = '{4a9a62d3-27d4-403d-91e9-89f540e55534}';
  529.   {$EXTERNALSYM IID_IPinConnection}
  530.   IID_IPinFlowControl                 : TGUID = '{c56e9858-dbf3-4f6b-8119-384af2060deb}';
  531.   {$EXTERNALSYM IID_IPinFlowControl}
  532.   IID_IGraphConfig                    : TGUID = '{03A1EB8E-32BF-4245-8502-114D08A9CB88}';
  533.   {$EXTERNALSYM IID_IGraphConfig}
  534.   IID_IGraphConfigCallback            : TGUID = '{ade0fd60-d19d-11d2-abf6-00a0c905f375}';
  535.   {$EXTERNALSYM IID_IGraphConfigCallback}
  536.   IID_IFilterChain                    : TGUID = '{DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29}';
  537.   {$EXTERNALSYM IID_IFilterChain}
  538.  
  539.   IID_IVMRImagePresenter              : TGUID = '{CE704FE7-E71E-41fb-BAA2-C4403E1182F5}'; // XP
  540.   {$EXTERNALSYM IID_IVMRImagePresenter}
  541.   IID_IVMRSurfaceAllocator            : TGUID = '{31ce832e-4484-458b-8cca-f4d7e3db0b52}'; // XP
  542.   {$EXTERNALSYM IID_IVMRSurfaceAllocator}
  543.   IID_IVMRSurfaceAllocatorNotify      : TGUID = '{aada05a8-5a4e-4729-af0b-cea27aed51e2}'; // XP
  544.   {$EXTERNALSYM IID_IVMRSurfaceAllocatorNotify}
  545.   IID_IVMRWindowlessControl           : TGUID = '{0eb1088c-4dcd-46f0-878f-39dae86a51b7}'; // XP
  546.   {$EXTERNALSYM IID_IVMRWindowlessControl}
  547.   IID_IVMRMixerControl                : TGUID = '{1c1a17b0-bed0-415d-974b-dc6696131599}'; // XP
  548.   {$EXTERNALSYM IID_IVMRMixerControl}
  549.   IID_IVMRMonitorConfig               : TGUID = '{9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce}'; // XP
  550.   {$EXTERNALSYM IID_IVMRMonitorConfig}
  551.   IID_IVMRFilterConfig                : TGUID = '{9e5530c5-7034-48b4-bb46-0b8a6efc8e36}'; // XP
  552.   {$EXTERNALSYM IID_IVMRFilterConfig}
  553.   IID_IVMRMixerBitmap                 : TGUID = '{1E673275-0257-40aa-AF20-7C608D4A0428}'; // XP
  554.   {$EXTERNALSYM IID_IVMRMixerBitmap}
  555.   IID_IVMRImageCompositor             : TGUID = '{7a4fb5af-479f-4074-bb40-ce6722e43c82}'; // XP
  556.   {$EXTERNALSYM IID_IVMRImageCompositor}
  557.   IID_IVMRVideoStreamControl          : TGUID = '{058d1f11-2a54-4bef-bd54-df706626b727}'; // XP
  558.   {$EXTERNALSYM IID_IVMRVideoStreamControl}
  559.   IID_IVMRSurface                     : TGUID = '{a9849bbe-9ec8-4263-b764-62730f0d15d0}'; // XP
  560.   {$EXTERNALSYM IID_IVMRSurface}
  561.   IID_IVPManager                      : TGUID = '{aac18c18-e186-46d2-825d-a1f8dc8e395a}'; // XP
  562.   {$EXTERNALSYM IID_IVPManager}
  563.   IID_IVMRImagePresenterConfig        : TGUID = '{9f3a1c85-8555-49ba-935f-be5b5b29d178}'; // XP
  564.   {$EXTERNALSYM IID_IVMRImagePresenterConfig}
  565.   IID_IVMRImagePresenterExclModeConfig: TGUID = '{e6f7ce40-4673-44f1-8f77-5499d68cb4ea}'; // XP
  566.   {$EXTERNALSYM IID_IVMRImagePresenterExclModeConfig}
  567.  
  568.   IID_IAMBufferNegotiation            : TGUID = '{56ED71A0-AF5F-11D0-B3F0-00AA003761C5}';
  569.   {$EXTERNALSYM IID_IAMBufferNegotiation}
  570.  
  571. const
  572.   CHARS_IN_GUID   = 39;
  573.   {$EXTERNALSYM CHARS_IN_GUID}
  574.  
  575.   MAX_PIN_NAME    = 128;
  576.   {$EXTERNALSYM MAX_PIN_NAME}
  577.   MAX_FILTER_NAME = 128;
  578.   {$EXTERNALSYM MAX_FILTER_NAME}
  579.  
  580. type
  581.   PAMMediaType = ^TAMMediaType;
  582.   _AMMediaType = record
  583.     majortype            : TGUID;
  584.     subtype              : TGUID;
  585.     bFixedSizeSamples    : BOOL;
  586.     bTemporalCompression : BOOL;
  587.     lSampleSize          : ULONG;
  588.     formattype           : TGUID;
  589.     pUnk                 : IUnknown;
  590.     cbFormat             : ULONG;
  591.     pbFormat             : Pointer;
  592.   end;
  593.   {$EXTERNALSYM _AMMediaType}
  594.   AM_MEDIA_TYPE = _AMMediaType;
  595.   {$EXTERNALSYM AM_MEDIA_TYPE}
  596.   TAMMediaType = _AMMediaType;
  597.  
  598.   _PinDirection = (
  599.     PINDIR_INPUT,
  600.     PINDIR_OUTPUT
  601.   );
  602.   {$EXTERNALSYM _PinDirection}
  603.   PIN_DIRECTION = _PinDirection;
  604.   {$EXTERNALSYM PIN_DIRECTION}
  605.   TPinDirection = PIN_DIRECTION;
  606.  
  607.   REFERENCE_TIME = {$IFDEF TYPE_IDENTITY}type {$ENDIF}int64;
  608.   {$EXTERNALSYM REFERENCE_TIME}
  609.   TReferenceTime = REFERENCE_TIME;
  610.   PReferenceTime = ^TReferenceTime;
  611.  
  612.   REFTIME = double;
  613.   {$EXTERNALSYM REFTIME}
  614.   TRefTime = REFTIME;
  615.  
  616.   HSEMAPHORE = Longint;
  617.   {$EXTERNALSYM HSEMAPHORE}
  618.  
  619.   PAllocatorProperties = ^TAllocatorProperties;
  620.   _AllocatorProperties = record
  621.     cBuffers: Longint;
  622.     cbBuffer: Longint;
  623.     cbAlign : Longint;
  624.     cbPrefix: Longint;
  625.   end;
  626.   {$EXTERNALSYM _AllocatorProperties}
  627.   ALLOCATOR_PROPERTIES = _AllocatorProperties;
  628.   {$EXTERNALSYM ALLOCATOR_PROPERTIES}
  629.   TAllocatorProperties = _AllocatorProperties;
  630.  
  631.   IBaseFilter = interface;
  632.  
  633.   _PinInfo = record
  634.     pFilter: IBaseFilter;
  635.     dir    : PIN_DIRECTION;
  636.     achName: array[0..127] of WCHAR;
  637.   end;
  638.   {$EXTERNALSYM _PinInfo}
  639.   PIN_INFO = _PinInfo;
  640.   {$EXTERNALSYM PIN_INFO}
  641.   TPinInfo = _PinInfo;
  642.  
  643.   IEnumMediaTypes = interface;
  644.  
  645.   {$HPPEMIT 'typedef System::DelphiInterface<IPin> _di_IPin;'}
  646.   {$EXTERNALSYM IPin}
  647.   IPin = interface(IUnknown)
  648.     ['{56A86891-0AD4-11CE-B03A-0020AF0BA770}']
  649.     (*** IPin methods ***)
  650.     function Connect(pReceivePin: IPin; const pmt: PAMMediaType): HResult; stdcall;
  651.     function ReceiveConnection(pConnector: IPin; const pmt: TAMMediaType): HResult; stdcall;
  652.     function Disconnect: HResult; stdcall;
  653.     function ConnectedTo(out pPin: IPin): HResult; stdcall;
  654.     function ConnectionMediaType(out pmt: TAMMediaType): HResult; stdcall;
  655.     function QueryPinInfo(out pInfo: TPinInfo): HResult; stdcall;
  656.     function QueryDirection(out pPinDir: TPinDirection): HResult; stdcall;
  657.     function QueryId(out Id: LPWSTR): HResult; stdcall;
  658.     function QueryAccept(const pmt: TAMMediaType): HResult; stdcall;
  659.     function EnumMediaTypes(out ppEnum: IEnumMediaTypes): HResult; stdcall;
  660.     function QueryInternalConnections(out apPin: IPin; var nPin: ULONG): HResult; stdcall;
  661.     function EndOfStream: HResult; stdcall;
  662.     function BeginFlush: HResult; stdcall;
  663.     function EndFlush: HResult; stdcall;
  664.     function NewSegment(tStart, tStop: TReferenceTime; dRate: double): HResult; stdcall;
  665.   end;
  666.  
  667.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumPins> _di_IEnumPins;'}
  668.   {$EXTERNALSYM IEnumPins}
  669.   IEnumPins = interface(IUnknown)
  670.     ['{56A86892-0AD4-11CE-B03A-0020AF0BA770}']
  671.     (*** IEnumPins methods ***)
  672.     function Next(cPins: ULONG; out ppPins: IPin; pcFetched: PULONG): HResult; stdcall;
  673.     function Skip(cPins: ULONG): HResult; stdcall;
  674.     function Reset: HResult; stdcall;
  675.     function Clone(out ppEnum: IEnumPins): HResult; stdcall;
  676.   end;
  677.  
  678.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumMediaTypes> _di_IEnumMediaTypes;'}
  679.   {$EXTERNALSYM IEnumMediaTypes}
  680.   IEnumMediaTypes = interface(IUnknown)
  681.     ['{89C31040-846B-11CE-97D3-00AA0055595A}']
  682.     (*** IEnumMediaTypes methods ***)
  683.     function Next(cMediaTypes: ULONG; out ppMediaTypes: PAMMediaType;
  684.       pcFetched: PULONG): HResult; stdcall;
  685.     function Skip(cMediaTypes: ULONG): HResult; stdcall;
  686.     function Reset: HResult; stdcall;
  687.     function Clone(out ppEnum: IEnumMediaTypes): HResult; stdcall;
  688.   end;
  689.  
  690.   IEnumFilters = interface;
  691.  
  692.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterGraph> _di_IFilterGraph;'}
  693.   {$EXTERNALSYM IFilterGraph}
  694.   IFilterGraph = interface(IUnknown)
  695.     ['{56A8689F-0AD4-11CE-B03A-0020AF0BA770}']
  696.     (*** IFilterGraph methods ***)
  697.     function AddFilter(pFilter: IBaseFilter; pName: PWideChar): HResult; stdcall;
  698.     function RemoveFilter(pFilter: IBaseFilter): HResult; stdcall;
  699.     function EnumFilters(out ppEnum: IEnumFilters): HResult; stdcall;
  700.     function FindFilterByName(pName: PWideChar; out ppFilter: IBaseFilter): HResult; stdcall;
  701.     function ConnectDirect(ppinOut, ppinIn: IPin; pmt: PAMMediaType): HResult; stdcall;
  702.     function Reconnect(ppin: IPin): HResult; stdcall;
  703.     function Disconnect(ppin: IPin): HResult; stdcall;
  704.     function SetDefaultSyncSource: HResult; stdcall;
  705.   end;
  706.  
  707.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumFilters> _di_IEnumFilters;'}
  708.   {$EXTERNALSYM IEnumFilters}
  709.   IEnumFilters = interface(IUnknown)
  710.     ['{56A86893-0AD4-11CE-B03A-0020AF0BA770}']
  711.     (*** IEnumFilters methods ***)
  712.     function Next(cFilters: ULONG; out ppFilter: IBaseFilter;
  713.       pcFetched: PULONG): HResult; stdcall;
  714.     function Skip(cFilters: ULONG): HResult; stdcall;
  715.     function Reset: HResult; stdcall;
  716.     function Clone(out ppEnum: IEnumFilters): HResult; stdcall;
  717.   end;
  718.  
  719.   _FilterState = (
  720.     State_Stopped,
  721.     State_Paused,
  722.     State_Running
  723.   );
  724.   {$EXTERNALSYM _FilterState}
  725.   FILTER_STATE = _FilterState;
  726.   {$EXTERNALSYM FILTER_STATE}
  727.   TFilterState = FILTER_STATE;
  728.  
  729.   {$NODEFINE IReferenceClock}
  730.   IReferenceClock = DirectSound.IReferenceClock;
  731.  
  732.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaFilter> _di_IMediaFilter;'}
  733.   {$EXTERNALSYM IMediaFilter}
  734.   IMediaFilter = interface(IPersist)
  735.     ['{56A86899-0AD4-11CE-B03A-0020AF0BA770}']
  736.     (*** IMediaFilter methods ***)
  737.     function Stop: HResult; stdcall;
  738.     function Pause: HResult; stdcall;
  739.     function Run(tStart: TReferenceTime): HResult; stdcall;
  740.     function GetState(dwMilliSecsTimeout: DWORD; out State: TFilterState): HResult; stdcall;
  741.     function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
  742.     function GetSyncSource(out pClock: IReferenceClock): HResult; stdcall;
  743.   end;
  744.  
  745.   _FilterInfo = record
  746.     achName : array[0..127] of WCHAR;
  747.     pGraph  : IFilterGraph;
  748.   end;
  749.   {$EXTERNALSYM _FilterInfo}
  750.   FILTER_INFO = _FilterInfo;
  751.   {$EXTERNALSYM FILTER_INFO}
  752.   TFilterInfo = _FilterInfo;
  753.  
  754.   {$HPPEMIT 'typedef System::DelphiInterface<IBaseFilter> _di_IBaseFilter;'}
  755.   {$EXTERNALSYM IBaseFilter}
  756.   IBaseFilter = interface(IMediaFilter)
  757.     ['{56A86895-0AD4-11CE-B03A-0020AF0BA770}']
  758.     (*** IBaseFilter methods ***)
  759.     function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
  760.     function FindPin(Id: PWideChar; out ppPin: IPin): HResult; stdcall;
  761.     function QueryFilterInfo(out pInfo: TFilterInfo): HResult; stdcall;
  762.     function JoinFilterGraph(pGraph: IFilterGraph; pName: PWideChar): HResult; stdcall;
  763.     function QueryVendorInfo(out pVendorInfo: PWideChar): HResult; stdcall;
  764.   end;
  765.  
  766.   {$HPPEMIT 'typedef System::DelphiInterface<IReferenceClock2> _di_IReferenceClock2;'}
  767.   {$EXTERNALSYM IReferenceClock2}
  768.   IReferenceClock2 = interface(IReferenceClock)
  769.     ['{36B73885-C2C8-11CF-8B46-00805F6CEF60}']
  770.     (*** IReferenceClock2 methods ***)
  771.   end;
  772.  
  773.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaSample> _di_IMediaSample;'}
  774.   {$EXTERNALSYM IMediaSample}
  775.   IMediaSample = interface(IUnknown)
  776.     ['{56A8689A-0AD4-11CE-B03A-0020AF0BA770}']
  777.     (*** IMediaSample methods ***)
  778.     function GetPointer(out ppBuffer: PBYTE): HResult; stdcall;
  779.     function GetSize: Longint; stdcall;
  780.     function GetTime(out pTimeStart, pTimeEnd: TReferenceTime): HResult; stdcall;
  781.     function SetTime(pTimeStart, pTimeEnd: PReferenceTime): HResult; stdcall;
  782.     function IsSyncPoint: HResult; stdcall;
  783.     function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
  784.     function IsPreroll: HResult; stdcall;
  785.     function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
  786.     function GetActualDataLength: Longint; stdcall;
  787.     function SetActualDataLength(lLen: Longint): HResult; stdcall;
  788.     function GetMediaType(out ppMediaType: PAMMediaType): HResult; stdcall;
  789.     function SetMediaType(var pMediaType: TAMMediaType): HResult; stdcall;
  790.     function IsDiscontinuity: HResult; stdcall;
  791.     function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
  792.     function GetMediaTime(out pTimeStart, pTimeEnd: int64): HResult; stdcall;
  793.     function SetMediaTime(pTimeStart, pTimeEnd: Pint64): HResult; stdcall;
  794.   end;
  795.  
  796. const
  797.   AM_SAMPLE_SPLICEPOINT         = $1;
  798.   {$EXTERNALSYM AM_SAMPLE_SPLICEPOINT}
  799.   AM_SAMPLE_PREROLL             = $2;
  800.   {$EXTERNALSYM AM_SAMPLE_PREROLL}
  801.   AM_SAMPLE_DATADISCONTINUITY   = $4;
  802.   {$EXTERNALSYM AM_SAMPLE_DATADISCONTINUITY}
  803.   AM_SAMPLE_TYPECHANGED         = $8;
  804.   {$EXTERNALSYM AM_SAMPLE_TYPECHANGED}
  805.   AM_SAMPLE_TIMEVALID           = $10;
  806.   {$EXTERNALSYM AM_SAMPLE_TIMEVALID}
  807.   AM_SAMPLE_TIMEDISCONTINUITY   = $40;
  808.   {$EXTERNALSYM AM_SAMPLE_TIMEDISCONTINUITY}
  809.   AM_SAMPLE_FLUSH_ON_PAUSE      = $80;
  810.   {$EXTERNALSYM AM_SAMPLE_FLUSH_ON_PAUSE}
  811.   AM_SAMPLE_STOPVALID           = $100;
  812.   {$EXTERNALSYM AM_SAMPLE_STOPVALID}
  813.   AM_SAMPLE_ENDOFSTREAM         = $200;
  814.   {$EXTERNALSYM AM_SAMPLE_ENDOFSTREAM}
  815.   AM_STREAM_MEDIA               = 0;
  816.   {$EXTERNALSYM AM_STREAM_MEDIA}
  817.   AM_STREAM_CONTROL             = 1;
  818.   {$EXTERNALSYM AM_STREAM_CONTROL}
  819.  
  820. type
  821.   PAMSample2Properties = ^TAMSample2Properties;
  822.   tagAM_SAMPLE2_PROPERTIES = record
  823.     cbData: DWORD;
  824.     dwTypeSpecificFlags  : DWORD;
  825.     dwSampleFlags        : DWORD;
  826.     lActual              : Longint;
  827.     tStart               : Reference_Time;
  828.     tStop                : Reference_Time;
  829.     dwStreamId           : DWORD;
  830.     pMediaType           : PAMMediaType;
  831.     pbBuffer             : Pointer;
  832.     cbBuffer             : Longint;
  833.   end;
  834.   {$EXTERNALSYM tagAM_SAMPLE2_PROPERTIES}
  835.   AM_SAMPLE2_PROPERTIES = tagAM_SAMPLE2_PROPERTIES;
  836.   {$EXTERNALSYM AM_SAMPLE2_PROPERTIES}
  837.   TAMSample2Properties = tagAM_SAMPLE2_PROPERTIES;
  838.   
  839. type
  840.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaSample2> _di_IMediaSample2;'}
  841.   {$EXTERNALSYM IMediaSample2}
  842.   IMediaSample2 = interface(IMediaSample)
  843.     ['{36B73884-C2C8-11CF-8B46-00805F6CEF60}']
  844.     (*** IMediaSample2 methods ***)
  845.     function GetProperties(cbProperties: DWORD; out pbProperties): HResult; stdcall;
  846.     function SetProperties(cbProperties: DWORD; const pbProperties): HResult; stdcall;
  847.   end;
  848.  
  849. const
  850.   AM_GBF_PREVFRAMESKIPPED = 1;
  851.   {$EXTERNALSYM AM_GBF_PREVFRAMESKIPPED}
  852.   AM_GBF_NOTASYNCPOINT    = 2;
  853.   {$EXTERNALSYM AM_GBF_NOTASYNCPOINT}
  854.   AM_GBF_NOWAIT           = 4;
  855.   {$EXTERNALSYM AM_GBF_NOWAIT}
  856.   AM_GBF_NODDSURFACELOCK  = 8;
  857.   {$EXTERNALSYM AM_GBF_NODDSURFACELOCK}
  858.  
  859. type
  860.  
  861.   {$HPPEMIT 'typedef System::DelphiInterface<IMemAllocator> _di_IMemAllocator;'}
  862.   {$EXTERNALSYM IMemAllocator}
  863.   IMemAllocator = interface(IUnknown)
  864.     ['{56A8689C-0AD4-11CE-B03A-0020AF0BA770}']
  865.     (*** IMemAllocator methods ***)
  866.     function SetProperties(var pRequest: TAllocatorProperties;
  867.         out pActual: TAllocatorProperties): HResult; stdcall;
  868.     function GetProperties(out pProps: TAllocatorProperties): HResult; stdcall;
  869.     function Commit: HResult; stdcall;
  870.     function Decommit: HResult; stdcall;
  871.     function GetBuffer(out ppBuffer: IMediaSample;
  872.         pStartTime, pEndTime: PReferenceTime; dwFlags: DWORD): HResult; stdcall;
  873.     function ReleaseBuffer(pBuffer: IMediaSample): HResult; stdcall;
  874.   end;
  875.  
  876.   {$HPPEMIT 'typedef System::DelphiInterface<IMemAllocatorNotifyCallbackTemp> _di_IMemAllocatorNotifyCallbackTemp;'}
  877.   {$EXTERNALSYM IMemAllocatorNotifyCallbackTemp}
  878.   IMemAllocatorNotifyCallbackTemp = interface(IUnknown)
  879.     ['{92980b30-c1de-11d2-abf5-00a0c905f375}']
  880.     (*** IMemAllocatorNotifyCallbackTemp methods ***)
  881.     function NotifyRelease: HResult; stdcall;
  882.   end;
  883.  
  884.   {$HPPEMIT 'typedef System::DelphiInterface<IMemAllocatorCallbackTemp> _di_IMemAllocatorCallbackTemp;'}
  885.   {$EXTERNALSYM IMemAllocatorCallbackTemp}
  886.   IMemAllocatorCallbackTemp = interface(IMemAllocator)
  887.     ['{379a0cf0-c1de-11d2-abf5-00a0c905f375}']
  888.     (*** IMemAllocatorCallbackTemp methods ***)
  889.     function SetNotify(pNotify: IMemAllocatorNotifyCallbackTemp): HResult; stdcall;
  890.     function GetFreeCount(out plBuffersFree: LongInt): HResult; stdcall;
  891.   end;
  892.  
  893.   {$HPPEMIT 'typedef System::DelphiInterface<IMemInputPin> _di_IMemInputPin;'}
  894.   {$EXTERNALSYM IMemInputPin}
  895.   IMemInputPin = interface(IUnknown)
  896.     ['{56A8689D-0AD4-11CE-B03A-0020AF0BA770}']
  897.     (*** IMemInputPin methods ***)
  898.     function GetAllocator(out ppAllocator: IMemAllocator): HResult; stdcall;
  899.     function NotifyAllocator(pAllocator: IMemAllocator; bReadOnly: BOOL): HResult; stdcall;
  900.     function GetAllocatorRequirements(out pProps: TAllocatorProperties): HResult; stdcall;
  901.     function Receive(pSample: IMediaSample): HResult; stdcall;
  902.     function ReceiveMultiple(var pSamples: IMediaSample; nSamples: Longint;
  903.         out nSamplesProcessed: Longint): HResult; stdcall;
  904.     function ReceiveCanBlock: HResult; stdcall;
  905.   end;
  906.  
  907.   //Deprecated Interface
  908.   {$HPPEMIT 'typedef System::DelphiInterface<IAMovieSetup> _di_IAMovieSetup;'}
  909.   {$EXTERNALSYM IAMovieSetup}
  910.   IAMovieSetup = interface(IUnknown)
  911.     ['{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}']
  912.     (*** IAMovieSetup methods ***)
  913.     function Register: HResult; stdcall;
  914.     function Unregister: HResult; stdcall;
  915.   end;
  916.  
  917. const
  918.   AM_SEEKING_NoPositioning          = 0;
  919.   {$EXTERNALSYM AM_SEEKING_NoPositioning}
  920.   AM_SEEKING_AbsolutePositioning    = $1;
  921.   {$EXTERNALSYM AM_SEEKING_AbsolutePositioning}
  922.   AM_SEEKING_RelativePositioning    = $2;
  923.   {$EXTERNALSYM AM_SEEKING_RelativePositioning}
  924.   AM_SEEKING_IncrementalPositioning = $3;
  925.   {$EXTERNALSYM AM_SEEKING_IncrementalPositioning}
  926.   AM_SEEKING_PositioningBitsMask    = $3;
  927.   {$EXTERNALSYM AM_SEEKING_PositioningBitsMask}
  928.   AM_SEEKING_SeekToKeyFrame         = $4;
  929.   {$EXTERNALSYM AM_SEEKING_SeekToKeyFrame}
  930.   AM_SEEKING_ReturnTime             = $8;
  931.   {$EXTERNALSYM AM_SEEKING_ReturnTime}
  932.   AM_SEEKING_Segment                = $10;
  933.   {$EXTERNALSYM AM_SEEKING_Segment}
  934.   AM_SEEKING_NoFlush                = $20;
  935.   {$EXTERNALSYM AM_SEEKING_NoFlush}
  936.  
  937.   AM_SEEKING_CanSeekAbsolute        = $1;
  938.   {$EXTERNALSYM AM_SEEKING_CanSeekAbsolute}
  939.   AM_SEEKING_CanSeekForwards        = $2;
  940.   {$EXTERNALSYM AM_SEEKING_CanSeekForwards}
  941.   AM_SEEKING_CanSeekBackwards       = $4;
  942.   {$EXTERNALSYM AM_SEEKING_CanSeekBackwards}
  943.   AM_SEEKING_CanGetCurrentPos       = $8;
  944.   {$EXTERNALSYM AM_SEEKING_CanGetCurrentPos}
  945.   AM_SEEKING_CanGetStopPos          = $10;
  946.   {$EXTERNALSYM AM_SEEKING_CanGetStopPos}
  947.   AM_SEEKING_CanGetDuration         = $20;
  948.   {$EXTERNALSYM AM_SEEKING_CanGetDuration}
  949.   AM_SEEKING_CanPlayBackwards       = $40;
  950.   {$EXTERNALSYM AM_SEEKING_CanPlayBackwards}
  951.   AM_SEEKING_CanDoSegments          = $80;
  952.   {$EXTERNALSYM AM_SEEKING_CanDoSegments}
  953.   AM_SEEKING_Source                 = $100;
  954.   {$EXTERNALSYM AM_SEEKING_Source}
  955.  
  956. type
  957.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaSeeking> _di_IMediaSeeking;'}
  958.   {$EXTERNALSYM IMediaSeeking}
  959.   IMediaSeeking = interface(IUnknown)
  960.     ['{36B73880-C2C8-11CF-8B46-00805F6CEF60}']
  961.     (*** IMediaSeeking methods ***)
  962.     function GetCapabilities(out pCapabilities: DWORD): HResult; stdcall;
  963.     function CheckCapabilities(var pCapabilities: DWORD): HResult; stdcall;
  964.     function IsFormatSupported(const pFormat: TGUID): HResult; stdcall;
  965.     function QueryPreferredFormat(out pFormat: TGUID): HResult; stdcall;
  966.     function GetTimeFormat(out pFormat: TGUID): HResult; stdcall;
  967.     function IsUsingTimeFormat(const pFormat: TGUID): HResult; stdcall;
  968.     function SetTimeFormat(const pFormat: TGUID): HResult; stdcall;
  969.     function GetDuration(out pDuration: int64): HResult; stdcall;
  970.     function GetStopPosition(out pStop: int64): HResult; stdcall;
  971.     function GetCurrentPosition(out pCurrent: int64): HResult; stdcall;
  972.     function ConvertTimeFormat(out pTarget: int64; pTargetFormat: PGUID;
  973.                Source: int64; pSourceFormat: PGUID): HResult; stdcall;
  974.     function SetPositions(var pCurrent: int64; dwCurrentFlags: DWORD;
  975.                var pStop: int64; dwStopFlags: DWORD): HResult; stdcall;
  976.     function GetPositions(out pCurrent, pStop: int64): HResult; stdcall;
  977.     function GetAvailable(out pEarliest, pLatest: int64): HResult; stdcall;
  978.     function SetRate(dRate: double): HResult; stdcall;
  979.     function GetRate(out pdRate: double): HResult; stdcall;
  980.     function GetPreroll(out pllPreroll: int64): HResult; stdcall;
  981.   end;
  982.  
  983. const
  984.   AM_MEDIAEVENT_NONOTIFY = $01;
  985.   {$EXTERNALSYM AM_MEDIAEVENT_NONOTIFY}
  986.  
  987. type
  988.   PRegFilter = ^TRegFilter;
  989.   REGFILTER = record
  990.     Clsid: TGUID;
  991.     Name : LPWSTR;
  992.   end;
  993.   {$EXTERNALSYM REGFILTER}
  994.   TRegFilter = REGFILTER;
  995.   
  996.   //Deprecated Interface
  997.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumRegFilters> _di_IEnumRegFilters;'}
  998.   {$EXTERNALSYM IEnumRegFilters}
  999.   IEnumRegFilters = interface(IUnknown)
  1000.     ['{56A868A4-0AD4-11CE-B03A-0020AF0BA770}']
  1001.     (*** IEnumRegFilters methods ***)
  1002.     function Next(cFilters: ULONG; out apRegFilter: TRegFilter;
  1003.         out pcFetched: ULONG): HResult; stdcall;
  1004.     function Skip(cFilters: ULONG): HResult; stdcall;
  1005.     function Reset: HResult; stdcall;
  1006.     function Clone(out ppEnum: IEnumRegFilters): HResult; stdcall;
  1007.   end;
  1008.  
  1009. const
  1010.   MERIT_PREFERRED       = $800000;
  1011.   {$EXTERNALSYM MERIT_PREFERRED}
  1012.   MERIT_NORMAL          = $600000;
  1013.   {$EXTERNALSYM MERIT_NORMAL}
  1014.   MERIT_UNLIKELY        = $400000;
  1015.   {$EXTERNALSYM MERIT_UNLIKELY}
  1016.   MERIT_DO_NOT_USE      = $200000;
  1017.   {$EXTERNALSYM MERIT_DO_NOT_USE}
  1018.   MERIT_SW_COMPRESSOR   = $100000;
  1019.   {$EXTERNALSYM MERIT_SW_COMPRESSOR}
  1020.   MERIT_HW_COMPRESSOR   = $100050;
  1021.   {$EXTERNALSYM MERIT_HW_COMPRESSOR}
  1022.  
  1023. type
  1024.  
  1025.   //Deprecated Interface
  1026.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterMapper> _di_IFilterMapper;'}
  1027.   {$EXTERNALSYM IFilterMapper}
  1028.   IFilterMapper = interface(IUnknown)
  1029.     ['{56A868A3-0AD4-11CE-B03A-0020AF0BA770}']
  1030.     (*** IFilterMapper methods ***)
  1031.     function RegisterFilter(clsid: TGUID; Name: LPCWSTR; dwMerit: DWORD):HResult; stdcall;
  1032.     function RegisterFilterInstance(clsid: TGUID; Name: LPCWSTR; out MRId: TGUID): HResult; stdcall;
  1033.     function RegisterPin(Filter: TGUID; Name: LPCWSTR;
  1034.       bRendered, bOutput, bZero, bMany: BOOL; ConnectsToFilter: TGUID;
  1035.       ConnectsToPin: PWideChar): HResult; stdcall;
  1036.     function RegisterPinType(clsFilter: TGUID; strName: LPCWSTR;
  1037.       clsMajorType, clsSubType: TGUID): HResult; stdcall;
  1038.     function UnregisterFilter(Filter: TGUID): HResult; stdcall;
  1039.     function UnregisterFilterInstance(MRId: TGUID): HResult; stdcall;
  1040.     function UnregisterPin(Filter: TGUID; Name: LPCWSTR): HResult; stdcall;
  1041.     function EnumMatchingFilters(out ppEnum: IEnumRegFilters; dwMerit: DWORD;
  1042.       bInputNeeded: BOOL; const clsInMaj, clsInSub: TGUID;
  1043.       bRender, bOututNeeded: BOOL; const clsOutMaj, clsOutSub: TGUID): HResult; stdcall;
  1044.   end;
  1045.  
  1046.   PRegPinTypes = ^TRegPinTypes;
  1047.   REGPINTYPES = record
  1048.     clsMajorType: PGUID;
  1049.     clsMinorType: PGUID;
  1050.   end;
  1051.   {$EXTERNALSYM REGPINTYPES}
  1052.   TRegPinTypes = REGPINTYPES;
  1053.  
  1054.   PRegFilterPins = ^TRegFilterPins;
  1055.   REGFILTERPINS = record
  1056.     strName          : PWideChar;
  1057.     bRendered        : BOOL;
  1058.     bOutput          : BOOL;
  1059.     bZero            : BOOL;
  1060.     bMany            : BOOL;
  1061.     oFilter          : PGUID;
  1062.     strConnectsToPin : PWideChar;
  1063.     nMediaTypes      : LongWord;
  1064.     lpMediaType      : PRegPinTypes;
  1065.   end;
  1066.   {$EXTERNALSYM REGFILTERPINS}
  1067.   TRegFilterPins = REGFILTERPINS;
  1068.  
  1069.   PRegPinMedium = ^TRegPinMedium;
  1070.   REGPINMEDIUM = record
  1071.     clsMedium: TGUID;
  1072.     dw1: DWORD;
  1073.     dw2: DWORD;
  1074.   end;
  1075.   {$EXTERNALSYM REGPINMEDIUM}
  1076.   TRegPinMedium = REGPINMEDIUM;
  1077.  
  1078. const
  1079.   REG_PINFLAG_B_ZERO     = $1;
  1080.   {$EXTERNALSYM REG_PINFLAG_B_ZERO}
  1081.   REG_PINFLAG_B_RENDERER = $2;
  1082.   {$EXTERNALSYM REG_PINFLAG_B_RENDERER}
  1083.   REG_PINFLAG_B_MANY     = $4;
  1084.   {$EXTERNALSYM REG_PINFLAG_B_MANY}
  1085.   REG_PINFLAG_B_OUTPUT   = $8;
  1086.   {$EXTERNALSYM REG_PINFLAG_B_OUTPUT}
  1087.  
  1088. type
  1089.   PRegFilterPins2 = ^TRegFilterPins2;
  1090.   REGFILTERPINS2 = record
  1091.     dwFlags        : DWORD;
  1092.     cInstances     : UINT;
  1093.     nMediaTypes    : UINT;
  1094.     lpMediaType    : PRegPinTypes;
  1095.     nMediums       : UINT;
  1096.     lpMedium       : PRegPinMedium;
  1097.     clsPinCategory : PGUID;
  1098.   end;
  1099.   {$EXTERNALSYM REGFILTERPINS2}
  1100.   TRegFilterPins2 = REGFILTERPINS2;
  1101.  
  1102.   PRegFilter2 = ^TRegFilter2;
  1103.   REGFILTER2 = record
  1104.     dwVersion: DWORD;
  1105.     dwMerit: DWORD;
  1106.     case Integer of
  1107.       0: (
  1108.         cPins: ULONG;
  1109.         rgPins: PRegFilterPins;
  1110.       );
  1111.       1: (
  1112.         cPins2: ULONG;
  1113.         rgPins2: PRegFilterPins2;
  1114.       );
  1115.   end;
  1116.   {$EXTERNALSYM REGFILTER2}
  1117.   TRegFilter2 = REGFILTER2;
  1118.  
  1119.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterMapper2> _di_IFilterMapper2;'}
  1120.   {$EXTERNALSYM IFilterMapper2}
  1121.   IFilterMapper2 = interface(IUnknown)
  1122.     ['{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}']
  1123.     (*** IFilterMapper2 methods ***)
  1124.     function CreateCategory(const clsidCategory: TGUID; dwCategoryMerit: DWORD;
  1125.         Description: PWideChar): HResult; stdcall;
  1126.     function UnregisterFilter(const pclsidCategory: TGUID;
  1127.         szInstance: PWideChar; const Filter: TGUID): HResult; stdcall;
  1128.     function RegisterFilter(const clsidFilter: TGUID; Name: PWideChar;
  1129.         ppMoniker: IMoniker; pclsidCategory: PGUID;
  1130.         szInstance: PWideChar; const prf2: TRegFilter2): HResult; stdcall;
  1131.     function EnumMatchingFilters(out ppEnum: IEnumMoniker; dwFlags: DWORD; bExactMatch: BOOL;
  1132.         dwMerit: DWORD; bInputNeeded: BOOL; cInputTypes: DWORD; pInputTypes: PGUID;
  1133.         pMedIn: PREGPINMEDIUM; pPinCategoryIn: PGUID; bRender, bOutputNeeded: BOOL;
  1134.         cOutputTypes: DWORD; pOutputTypes: PGUID; pMedOut: PRegPinMedium;
  1135.         pPinCategoryOut: PGUID): HResult; stdcall;
  1136.   end;
  1137.  
  1138.   tagQualityMessageType = (
  1139.     Famine,
  1140.     Flood
  1141.   );
  1142.   {$EXTERNALSYM tagQualityMessageType}
  1143.   QualityMessageType = tagQualityMessageType;
  1144.   {$EXTERNALSYM QualityMessageType}
  1145.   TQualityMessageType = QualityMessageType;
  1146.  
  1147.   PQuality = ^TQuality;
  1148.   tagQuality = record
  1149.     Typ        : QualityMessageType;
  1150.     Proportion : Longint;
  1151.     Late       : Reference_Time;
  1152.     TimeStamp  : Reference_Time;
  1153.   end;
  1154.   {$EXTERNALSYM tagQuality}
  1155.   Quality = tagQuality;
  1156.   {$EXTERNALSYM Quality}
  1157.   TQuality = tagQuality;
  1158.  
  1159.   {$HPPEMIT 'typedef System::DelphiInterface<IQualityControl> _di_IQualityControl;'}
  1160.   {$EXTERNALSYM IQualityControl}
  1161.   IQualityControl = interface(IUnknown)
  1162.     ['{56A868A5-0AD4-11CE-B03A-0020AF0BA770}']
  1163.     (*** IQualityControl methods ***)
  1164.     function Notify(pSelf: IBaseFilter; q: TQuality): HResult; stdcall;
  1165.     function SetSink(piqc: IQualityControl): HResult; stdcall;
  1166.   end;
  1167.  
  1168. const
  1169.   CK_NOCOLORKEY = $0;
  1170.   {$EXTERNALSYM CK_NOCOLORKEY}
  1171.   CK_INDEX      = $1;
  1172.   {$EXTERNALSYM CK_INDEX}
  1173.   CK_RGB        = $2;
  1174.   {$EXTERNALSYM CK_RGB}
  1175.  
  1176. type
  1177.   PColorKey = ^TColorKey;
  1178.   tagCOLORKEY = record
  1179.     KeyType        : DWORD;
  1180.     PaletteIndex   : DWORD;
  1181.     LowColorValue  : COLORREF;
  1182.     HighColorValue : COLORREF;
  1183.   end;
  1184.   {$EXTERNALSYM tagCOLORKEY}
  1185.   COLORKEY = tagCOLORKEY;
  1186.   {$EXTERNALSYM COLORKEY}
  1187.   TColorKey = tagCOLORKEY;
  1188.  
  1189. const
  1190.   ADVISE_NONE       = 0;
  1191.   {$EXTERNALSYM ADVISE_NONE}
  1192.   ADVISE_CLIPPING   = $1;
  1193.   {$EXTERNALSYM ADVISE_CLIPPING}
  1194.   ADVISE_PALETTE    = $2;
  1195.   {$EXTERNALSYM ADVISE_PALETTE}
  1196.   ADVISE_COLORKEY   = $4;
  1197.   {$EXTERNALSYM ADVISE_COLORKEY}
  1198.   ADVISE_POSITION   = $8;
  1199.   {$EXTERNALSYM ADVISE_POSITION}
  1200.  
  1201.   ADVISE_ALL = ADVISE_CLIPPING or ADVISE_PALETTE or ADVISE_COLORKEY or ADVISE_POSITION;
  1202.   {$EXTERNALSYM ADVISE_ALL}
  1203.  
  1204. type
  1205.   {$HPPEMIT 'typedef System::DelphiInterface<IOverlayNotify> _di_IOverlayNotify;'}
  1206.   {$EXTERNALSYM IOverlayNotify}
  1207.   IOverlayNotify = interface(IUnknown)
  1208.     ['{56A868A0-0AD4-11CE-B03A-0020AF0BA770}']
  1209.     (*** IOverlayNotify methods ***)
  1210.     function OnPaletteChange(dwColors: DWORD; const pPalette: PPALETTEENTRY): HResult; stdcall;
  1211.     function OnClipChange(const pSourceRect, pDestinationRect: TRect;
  1212.         const pRgnData: TRgnData): HResult; stdcall;
  1213.     function OnColorKeyChange(const pColorKey: TColorKey): HResult; stdcall;
  1214.     function OnPositionChange(const pSourceRect, pDestinationRect: TRect): HResult; stdcall;
  1215.   end;
  1216.  
  1217.   {$HPPEMIT 'typedef System::DelphiInterface<IOverlayNotify2> _di_IOverlayNotify2;'}
  1218.   {$EXTERNALSYM IOverlayNotify2}
  1219.   IOverlayNotify2 = interface(IOverlayNotify)
  1220.     ['{680EFA10-D535-11D1-87C8-00A0C9223196}']
  1221.     (*** IOverlayNotify2 methods ***)
  1222.     function OnDisplayChange(var hMonitor: HMONITOR ): HResult; stdcall;
  1223.   end;
  1224.  
  1225.   {$HPPEMIT 'typedef System::DelphiInterface<IOverlay> _di_IOverlay;'}
  1226.   {$EXTERNALSYM IOverlay}
  1227.   IOverlay = interface(IUnknown)
  1228.     ['{56A868A1-0AD4-11CE-B03A-0020AF0BA770}']
  1229.     (*** IOverlay methods ***)
  1230.     function GetPalette(out pdwColors: DWORD; out ppPalette: PPALETTEENTRY): HResult; stdcall;
  1231.     function SetPalette(dwColors: DWORD; var pPalette: PaletteEntry): HResult; stdcall;
  1232.     function GetDefaultColorKey(out pColorKey: TColorKey): HResult; stdcall;
  1233.     function GetColorKey(out pColorKey: TColorKey): HResult; stdcall;
  1234.     function SetColorKey(var pColorKey: TColorKey): HResult; stdcall;
  1235.     function GetWindowHandle(out pHwnd: HWND): HResult; stdcall;
  1236.     function GetClipList(out pSourceRect, pDestinationRect: TRect;
  1237.         out ppRgnData: PRgnData): HResult; stdcall;
  1238.     function GetVideoPosition(out pSourceRect, pDestinationRect: TRect): HResult; stdcall;
  1239.     function Advise(pOverlayNotify: IOverlayNotify; dwInterests: DWORD): HResult; stdcall;
  1240.     function Unadvise: HResult; stdcall;
  1241.   end;
  1242.  
  1243.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaEventSink> _di_IMediaEventSink;'}
  1244.   {$EXTERNALSYM IMediaEventSink}
  1245.   IMediaEventSink = interface(IUnknown)
  1246.     ['{56A868A2-0AD4-11CE-B03A-0020AF0BA770}']
  1247.     (*** IMediaEventSink methods ***)
  1248.     function Notify(EventCode, EventParam1, EventParam2: Longint): HResult; stdcall;
  1249.   end;
  1250.  
  1251.   {$HPPEMIT 'typedef System::DelphiInterface<IFileSourceFilter> _di_IFileSourceFilter;'}
  1252.   {$EXTERNALSYM IFileSourceFilter}
  1253.   IFileSourceFilter = interface(IUnknown)
  1254.     ['{56A868A6-0AD4-11CE-B03A-0020AF0BA770}']
  1255.     (*** IFileSourceFilter methods ***)
  1256.     function Load(pszFileName: PWCHAR; const pmt: PAMMediaType): HResult; stdcall;
  1257.     function GetCurFile(out ppszFileName: PWideChar; pmt: PAMMediaType): HResult; stdcall;
  1258.   end;
  1259.  
  1260.   {$HPPEMIT 'typedef System::DelphiInterface<IFileSinkFilter> _di_IFileSinkFilter;'}
  1261.   {$EXTERNALSYM IFileSinkFilter}
  1262.   IFileSinkFilter = interface(IUnknown)
  1263.     ['{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}']
  1264.     (*** IFileSinkFilter methods ***)
  1265.     function SetFileName(pszFileName: PWideChar; pmt: PAMMediaType): HResult; stdcall;
  1266.     function GetCurFile(out ppszFileName: PWideChar; pmt: PAMMediaType): HResult; stdcall;
  1267.   end;
  1268.  
  1269.   {$HPPEMIT 'typedef System::DelphiInterface<IFileSinkFilter2> _di_IFileSinkFilter2;'}
  1270.   {$EXTERNALSYM IFileSinkFilter2}
  1271.   IFileSinkFilter2 = interface(IFileSinkFilter)
  1272.     ['{00855B90-CE1B-11D0-BD4F-00A0C911CE86}']
  1273.     (*** IFileSinkFilter2 methods ***)
  1274.     function SetMode(dwFlags: DWORD): HResult; stdcall;
  1275.     function GetMode(out pdwFlags: DWORD): HResult; stdcall;
  1276.   end;
  1277.  
  1278.   AM_FILESINK_FLAGS = (
  1279.   {$IFNDEF COMPILER6_UP}
  1280.     AM_FILE_INVALID_0 {= 0},
  1281.     AM_FILE_OVERWRITE {= 1}
  1282.   {$ELSE}
  1283.     AM_FILE_OVERWRITE = 1
  1284.   {$ENDIF}
  1285.   );
  1286.   {$EXTERNALSYM AM_FILESINK_FLAGS}
  1287.   TAMFileSinkFlags = AM_FILESINK_FLAGS;
  1288.  
  1289.  
  1290. //  Very old !!!!!
  1291. //  PAsyncIOReq = ^TAsyncIOReq;
  1292. //  TAsyncIOReq = record
  1293. //    engine: array[0..3] of DWORD;
  1294. //    lpv: Pointer;
  1295. //    cb: DWORD;
  1296. //    dwError: DWORD;
  1297. //    cbDone: DWORD;
  1298. //    liPos: TLargeInteger;
  1299. //    hEvent: DWORD;
  1300. //    dwUser: DWORD;
  1301. //  end;
  1302.  
  1303. //  IFileAsyncIO = interface(IUnknown)
  1304. //    ['{56A868A7-0AD4-11CE-B03A-0020AF0BA770}']
  1305. //    function QueryAlignment(out pdwAlign: DWORD): HResult; stdcall;
  1306. //    function Read(const pReq: TAsyncIOReq): HResult; stdcall;
  1307. //    function Write(const pReq: TAsyncIOReq): HResult; stdcall;
  1308. //    function WaitForNext(out ppReq: PAsyncIOReq;
  1309. //        dwTimeout: DWORD): HResult; stdcall;
  1310. //    function WaitForSpecific(out pReq: TAsyncIOReq;
  1311. //        dwTimeout: DWORD): HResult; stdcall;
  1312. //    function DiscardPending: HResult; stdcall;
  1313. //    function Flush: HResult; stdcall;
  1314. //  end;
  1315.  
  1316.   {$HPPEMIT 'typedef System::DelphiInterface<IGraphBuilder> _di_IGraphBuilder;'}
  1317.   {$EXTERNALSYM IGraphBuilder}
  1318.   IGraphBuilder = interface(IFilterGraph)
  1319.     ['{56A868A9-0AD4-11CE-B03A-0020AF0BA770}']
  1320.     (*** IGraphBuilder methods ***)
  1321.     function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
  1322.     function Render(ppinOut: IPin): HResult; stdcall;
  1323.     function RenderFile(lpcwstrFile, lpcwstrPlayList: PWideChar): HResult; stdcall;
  1324.     function AddSourceFilter(lpcwstrFileName, lpcwstrFilterName: LPCWSTR;
  1325.         out ppFilter: IBaseFilter): HResult; stdcall;
  1326.     function SetLogFile(hFile: THandle): HResult; stdcall;
  1327.     function Abort: HResult; stdcall;
  1328.     function ShouldOperationContinue: HResult; stdcall;
  1329.   end;
  1330.  
  1331.   IAMCopyCaptureFileProgress = interface;
  1332.  
  1333.   //Deprecated Interface
  1334.   {$HPPEMIT 'typedef System::DelphiInterface<ICaptureGraphBuilder> _di_ICaptureGraphBuilder;'}
  1335.   {$EXTERNALSYM ICaptureGraphBuilder}
  1336.   ICaptureGraphBuilder = interface(IUnknown)
  1337.     ['{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}']
  1338.     (*** ICaptureGraphBuilder methods ***)
  1339.     function SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;
  1340.     function GetFiltergraph(out ppfg: IGraphBuilder): HResult; stdcall;
  1341.     function SetOutputFileName(const pType: TGUID; lpstrFile: PWCHAR;
  1342.         out ppf: IBaseFilter; out ppSink: IFileSinkFilter): HResult; stdcall;
  1343.     function FindInterface(pCategory: PGUID; pf: IBaseFilter;
  1344.         const riid: TGUID; out ppint): HResult; stdcall;
  1345.     function RenderStream(pCategory: PGUID; pSource: IUnknown;
  1346.         pfCompressor, pfRenderer: IBaseFilter): HResult; stdcall;
  1347.     function ControlStream(pCategory: PGUID; pFilter: IBaseFilter;
  1348.         pstart, pstop: PReferenceTime; wStartCookie, wStopCookie: WORD): HResult; stdcall;
  1349.     function AllocCapFile(lpstr: PWCHAR; dwlSize: int64): HResult; stdcall;
  1350.     function CopyCaptureFile(lpwstrOld, lpwstrNew: PWCHAR; fAllowEscAbort: Integer;
  1351.         pCallback: IAMCopyCaptureFileProgress): HResult; stdcall;
  1352.   end;
  1353.  
  1354.   {$HPPEMIT 'typedef System::DelphiInterface<ICaptureGraphBuilder2> _di_ICaptureGraphBuilder2;'}
  1355.   {$EXTERNALSYM ICaptureGraphBuilder2}
  1356.   ICaptureGraphBuilder2 = interface(IUnknown)
  1357.     ['{93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D}']
  1358.     (*** ICaptureGraphBuilder2 methods ***)
  1359.     function SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;
  1360.     function GetFiltergraph(out ppfg: IGraphBuilder): HResult; stdcall;
  1361.     function SetOutputFileName(const pType: TGUID; lpstrFile: PWCHAR; out ppf: IBaseFilter; out ppSink: IFileSinkFilter): HResult; stdcall;
  1362.     function FindInterface(pCategory, pType: PGUID; pf: IBaseFilter; const riid: TGUID; out ppint): HResult; stdcall;
  1363.     function RenderStream(pCategory, pType: PGUID; pSource: IUnknown; pfCompressor, pfRenderer: IBaseFilter): HResult; stdcall;
  1364.     function ControlStream(pCategory, pType: PGUID; pFilter: IBaseFilter; pstart, pstop: PReferenceTime; wStartCookie, wStopCookie: WORD ): HResult; stdcall;
  1365.     function AllocCapFile(lpstr: PWCHAR; dwlSize: int64): HResult; stdcall;
  1366.     function CopyCaptureFile(lpwstrOld, lpwstrNew: PWCHAR; fAllowEscAbort: Integer; pCallback: IAMCopyCaptureFileProgress): HResult; stdcall;
  1367.     function FindPin(pSource: IUnknown; pindir: TPINDIRECTION; const pCategory, pType: TGUID; fUnconnected: BOOL; num: integer; out ppPin: IPin): HResult; stdcall;
  1368.   end;
  1369.  
  1370.   {$HPPEMIT 'typedef System::DelphiInterface<IAMCopyCaptureFileProgress> _di_IAMCopyCaptureFileProgress;'}
  1371.   {$EXTERNALSYM IAMCopyCaptureFileProgress}
  1372.   IAMCopyCaptureFileProgress = interface(IUnknown)
  1373.     ['{670D1D20-A068-11D0-B3F0-00AA003761C5}']
  1374.     (*** IAMCopyCaptureFileProgress methods ***)
  1375.     function Progress(iProgress: Integer): HResult; stdcall;
  1376.   end;
  1377.  
  1378. const
  1379.   AM_RENDEREX_RENDERTOEXISTINGRENDERERS = $01;
  1380.   {$EXTERNALSYM AM_RENDEREX_RENDERTOEXISTINGRENDERERS}
  1381.  
  1382. type
  1383.  
  1384.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterGraph2> _di_IFilterGraph2;'}
  1385.   {$EXTERNALSYM IFilterGraph2}
  1386.   IFilterGraph2 = interface(IGraphBuilder)
  1387.     ['{36B73882-C2C8-11CF-8B46-00805F6CEF60}']
  1388.     (*** IFilterGraph2 methods ***)
  1389.     function AddSourceFilterForMoniker(pMoniker: IMoniker; pCtx: IBindCtx;
  1390.         lpcwstrFilterName: LPCWSTR; out ppFilter: IBaseFilter): HResult; stdcall;
  1391.     function ReconnectEx(ppin: IPin; pmt: PAMMediaType): HResult; stdcall;
  1392.     // Render a pin without adding any new renderers (pvContext = nil)
  1393.     // not in the documentation ??
  1394.     function RenderEx(pPinOut: IPin; dwFlags: DWORD; pvContext: PDWORD): HResult; stdcall;
  1395.   end;
  1396.  
  1397.   {$HPPEMIT 'typedef System::DelphiInterface<IStreamBuilder> _di_IStreamBuilder;'}
  1398.   {$EXTERNALSYM IStreamBuilder}
  1399.   IStreamBuilder = interface(IUnknown)
  1400.     ['{56A868BF-0AD4-11CE-B03A-0020AF0BA770}']
  1401.     (*** IStreamBuilder methods ***)
  1402.     function Render(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
  1403.     function Backout(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
  1404.   end;
  1405.  
  1406.   {$HPPEMIT 'typedef System::DelphiInterface<IAsyncReader> _di_IAsyncReader;'}
  1407.   {$EXTERNALSYM IAsyncReader}
  1408.   IAsyncReader = interface(IUnknown)
  1409.     ['{56A868AA-0AD4-11CE-B03A-0020AF0BA770}']
  1410.     (*** IAsyncReader methods ***)
  1411.     function RequestAllocator(pPreferred: IMemAllocator;
  1412.         const pProps: TAllocatorProperties; out ppActual: IMemAllocator): HResult; stdcall;
  1413.     function Request(pSample: IMediaSample; dwUser: DWORD): HResult; stdcall;
  1414.     function WaitForNext(dwTimeout: DWORD; out ppSample: IMediaSample;
  1415.         out pdwUser: DWORD): HResult; stdcall;
  1416.     function SyncReadAligned(pSample: IMediaSample): HResult; stdcall;
  1417.     function SyncRead(llPosition: int64; lLength: Longint; pBuffer: Pbyte): HResult; stdcall;
  1418.     function Length(out pTotal, pAvailable: int64): HResult; stdcall;
  1419.     function BeginFlush: HResult; stdcall;
  1420.     function EndFlush: HResult; stdcall;
  1421.   end;
  1422.  
  1423.   {$HPPEMIT 'typedef System::DelphiInterface<IGraphVersion> _di_IGraphVersion;'}
  1424.   {$EXTERNALSYM IGraphVersion}
  1425.   IGraphVersion = interface(IUnknown)
  1426.     ['{56A868AB-0AD4-11CE-B03A-0020AF0BA770}']
  1427.     (*** IGraphVersion methods ***)
  1428.     function QueryVersion(var pVersion: Longint): HResult; stdcall;
  1429.   end;
  1430.  
  1431.   {$HPPEMIT 'typedef System::DelphiInterface<IResourceConsumer> _di_IResourceConsumer;'}
  1432.   {$EXTERNALSYM IResourceConsumer}
  1433.   IResourceConsumer = interface(IUnknown)
  1434.     ['{56A868AD-0AD4-11CE-B03A-0020AF0BA770}']
  1435.     (*** IResourceConsumer methods ***)
  1436.     function AcquireResource(idResource: Longint): HResult; stdcall;
  1437.     function ReleaseResource(idResource: Longint): HResult; stdcall;
  1438.   end;
  1439.  
  1440.   {$HPPEMIT 'typedef System::DelphiInterface<IResourceManager> _di_IResourceManager;'}
  1441.   {$EXTERNALSYM IResourceManager}
  1442.   IResourceManager = interface(IUnknown)
  1443.     ['{56A868AC-0AD4-11CE-B03A-0020AF0BA770}']
  1444.     (*** IResourceManager methods ***)
  1445.     function Register(pName: LPCWSTR; cResource: Longint;
  1446.         out plToken: Longint): HResult; stdcall;
  1447.     function RegisterGroup(pName: LPCWSTR; cResource: Longint;
  1448.         palTokens: PLongint; out plToken: Longint): HResult; stdcall;
  1449.     function RequestResource(idResource: Longint; pFocusObject: IUnknown;
  1450.         pConsumer: IResourceConsumer): HResult; stdcall;
  1451.     function NotifyAcquire(idResource: Longint; pConsumer: IResourceConsumer;
  1452.         hr: HResult): HResult; stdcall;
  1453.     function NotifyRelease(idResource: Longint; pConsumer: IResourceConsumer;
  1454.         bStillWant: BOOL): HResult; stdcall;
  1455.     function CancelRequest(idResource: Longint; pConsumer: IResourceConsumer): HResult; stdcall;
  1456.     function SetFocus(pFocusObject: IUnknown): HResult; stdcall;
  1457.     function ReleaseFocus(pFocusObject: IUnknown): HResult; stdcall;
  1458.   end;
  1459.  
  1460.   {$HPPEMIT 'typedef System::DelphiInterface<IDistributorNotify> _di_IDistributorNotify;'}
  1461.   {$EXTERNALSYM IDistributorNotify}
  1462.   IDistributorNotify = interface(IUnknown)
  1463.     ['{56A868AF-0AD4-11CE-B03A-0020AF0BA770}']
  1464.     (*** IDistributorNotify methods ***)
  1465.     function Stop: HResult; stdcall;
  1466.     function Pause: HResult; stdcall;
  1467.     function Run(tStart: TReferenceTime): HResult; stdcall;
  1468.     function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
  1469.     function NotifyGraphChange: HResult; stdcall;
  1470.   end;
  1471.  
  1472.   AM_STREAM_INFO_FLAGS =  {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1473.   {$EXTERNALSYM AM_STREAM_INFO_FLAGS}
  1474.   const
  1475.     AM_STREAM_INFO_START_DEFINED   = $1;
  1476.     {$EXTERNALSYM AM_STREAM_INFO_START_DEFINED}
  1477.     AM_STREAM_INFO_STOP_DEFINED    = $2;
  1478.     {$EXTERNALSYM AM_STREAM_INFO_STOP_DEFINED}
  1479.     AM_STREAM_INFO_DISCARDING      = $4;
  1480.     {$EXTERNALSYM AM_STREAM_INFO_DISCARDING}
  1481.     AM_STREAM_INFO_STOP_SEND_EXTRA = $10;
  1482.     {$EXTERNALSYM AM_STREAM_INFO_STOP_SEND_EXTRA}
  1483.  
  1484. type
  1485.   PAMStreamInfo = ^TAMStreamInfo;
  1486.   AM_STREAM_INFO = record
  1487.     tStart        : Reference_Time;
  1488.     tStop         : Reference_Time;
  1489.     dwStartCookie : DWORD;
  1490.     dwStopCookie  : DWORD;
  1491.     dwFlags       : DWORD;
  1492.   end;
  1493.   {$EXTERNALSYM AM_STREAM_INFO}
  1494.   TAMStreamInfo = AM_STREAM_INFO;
  1495.  
  1496.   {$HPPEMIT 'typedef System::DelphiInterface<IAMStreamControl> _di_IAMStreamControl;'}
  1497.   {$EXTERNALSYM IAMStreamControl}
  1498.   IAMStreamControl = interface(IUnknown)
  1499.     ['{36b73881-c2c8-11cf-8b46-00805f6cef60}']
  1500.     (*** IAMStreamControl methods ***)
  1501.     function StartAt(ptStart: PReferenceTime; dwCookie: DWORD): HResult; stdcall;
  1502.     function StopAt(ptStop: PReferenceTime; bSendExtra: BOOL;
  1503.         dwCookie: DWORD): HResult; stdcall;
  1504.     function GetInfo(out pInfo: TAMStreamInfo): HResult; stdcall;
  1505.   end;
  1506.  
  1507.   {$HPPEMIT 'typedef System::DelphiInterface<ISeekingPassThru> _di_ISeekingPassThru;'}
  1508.   {$EXTERNALSYM ISeekingPassThru}
  1509.   ISeekingPassThru = interface(IUnknown)
  1510.     ['{36B73883-C2C8-11CF-8B46-00805F6CEF60}']
  1511.     (*** ISeekingPassThru methods ***)
  1512.     function Init(bSupportRendering: BOOL; pPin: IPin): HResult; stdcall;
  1513.   end;
  1514.  
  1515.   PVideoStreamConfigCaps = ^TVideoStreamConfigCaps;
  1516.   _VIDEO_STREAM_CONFIG_CAPS = record
  1517.     guid: TGUID;
  1518.     VideoStandard      : ULONG;
  1519.     InputSize          : TSize;
  1520.     MinCroppingSize    : TSize;
  1521.     MaxCroppingSize    : TSize;
  1522.     CropGranularityX   : Integer;
  1523.     CropGranularityY   : Integer;
  1524.     CropAlignX         : Integer;
  1525.     CropAlignY         : Integer;
  1526.     MinOutputSize      : TSize;
  1527.     MaxOutputSize      : TSize;
  1528.     OutputGranularityX : Integer;
  1529.     OutputGranularityY : Integer;
  1530.     StretchTapsX       : Integer;
  1531.     StretchTapsY       : Integer;
  1532.     ShrinkTapsX        : Integer;
  1533.     ShrinkTapsY        : Integer;
  1534.     MinFrameInterval   : Int64;
  1535.     MaxFrameInterval   : Int64;
  1536.     MinBitsPerSecond   : Longint;
  1537.     MaxBitsPerSecond   : Longint;
  1538.   end;
  1539.   {$EXTERNALSYM _VIDEO_STREAM_CONFIG_CAPS}
  1540.   VIDEO_STREAM_CONFIG_CAPS = _VIDEO_STREAM_CONFIG_CAPS;
  1541.   {$EXTERNALSYM VIDEO_STREAM_CONFIG_CAPS}
  1542.   TVideoStreamConfigCaps = _VIDEO_STREAM_CONFIG_CAPS;
  1543.  
  1544.   PAudioStreamConfigCaps = ^TAudioStreamConfigCaps;
  1545.   _AUDIO_STREAM_CONFIG_CAPS = record
  1546.     guid: TGUID;
  1547.     MinimumChannels            : ULONG;
  1548.     MaximumChannels            : ULONG;
  1549.     ChannelsGranularity        : ULONG;
  1550.     MinimumBitsPerSample       : ULONG;
  1551.     MaximumBitsPerSample       : ULONG;
  1552.     BitsPerSampleGranularity   : ULONG;
  1553.     MinimumSampleFrequency     : ULONG;
  1554.     MaximumSampleFrequency     : ULONG;
  1555.     SampleFrequencyGranularity : ULONG;
  1556.   end;
  1557.   {$EXTERNALSYM _AUDIO_STREAM_CONFIG_CAPS}
  1558.   AUDIO_STREAM_CONFIG_CAPS = _AUDIO_STREAM_CONFIG_CAPS;
  1559.   {$EXTERNALSYM AUDIO_STREAM_CONFIG_CAPS}
  1560.   TAudioStreamConfigCaps = _AUDIO_STREAM_CONFIG_CAPS;
  1561.  
  1562.   {$HPPEMIT 'typedef System::DelphiInterface<IAMStreamConfig> _di_IAMStreamConfig;'}
  1563.   {$EXTERNALSYM IAMStreamConfig}
  1564.   IAMStreamConfig = interface(IUnknown)
  1565.     ['{C6E13340-30AC-11d0-A18C-00A0C9118956}']
  1566.     (*** IAMStreamConfig methods ***)
  1567.     function SetFormat(const pmt: TAMMediaType): HResult; stdcall;
  1568.     function GetFormat(out ppmt: PAMMediaType): HResult; stdcall;
  1569.     function GetNumberOfCapabilities(out piCount, piSize: Integer): HResult; stdcall;
  1570.     function GetStreamCaps(iIndex: Integer; out ppmt: PAMMediaType;
  1571.       out pSCC): HResult; stdcall;
  1572.   end;
  1573.  
  1574.   InterleavingMode = (
  1575.     INTERLEAVE_NONE,
  1576.     INTERLEAVE_CAPTURE,
  1577.     INTERLEAVE_FULL,
  1578.     INTERLEAVE_NONE_BUFFERED
  1579.   );
  1580.   {$EXTERNALSYM InterleavingMode}
  1581.   TInterleavingMode = InterleavingMode;
  1582.  
  1583.   {$HPPEMIT 'typedef System::DelphiInterface<IConfigInterleaving> _di_IConfigInterleaving;'}
  1584.   {$EXTERNALSYM IConfigInterleaving}
  1585.   IConfigInterleaving = interface(IUnknown)
  1586.     ['{BEE3D220-157B-11d0-BD23-00A0C911CE86}']
  1587.     (*** IConfigInterleaving methods ***)
  1588.     function put_Mode(mode: TInterleavingMode): HResult; stdcall;
  1589.     function get_Mode(out pMode: TInterleavingMode): HResult; stdcall;
  1590.     function put_Interleaving(prtInterleave, prtPreroll: PReferenceTime): HResult; stdcall;
  1591.     function get_Interleaving(out prtInterleave, prtPreroll: TReferenceTime): HResult; stdcall;
  1592.   end;
  1593.  
  1594.   {$HPPEMIT 'typedef System::DelphiInterface<IConfigAviMux> _di_IConfigAviMux;'}
  1595.   {$EXTERNALSYM IConfigAviMux}
  1596.   IConfigAviMux = interface(IUnknown)
  1597.     ['{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}']
  1598.     (*** IConfigAviMux methods ***)
  1599.     function SetMasterStream(iStream: Longint): HResult; stdcall;
  1600.     function GetMasterStream(out pStream: Longint): HResult; stdcall;
  1601.     function SetOutputCompatibilityIndex(fOldIndex: BOOL): HResult; stdcall;
  1602.     function GetOutputCompatibilityIndex(out pfOldIndex: BOOL): HResult; stdcall;
  1603.   end;
  1604.  
  1605. const
  1606.   CompressionCaps_CanQuality    = $1;
  1607.   {$EXTERNALSYM CompressionCaps_CanQuality}
  1608.   CompressionCaps_CanCrunch     = $2;
  1609.   {$EXTERNALSYM CompressionCaps_CanCrunch}
  1610.   CompressionCaps_CanKeyFrame   = $4;
  1611.   {$EXTERNALSYM CompressionCaps_CanKeyFrame}
  1612.   CompressionCaps_CanBFrame     = $8;
  1613.   {$EXTERNALSYM CompressionCaps_CanBFrame}
  1614.   CompressionCaps_CanWindow     = $10;
  1615.   {$EXTERNALSYM CompressionCaps_CanWindow}
  1616.  
  1617. type
  1618.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoCompression> _di_IAMVideoCompression;'}
  1619.   {$EXTERNALSYM IAMVideoCompression}
  1620.   IAMVideoCompression = interface(IUnknown)
  1621.     ['{C6E13343-30AC-11d0-A18C-00A0C9118956}']
  1622.     (*** IAMVideoCompression methods ***)
  1623.     function put_KeyFrameRate(KeyFrameRate: Longint): HResult; stdcall;
  1624.     function get_KeyFrameRate(out pKeyFrameRate: Longint): HResult; stdcall;
  1625.     function put_PFramesPerKeyFrame(PFramesPerKeyFrame: Longint): HResult; stdcall;
  1626.     function get_PFramesPerKeyFrame(out pPFramesPerKeyFrame: Longint): HResult; stdcall;
  1627.     function put_Quality(Quality: double): HResult; stdcall;
  1628.     function get_Quality(out pQuality: double): HResult; stdcall;
  1629.     function put_WindowSize(WindowSize: int64): HResult; stdcall;
  1630.     function get_WindowSize(out pWindowSize: int64): HResult; stdcall;
  1631.     function GetInfo(pszVersion: PWideChar; var pcbVersion: Integer;
  1632.         pszDescription: PWideChar; var pcbDescription: Integer;
  1633.         out pDefaultKeyFrameRate, pDefaultPFramesPerKey: Longint;
  1634.         out pDefaultQuality: double; out pCapabilities: Longint): HResult; stdcall;
  1635.     function OverrideKeyFrame(FrameNumber: Longint): HResult; stdcall;
  1636.     function OverrideFrameSize(FrameNumber, Size: Longint): HResult; stdcall;
  1637.   end;
  1638.  
  1639. const
  1640.   VfwCaptureDialog_Source  = $1;
  1641.   {$EXTERNALSYM VfwCaptureDialog_Source}
  1642.   VfwCaptureDialog_Format  = $2;
  1643.   {$EXTERNALSYM VfwCaptureDialog_Format}
  1644.   VfwCaptureDialog_Display = $4;
  1645.   {$EXTERNALSYM VfwCaptureDialog_Display}
  1646.  
  1647.   VfwCompressDialog_Config = $1;
  1648.   {$EXTERNALSYM VfwCompressDialog_Config}
  1649.   VfwCompressDialog_About  = $2;
  1650.   {$EXTERNALSYM VfwCompressDialog_About}
  1651.  
  1652.   VfwCompressDialog_QueryConfig = $4;
  1653.   {$EXTERNALSYM VfwCompressDialog_QueryConfig}
  1654.   VfwCompressDialog_QueryAbout  = $8;
  1655.   {$EXTERNALSYM VfwCompressDialog_QueryAbout}
  1656.  
  1657. type
  1658.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVfwCaptureDialogs> _di_IAMVfwCaptureDialogs;'}
  1659.   {$EXTERNALSYM IAMVfwCaptureDialogs}
  1660.   IAMVfwCaptureDialogs = interface(IUnknown)
  1661.     ['{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}']
  1662.     (*** IAMVfwCaptureDialogs methods ***)
  1663.     function HasDialog(iDialog: Integer): HResult; stdcall;
  1664.     function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
  1665.     function SendDriverMessage(iDialog: Integer; uMsg: Integer;
  1666.         dw1, dw2: Longint): HResult; stdcall;
  1667.   end;
  1668.  
  1669.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVfwCompressDialogs> _di_IAMVfwCompressDialogs;'}
  1670.   {$EXTERNALSYM IAMVfwCompressDialogs}
  1671.   IAMVfwCompressDialogs = interface(IUnknown)
  1672.     ['{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}']
  1673.     (*** IAMVfwCompressDialogs methods ***)
  1674.     function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
  1675.     function GetState(out pState; var pcbState: Integer): HResult; stdcall;
  1676.     function SetState(var pState; cbState: Integer): HResult; stdcall;
  1677.     function SendDriverMessage(uMsg: Integer; dw1, dw2: Longint): HResult; stdcall;
  1678.   end;
  1679.  
  1680.   {$HPPEMIT 'typedef System::DelphiInterface<IAMDroppedFrames> _di_IAMDroppedFrames;'}
  1681.   {$EXTERNALSYM IAMDroppedFrames}
  1682.   IAMDroppedFrames = interface(IUnknown)
  1683.     ['{C6E13344-30AC-11d0-A18C-00A0C9118956}']
  1684.     (*** IAMDroppedFrames methods ***)
  1685.     function GetNumDropped(out plDropped: Longint): HResult; stdcall;
  1686.     function GetNumNotDropped(out plNotDropped: Longint): HResult; stdcall;
  1687.     function GetDroppedInfo(lSize: Longint; out plArray: Longint;
  1688.         out plNumCopied: Longint): HResult; stdcall;
  1689.     function GetAverageFrameSize(out plAverageSize: Longint): HResult; stdcall;
  1690.   end;
  1691.  
  1692. const
  1693.   AMF_AUTOMATICGAIN = -1;
  1694.   {$EXTERNALSYM AMF_AUTOMATICGAIN}
  1695.  
  1696. type
  1697.   {$HPPEMIT 'typedef System::DelphiInterface<IAMAudioInputMixer> _di_IAMAudioInputMixer;'}
  1698.   {$EXTERNALSYM IAMAudioInputMixer}
  1699.   IAMAudioInputMixer = interface(IUnknown)
  1700.     ['{54C39221-8380-11d0-B3F0-00AA003761C5}']
  1701.     (*** IAMAudioInputMixer methods ***)
  1702.     function put_Enable(fEnable: BOOL): HResult; stdcall;
  1703.     function get_Enable(out pfEnable: BOOL): HResult; stdcall;
  1704.     function put_Mono(fMono: BOOL): HResult; stdcall;
  1705.     function get_Mono(out pfMono: BOOL): HResult; stdcall;
  1706.     function put_MixLevel(Level: double): HResult; stdcall;
  1707.     function get_MixLevel(out pLevel: double): HResult; stdcall;
  1708.     function put_Pan(Pan: double): HResult; stdcall;
  1709.     function get_Pan(out pPan: double): HResult; stdcall;
  1710.     function put_Loudness(fLoudness: BOOL): HResult; stdcall;
  1711.     function get_Loudness(out pfLoudness: BOOL): HResult; stdcall;
  1712.     function put_Treble(Treble: double): HResult; stdcall;
  1713.     function get_Treble(out pTreble: double): HResult; stdcall;
  1714.     function get_TrebleRange(out pRange: double): HResult; stdcall;
  1715.     function put_Bass(Bass: double): HResult; stdcall;
  1716.     function get_Bass(out pBass: double): HResult; stdcall;
  1717.     function get_BassRange(out pRange: double): HResult; stdcall;
  1718.   end;
  1719.  
  1720.   {$HPPEMIT 'typedef System::DelphiInterface<IAMBufferNegotiation> _di_IAMBufferNegotiation;'}
  1721.   {$EXTERNALSYM IAMBufferNegotiation}
  1722.   IAMBufferNegotiation = interface(IUnknown)
  1723.     ['{56ED71A0-AF5F-11D0-B3F0-00AA003761C5}']
  1724.     (*** IAMBufferNegotiation methods ***)
  1725.     function SuggestAllocatorProperties(const pprop: TAllocatorProperties): HResult; stdcall;
  1726.     function GetAllocatorProperties(var pprop: TAllocatorProperties): HResult; stdcall;
  1727.   end;
  1728.  
  1729. const
  1730.   AnalogVideo_None        = 0;
  1731.   {$EXTERNALSYM AnalogVideo_None}
  1732.   AnalogVideo_NTSC_M      = $1;
  1733.   {$EXTERNALSYM AnalogVideo_NTSC_M}
  1734.   AnalogVideo_NTSC_M_J    = $2;
  1735.   {$EXTERNALSYM AnalogVideo_NTSC_M_J}
  1736.   AnalogVideo_NTSC_433    = $4;
  1737.   {$EXTERNALSYM AnalogVideo_NTSC_433}
  1738.   AnalogVideo_PAL_B       = $10;
  1739.   {$EXTERNALSYM AnalogVideo_PAL_B}
  1740.   AnalogVideo_PAL_D       = $20;
  1741.   {$EXTERNALSYM AnalogVideo_PAL_D}
  1742.   AnalogVideo_PAL_G       = $40;
  1743.   {$EXTERNALSYM AnalogVideo_PAL_G}
  1744.   AnalogVideo_PAL_H       = $80;
  1745.   {$EXTERNALSYM AnalogVideo_PAL_H}
  1746.   AnalogVideo_PAL_I       = $100;
  1747.   {$EXTERNALSYM AnalogVideo_PAL_I}
  1748.   AnalogVideo_PAL_M       = $200;
  1749.   {$EXTERNALSYM AnalogVideo_PAL_M}
  1750.   AnalogVideo_PAL_N       = $400;
  1751.   {$EXTERNALSYM AnalogVideo_PAL_N}
  1752.   AnalogVideo_PAL_60      = $800;
  1753.   {$EXTERNALSYM AnalogVideo_PAL_60}
  1754.   AnalogVideo_SECAM_B     = $1000;
  1755.   {$EXTERNALSYM AnalogVideo_SECAM_B}
  1756.   AnalogVideo_SECAM_D     = $2000;
  1757.   {$EXTERNALSYM AnalogVideo_SECAM_D}
  1758.   AnalogVideo_SECAM_G     = $4000;
  1759.   {$EXTERNALSYM AnalogVideo_SECAM_G}
  1760.   AnalogVideo_SECAM_H     = $8000;
  1761.   {$EXTERNALSYM AnalogVideo_SECAM_H}
  1762.   AnalogVideo_SECAM_K     = $10000;
  1763.   {$EXTERNALSYM AnalogVideo_SECAM_K}
  1764.   AnalogVideo_SECAM_K1    = $20000;
  1765.   {$EXTERNALSYM AnalogVideo_SECAM_K1}
  1766.   AnalogVideo_SECAM_L     = $40000;
  1767.   {$EXTERNALSYM AnalogVideo_SECAM_L}
  1768.   AnalogVideo_SECAM_L1    = $80000;
  1769.   {$EXTERNALSYM AnalogVideo_SECAM_L1}
  1770.  
  1771.   AnalogVideo_NTSC_Mask   = $00000007;
  1772.   {$EXTERNALSYM AnalogVideo_NTSC_Mask}
  1773.   AnalogVideo_PAL_Mask    = $00000FF0;
  1774.   {$EXTERNALSYM AnalogVideo_PAL_Mask}
  1775.   AnalogVideo_SECAM_Mask  = $000FF000;
  1776.   {$EXTERNALSYM AnalogVideo_SECAM_Mask}
  1777.  
  1778. type
  1779.   tagTunerInputType =(
  1780.     TunerInputCable,
  1781.     TunerInputAntenna
  1782.   );
  1783.   {$EXTERNALSYM tagTunerInputType}
  1784.   TunerInputType = tagTunerInputType;
  1785.   {$EXTERNALSYM TunerInputType}
  1786.   TTunerInputType = TunerInputType;
  1787.  
  1788.   VideoCopyProtectionType = (
  1789.     VideoCopyProtectionMacrovisionBasic,
  1790.     VideoCopyProtectionMacrovisionCBI
  1791.   );
  1792.   {$EXTERNALSYM VideoCopyProtectionType}
  1793.   TVideoCopyProtectionType = VideoCopyProtectionType;
  1794.  
  1795.   TPhysicalConnectorType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1796.   const
  1797.     PhysConn_Video_Tuner             = 1;
  1798.     {$EXTERNALSYM PhysConn_Video_Tuner}
  1799.     PhysConn_Video_Composite         = PhysConn_Video_Tuner + 1;
  1800.     {$EXTERNALSYM PhysConn_Video_Composite}
  1801.     PhysConn_Video_SVideo             = PhysConn_Video_Composite + 1;
  1802.     {$EXTERNALSYM PhysConn_Video_SVideo}
  1803.     PhysConn_Video_RGB               = PhysConn_Video_SVideo + 1;
  1804.     {$EXTERNALSYM PhysConn_Video_RGB}
  1805.     PhysConn_Video_YRYBY             = PhysConn_Video_RGB + 1;
  1806.     {$EXTERNALSYM PhysConn_Video_YRYBY}
  1807.     PhysConn_Video_SerialDigital     = PhysConn_Video_YRYBY + 1;
  1808.     {$EXTERNALSYM PhysConn_Video_SerialDigital}
  1809.     PhysConn_Video_ParallelDigital = PhysConn_Video_SerialDigital + 1;
  1810.     {$EXTERNALSYM PhysConn_Video_ParallelDigital}
  1811.     PhysConn_Video_SCSI               = PhysConn_Video_ParallelDigital + 1;
  1812.     {$EXTERNALSYM PhysConn_Video_SCSI}
  1813.     PhysConn_Video_AUX               = PhysConn_Video_SCSI + 1;
  1814.     {$EXTERNALSYM PhysConn_Video_AUX}
  1815.     PhysConn_Video_1394               = PhysConn_Video_AUX + 1;
  1816.     {$EXTERNALSYM PhysConn_Video_1394}
  1817.     PhysConn_Video_USB               = PhysConn_Video_1394 + 1;
  1818.     {$EXTERNALSYM PhysConn_Video_USB}
  1819.     PhysConn_Video_VideoDecoder       = PhysConn_Video_USB + 1;
  1820.     {$EXTERNALSYM PhysConn_Video_VideoDecoder}
  1821.     PhysConn_Video_VideoEncoder       = PhysConn_Video_VideoDecoder + 1;
  1822.     {$EXTERNALSYM PhysConn_Video_VideoEncoder}
  1823.     PhysConn_Video_SCART             = PhysConn_Video_VideoEncoder + 1;
  1824.     {$EXTERNALSYM PhysConn_Video_SCART}
  1825.     PhysConn_Video_Black             = PhysConn_Video_SCART + 1;
  1826.     {$EXTERNALSYM PhysConn_Video_Black}
  1827.     PhysConn_Audio_Tuner             = $1000;
  1828.     {$EXTERNALSYM PhysConn_Audio_Tuner}
  1829.     PhysConn_Audio_Line               = PhysConn_Audio_Tuner + 1;
  1830.     {$EXTERNALSYM PhysConn_Audio_Line}
  1831.     PhysConn_Audio_Mic               = PhysConn_Audio_Line + 1;
  1832.     {$EXTERNALSYM PhysConn_Audio_Mic}
  1833.     PhysConn_Audio_AESDigital         = PhysConn_Audio_Mic + 1;
  1834.     {$EXTERNALSYM PhysConn_Audio_AESDigital}
  1835.     PhysConn_Audio_SPDIFDigital       = PhysConn_Audio_AESDigital + 1;
  1836.     {$EXTERNALSYM PhysConn_Audio_SPDIFDigital}
  1837.     PhysConn_Audio_SCSI               = PhysConn_Audio_SPDIFDigital + 1;
  1838.     {$EXTERNALSYM PhysConn_Audio_SCSI}
  1839.     PhysConn_Audio_AUX               = PhysConn_Audio_SCSI + 1;
  1840.     {$EXTERNALSYM PhysConn_Audio_AUX}
  1841.     PhysConn_Audio_1394               = PhysConn_Audio_AUX + 1;
  1842.     {$EXTERNALSYM PhysConn_Audio_1394}
  1843.     PhysConn_Audio_USB               = PhysConn_Audio_1394 + 1;
  1844.     {$EXTERNALSYM PhysConn_Audio_USB}
  1845.     PhysConn_Audio_AudioDecoder       = PhysConn_Audio_USB + 1;
  1846.     {$EXTERNALSYM PhysConn_Audio_AudioDecoder}
  1847.  
  1848. type
  1849.   {$HPPEMIT 'typedef System::DelphiInterface<IAMAnalogVideoDecoder> _di_IAMAnalogVideoDecoder;'}
  1850.   {$EXTERNALSYM IAMAnalogVideoDecoder}
  1851.   IAMAnalogVideoDecoder = interface(IUnknown)
  1852.     ['{C6E13350-30AC-11d0-A18C-00A0C9118956}']
  1853.     (*** IAMAnalogVideoDecoder methods ***)
  1854.     function get_AvailableTVFormats(out lAnalogVideoStandard: Longint): HResult; stdcall;
  1855.     function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
  1856.     function get_TVFormat(out plAnalogVideoStandard: Longint): HResult; stdcall;
  1857.     function get_HorizontalLocked(out plLocked: Longint): HResult; stdcall;
  1858.     function put_VCRHorizontalLocking(lVCRHorizontalLocking: Longint): HResult; stdcall;
  1859.     function get_VCRHorizontalLocking(out plVCRHorizontalLocking: Longint): HResult; stdcall;
  1860.     function get_NumberOfLines(out plNumberOfLines: Longint): HResult; stdcall;
  1861.     function put_OutputEnable(lOutputEnable: LongBool): HResult; stdcall;
  1862.     function get_OutputEnable(out plOutputEnable: LongBool): HResult; stdcall;
  1863.   end;
  1864.  
  1865.   tagVideoProcAmpProperty = (
  1866.     VideoProcAmp_Brightness,
  1867.     VideoProcAmp_Contrast,
  1868.     VideoProcAmp_Hue,
  1869.     VideoProcAmp_Saturation,
  1870.     VideoProcAmp_Sharpness,
  1871.     VideoProcAmp_Gamma,
  1872.     VideoProcAmp_ColorEnable,
  1873.     VideoProcAmp_WhiteBalance,
  1874.     VideoProcAmp_BacklightCompensation,
  1875.     VideoProcAmp_Gain
  1876.   );
  1877.   {$EXTERNALSYM tagVideoProcAmpProperty}
  1878.   VideoProcAmpProperty = tagVideoProcAmpProperty;
  1879.   {$EXTERNALSYM VideoProcAmpProperty}
  1880.   TVideoProcAmpProperty = VideoProcAmpProperty;
  1881.  
  1882.   tagVideoProcAmpFlags = (
  1883.     {$IFNDEF COMPILER6_UP}
  1884.     VideoProcAmp_Flags_INVALID_0,
  1885.     VideoProcAmp_Flags_Manual,
  1886.     VideoProcAmp_Flags_Auto
  1887.     {$ELSE}
  1888.     VideoProcAmp_Flags_Manual = 1,
  1889.     VideoProcAmp_Flags_Auto
  1890.     {$ENDIF}
  1891.   );
  1892.   {$EXTERNALSYM tagVideoProcAmpFlags}
  1893.   VideoProcAmpFlags = tagVideoProcAmpFlags;
  1894.   {$EXTERNALSYM VideoProcAmpFlags}
  1895.   TVideoProcAmpFlags = VideoProcAmpFlags;
  1896.  
  1897.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoProcAmp> _di_IAMVideoProcAmp;'}
  1898.   {$EXTERNALSYM IAMVideoProcAmp}
  1899.   IAMVideoProcAmp = interface(IUnknown)
  1900.     ['{C6E13360-30AC-11d0-A18C-00A0C9118956}']
  1901.     (*** IAMVideoProcAmp methods ***)
  1902.     function GetRange(Property_:TVideoProcAmpProperty; out pMin, pMax, pSteppingDelta,
  1903.         pDefault: Longint; out pCapsFlags: TVideoProcAmpFlags): HResult; stdcall;
  1904.     function Set_(Property_: TVideoProcAmpProperty; lValue: Longint;
  1905.         Flags: TVideoProcAmpFlags): HResult; stdcall;
  1906.     function Get(Property_: TVideoProcAmpProperty; out lValue: Longint;
  1907.         out Flags: TVideoProcAmpFlags): HResult; stdcall;
  1908.   end;
  1909.  
  1910.   tagCameraControlProperty = (
  1911.     CameraControl_Pan,
  1912.     CameraControl_Tilt,
  1913.     CameraControl_Roll,
  1914.     CameraControl_Zoom,
  1915.     CameraControl_Exposure,
  1916.     CameraControl_Iris,
  1917.     CameraControl_Focus
  1918.   );
  1919.   {$EXTERNALSYM tagCameraControlProperty}
  1920.   CameraControlProperty = tagCameraControlProperty;
  1921.   {$EXTERNALSYM CameraControlProperty}
  1922.   TCameraControlProperty = CameraControlProperty;
  1923.  
  1924.   tagCameraControlFlags = (
  1925.   {$IFNDEF COMPILER6_UP}
  1926.     CameraControl_Flags_INVALID_0,
  1927.     CameraControl_Flags_Manual,
  1928.     CameraControl_Flags_Auto
  1929.   {$ELSE}
  1930.     CameraControl_Flags_Manual = 1,
  1931.     CameraControl_Flags_Auto
  1932.   {$ENDIF}
  1933.   );
  1934.   {$EXTERNALSYM tagCameraControlFlags}
  1935.   CameraControlFlags = tagCameraControlFlags;
  1936.   {$EXTERNALSYM CameraControlFlags}
  1937.   TCameraControlFlags = CameraControlFlags;
  1938.  
  1939.  
  1940.   {$HPPEMIT 'typedef System::DelphiInterface<IAMCameraControl> _di_IAMCameraControl;'}
  1941.   {$EXTERNALSYM IAMCameraControl}
  1942.   IAMCameraControl = interface(IUnknown)
  1943.     ['{C6E13370-30AC-11d0-A18C-00A0C9118956}']
  1944.     (*** IAMCameraControl methods ***)
  1945.     function GetRange(Property_: TCameraControlProperty;
  1946.         out pMin, pMax, pSteppingDelta, pDefault, pCapsFlags: Longint): HResult; stdcall;
  1947.     function Set_(Property_: TCameraControlProperty; lValue: Longint;
  1948.         Flags: TCameraControlFlags): HResult; stdcall;
  1949.     function Get(Property_: TCameraControlProperty; out lValue: Longint;
  1950.         out Flags: TCameraControlFlags): HResult; stdcall;
  1951.   end;
  1952.  
  1953. const
  1954.   VideoControlFlag_FlipHorizontal           = $1;
  1955.   {$EXTERNALSYM VideoControlFlag_FlipHorizontal}
  1956.   VideoControlFlag_FlipVertical             = $2;
  1957.   {$EXTERNALSYM VideoControlFlag_FlipVertical}
  1958.   VideoControlFlag_ExternalTriggerEnable = $4;
  1959.   {$EXTERNALSYM VideoControlFlag_ExternalTriggerEnable}
  1960.   VideoControlFlag_Trigger                 = $8;
  1961.   {$EXTERNALSYM VideoControlFlag_Trigger}
  1962.  
  1963. type  
  1964.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoControl> _di_IAMVideoControl;'}
  1965.   {$EXTERNALSYM IAMVideoControl}
  1966.   IAMVideoControl = interface(IUnknown)
  1967.     ['{6a2e0670-28e4-11d0-a18c-00a0c9118956}']
  1968.     (*** IAMVideoControl methods ***)
  1969.     function GetCaps(pPin: IPin; out pCapsFlags: Longint): HResult; stdcall;
  1970.     function SetMode(pPin: IPin; Mode: Longint): HResult; stdcall;
  1971.     function GetMode(pPin: IPin; out Mode: Longint): HResult; stdcall;
  1972.     function GetCurrentActualFrameRate(pPin: IPin; out ActualFrameRate: Int64): HResult; stdcall;
  1973.     function GetMaxAvailableFrameRate(pPin: IPin; iIndex: Longint; Dimensions: TSize; out MaxAvailableFrameRate: Int64): HResult; stdcall;
  1974.     function GetFrameRateList(pPin: IPin; iIndex: Longint; Dimensions: TSize; out ListSize: Longint; out FrameRates: PInt64): HResult; stdcall;
  1975.   end;
  1976.  
  1977.   {$HPPEMIT 'typedef System::DelphiInterface<IAMCrossbar> _di_IAMCrossbar;'}
  1978.   {$EXTERNALSYM IAMCrossbar}
  1979.   IAMCrossbar = interface(IUnknown)
  1980.     ['{C6E13380-30AC-11d0-A18C-00A0C9118956}']
  1981.     (*** IAMCrossbar methods ***)
  1982.     function get_PinCounts(out OutputPinCount, InputPinCount: Longint): HResult; stdcall;
  1983.     function CanRoute(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
  1984.     function Route(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
  1985.     function get_IsRoutedTo(OutputPinIndex: Longint;
  1986.       out InputPinIndex: Longint): HResult; stdcall;
  1987.     function get_CrossbarPinInfo(IsInputPin: BOOL; PinIndex: Longint;
  1988.       out PinIndexRelated : longint; out PhysicalType: TPhysicalConnectorType): HResult; stdcall;
  1989.   end;
  1990.  
  1991. type
  1992.   {$IFNDEF COMPILER6_UP}
  1993.   tagAMTunerSubChannel = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1994.   const
  1995.     AMTUNER_SUBCHAN_NO_TUNE    = -2;
  1996.     {$EXTERNALSYM AMTUNER_SUBCHAN_NO_TUNE}
  1997.     AMTUNER_SUBCHAN_DEFAULT    = -1;
  1998.     {$EXTERNALSYM AMTUNER_SUBCHAN_DEFAULT}
  1999.   {$ELSE}
  2000.   tagAMTunerSubChannel = (
  2001.        AMTUNER_SUBCHAN_NO_TUNE    = -2,
  2002.       AMTUNER_SUBCHAN_DEFAULT    = -1
  2003.   );
  2004.   {$ENDIF}
  2005. type
  2006.   {$EXTERNALSYM tagAMTunerSubChannel}
  2007.   AMTunerSubChannel = tagAMTunerSubChannel;
  2008.   {$EXTERNALSYM AMTunerSubChannel}
  2009.   TAMTunerSubChannel = AMTunerSubChannel;
  2010.  
  2011. type
  2012.   {$IFNDEF COMPILER6_UP}
  2013.   tagAMTunerSignalStrength = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  2014.   const
  2015.     AMTUNER_HASNOSIGNALSTRENGTH    = -1;
  2016.     {$EXTERNALSYM AMTUNER_HASNOSIGNALSTRENGTH}
  2017.       AMTUNER_NOSIGNAL              = 0;
  2018.     {$EXTERNALSYM AMTUNER_NOSIGNAL}
  2019.       AMTUNER_SIGNALPRESENT          = 1;
  2020.     {$EXTERNALSYM AMTUNER_SIGNALPRESENT}
  2021.   {$ELSE}
  2022.   tagAMTunerSignalStrength = (
  2023.     AMTUNER_HASNOSIGNALSTRENGTH    = -1,
  2024.       AMTUNER_NOSIGNAL              = 0,
  2025.       AMTUNER_SIGNALPRESENT          = 1
  2026.   );
  2027.   {$ENDIF}
  2028. type
  2029.   {$EXTERNALSYM tagAMTunerSignalStrength}
  2030.   AMTunerSignalStrength = tagAMTunerSignalStrength;
  2031.   {$EXTERNALSYM AMTunerSignalStrength}
  2032.   TAMTunerSignalStrength = AMTunerSignalStrength;
  2033.  
  2034. type
  2035.   {$IFNDEF COMPILER6_UP}
  2036.   tagAMTunerModeType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  2037.   const
  2038.     AMTUNER_MODE_DEFAULT    = 0;
  2039.     {$EXTERNALSYM AMTUNER_MODE_DEFAULT}
  2040.       AMTUNER_MODE_TV          = 1;
  2041.     {$EXTERNALSYM AMTUNER_MODE_TV}
  2042.       AMTUNER_MODE_FM_RADIO    = 2;
  2043.     {$EXTERNALSYM AMTUNER_MODE_FM_RADIO}
  2044.       AMTUNER_MODE_AM_RADIO    = 4;
  2045.     {$EXTERNALSYM AMTUNER_MODE_AM_RADIO}
  2046.       AMTUNER_MODE_DSS        = 8;
  2047.     {$EXTERNALSYM AMTUNER_MODE_DSS}
  2048.   {$ELSE}
  2049.   tagAMTunerModeType = (
  2050.     AMTUNER_MODE_DEFAULT    = 0,
  2051.       AMTUNER_MODE_TV          = 1,
  2052.       AMTUNER_MODE_FM_RADIO    = 2,
  2053.       AMTUNER_MODE_AM_RADIO    = 4,
  2054.       AMTUNER_MODE_DSS        = 8
  2055.   );
  2056.   {$ENDIF}
  2057. type
  2058.   {$EXTERNALSYM tagAMTunerModeType}
  2059.   AMTunerModeType = tagAMTunerModeType;
  2060.   {$EXTERNALSYM AMTunerModeType}
  2061.   TAMTunerModeType = AMTunerModeType;
  2062.  
  2063. type
  2064.   tagAMTunerEventType = (
  2065.   {$IFNDEF COMPILER6_UP}
  2066.     AMTUNER_EVENT_INVALID_0,
  2067.     AMTUNER_EVENT_CHANGED
  2068.   {$ELSE}
  2069.     AMTUNER_EVENT_CHANGED = 1
  2070.   {$ENDIF}
  2071.   );
  2072.   {$EXTERNALSYM tagAMTunerEventType}
  2073.   AMTunerEventType = tagAMTunerEventType;
  2074.   {$EXTERNALSYM AMTunerEventType}
  2075.   TAMTunerEventType = AMTunerEventType;
  2076.  
  2077.   IAMTunerNotification = interface;
  2078.  
  2079.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTuner> _di_IAMTuner;'}
  2080.   {$EXTERNALSYM IAMTuner}
  2081.   IAMTuner = interface(IUnknown)
  2082.     ['{211A8761-03AC-11d1-8D13-00AA00BD8339}']
  2083.     (*** IAMTuner methods ***)
  2084.     function put_Channel(lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
  2085.     function get_Channel(out lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
  2086.     function ChannelMinMax(out lChannelMin, lChannelMax: Longint): HResult; stdcall;
  2087.     function put_CountryCode(lCountryCode: Longint): HResult; stdcall;
  2088.     function get_CountryCode(out lCountryCode: Longint): HResult; stdcall;
  2089.     function put_TuningSpace(lTuningSpace: Longint): HResult; stdcall;
  2090.     function get_TuningSpace(out lTuningSpace: Longint): HResult; stdcall;
  2091.     function Logon(hCurrentUser: THandle): HResult; stdcall;
  2092.     function Logout: HResult; stdcall;
  2093.     function SignalPresent(out plSignalStrength: Longint): HResult; stdcall;
  2094.     function put_Mode(lMode: TAMTunerModeType): HResult; stdcall;
  2095.     function get_Mode(out plMode: TAMTunerModeType): HResult; stdcall;
  2096.     function GetAvailableModes(out plModes: Longint): HResult; stdcall;
  2097.     function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
  2098.         lEvents: Longint): HResult; stdcall;
  2099.     function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
  2100.   end;
  2101.  
  2102.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTunerNotification> _di_IAMTunerNotification;'}
  2103.   {$EXTERNALSYM IAMTunerNotification}
  2104.   IAMTunerNotification = interface(IUnknown)
  2105.     ['{211A8760-03AC-11d1-8D13-00AA00BD8339}']
  2106.     (*** IAMTunerNotification methods ***)
  2107.     function OnEvent(Event: TAMTunerEventType): HResult; stdcall;
  2108.   end;
  2109.  
  2110.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTVTuner> _di_IAMTVTuner;'}
  2111.   {$EXTERNALSYM IAMTVTuner}
  2112.   IAMTVTuner = interface(IAMTuner)
  2113.     ['{211A8766-03AC-11d1-8D13-00AA00BD8339}']
  2114.     (*** IAMTVTuner methods ***)
  2115.     function get_AvailableTVFormats(out lAnalogVideoStandard: Longint): HResult; stdcall;
  2116.     function get_TVFormat(out plAnalogVideoStandard: Longint): HResult; stdcall;
  2117.     function AutoTune(lChannel: Longint; out plFoundSignal: Longint): HResult; stdcall;
  2118.     function StoreAutoTune: HResult; stdcall;
  2119.     function get_NumInputConnections(out plNumInputConnections: Longint): HResult; stdcall;
  2120.     function put_InputType(lIndex: Longint; InputType: TTunerInputType): HResult; stdcall;
  2121.     function get_InputType(lIndex: Longint; out InputType: TTunerInputType): HResult; stdcall;
  2122.     function put_ConnectInput(lIndex: Longint): HResult; stdcall;
  2123.     function get_ConnectInput(out plIndex: Longint): HResult; stdcall;
  2124.     function get_VideoFrequency(out lFreq: Longint): HResult; stdcall;
  2125.     function get_AudioFrequency(out lFreq: Longint): HResult; stdcall;
  2126.   end;
  2127.  
  2128.   {$HPPEMIT 'typedef System::DelphiInterface<IBPCSatelliteTuner> _di_IBPCSatelliteTuner;'}
  2129.   {$EXTERNALSYM IBPCSatelliteTuner}
  2130.   IBPCSatelliteTuner = interface(IAMTuner)
  2131.     ['{211A8765-03AC-11d1-8D13-00AA00BD8339}']
  2132.     (*** IBPCSatelliteTuner methods ***)
  2133.     function get_DefaultSubChannelTypes(out plDefaultVideoType, plDefaultAudioType: Longint): HResult; stdcall;
  2134.     function put_DefaultSubChannelTypes(lDefaultVideoType, lDefaultAudioType: Longint): HResult; stdcall;
  2135.     function IsTapingPermitted: HResult; stdcall;
  2136.   end;
  2137.  
  2138.   {$IFNDEF COMPILER6_UP}
  2139.   tagTVAudioMode = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  2140.   const
  2141.     AMTVAUDIO_MODE_MONO      = $1;
  2142.     {$EXTERNALSYM AMTVAUDIO_MODE_MONO}
  2143.       AMTVAUDIO_MODE_STEREO    = $2;
  2144.     {$EXTERNALSYM AMTVAUDIO_MODE_STEREO}
  2145.       AMTVAUDIO_MODE_LANG_A    = $10;
  2146.     {$EXTERNALSYM AMTVAUDIO_MODE_LANG_A}
  2147.       AMTVAUDIO_MODE_LANG_B    = $20;
  2148.     {$EXTERNALSYM AMTVAUDIO_MODE_LANG_B}
  2149.       AMTVAUDIO_MODE_LANG_C    = $40;
  2150.     {$EXTERNALSYM AMTVAUDIO_MODE_LANG_C}
  2151.   {$ELSE}
  2152.   tagTVAudioMode = (
  2153.     AMTVAUDIO_MODE_MONO      = $1,
  2154.       AMTVAUDIO_MODE_STEREO    = $2,
  2155.       AMTVAUDIO_MODE_LANG_A    = $10,
  2156.       AMTVAUDIO_MODE_LANG_B    = $20,
  2157.       AMTVAUDIO_MODE_LANG_C    = $40
  2158.   );
  2159.   {$ENDIF}
  2160. type
  2161.   {$EXTERNALSYM tagTVAudioMode}
  2162.   TVAudioMode = tagTVAudioMode;
  2163.   {$EXTERNALSYM TVAudioMode}
  2164.   TTVAudioMode = TVAudioMode;
  2165.  
  2166. type
  2167.  
  2168.   tagAMTVAudioEventType = (
  2169.   {$IFNDEF COMPILER6_UP}
  2170.     AMTVAUDIO_EVENT_INVALID_0,
  2171.     AMTVAUDIO_EVENT_CHANGED
  2172.   {$ELSE}
  2173.     AMTVAUDIO_EVENT_CHANGED    = 1
  2174.   {$ENDIF}
  2175.   );
  2176.   {$EXTERNALSYM tagAMTVAudioEventType}
  2177.   AMTVAudioEventType = tagAMTVAudioEventType;
  2178.   {$EXTERNALSYM AMTVAudioEventType}
  2179.   TAMTVAudioEventType = AMTVAudioEventType;
  2180.  
  2181.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTVAudio> _di_IAMTVAudio;'}
  2182.   {$EXTERNALSYM IAMTVAudio}
  2183.   IAMTVAudio = interface(IUnknown)
  2184.     ['{83EC1C30-23D1-11d1-99E6-00A0C9560266}']
  2185.     (*** IAMTVAudio methods ***)
  2186.     function GetHardwareSupportedTVAudioModes(out plModes: Longint): HResult; stdcall;
  2187.     function GetAvailableTVAudioModes(out plModes: Longint): HResult; stdcall;
  2188.     function get_TVAudioMode(out plMode: Longint): HResult; stdcall;
  2189.     function put_TVAudioMode(lMode: Longint): HResult; stdcall;
  2190.     function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
  2191.         lEvents: Longint): HResult; stdcall;
  2192.     function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
  2193.   end;
  2194.  
  2195.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTVAudioNotification> _di_IAMTVAudioNotification;'}
  2196.   {$EXTERNALSYM IAMTVAudioNotification}
  2197.   IAMTVAudioNotification = interface(IUnknown)
  2198.     ['{83EC1C33-23D1-11D1-99E6-00A0C9560266}']
  2199.     (*** IAMTVAudioNotification methods ***)
  2200.     function OnEvent(Event: TAMTVAudioEventType): HResult; stdcall;
  2201.   end;
  2202.  
  2203.   {$HPPEMIT 'typedef System::DelphiInterface<IAMAnalogVideoEncoder> _di_IAMAnalogVideoEncoder;'}
  2204.   {$EXTERNALSYM IAMAnalogVideoEncoder}
  2205.   IAMAnalogVideoEncoder = interface(IUnknown)
  2206.     ['{C6E133B0-30AC-11d0-A18C-00A0C9118956}']
  2207.     (*** IAMAnalogVideoEncoder methods ***)
  2208.     function get_AvailableTVFormats(out lAnalogVideoStandard: Longint): HResult; stdcall;
  2209.     function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
  2210.     function get_TVFormat(out plAnalogVideoStandard: Longint): HResult; stdcall;
  2211.     function put_CopyProtection(lVideoCopyProtection: Longint): HResult; stdcall;
  2212.     function get_CopyProtection(out lVideoCopyProtection: Longint): HResult; stdcall;
  2213.     function put_CCEnable(lCCEnable: LongBool): HResult; stdcall;
  2214.     function get_CCEnable(out lCCEnable: LongBool): HResult; stdcall;
  2215.   end ;
  2216.  
  2217.   AMPROPERTY_PIN = (
  2218.     AMPROPERTY_PIN_CATEGORY,
  2219.     AMPROPERTY_PIN_MEDIUM
  2220.   );
  2221.   {$EXTERNALSYM AMPROPERTY_PIN}
  2222.   TAMPropertyPin = AMPROPERTY_PIN;
  2223.  
  2224. const
  2225.   KSPROPERTY_SUPPORT_GET = 1;
  2226.   {$EXTERNALSYM KSPROPERTY_SUPPORT_GET}
  2227.   KSPROPERTY_SUPPORT_SET = 2;
  2228.   {$EXTERNALSYM KSPROPERTY_SUPPORT_SET}
  2229.  
  2230. type
  2231.   {$HPPEMIT 'typedef System::DelphiInterface<IKsPropertySet> _di_IKsPropertySet;'}
  2232.   {$EXTERNALSYM IKsPropertySet}
  2233.   IKsPropertySet = interface(IUnknown)
  2234.     ['{31EFAC30-515C-11d0-A9AA-00AA0061BE93}']
  2235.     (*** IKsPropertySet methods ***)
  2236.     function Set_(const guidPropSet: TGUID; dwPropID: TAMPropertyPin;
  2237.       pInstanceData: pointer; cbInstanceData: DWORD; pPropData: pointer; cbPropData: DWORD): HResult; stdcall;
  2238.     function Get(const guidPropSet: TGUID; dwPropID: TAMPropertyPin;
  2239.       pInstanceData: pointer; cbInstanceData: DWORD; out pPropData ; cbPropData: DWORD;
  2240.       out pcbReturned: DWORD): HResult; stdcall;
  2241.     function QuerySupported(const guidPropSet: TGUID; dwPropID: TAMPropertyPin;
  2242.       out pTypeSupport: DWORD): HResult; stdcall;
  2243.   end;
  2244.  
  2245.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaPropertyBag> _di_IMediaPropertyBag;'}
  2246.   {$EXTERNALSYM IMediaPropertyBag}
  2247.   IMediaPropertyBag = interface(IPropertyBag)
  2248.     ['{6025A880-C0D5-11D0-BD4E-00A0C911CE86}']
  2249.     (*** IMediaPropertyBag methods ***)
  2250.     function EnumProperty(iProperty: ULONG; var pvarPropertyName,
  2251.         pvarPropertyValue: OleVariant): HResult; stdcall;
  2252.   end;
  2253.  
  2254.   {$HPPEMIT 'typedef System::DelphiInterface<IPersistMediaPropertyBag> _di_IPersistMediaPropertyBag;'}
  2255.   {$EXTERNALSYM IPersistMediaPropertyBag}
  2256.   IPersistMediaPropertyBag = interface(IPersist)
  2257.      ['{5738E040-B67F-11d0-BD4D-00A0C911CE86}']
  2258.      (*** IPersistMediaPropertyBag methods ***)
  2259.      function InitNew: HResult; stdcall;
  2260.      function Load(pPropBag: IMediaPropertyBag; pErrorLog: IErrorLog): HResult; stdcall;
  2261.      function Save(pPropBag: IMediaPropertyBag; fClearDirty, fSaveAllProperties: BOOL): HResult; stdcall;
  2262.   end;
  2263.  
  2264.   //Deprecated Interface
  2265.   {$HPPEMIT 'typedef System::DelphiInterface<IAMPhysicalPinInfo> _di_IAMPhysicalPinInfo;'}
  2266.   {$EXTERNALSYM IAMPhysicalPinInfo}
  2267.   IAMPhysicalPinInfo = interface(IUnknown)
  2268.     ['{F938C991-3029-11CF-8C44-00AA006B6814}']
  2269.     (*** IAMPhysicalPinInfo methods ***)
  2270.     function GetPhysicalType(out pType: Longint; out ppszType: PWideChar): HResult; stdcall;
  2271.   end;
  2272.  
  2273.   {$HPPEMIT 'typedef System::DelphiInterface<IAMExtDevice> _di_IAMExtDevice;'}
  2274.   {$EXTERNALSYM IAMExtDevice}
  2275.   IAMExtDevice = interface(IUnknown)
  2276.     ['{B5730A90-1A2C-11CF-8C23-00AA006B6814}']
  2277.     (*** IAMExtDevice methods ***)
  2278.     function GetCapability(Capability: Longint; out pValue: Longint; out pdblValue: double): HResult; stdcall;
  2279.     function get_ExternalDeviceID(out ppszData: PWideChar): HResult; stdcall;
  2280.     function get_ExternalDeviceVersion(out ppszData: PWideChar): HResult; stdcall;
  2281.     function put_DevicePower(PowerMode: Longint): HResult; stdcall;
  2282.     function get_DevicePower(out pPowerMode: Longint): HResult; stdcall;
  2283.     function Calibrate(hEvent: THandle; Mode: Longint; out pStatus: Longint): HResult; stdcall;
  2284.     function put_DevicePort(DevicePort: Longint): HResult; stdcall;
  2285.     function get_DevicePort(out pDevicePort: Longint): HResult; stdcall;
  2286.   end;
  2287.  
  2288.   {$HPPEMIT 'typedef System::DelphiInterface<IAMExtTransport> _di_IAMExtTransport;'}
  2289.   {$EXTERNALSYM IAMExtTransport}
  2290.   IAMExtTransport = interface(IUnknown)
  2291.     ['{A03CD5F0-3045-11CF-8C44-00AA006B6814}']
  2292.     (*** IAMExtTransport methods ***)
  2293.     function GetCapability(Capability: Longint; out pValue: Longint; out pdblValue: double): HResult; stdcall;
  2294.     function put_MediaState(State: Longint): HResult; stdcall;
  2295.     function get_MediaState(out pState: Longint): HResult; stdcall;
  2296.     function put_LocalControl(State: Longint): HResult; stdcall;
  2297.     function get_LocalControl(out pState: Longint): HResult; stdcall;
  2298.     function GetStatus(StatusItem: Longint; out pValue: Longint): HResult; stdcall;
  2299.     function GetTransportBasicParameters(Param: Longint; var pValue: Longint; ppszData: pointer): HResult; stdcall;
  2300.     function SetTransportBasicParameters(Param: Longint; Value: Longint; pszData: PWideChar): HResult; stdcall;
  2301.     function GetTransportVideoParameters(Param: Longint; out pValue: Longint): HResult; stdcall;
  2302.     function SetTransportVideoParameters(Param: Longint; Value: Longint): HResult; stdcall;
  2303.     function GetTransportAudioParameters(Param: Longint; out pValue: Longint): HResult; stdcall;
  2304.     function SetTransportAudioParameters(Param: Longint; Value: Longint): HResult; stdcall;
  2305.     function put_Mode(Mode: Longint): HResult; stdcall;
  2306.     function get_Mode(out pMode: Longint): HResult; stdcall;
  2307.     function put_Rate(dblRate: double): HResult; stdcall;
  2308.     function get_Rate(out pdblRate: double): HResult; stdcall;
  2309.     function GetChase(out pEnabled, pOffset: Longint; var phEvent: THandle): HResult; stdcall;
  2310.     function SetChase(Enable, Offset: Longint; hEvent: THandle): HResult; stdcall;
  2311.     function GetBump(out pSpeed, pDuration: Longint): HResult; stdcall;
  2312.     function SetBump(Speed, Duration: Longint): HResult; stdcall;
  2313.     function get_AntiClogControl(out pEnabled: Longint): HResult; stdcall;
  2314.     function put_AntiClogControl(Enable: Longint): HResult; stdcall;
  2315.     function GetEditPropertySet(EditID: Longint; out pState: Longint): HResult; stdcall;
  2316.     function SetEditPropertySet(var pEditID: Longint; State: Longint): HResult; stdcall;
  2317.     function GetEditProperty(EditID, Param: Longint; out pValue: Longint): HResult; stdcall;
  2318.     function SetEditProperty(EditID, Param, Value: Longint): HResult; stdcall;
  2319.     function get_EditStart(out pValue: Longint): HResult; stdcall;
  2320.     function put_EditStart(Value: Longint): HResult; stdcall;
  2321.   end;
  2322.  
  2323.   PTimeCode = ^TTimeCode;
  2324.   _timecode = record
  2325.     wFrameRate  : Word;
  2326.     wFrameFract : Word;
  2327.     dwFrames    : DWORD;
  2328.   end;
  2329.   {$EXTERNALSYM _timecode}
  2330.   TIMECODE = _timecode;
  2331.   {$EXTERNALSYM TIMECODE}
  2332.   TTimeCode = _timecode;
  2333.  
  2334.   PTimeCodeSample = ^TTimeCodeSample;
  2335.   tagTIMECODE_SAMPLE = record
  2336.     qwTick   : Int64;
  2337.     timecode : TIMECODE;
  2338.     dwUser   : DWORD;
  2339.     dwFlags  : DWORD;
  2340.   end;
  2341.   {$EXTERNALSYM tagTIMECODE_SAMPLE}
  2342.   TIMECODE_SAMPLE = tagTIMECODE_SAMPLE;
  2343.   {$EXTERNALSYM TIMECODE_SAMPLE}
  2344.   TTimeCodeSample = tagTIMECODE_SAMPLE;
  2345.  
  2346.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimecodeReader> _di_IAMTimecodeReader;'}
  2347.   {$EXTERNALSYM IAMTimecodeReader}
  2348.   IAMTimecodeReader = interface(IUnknown)
  2349.     ['{9B496CE1-811B-11CF-8C77-00AA006B6814}']
  2350.     (*** IAMTimecodeReader methods ***)
  2351.     function GetTCRMode(Param: Longint; out pValue: Longint): HResult; stdcall;
  2352.     function SetTCRMode(Param: Longint; Value: Longint): HResult; stdcall;
  2353.     function put_VITCLine(Line: Longint): HResult; stdcall;
  2354.     function get_VITCLine(out pLine: Longint): HResult; stdcall;
  2355.     function GetTimecode(out pTimecodeSample: TTimeCodeSample): HResult; stdcall;
  2356.   end;
  2357.  
  2358.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimecodeGenerator> _di_IAMTimecodeGenerator;'}
  2359.   {$EXTERNALSYM IAMTimecodeGenerator}
  2360.   IAMTimecodeGenerator = interface(IUnknown)
  2361.     ['{9B496CE0-811B-11CF-8C77-00AA006B6814}']
  2362.     (*** IAMTimecodeGenerator methods ***)
  2363.     function GetTCGMode(Param: Longint; out pValue: Longint): HResult; stdcall;
  2364.     function SetTCGMode(Param: Longint; Value: Longint): HResult; stdcall;
  2365.     function put_VITCLine(Line: Longint): HResult; stdcall;
  2366.     function get_VITCLine(out Line: Longint): HResult; stdcall;
  2367.     function SetTimecode(var pTimecodeSample: TTimeCodeSample): HResult; stdcall;
  2368.     function GetTimecode(out pTimecodeSample: TTimeCodeSample): HResult; stdcall;
  2369.   end;
  2370.  
  2371.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimecodeDisplay> _di_IAMTimecodeDisplay;'}
  2372.   {$EXTERNALSYM IAMTimecodeDisplay}
  2373.   IAMTimecodeDisplay = interface(IUnknown)
  2374.     ['{9B496CE2-811B-11CF-8C77-00AA006B6814}']
  2375.     (*** IAMTimecodeDisplay methods ***)
  2376.     function GetTCDisplayEnable(out pState: Longint): HResult; stdcall;
  2377.     function SetTCDisplayEnable(State: Longint): HResult; stdcall;
  2378.     function GetTCDisplay(Param: Longint; out pValue: Longint): HResult; stdcall;
  2379.     function SetTCDisplay(Param, Value: Longint): HResult; stdcall;
  2380.   end;
  2381.  
  2382.   //Deprecated Interface
  2383.   {$HPPEMIT 'typedef System::DelphiInterface<IAMDevMemoryAllocator> _di_IAMDevMemoryAllocator;'}
  2384.   {$EXTERNALSYM IAMDevMemoryAllocator}
  2385.   IAMDevMemoryAllocator = interface(IUnknown)
  2386.     ['{C6545BF0-E76B-11D0-BD52-00A0C911CE86}']
  2387.     (*** IAMDevMemoryAllocator methods ***)
  2388.     function GetInfo(out pdwcbTotalFree, pdwcbLargestFree, pdwcbTotalMemory, pdwcbMinimumChunk: DWORD): HResult; stdcall;
  2389.     function CheckMemory(pBuffer: Pointer): HResult; stdcall;
  2390.     function Alloc(out ppBuffer: Pointer; var pdwcbBuffer: DWORD): HResult; stdcall;
  2391.     function Free(pBuffer: Pointer): HResult; stdcall;
  2392.     function GetDevMemoryObject(out ppUnkInnner: IUnknown; pUnkOuter: IUnknown): HResult; stdcall;
  2393.   end;
  2394.  
  2395.   //Deprecated Interface
  2396.   {$HPPEMIT 'typedef System::DelphiInterface<IAMDevMemoryControl> _di_IAMDevMemoryControl;'}
  2397.   {$EXTERNALSYM IAMDevMemoryControl}
  2398.   IAMDevMemoryControl = interface(IUnknown)
  2399.     ['{C6545BF1-E76B-11D0-BD52-00A0C911CE86}']
  2400.     (*** IAMDevMemoryControl methods ***)
  2401.     function QueryWriteSync: HResult; stdcall;
  2402.     function WriteSync: HResult; stdcall;
  2403.     function GetDevId(out pdwDevId: DWORD): HResult; stdcall;
  2404.   end;
  2405.  
  2406. const
  2407.   AMSTREAMSELECTINFO_ENABLED     = $1;
  2408.   {$EXTERNALSYM AMSTREAMSELECTINFO_ENABLED}
  2409.   AMSTREAMSELECTINFO_EXCLUSIVE   = $2;
  2410.   {$EXTERNALSYM AMSTREAMSELECTINFO_EXCLUSIVE}
  2411.  
  2412.   AMSTREAMSELECTENABLE_ENABLE    = $1;
  2413.   {$EXTERNALSYM AMSTREAMSELECTENABLE_ENABLE}
  2414.   AMSTREAMSELECTENABLE_ENABLEALL = $2;
  2415.   {$EXTERNALSYM AMSTREAMSELECTENABLE_ENABLEALL}
  2416.  
  2417. type
  2418.   {$HPPEMIT 'typedef System::DelphiInterface<IAMStreamSelect> _di_IAMStreamSelect;'}
  2419.   {$EXTERNALSYM IAMStreamSelect}
  2420.   IAMStreamSelect = interface(IUnknown)
  2421.     ['{C1960960-17F5-11D1-ABE1-00A0C905F375}']
  2422.     (*** IAMStreamSelect methods ***)
  2423.     function Count(out pcStreams: DWORD): HResult; stdcall;
  2424.     function Info(lIndex: Longint; out ppmt: PAMMediaType;
  2425.         out pdwFlags: DWORD; out plcid: LCID; out pdwGroup: DWORD;
  2426.         out ppszName: PWCHAR; out ppObject: IUnknown; out ppUnk : IUnknown): HResult; stdcall;
  2427.     function Enable(lIndex: Longint; dwFlags: DWORD): HResult; stdcall;
  2428.   end;
  2429.  
  2430.   {$HPPEMIT 'typedef System::DelphiInterface<IAMResourceControl> _di_IAMResourceControl;'}
  2431.   {$EXTERNALSYM IAMResourceControl}
  2432.   IAMResourceControl = interface(IUnknown)
  2433.     ['{8389d2d0-77d7-11d1-abe6-00a0c905f375}']
  2434.     (*** IAMResourceControl methods ***)
  2435.     function Reserve(dwFlags: DWORD; var pvReserved: pointer): HResult; stdcall;
  2436.   end;
  2437.  
  2438.   {$HPPEMIT 'typedef System::DelphiInterface<IAMClockAdjust> _di_IAMClockAdjust;'}
  2439.   {$EXTERNALSYM IAMClockAdjust}
  2440.   IAMClockAdjust = interface(IUnknown)
  2441.     ['{4d5466b0-a49c-11d1-abe8-00a0c905f375}']
  2442.     (*** IAMClockAdjust methods ***)
  2443.     function SetClockDelta(rtDelta: TReferenceTime): HResult; stdcall;
  2444.   end;
  2445.  
  2446. const
  2447.   AM_FILTER_MISC_FLAGS_IS_RENDERER    = $1;
  2448.   {$EXTERNALSYM AM_FILTER_MISC_FLAGS_IS_RENDERER}
  2449.   AM_FILTER_MISC_FLAGS_IS_SOURCE    = $2;
  2450.   {$EXTERNALSYM AM_FILTER_MISC_FLAGS_IS_SOURCE}
  2451.  
  2452. type
  2453.   {$HPPEMIT 'typedef System::DelphiInterface<IAMFilterMiscFlags> _di_IAMFilterMiscFlags;'}
  2454.   {$EXTERNALSYM IAMFilterMiscFlags}
  2455.   IAMFilterMiscFlags = interface(IUnknown)
  2456.     ['{2dd74950-a890-11d1-abe8-00a0c905f375}']
  2457.     (*** IAMFilterMiscFlags methods ***)
  2458.     function GetMiscFlags: ULONG; stdcall;
  2459.   end;
  2460.  
  2461.   {$HPPEMIT 'typedef System::DelphiInterface<IDrawVideoImage> _di_IDrawVideoImage;'}
  2462.   {$EXTERNALSYM IDrawVideoImage}
  2463.   IDrawVideoImage = interface(IUnknown)
  2464.     ['{48efb120-ab49-11d2-aed2-00a0c995e8d5}']
  2465.     (*** IDrawVideoImage methods ***)
  2466.     function DrawVideoImageBegin: HResult; stdcall;
  2467.     function DrawVideoImageEnd: HResult; stdcall;
  2468.     function DrawVideoImageDraw(hdc: HDC; lprcSrc, lprcDst: PRECT): HResult; stdcall;
  2469.   end;
  2470.  
  2471.   {$HPPEMIT 'typedef System::DelphiInterface<IDecimateVideoImage> _di_IDecimateVideoImage;'}
  2472.   {$EXTERNALSYM IDecimateVideoImage}
  2473.   IDecimateVideoImage = interface(IUnknown)
  2474.     ['{2e5ea3e0-e924-11d2-b6da-00a0c995e8df}']
  2475.     (*** IDecimateVideoImage methods ***)
  2476.     function SetDecimationImageSize(lWidth, lHeight: Longint):HResult; stdcall;
  2477.     function ResetDecimationImageSize: HResult; stdcall;
  2478.   end;
  2479.  
  2480.   _DECIMATION_USAGE = (
  2481.     DECIMATION_LEGACY,
  2482.     DECIMATION_USE_DECODER_ONLY,
  2483.     DECIMATION_USE_VIDEOPORT_ONLY,
  2484.     DECIMATION_USE_OVERLAY_ONLY,
  2485.     DECIMATION_DEFAULT
  2486.   );
  2487.   {$EXTERNALSYM _DECIMATION_USAGE}
  2488.   DECIMATION_USAGE = _DECIMATION_USAGE;
  2489.   {$EXTERNALSYM DECIMATION_USAGE}
  2490.   TDecimationUsage = DECIMATION_USAGE;
  2491.  
  2492.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoDecimationProperties> _di_IAMVideoDecimationProperties;'}
  2493.   {$EXTERNALSYM IAMVideoDecimationProperties}
  2494.   IAMVideoDecimationProperties = interface(IUnknown)
  2495.     ['{60d32930-13da-11d3-9ec6-c4fcaef5c7be}']
  2496.     (*** IAMVideoDecimationProperties methods ***)
  2497.     function QueryDecimationUsage(out lpUsage: TDecimationUsage):HResult; stdcall;
  2498.     function SetDecimationUsage(Usage: TDecimationUsage):HResult; stdcall;
  2499.   end;
  2500.  
  2501. const
  2502.   AM_PUSHSOURCECAPS_INTERNAL_RM         = $1;
  2503.   {$EXTERNALSYM AM_PUSHSOURCECAPS_INTERNAL_RM}
  2504.   AM_PUSHSOURCECAPS_NOT_LIVE           = $2;
  2505.   {$EXTERNALSYM AM_PUSHSOURCECAPS_NOT_LIVE}
  2506.   AM_PUSHSOURCECAPS_PRIVATE_CLOCK       = $4;
  2507.   {$EXTERNALSYM AM_PUSHSOURCECAPS_PRIVATE_CLOCK}
  2508.   AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = $00001;
  2509.   {$EXTERNALSYM AM_PUSHSOURCEREQS_USE_STREAM_CLOCK}
  2510.  
  2511. type
  2512.   {$HPPEMIT 'typedef System::DelphiInterface<IAMLatency> _di_IAMLatency;'}
  2513.   {$EXTERNALSYM IAMLatency}
  2514.   IAMLatency = interface(IUnknown)
  2515.     ['{62EA93BA-EC62-11d2-B770-00C04FB6BD3D}']
  2516.     (*** IAMLatency methods ***)
  2517.     function GetLatency(var prtLatency: TReferenceTime): HResult; stdcall;
  2518.   end;
  2519.  
  2520.   {$HPPEMIT 'typedef System::DelphiInterface<IAMPushSource> _di_IAMPushSource;'}
  2521.   {$EXTERNALSYM IAMPushSource}
  2522.   IAMPushSource = interface(IAMLatency)
  2523.     ['{F185FE76-E64E-11d2-B76E-00C04FB6BD3D}']
  2524.     (*** IAMPushSource methods ***)
  2525.     function GetPushSourceFlags(out pFlags: ULONG): HResult; stdcall;
  2526.     function SetPushSourceFlags(Flags: ULONG): HResult; stdcall;
  2527.     function SetStreamOffset(rtOffset: TReferenceTime): HResult; stdcall;
  2528.     function GetStreamOffset(out prtOffset: TReferenceTime): HResult; stdcall;
  2529.     function GetMaxStreamOffset(out prtMaxOffset: TReferenceTime): HResult; stdcall;
  2530.     function SetMaxStreamOffset(rtMaxOffset: TReferenceTime): HResult; stdcall;
  2531.   end;
  2532.  
  2533.   {$HPPEMIT 'typedef System::DelphiInterface<IAMDeviceRemoval> _di_IAMDeviceRemoval;'}
  2534.   {$EXTERNALSYM IAMDeviceRemoval}
  2535.   IAMDeviceRemoval = interface(IUnknown)
  2536.     ['{f90a6130-b658-11d2-ae49-0000f8754b99}']
  2537.     (*** IAMDeviceRemoval methods ***)
  2538.     function DeviceInfo(out pclsidInterfaceClass: TGUID;
  2539.              out pwszSymbolicLink: PWideChar): HResult; stdcall;
  2540.     function Reassociate: HResult; stdcall;
  2541.     function Disassociate: HResult; stdcall;
  2542.   end;
  2543.  
  2544. type
  2545.   PTDVInfo = ^TDVInfo;
  2546.   DVINFO = record
  2547.     //for 1st 5/6 DIF seq.
  2548.     dwDVAAuxSrc  : DWORD;
  2549.     dwDVAAuxCtl  : DWORD;
  2550.     //for 2nd  5/6 DIF seq.
  2551.     dwDVAAuxSrc1 : DWORD;
  2552.     dwDVAAuxCtl1 : DWORD;
  2553.     //for video information
  2554.     dwDVVAuxSrc  : DWORD;
  2555.     dwDVVAuxCtl  : DWORD;
  2556.     dwDVReserved: array[0..1] of DWORD;
  2557.   end;
  2558.   {$EXTERNALSYM DVINFO}
  2559.   TDVInfo = DVINFO;
  2560.  
  2561. const
  2562.   //DVENCODERRESOLUTION
  2563.   DVENCODERRESOLUTION_720x480    = 2012;
  2564.   {$EXTERNALSYM DVENCODERRESOLUTION_720x480}
  2565.     DVENCODERRESOLUTION_360x240    = 2013;
  2566.   {$EXTERNALSYM DVENCODERRESOLUTION_360x240}
  2567.     DVENCODERRESOLUTION_180x120    = 2014;
  2568.   {$EXTERNALSYM DVENCODERRESOLUTION_180x120}
  2569.     DVENCODERRESOLUTION_88x60     = 2015;
  2570.   {$EXTERNALSYM DVENCODERRESOLUTION_88x60}
  2571.  
  2572.   //DVENCODERVIDEOFORMAT
  2573.   DVENCODERVIDEOFORMAT_NTSC    = 2000;
  2574.   {$EXTERNALSYM DVENCODERVIDEOFORMAT_NTSC}
  2575.     DVENCODERVIDEOFORMAT_PAL    = 2001;
  2576.   {$EXTERNALSYM DVENCODERVIDEOFORMAT_PAL}
  2577.  
  2578.   //DVENCODERFORMAT
  2579.   DVENCODERFORMAT_DVSD = 2007;
  2580.   {$EXTERNALSYM DVENCODERFORMAT_DVSD}
  2581.     DVENCODERFORMAT_DVHD = 2008;
  2582.   {$EXTERNALSYM DVENCODERFORMAT_DVHD}
  2583.     DVENCODERFORMAT_DVSL = 2009;
  2584.   {$EXTERNALSYM DVENCODERFORMAT_DVSL}
  2585.  
  2586. type
  2587.   {$HPPEMIT 'typedef System::DelphiInterface<IDVEnc> _di_IDVEnc;'}
  2588.   {$EXTERNALSYM IDVEnc}
  2589.   IDVEnc = interface(IUnknown)
  2590.     ['{d18e17a0-aacb-11d0-afb0-00aa00b67a42}']
  2591.     (*** IDVEnc methods ***)
  2592.     function get_IFormatResolution(out VideoFormat, DVFormat, Resolution: integer;
  2593.              fDVInfo: ByteBool; out sDVInfo: TDVINFO): HResult; stdcall;
  2594.     function put_IFormatResolution(VideoFormat, DVFormat, Resolution: integer;
  2595.              fDVInfo: ByteBool; var sDVInfo: TDVINFO): HResult; stdcall;
  2596.   end;
  2597.  
  2598. const
  2599.   //DVDECODERRESOLUTION
  2600.      DVDECODERRESOLUTION_720x480    = 1000;
  2601.   {$EXTERNALSYM DVDECODERRESOLUTION_720x480}
  2602.     DVDECODERRESOLUTION_360x240    = 1001;
  2603.   {$EXTERNALSYM DVDECODERRESOLUTION_360x240}
  2604.     DVDECODERRESOLUTION_180x120    = 1002;
  2605.   {$EXTERNALSYM DVDECODERRESOLUTION_180x120}
  2606.     DVDECODERRESOLUTION_88x60   = 1003;
  2607.   {$EXTERNALSYM DVDECODERRESOLUTION_88x60}
  2608.  
  2609.   //DVRESOLUTION
  2610.   DVRESOLUTION_FULL       = 1000;
  2611.   {$EXTERNALSYM DVRESOLUTION_FULL}
  2612.     DVRESOLUTION_HALF       = 1001;
  2613.   {$EXTERNALSYM DVRESOLUTION_HALF}
  2614.     DVRESOLUTION_QUARTER = 1002;
  2615.   {$EXTERNALSYM DVRESOLUTION_QUARTER}
  2616.     DVRESOLUTION_DC         = 1003;
  2617.   {$EXTERNALSYM DVRESOLUTION_DC}
  2618.  
  2619. type
  2620.   {$HPPEMIT 'typedef System::DelphiInterface<IIPDVDec> _di_IIPDVDec;'}
  2621.   {$EXTERNALSYM IIPDVDec}
  2622.   IIPDVDec = interface(IUnknown)
  2623.     ['{b8e8bd60-0bfe-11d0-af91-00aa00b67a42}']
  2624.     (*** IIPDVDec methods ***)
  2625.     function get_IPDisplay(out displayPix : integer): HResult; stdcall;
  2626.     function put_IPDisplay(displayPix: integer): HResult; stdcall;
  2627.   end;
  2628.  
  2629.   {$HPPEMIT 'typedef System::DelphiInterface<IDVRGB219> _di_IDVRGB219;'}
  2630.   {$EXTERNALSYM IDVRGB219}
  2631.   IDVRGB219 = interface(IUnknown)
  2632.     ['{58473A19-2BC8-4663-8012-25F81BABDDD1}']
  2633.     (*** IDVRGB219 methods ***)
  2634.     function SetRGB219(bState: BOOL): HResult; stdcall;
  2635.   end;
  2636.  
  2637.   {$HPPEMIT 'typedef System::DelphiInterface<IDVSplitter> _di_IDVSplitter;'}
  2638.   {$EXTERNALSYM IDVSplitter}
  2639.   IDVSplitter = interface(IUnknown)
  2640.     ['{92a3a302-da7c-4a1f-ba7e-1802bb5d2d02}']
  2641.     (*** IDVSplitter methods ***)
  2642.     function DiscardAlternateVideoFrames(nDiscard: integer): HResult; stdcall;
  2643.   end;
  2644.  
  2645. //_AM_AUDIO_RENDERER_STAT_PARAM
  2646. const
  2647.   AM_AUDREND_STAT_PARAM_BREAK_COUNT               = 1;
  2648.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_BREAK_COUNT}
  2649.     AM_AUDREND_STAT_PARAM_SLAVE_MODE               = AM_AUDREND_STAT_PARAM_BREAK_COUNT + 1;
  2650.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_MODE}
  2651.     AM_AUDREND_STAT_PARAM_SILENCE_DUR               = AM_AUDREND_STAT_PARAM_SLAVE_MODE + 1;
  2652.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SILENCE_DUR}
  2653.     AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR           = AM_AUDREND_STAT_PARAM_SILENCE_DUR + 1;
  2654.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR}
  2655.     AM_AUDREND_STAT_PARAM_DISCONTINUITIES           = AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR + 1;
  2656.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_DISCONTINUITIES}
  2657.     AM_AUDREND_STAT_PARAM_SLAVE_RATE             = AM_AUDREND_STAT_PARAM_DISCONTINUITIES + 1;
  2658.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_RATE}
  2659.     AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR    = AM_AUDREND_STAT_PARAM_SLAVE_RATE + 1;
  2660.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR}
  2661.     AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR     = AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR + 1;
  2662.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR}
  2663.     AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR + 1;
  2664.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR}
  2665.     AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR         = AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR + 1;
  2666.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR}
  2667.     AM_AUDREND_STAT_PARAM_BUFFERFULLNESS           = AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR + 1;
  2668.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_BUFFERFULLNESS}
  2669.     AM_AUDREND_STAT_PARAM_JITTER                   = AM_AUDREND_STAT_PARAM_BUFFERFULLNESS + 1;
  2670.   {$EXTERNALSYM AM_AUDREND_STAT_PARAM_JITTER}
  2671.  
  2672. type
  2673.   {$HPPEMIT 'typedef System::DelphiInterface<IAMAudioRendererStats> _di_IAMAudioRendererStats;'}
  2674.   {$EXTERNALSYM IAMAudioRendererStats}
  2675.   IAMAudioRendererStats = interface(IUnknown)
  2676.     ['{22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93}']
  2677.     (*** IAMAudioRendererStats methods ***)
  2678.     function GetStatParam(dwParam: DWORD; out pdwParam1, pdwParam2: DWORD): HResult; stdcall;
  2679.   end;
  2680.  
  2681. //AM_INTF_SEARCH_FLAGS
  2682. const
  2683.   AM_INTF_SEARCH_INPUT_PIN    = $1;
  2684.   {$EXTERNALSYM AM_INTF_SEARCH_INPUT_PIN}
  2685.     AM_INTF_SEARCH_OUTPUT_PIN    = $2;
  2686.   {$EXTERNALSYM AM_INTF_SEARCH_OUTPUT_PIN}
  2687.     AM_INTF_SEARCH_FILTER        = $4;
  2688.   {$EXTERNALSYM AM_INTF_SEARCH_FILTER}
  2689.  
  2690. type
  2691.   {$HPPEMIT 'typedef System::DelphiInterface<IAMGraphStreams> _di_IAMGraphStreams;'}
  2692.   {$EXTERNALSYM IAMGraphStreams}
  2693.   IAMGraphStreams = interface(IUnknown)
  2694.     ['{632105FA-072E-11d3-8AF9-00C04FB6BD3D}']
  2695.     (*** IAMGraphStreams methods ***)
  2696.     function FindUpstreamInterface(pPin: IPin; const riid: TGUID; out ppvInterface;
  2697.              dwFlags: DWORD): HResult; stdcall;
  2698.     function SyncUsingStreamOffset(bUseStreamOffset: BOOL): HResult; stdcall;
  2699.     function SetMaxGraphLatency(rtMaxGraphLatency: TReferenceTime): HResult; stdcall;
  2700.   end;
  2701.  
  2702. //AMOVERLAYFX
  2703. const
  2704.   AMOVERFX_NOFX               = 0;
  2705.   {$EXTERNALSYM AMOVERFX_NOFX}
  2706.     AMOVERFX_MIRRORLEFTRIGHT = $2;
  2707.   {$EXTERNALSYM AMOVERFX_MIRRORLEFTRIGHT}
  2708.     AMOVERFX_MIRRORUPDOWN       = $4;
  2709.   {$EXTERNALSYM AMOVERFX_MIRRORUPDOWN}
  2710.     AMOVERFX_DEINTERLACE       = $8;
  2711.   {$EXTERNALSYM AMOVERFX_DEINTERLACE}
  2712.  
  2713. type
  2714.   {$HPPEMIT 'typedef System::DelphiInterface<IAMOverlayFX> _di_IAMOverlayFX;'}
  2715.   {$EXTERNALSYM IAMOverlayFX}
  2716.   IAMOverlayFX = interface(IUnknown)
  2717.     ['{62fae250-7e65-4460-bfc9-6398b322073c}']
  2718.     (*** IAMOverlayFX methods ***)
  2719.     function QueryOverlayFXCaps(out lpdwOverlayFXCaps: DWORD): HResult; stdcall;
  2720.     function SetOverlayFX(dwOverlayFX: DWORD): HResult; stdcall;
  2721.     function GetOverlayFX(out lpdwOverlayFX: DWORD): HResult; stdcall;
  2722.   end;
  2723.  
  2724.   {$HPPEMIT 'typedef System::DelphiInterface<IAMOpenProgress> _di_IAMOpenProgress;'}
  2725.   {$EXTERNALSYM IAMOpenProgress}
  2726.   IAMOpenProgress = interface(IUnknown)
  2727.     ['{8E1C39A1-DE53-11cf-AA63-0080C744528D}']
  2728.     (*** IAMOpenProgress methods ***)
  2729.     function QueryProgress(out pllTotal, pllCurrent: int64): HResult; stdcall;
  2730.     function AbortOperation: HResult; stdcall;
  2731.   end;
  2732.  
  2733.   {$HPPEMIT 'typedef System::DelphiInterface<IMpeg2Demultiplexer> _di_IMpeg2Demultiplexer;'}
  2734.   {$EXTERNALSYM IMpeg2Demultiplexer}
  2735.   IMpeg2Demultiplexer = interface(IUnknown)
  2736.     ['{436eee9c-264f-4242-90e1-4e330c107512}']
  2737.     (*** IMpeg2Demultiplexer methods ***)
  2738.     function CreateOutputPin(var pMediaType: TAMMediaType; pszPinName: PWideChar;
  2739.              out ppIPin: IPin): HResult; stdcall;
  2740.     function SetOutputPinMediaType(pszPinName: PWideChar; var pMediaType: TAMMediaType): HResult; stdcall;
  2741.     function DeleteOutputPin(pszPinName: PWideChar): HResult; stdcall;
  2742.   end;
  2743.  
  2744. const
  2745.   MPEG2_PROGRAM_STREAM_MAP           = $00000000;
  2746.   {$EXTERNALSYM MPEG2_PROGRAM_STREAM_MAP}
  2747.   MPEG2_PROGRAM_ELEMENTARY_STREAM    = $00000001;
  2748.   {$EXTERNALSYM MPEG2_PROGRAM_ELEMENTARY_STREAM}
  2749.   MPEG2_PROGRAM_DIRECTORY_PES_PACKET = $00000002;
  2750.   {$EXTERNALSYM MPEG2_PROGRAM_DIRECTORY_PES_PACKET}
  2751.   MPEG2_PROGRAM_PACK_HEADER          = $00000003;
  2752.   {$EXTERNALSYM MPEG2_PROGRAM_PACK_HEADER}
  2753.   MPEG2_PROGRAM_PES_STREAM           = $00000004;
  2754.   {$EXTERNALSYM MPEG2_PROGRAM_PES_STREAM}
  2755.   MPEG2_PROGRAM_SYSTEM_HEADER        = $00000005;
  2756.   {$EXTERNALSYM MPEG2_PROGRAM_SYSTEM_HEADER}
  2757.   SUBSTREAM_FILTER_VAL_NONE          = $10000000;
  2758.   {$EXTERNALSYM SUBSTREAM_FILTER_VAL_NONE}
  2759.  
  2760. type
  2761.   PStreamIDMap = ^TStreamIDMap;
  2762.   STREAM_ID_MAP = record
  2763.     stream_id             : ULONG;
  2764.     dwMediaSampleContent  : DWORD;
  2765.     ulSubstreamFilterValue: ULONG;
  2766.     iDataOffset           : integer;
  2767.     end;
  2768.   {$EXTERNALSYM STREAM_ID_MAP}
  2769.   TStreamIDMap = STREAM_ID_MAP;
  2770.  
  2771.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumStreamIdMap> _di_IEnumStreamIdMap;'}
  2772.   {$EXTERNALSYM IEnumStreamIdMap}
  2773.   IEnumStreamIdMap = interface(IUnknown)
  2774.     ['{945C1566-6202-46fc-96C7-D87F289C6534}']
  2775.     (*** IEnumStreamIdMap methods ***)
  2776.     function Next(cRequest: ULONG; pStreamIdMap: PStreamIDMap;
  2777.              out pcReceived: ULONG): HResult; stdcall;
  2778.     function Skip(cRecords: ULONG): HResult; stdcall;
  2779.     function Reset: HResult; stdcall;
  2780.     function Clone(out ppIEnumStreamIdMap: IEnumStreamIdMap): HResult; stdcall;
  2781.   end;
  2782.  
  2783.   {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2StreamIdMap> _di_IMPEG2StreamIdMap;'}
  2784.   {$EXTERNALSYM IMPEG2StreamIdMap}
  2785.   IMPEG2StreamIdMap = interface(IUnknown)
  2786.     ['{D0E04C47-25B8-4369-925A-362A01D95444}']
  2787.     (*** IMPEG2StreamIdMap methods ***)
  2788.     function MapStreamId(ulStreamId: ULONG; MediaSampleContent: DWORD;
  2789.              ulSubstreamFilterValue: ULONG; iDataOffset: integer): HResult; stdcall;
  2790.     function UnmapStreamId(culStreamId: ULONG; var pulStreamId: ULONG): HResult; stdcall;
  2791.     function EnumStreamIdMap(out ppIEnumStreamIdMap: IEnumStreamIdMap): HResult; stdcall;
  2792.   end;
  2793.  
  2794.   {$NODEFINE IAMovie} // deprecated
  2795.   IAMovie = interface(IFilterGraph)
  2796.     ['{359ACE10-7688-11CF-8B23-00805F6CEF60}']
  2797.     (*** IAMovie methods ***)
  2798.     function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
  2799.     function Render(ppinOut: IPin): HResult; stdcall;
  2800.     function Run: HResult; stdcall;
  2801.     function Pause: HResult; stdcall;
  2802.     function Stop: HResult; stdcall;
  2803.     function GetState(msTimeout: DWORD; out pfs: TFilterState): HResult; stdcall;
  2804.     function RenderFile(strFilename: PWideChar): HResult; stdcall;
  2805.     function AddSourceFilter(strFilename: PWideChar; out ppUnk: IBaseFilter): HResult; stdcall;
  2806.     function GetEventHandle(out hEvent: THandle): HResult; stdcall;
  2807.     function GetEvent(out lEventCode, lParam1, lParam2: Longint; msTimeout: DWORD): HResult; stdcall;
  2808.     function WaitForCompletion(msTimeout: DWORD; out pEvCode: Longint): HResult; stdcall;
  2809.     function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
  2810.     function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
  2811.     function get_Duration(out plength: TRefTime): HResult; stdcall;
  2812.     function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
  2813.     function get_CurrentPosition(out pllTime: TRefTime): HResult; stdcall;
  2814.     function get_StopTime(out pllTime: TRefTime): HResult; stdcall;
  2815.     function put_StopTime(llTime: TRefTime): HResult; stdcall;
  2816.     function get_PrerollTime(out pllTime: TRefTime): HResult; stdcall;
  2817.     function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
  2818.     function put_Rate(dRate: double): HResult; stdcall;
  2819.     function get_Rate(out pdRate: double): HResult; stdcall;
  2820.     function RemoveAllFilters: HResult; stdcall;
  2821.     function Play: HResult; stdcall;
  2822.     function PlayFile(strFilename: PWideChar): HResult; stdcall;
  2823.     function EnumFiltersByInterface(const riid: TGUID;
  2824.         out ppEnum: IEnumFilters): HResult; stdcall;
  2825.     function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
  2826.     function EnumPinsIn(out ppEnum: IEnumPins): HResult; stdcall;
  2827.     function EnumPinsOut(out ppEnum: IEnumPins): HResult; stdcall;
  2828.     function RenderAll: HResult; stdcall;
  2829.     function RenderNewFile(strFilename: PWideChar): HResult; stdcall;
  2830.     function FreeEventParams(lEvCode, lParam1, lParam2: Longint): HResult; stdcall;
  2831.   end;
  2832.  
  2833.   {$HPPEMIT 'typedef System::DelphiInterface<IRegisterServiceProvider> _di_IRegisterServiceProvider;'}
  2834.   {$EXTERNALSYM IRegisterServiceProvider}
  2835.   IRegisterServiceProvider = interface(IUnknown)
  2836.     ['{7B3A2F01-0751-48DD-B556-004785171C54}']
  2837.     (*** IRegisterServiceProvider methods ***)
  2838.     function RegisterService(const guidService: TGUID; pUnkObject: IUnknown): HResult; stdcall;
  2839.   end;
  2840.  
  2841.   {$HPPEMIT 'typedef System::DelphiInterface<IAMClockSlave> _di_IAMClockSlave;'}
  2842.   {$EXTERNALSYM IAMClockSlave}
  2843.   IAMClockSlave = interface(IUnknown)
  2844.     ['{9FD52741-176D-4b36-8F51-CA8F933223BE}']
  2845.     (*** IAMClockSlave methods ***)
  2846.     function SetErrorTolerance(dwTolerance: DWORD): HResult; stdcall;
  2847.     function GetErrorTolerance(out dwTolerance: DWORD): HResult; stdcall;
  2848.   end;
  2849.  
  2850. //---------------------------------------------------------------------
  2851. //
  2852. // IAMGraphBuilderCallback interface
  2853. //
  2854. // Interface which gives the app a chance to configure filters
  2855. // before a connection is attempted.
  2856. //
  2857. // If this interface is supported by the site passed in to the graph
  2858. // via IObjectWithSite::SetSite, the graph will call back with each
  2859. // filter it creates as part of the Render or Connect process. Does
  2860. // not call back for source filters. Filter may be discarded and not
  2861. // used in graph or may be connected and disconnected more than once
  2862. //
  2863. // The callback occurs with the graph lock held, so do not call into
  2864. // the graph again and do not wait on other threads calling into the
  2865. // graph.
  2866. //
  2867. //---------------------------------------------------------------------
  2868.  
  2869.   {$HPPEMIT 'typedef System::DelphiInterface<IAMGraphBuilderCallback> _di_IAMGraphBuilderCallback;'}
  2870.   {$EXTERNALSYM IAMGraphBuilderCallback}
  2871.   IAMGraphBuilderCallback = interface(IUnknown)
  2872.     ['{4995f511-9ddb-4f12-bd3b-f04611807b79}']
  2873.     (*** IAMGraphBuilderCallback methods ***)
  2874.     // graph builder selected a filter to create and attempt to
  2875.     // connect. failure indicates filter should be rejected.
  2876.     function SelectedFilter(pMon: IMoniker): HResult; stdcall;
  2877.     // app configures filter during this call. failure indicates
  2878.     // filter should be rejected.
  2879.     function CreatedFilter(pFil: IBaseFilter): HResult; stdcall;
  2880.   end;
  2881.  
  2882. // Note: Because this interface was not defined as a proper interface it is")
  2883. //       supported under C++ only. Methods aren't stdcall.")
  2884.  
  2885.   {$HPPEMIT 'typedef System::DelphiInterface<IAMFilterGraphCallback> _di_IAMFilterGraphCallback;'}
  2886.   {$EXTERNALSYM IAMFilterGraphCallback}
  2887.   IAMFilterGraphCallback = interface(IUnknown)
  2888.    ['{56a868fd-0ad4-11ce-b0a3-0020af0ba770}']
  2889.    (*** IAMFilterGraphCallback methods ***)
  2890.     // S_OK means rendering complete, S_FALSE means retry now.")
  2891.     function UnableToRender(pPin: IPin): HResult; cdecl; // thiscall
  2892.   end;
  2893.  
  2894. //------------------------------------------------------------------------------
  2895. // File: EncAPI.idl
  2896. //
  2897. // Desc: Encoder (and future decoder) interface definitions.
  2898. //
  2899. // Copyright (c) 1992 - 2002, Microsoft Corporation.  All rights reserved.
  2900. //------------------------------------------------------------------------------
  2901.  
  2902.   CodecAPIEventData = record
  2903.     guid       : TGUID;
  2904.     dataLength : DWORD;
  2905.     reserved   : array[0..2] of DWORD;
  2906.     // data: array[0..dataLength-1] of Byte;
  2907.   end;
  2908.   {$EXTERNALSYM CodecAPIEventData}
  2909.   TCodecAPIEventData = CodecAPIEventData;
  2910.  
  2911. //  Applications can pass the CODECAPI_VIDEO_ENCODER to IsSupported to test for video encoders
  2912. //  Similarly, the GUIDs for audio encoders, video decoders, audio decoders and muxes can be
  2913. //  used to test for the codec classification
  2914. //
  2915. //  See uuids.h for a more detailed list.
  2916.   {$HPPEMIT 'typedef System::DelphiInterface<ICodecAPI> _di_ICodecAPI;'}
  2917.   {$EXTERNALSYM ICodecAPI}
  2918.   ICodecAPI = interface(IUnknown)
  2919.     ['{901db4c7-31ce-41a2-85dc-8fa0bf41b8da}']
  2920.     (*** ICodecAPI methods ***)
  2921.     // Query whether a given parameter is supported.
  2922.     function IsSupported(const Api: TGUID): HResult; stdcall;
  2923.     // Query whether a given parameter can be changed given the codec selection
  2924.     // and other parameter selections.
  2925.     function IsModifiable(const Api: TGUID): HResult; stdcall;
  2926.     // Returns the valid range of values that the parameter supports should
  2927.     // the parameter support a stepped range as opposed to a list of specific
  2928.     // values.  The support is [ValueMin .. ValueMax] by SteppingDelta.
  2929.     //
  2930.     // Ranged variant types must fall into one of the below types.  Each
  2931.     // parameter will, by definition, return a specific type.
  2932.     //
  2933.     // If the range has no stepping delta (any delta will do), the Stepping
  2934.     // delta will be empty (VT_EMPTY).
  2935.     function GetParameterRange(const Api: TGUID; out ValueMin, ValueMax,
  2936.       SteppingDelta: OleVariant): HResult; stdcall;
  2937.     // Returns the list of values supported by the given parameter as a
  2938.     // COM allocated array.  The total number of values will be placed in
  2939.     // the ValuesCount parameter and the Values array will contain the
  2940.     // individual values.  This array must be freed by the caller through
  2941.     // CoTaskMemFree().
  2942.     function GetParameterValues(const Api: TGUID; out Values: POleVariant;
  2943.       out ValuesCount: ULONG): HResult; stdcall;
  2944.     // Get the default value for a parameter, if one exists.  Otherwise,
  2945.     // an error will be returned.
  2946.     function GetDefaultValue(const Aoi: TGUID; out Value: OleVariant): HResult; stdcall;
  2947.     // Get the current value of a parameter.
  2948.     function GetValue(const Api: TGUID; out Value: OleVariant): HResult;
  2949.     // Set the current value of a parameter.
  2950.     function SetValue(const Api: TGUID; var Value: OleVariant): HResult; stdcall;
  2951.     // new methods beyond IEncoderAPI
  2952.  
  2953.     // Enable events to be reported for the given event GUID.  For DShow
  2954.     // events, the event is returned as
  2955.     //      (EC_CODECAPI_EVENT, lParam=userData, lParam2=CodecAPIEventData* Data)
  2956.     // where
  2957.     //      - the CodecAPIEventData is COM allocated memory and must be handled and freed
  2958.     //        by the application using CoTaskMemFree().
  2959.     //      - the userData is the same pointer passed to RegisterForEvent
  2960.     //
  2961.     // Each data block starts with the following structure:
  2962.     //      struct CodecAPIEventData
  2963.     //      {
  2964.     //          GUID guid;
  2965.     //          DWORD dataLength;
  2966.     //          DWORD reserved[3];     // pad to 16 byte alignment
  2967.     //          BYTE data[dataLength];
  2968.     //      }
  2969.     // The guid parameter identifies the event. The data associated with the event follows the
  2970.     // structure (represented by the variable length BYTE data[dataLength] array).
  2971.     //
  2972.     // If guid is equal to CODECAPI_CHANGELISTS, then data is an array of GUIDs that changed as
  2973.     // a result of setting the parameter, as follows:
  2974.     //      GUID    changedGuids[ header.dataLength / sizeof(GUID) ]
  2975.     //
  2976.     // The current array is limited, so a driver may send multiple messages if the array size is
  2977.     // exceeded.
  2978.     //
  2979.     function RegisterForEvent(const Api: TGUID; userData: Pointer): HResult; stdcall;
  2980.     // Disable event reporting for the given event GUID.
  2981.     function UnregisterForEvent(const Api: TGUID): HResult; stdcall;
  2982.     // SetAllDefaults
  2983.     function SetAllDefaults: HResult; stdcall;
  2984.     // Extended SetValue & SetAllDefaults:
  2985.     // Changes the current value of a parameter and returns back an alteration list
  2986.     //  The secondary arguments return back a list of other settings
  2987.     //  that changed as a result of the SetValue() call (for UI updates etc)
  2988.     //  The client must free the buffer.
  2989.     function SetValueWithNotify(const Api: TGUID; var Value: Olevariant;
  2990.         out ChangedParam: PGUID; out ChangedParamCount: ULONG): HResult; stdcall;
  2991.     function SetAllDefaultsWithNotify(out ChangedParam: PGUID;
  2992.       out ChangedParamCount: ULONG): HResult; stdcall;
  2993.     // Load the current settings from a stream
  2994.     function GetAllSettings(Stream: IStream): HResult; stdcall;
  2995.     // Save the current settings to a stream
  2996.     function SetAllSettings(Stream: IStream): HResult; stdcall;
  2997.     function SetAllSettingsWithNotify(Stream: IStream; out ChangedParam: PGUID;
  2998.       out ChangedParamCount: ULONG): HResult; stdcall;
  2999.   end;
  3000.  
  3001.   {$HPPEMIT 'typedef System::DelphiInterface<IGetCapabilitiesKey> _di_IGetCapabilitiesKey;'}
  3002.   {$EXTERNALSYM IGetCapabilitiesKey}
  3003.   IGetCapabilitiesKey = interface(IUnknown)
  3004.     ['{a8809222-07bb-48ea-951c-33158100625b}']
  3005.     (*** IGetCapabilitiesKey methods ***)
  3006.     function GetCapabilitiesKey(out pHKey: HKEY): HResult; stdcall;
  3007.   end;
  3008.  
  3009. // -----------------------------------------------------------------------------------------
  3010. // From this point on, this is retained for backwards compatiblity only
  3011. // Do not use this for future encoders
  3012. // -----------------------------------------------------------------------------------------
  3013.   {$HPPEMIT 'typedef System::DelphiInterface<IEncoderAPI> _di_IEncoderAPI;'}
  3014.   {$EXTERNALSYM IEncoderAPI}
  3015.   IEncoderAPI = interface(IUnknown)
  3016.     ['{70423839-6ACC-4b23-B079-21DBF08156A5}']
  3017.     (*** IEncoderAPI methods ***)
  3018.     function IsSupported(const Api: TGUID): HResult; stdcall;
  3019.     function IsAvailable(const Api: TGUID): HResult; stdcall;
  3020.     function GetParameterRange(const Api: TGUID; out ValueMin, ValueMax,
  3021.       SteppingDelta: OleVariant): HResult; stdcall;
  3022.     function GetParameterValues(const Api: TGUID; out Values: POleVariant;
  3023.       out ValuesCount: ULONG): HResult; stdcall;
  3024.     function GetDefaultValue (const Api: TGUID; out Value: OleVariant): HResult; stdcall;
  3025.     function GetValue(const Api: TGUID; out Value: OleVariant): HResult; stdcall;
  3026.     function SetValue(const Api: TGUID; var Value: OleVariant): HResult; stdcall;
  3027.   end;
  3028.  
  3029.   {$HPPEMIT 'typedef System::DelphiInterface<IVideoEncoder> _di_IVideoEncoder;'}
  3030.   {$EXTERNALSYM IVideoEncoder}
  3031.   IVideoEncoder = interface(IEncoderAPI)
  3032.     ['{02997C3B-8E1B-460e-9270-545E0DE9563E}']
  3033.     (*** IVideoEncoder methods ***)
  3034.   end;
  3035.  
  3036. //---------------------------------------------------------------------
  3037. //
  3038. // Old Encoder API Interfaces
  3039. //
  3040. //---------------------------------------------------------------------
  3041.  
  3042.   VIDEOENCODER_BITRATE_MODE = (
  3043.     // Bit rate used for encoding is constant
  3044.     ConstantBitRate,
  3045.     // Bit rate used for encoding is variable with the specified bitrate used
  3046.     // as a guaranteed average over a specified window.  The default window
  3047.     // size is considered to be 5 minutes.
  3048.     VariableBitRateAverage,
  3049.     // Bit rate used for encoding is variable with the specified bitrate used
  3050.     // as a peak rate over a specified window.  The default window size
  3051.     // is considered to be 500ms (classically one GOP).
  3052.     VariableBitRatePeak
  3053.   );
  3054.   {$EXTERNALSYM VIDEOENCODER_BITRATE_MODE}
  3055.   TVideoEncoderBitrateMode = VIDEOENCODER_BITRATE_MODE;
  3056.   
  3057. const
  3058.   AM_GETDECODERCAP_QUERY_VMR_SUPPORT  = $00000001;
  3059.   {$EXTERNALSYM AM_GETDECODERCAP_QUERY_VMR_SUPPORT}
  3060.   VMR_NOTSUPPORTED                    = $00000000;
  3061.   {$EXTERNALSYM VMR_NOTSUPPORTED}
  3062.   VMR_SUPPORTED                       = $00000001;
  3063.   {$EXTERNALSYM VMR_SUPPORTED}
  3064.  
  3065.   AM_QUERY_DECODER_VMR_SUPPORT        = $00000001;
  3066.   {$EXTERNALSYM AM_QUERY_DECODER_VMR_SUPPORT}
  3067.   AM_QUERY_DECODER_DXVA_1_SUPPORT     = $00000002;
  3068.   {$EXTERNALSYM AM_QUERY_DECODER_DXVA_1_SUPPORT}
  3069.  
  3070.   AM_QUERY_DECODER_DVD_SUPPORT        = $00000003;
  3071.   {$EXTERNALSYM AM_QUERY_DECODER_DVD_SUPPORT}
  3072.   AM_QUERY_DECODER_ATSC_SD_SUPPORT    = $00000004;
  3073.   {$EXTERNALSYM AM_QUERY_DECODER_ATSC_SD_SUPPORT}
  3074.   AM_QUERY_DECODER_ATSC_HD_SUPPORT    = $00000005;
  3075.   {$EXTERNALSYM AM_QUERY_DECODER_ATSC_HD_SUPPORT}
  3076.   AM_GETDECODERCAP_QUERY_VMR9_SUPPORT = $00000006;
  3077.   {$EXTERNALSYM AM_GETDECODERCAP_QUERY_VMR9_SUPPORT}
  3078.  
  3079.   DECODER_CAP_NOTSUPPORTED            = $00000000;
  3080.   {$EXTERNALSYM DECODER_CAP_NOTSUPPORTED}
  3081.   DECODER_CAP_SUPPORTED               = $00000001;
  3082.   {$EXTERNALSYM DECODER_CAP_SUPPORTED}
  3083.  
  3084.   CDEF_CLASS_DEFAULT          = $0001;
  3085.   {$EXTERNALSYM CDEF_CLASS_DEFAULT}
  3086.   CDEF_BYPASS_CLASS_MANAGER   = $0002;
  3087.   {$EXTERNALSYM CDEF_BYPASS_CLASS_MANAGER}
  3088.   //CDEF_CLASS_LEGACY           = $0004;
  3089.   CDEF_MERIT_ABOVE_DO_NOT_USE = $0008;
  3090.   {$EXTERNALSYM CDEF_MERIT_ABOVE_DO_NOT_USE}
  3091.   CDEF_DEVMON_CMGR_DEVICE     = $0010;
  3092.   {$EXTERNALSYM CDEF_DEVMON_CMGR_DEVICE}
  3093.   CDEF_DEVMON_DMO             = $0020;
  3094.   {$EXTERNALSYM CDEF_DEVMON_DMO}
  3095.   CDEF_DEVMON_PNP_DEVICE      = $0040;
  3096.   {$EXTERNALSYM CDEF_DEVMON_PNP_DEVICE}
  3097.   CDEF_DEVMON_FILTER          = $0080;
  3098.   {$EXTERNALSYM CDEF_DEVMON_FILTER}
  3099.   CDEF_DEVMON_SELECTIVE_MASK  = $00f0;
  3100.   {$EXTERNALSYM CDEF_DEVMON_SELECTIVE_MASK}
  3101.  
  3102. type
  3103.   {$HPPEMIT 'typedef System::DelphiInterface<IAMDecoderCaps> _di_IAMDecoderCaps;'}
  3104.   {$EXTERNALSYM IAMDecoderCaps}
  3105.   IAMDecoderCaps = interface(IUnknown)
  3106.     ['{c0dff467-d499-4986-972b-e1d9090fa941}']
  3107.     (*** IAMDecoderCaps methods ***)
  3108.     function GetDecoderCaps(dwCapIndex: DWORD; out lpdwCap: DWORD): HResult; stdcall;
  3109.   end;
  3110.  
  3111. ////////////////////////////////////////////////////////////////////////////////
  3112.  
  3113.   {$HPPEMIT 'typedef System::DelphiInterface<ICreateDevEnum> _di_ICreateDevEnum;'}
  3114.   {$EXTERNALSYM ICreateDevEnum}
  3115.   ICreateDevEnum = interface(IUnknown)
  3116.     ['{29840822-5B84-11D0-BD3B-00A0C911CE86}']
  3117.     (*** ICreateDevEnum methods ***)
  3118.     function CreateClassEnumerator(const clsidDeviceClass: TGUID;
  3119.         out ppEnumMoniker: IEnumMoniker; dwFlags: DWORD): HResult; stdcall;
  3120.   end;
  3121.  
  3122.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterMapper3> _di_IFilterMapper3;'}
  3123.   {$EXTERNALSYM IFilterMapper3}
  3124.   IFilterMapper3 = interface(IFilterMapper2)
  3125.     ['{b79bb0b1-33c1-11d1-abe1-00a0c905f375}']
  3126.     (*** IFilterMapper3 methods ***)
  3127.     function GetICreateDevEnum(out ppEnum: ICreateDevEnum): HResult; stdcall;
  3128.   end;
  3129.  
  3130. //replacement for DVD_TextStringType in GetDVDTextStringAsNative, GetDVDTextStringAsUnicode
  3131.  
  3132. {$IFNDEF COMPILER6_UP}
  3133. type
  3134.   DVD_TextStringType = {$IFDEF TYPE_IDENTITY}type {$ENDIF}LongWord;
  3135. const
  3136.   DVD_Struct_Volume      = $00000001;
  3137.   DVD_Struct_Title       = $00000002;
  3138.   DVD_Struct_ParentalID  = $00000003;
  3139.   DVD_Struct_PartOfTitle = $00000004;
  3140.   DVD_Struct_Cell        = $00000005;
  3141.   DVD_Stream_Audio       = $00000010;
  3142.   DVD_Stream_Subpicture  = $00000011;
  3143.   DVD_Stream_Angle       = $00000012;
  3144.   DVD_Channel_Audio      = $00000020;
  3145.   DVD_General_Name       = $00000030;
  3146.   DVD_General_Comments   = $00000031;
  3147.   DVD_Title_Series       = $00000038;
  3148.   DVD_Title_Movie        = $00000039;
  3149.   DVD_Title_Video        = $0000003A;
  3150.   DVD_Title_Album        = $0000003B;
  3151.   DVD_Title_Song         = $0000003C;
  3152.   DVD_Title_Other        = $0000003F;
  3153.   DVD_Title_Sub_Series   = $00000040;
  3154.   DVD_Title_Sub_Movie    = $00000041;
  3155.   DVD_Title_Sub_Video    = $00000042;
  3156.   DVD_Title_Sub_Album    = $00000043;
  3157.   DVD_Title_Sub_Song     = $00000044;
  3158.   DVD_Title_Sub_Other    = $00000047;
  3159.   DVD_Title_Orig_Series  = $00000048;
  3160.   DVD_Title_Orig_Movie   = $00000049;
  3161.   DVD_Title_Orig_Video   = $0000004A;
  3162.   DVD_Title_Orig_Album   = $0000004B;
  3163.   DVD_Title_Orig_Song    = $0000004C;
  3164.   DVD_Title_Orig_Other   = $0000004F;
  3165.   DVD_Other_Scene        = $00000050;
  3166.   DVD_Other_Cut          = $00000051;
  3167.   DVD_Other_Take         = $00000052;
  3168. {$ELSE}
  3169. type
  3170.   DVD_TextStringType = (
  3171.     DVD_Struct_Volume      = $00000001,
  3172.     DVD_Struct_Title       = $00000002,
  3173.     DVD_Struct_ParentalID  = $00000003,
  3174.     DVD_Struct_PartOfTitle = $00000004,
  3175.     DVD_Struct_Cell        = $00000005,
  3176.     DVD_Stream_Audio       = $00000010,
  3177.     DVD_Stream_Subpicture  = $00000011,
  3178.     DVD_Stream_Angle       = $00000012,
  3179.     DVD_Channel_Audio      = $00000020,
  3180.     DVD_General_Name       = $00000030,
  3181.     DVD_General_Comments   = $00000031,
  3182.     DVD_Title_Series       = $00000038,
  3183.     DVD_Title_Movie        = $00000039,
  3184.     DVD_Title_Video        = $0000003A,
  3185.     DVD_Title_Album        = $0000003B,
  3186.     DVD_Title_Song         = $0000003C,
  3187.     DVD_Title_Other        = $0000003F,
  3188.     DVD_Title_Sub_Series   = $00000040,
  3189.     DVD_Title_Sub_Movie    = $00000041,
  3190.     DVD_Title_Sub_Video    = $00000042,
  3191.     DVD_Title_Sub_Album    = $00000043,
  3192.     DVD_Title_Sub_Song     = $00000044,
  3193.     DVD_Title_Sub_Other    = $00000047,
  3194.     DVD_Title_Orig_Series  = $00000048,
  3195.     DVD_Title_Orig_Movie   = $00000049,
  3196.     DVD_Title_Orig_Video   = $0000004A,
  3197.     DVD_Title_Orig_Album   = $0000004B,
  3198.     DVD_Title_Orig_Song    = $0000004C,
  3199.     DVD_Title_Orig_Other   = $0000004F,
  3200.     DVD_Other_Scene        = $00000050,
  3201.     DVD_Other_Cut          = $00000051,
  3202.     DVD_Other_Take         = $00000052
  3203.   );
  3204. {$ENDIF}
  3205. {$EXTERNALSYM DVD_TextStringType}
  3206. type
  3207.   TDVDTextStringType = DVD_TextStringType;
  3208.  
  3209.   // For IDVDControl2.SetOption flags
  3210.   DVD_OPTION_FLAG = (
  3211.   {$IFNDEF COMPILER6_UP}
  3212.     DVD_Option_INVALID_0,
  3213.     DVD_ResetOnStop,
  3214.   {$ELSE}
  3215.     DVD_ResetOnStop               = 1,
  3216.   {$ENDIF}
  3217.     DVD_NotifyParentalLevelChange,
  3218.     DVD_HMSF_TimeCodeEvents,
  3219.     DVD_AudioDuringFFwdRew   // default FALSE (or by reg) // DirectX9 Specific
  3220.   );
  3221.   {$EXTERNALSYM DVD_OPTION_FLAG}
  3222.   TDVDOptionFlag = DVD_OPTION_FLAG;
  3223.  
  3224.   tagDVD_DOMAIN = (
  3225.   {$IFNDEF COMPILER6_UP}
  3226.     DVD_DOMAIN_INVALID_0,
  3227.     DVD_DOMAIN_FirstPlay,
  3228.   {$ELSE}
  3229.     DVD_DOMAIN_FirstPlay = 1,
  3230.   {$ENDIF}
  3231.     DVD_DOMAIN_VideoManagerMenu,
  3232.     DVD_DOMAIN_VideoTitleSetMenu,
  3233.     DVD_DOMAIN_Title,
  3234.     DVD_DOMAIN_Stop
  3235.   );
  3236.   {$EXTERNALSYM tagDVD_DOMAIN}
  3237.   DVD_DOMAIN = tagDVD_DOMAIN;
  3238.   {$EXTERNALSYM DVD_DOMAIN}
  3239.   TDVDDomain = DVD_DOMAIN;
  3240.  
  3241.  
  3242.   tagDVD_MENU_ID = (
  3243.   {$EXTERNALSYM tagDVD_MENU_ID}
  3244.   {$IFNDEF COMPILER6_UP}
  3245.     DVD_MENU_INVALID_0,
  3246.     DVD_MENU_INVALID_1,
  3247.     DVD_MENU_Title,
  3248.   {$ELSE}
  3249.     DVD_MENU_Title      = 2,
  3250.   {$ENDIF}
  3251.     DVD_MENU_Root,
  3252.     DVD_MENU_Subpicture,
  3253.     DVD_MENU_Audio,
  3254.     DVD_MENU_Angle,
  3255.     DVD_MENU_Chapter
  3256.   );
  3257.   DVD_MENU_ID = tagDVD_MENU_ID;
  3258.   {$EXTERNALSYM DVD_MENU_ID}
  3259.   TDVDMenuID = DVD_MENU_ID;
  3260.  
  3261.   tagDVD_DISC_SIDE = (
  3262.   {$IFNDEF COMPILER6_UP}
  3263.     DVD_SIDE_INVALID_0,
  3264.     DVD_SIDE_A,
  3265.     DVD_SIDE_B
  3266.   {$ELSE}
  3267.     DVD_SIDE_A = 1,
  3268.     DVD_SIDE_B = 2
  3269.   {$ENDIF}
  3270.   );
  3271.   {$EXTERNALSYM tagDVD_DISC_SIDE}
  3272.   DVD_DISC_SIDE = tagDVD_DISC_SIDE;
  3273.   {$EXTERNALSYM DVD_DISC_SIDE}
  3274.   TDVDDiscSide = DVD_DISC_SIDE;
  3275.  
  3276.   tagDVD_PREFERRED_DISPLAY_MODE = (
  3277.     DISPLAY_CONTENT_DEFAULT,
  3278.     DISPLAY_16x9,
  3279.     DISPLAY_4x3_PANSCAN_PREFERRED,
  3280.     DISPLAY_4x3_LETTERBOX_PREFERRED
  3281.   );
  3282.   {$EXTERNALSYM tagDVD_PREFERRED_DISPLAY_MODE}
  3283.   DVD_PREFERRED_DISPLAY_MODE = tagDVD_PREFERRED_DISPLAY_MODE;
  3284.   {$EXTERNALSYM DVD_PREFERRED_DISPLAY_MODE}
  3285.   TDVDPreferredDisplayMode = DVD_PREFERRED_DISPLAY_MODE;
  3286.  
  3287.   tagDVD_VIDEO_COMPRESSION = (
  3288.     DVD_VideoCompression_Other,
  3289.     DVD_VideoCompression_MPEG1,
  3290.     DVD_VideoCompression_MPEG22
  3291.   );
  3292.   {$EXTERNALSYM tagDVD_VIDEO_COMPRESSION}
  3293.   DVD_VIDEO_COMPRESSION = tagDVD_VIDEO_COMPRESSION;
  3294.   {$EXTERNALSYM DVD_VIDEO_COMPRESSION}
  3295.   TDVDVideoCompression = DVD_VIDEO_COMPRESSION;
  3296.  
  3297.   tagDVD_AUDIO_APPMODE = (
  3298.     DVD_AudioMode_None,
  3299.     DVD_AudioMode_Karaoke,
  3300.     DVD_AudioMode_Surround,
  3301.     DVD_AudioMode_Other
  3302.     );
  3303.   {$EXTERNALSYM tagDVD_AUDIO_APPMODE}
  3304.   DVD_AUDIO_APPMODE = tagDVD_AUDIO_APPMODE;
  3305.   {$EXTERNALSYM DVD_AUDIO_APPMODE}
  3306.   TDVDAudioAPPMode = DVD_AUDIO_APPMODE;
  3307.  
  3308.   tagDVD_AUDIO_FORMAT = (
  3309.     DVD_AudioFormat_AC3,
  3310.     DVD_AudioFormat_MPEG1,
  3311.     DVD_AudioFormat_MPEG1_DRC,
  3312.     DVD_AudioFormat_MPEG2,
  3313.     DVD_AudioFormat_MPEG2_DRC,
  3314.     DVD_AudioFormat_LPCM,
  3315.     DVD_AudioFormat_DTS,
  3316.     DVD_AudioFormat_SDDS,
  3317.     DVD_AudioFormat_Other
  3318.     );
  3319.   {$EXTERNALSYM tagDVD_AUDIO_FORMAT}
  3320.   DVD_AUDIO_FORMAT = tagDVD_AUDIO_FORMAT;
  3321.   {$EXTERNALSYM DVD_AUDIO_FORMAT}
  3322.   TDVDAudioFormat = DVD_AUDIO_FORMAT;
  3323.  
  3324.  
  3325. // DVD_KARAOKE_DOWNMIX
  3326. const
  3327.     DVD_Mix_0to0    = $1   ;
  3328.   {$EXTERNALSYM DVD_Mix_0to0}
  3329.     DVD_Mix_1to0    = $2   ;
  3330.   {$EXTERNALSYM DVD_Mix_1to0}
  3331.     DVD_Mix_2to0    = $4   ;
  3332.   {$EXTERNALSYM DVD_Mix_2to0}
  3333.     DVD_Mix_3to0    = $8   ;
  3334.   {$EXTERNALSYM DVD_Mix_3to0}
  3335.     DVD_Mix_4to0    = $10  ;
  3336.   {$EXTERNALSYM DVD_Mix_4to0}
  3337.     DVD_Mix_Lto0    = $20  ;
  3338.   {$EXTERNALSYM DVD_Mix_Lto0}
  3339.     DVD_Mix_Rto0    = $40  ;
  3340.   {$EXTERNALSYM DVD_Mix_Rto0}
  3341.     DVD_Mix_0to1    = $100 ;
  3342.   {$EXTERNALSYM DVD_Mix_0to1}
  3343.     DVD_Mix_1to1    = $200 ;
  3344.   {$EXTERNALSYM DVD_Mix_1to1}
  3345.     DVD_Mix_2to1    = $400 ;
  3346.   {$EXTERNALSYM DVD_Mix_2to1}
  3347.     DVD_Mix_3to1    = $800 ;
  3348.   {$EXTERNALSYM DVD_Mix_3to1}
  3349.     DVD_Mix_4to1    = $1000;
  3350.   {$EXTERNALSYM DVD_Mix_4to1}
  3351.     DVD_Mix_Lto1    = $2000;
  3352.   {$EXTERNALSYM DVD_Mix_Lto1}
  3353.     DVD_Mix_Rto1    = $4000;
  3354.   {$EXTERNALSYM DVD_Mix_Rto1}
  3355.  
  3356. type        
  3357.   tagDVD_AUDIO_LANG_EXT = (
  3358.     DVD_AUD_EXT_NotSpecified,
  3359.     DVD_AUD_EXT_Captions,
  3360.     DVD_AUD_EXT_VisuallyImpaired,
  3361.     DVD_AUD_EXT_DirectorComments1,
  3362.     DVD_AUD_EXT_DirectorComments2
  3363.     );
  3364.   {$EXTERNALSYM tagDVD_AUDIO_LANG_EXT}
  3365.   DVD_AUDIO_LANG_EXT = tagDVD_AUDIO_LANG_EXT;
  3366.   {$EXTERNALSYM DVD_AUDIO_LANG_EXT}
  3367.   TDVDAudioLangExt = DVD_AUDIO_LANG_EXT;
  3368.  
  3369.   tagDVD_SUBPICTURE_TYPE = (
  3370.     DVD_SPType_NotSpecified,
  3371.     DVD_SPType_Language,
  3372.     DVD_SPType_Other
  3373.     );
  3374.   {$EXTERNALSYM tagDVD_SUBPICTURE_TYPE}
  3375.   DVD_SUBPICTURE_TYPE = tagDVD_SUBPICTURE_TYPE;
  3376.   {$EXTERNALSYM DVD_SUBPICTURE_TYPE}
  3377.   TDVDSubpictureType = DVD_SUBPICTURE_TYPE;
  3378.  
  3379.   tagDVD_SUBPICTURE_CODING = (
  3380.     DVD_SPCoding_RunLength,
  3381.     DVD_SPCoding_Extended,
  3382.     DVD_SPCoding_Other
  3383.     );
  3384.   {$EXTERNALSYM tagDVD_SUBPICTURE_CODING}
  3385.   DVD_SUBPICTURE_CODING = tagDVD_SUBPICTURE_CODING;
  3386.   {$EXTERNALSYM DVD_SUBPICTURE_CODING}
  3387.   TDVDSubpictureCoding = DVD_SUBPICTURE_CODING;
  3388.  
  3389.   {$IFNDEF COMPILER6_UP}
  3390.   tagDVD_SUBPICTURE_LANG_EXT = {$IFDEF TYPE_IDENTITY}type {$ENDIF}LongWord;
  3391.   const
  3392.     DVD_SP_EXT_Caption_Normal                = 1;
  3393.     DVD_SP_EXT_Caption_Big                  = 2;
  3394.     DVD_SP_EXT_Caption_Children              = 3;
  3395.     DVD_SP_EXT_CC_Normal                    = 5;
  3396.     DVD_SP_EXT_CC_Big                        = 6;
  3397.     DVD_SP_EXT_CC_Children                  = 7;
  3398.     DVD_SP_EXT_Forced                        = 9;
  3399.     DVD_SP_EXT_DirectorComments_Normal      = 13;
  3400.     DVD_SP_EXT_DirectorComments_Big          = 14;
  3401.     DVD_SP_EXT_DirectorComments_Children    = 15;
  3402.   {$ELSE}
  3403.   tagDVD_SUBPICTURE_LANG_EXT = (
  3404.     DVD_SP_EXT_Caption_Normal                = 1,
  3405.     DVD_SP_EXT_Caption_Big                  = 2,
  3406.     DVD_SP_EXT_Caption_Children              = 3,
  3407.     DVD_SP_EXT_CC_Normal                    = 5,
  3408.     DVD_SP_EXT_CC_Big                        = 6,
  3409.     DVD_SP_EXT_CC_Children                  = 7,
  3410.     DVD_SP_EXT_Forced                        = 9,
  3411.     DVD_SP_EXT_DirectorComments_Normal      = 13,
  3412.     DVD_SP_EXT_DirectorComments_Big          = 14,
  3413.     DVD_SP_EXT_DirectorComments_Children    = 15
  3414.   );
  3415.   {$ENDIF}
  3416. type
  3417.   {$EXTERNALSYM tagDVD_SUBPICTURE_LANG_EXT}
  3418.   DVD_SUBPICTURE_LANG_EXT = tagDVD_SUBPICTURE_LANG_EXT;
  3419.   {$EXTERNALSYM DVD_SUBPICTURE_LANG_EXT}
  3420.   TDVDSubpictureLangExt = DVD_SUBPICTURE_LANG_EXT;
  3421.  
  3422. type
  3423.   tagDVD_KARAOKE_ASSIGNMENT = (
  3424.     DVD_Assignment_reserved0,
  3425.     DVD_Assignment_reserved1,
  3426.     DVD_Assignment_LR,
  3427.     DVD_Assignment_LRM,
  3428.     DVD_Assignment_LR1,
  3429.     DVD_Assignment_LRM1,
  3430.     DVD_Assignment_LR12,
  3431.     DVD_Assignment_LRM12
  3432.   );
  3433.   {$EXTERNALSYM tagDVD_KARAOKE_ASSIGNMENT}
  3434.   DVD_KARAOKE_ASSIGNMENT = tagDVD_KARAOKE_ASSIGNMENT;
  3435.   {$EXTERNALSYM DVD_KARAOKE_ASSIGNMENT}
  3436.   TDVDKaraokeAssignment = DVD_KARAOKE_ASSIGNMENT;
  3437.  
  3438.   DVD_RELATIVE_BUTTON = (
  3439.   {$IFNDEF COMPILER6_UP}
  3440.     DVD_Relative_INVALID_0,
  3441.     DVD_Relative_Upper,
  3442.     DVD_Relative_Lower,
  3443.     DVD_Relative_Left,
  3444.     DVD_Relative_Right
  3445.   {$ELSE}
  3446.     DVD_Relative_Upper = 1,
  3447.     DVD_Relative_Lower = 2,
  3448.     DVD_Relative_Left  = 3,
  3449.     DVD_Relative_Right = 4
  3450.   {$ENDIF}
  3451.   );
  3452.   {$EXTERNALSYM DVD_RELATIVE_BUTTON}
  3453.   TDVDRelativeButton = DVD_RELATIVE_BUTTON;
  3454.  
  3455.   DVD_REGISTER = {$IFDEF TYPE_IDENTITY}type {$ENDIF}Word;
  3456.   {$EXTERNALSYM DVD_REGISTER}
  3457.   GPRMArray = array[0..15] of DVD_REGISTER;
  3458.   {$EXTERNALSYM GPRMArray}
  3459.  
  3460.   SPRMArray = array[0..23] of DVD_REGISTER;
  3461.   {$EXTERNALSYM SPRMArray}
  3462.   TSPRMArray = SPRMArray;
  3463.  
  3464.   tagDVD_ATR = record
  3465.     ulCAT : ULONG;
  3466.     pbATRI: array[0..767] of Byte;
  3467.   end;
  3468.   {$EXTERNALSYM tagDVD_ATR}
  3469.   DVD_ATR = tagDVD_ATR;
  3470.   {$EXTERNALSYM DVD_ATR}
  3471.   TDVDAtr = tagDVD_ATR;
  3472.  
  3473.   DVD_VideoATR = array[0..1] of Byte;
  3474.   {$EXTERNALSYM DVD_VideoATR}
  3475.   DVD_AudioATR = array[0..7] of Byte;
  3476.   {$EXTERNALSYM DVD_AudioATR}
  3477.   DVD_SubpictureATR = array[0..5] of Byte;
  3478.   {$EXTERNALSYM DVD_SubpictureATR}
  3479.  
  3480.   (*** DVD_SubpictureATR methods ***)
  3481.   tagDVD_FRAMERATE = (
  3482.   {$IFNDEF COMPILER6_UP}
  3483.     DVD_FPS_INVALID_0,
  3484.     DVD_FPS_25,
  3485.     DVD_FPS_INVALID_2,
  3486.     DVD_FPS_30NonDrop
  3487.   {$ELSE}
  3488.     DVD_FPS_25        = 1,
  3489.     DVD_FPS_30NonDrop = 3
  3490.   {$ENDIF}
  3491.   );
  3492.  
  3493.   {$EXTERNALSYM tagDVD_FRAMERATE}
  3494.   DVD_FRAMERATE = tagDVD_FRAMERATE;
  3495.   {$EXTERNALSYM DVD_FRAMERATE}
  3496.   TDVDFramerate = DVD_FRAMERATE;
  3497.  
  3498.  
  3499. //typedef struct tagDVD_TIMECODE
  3500. //{
  3501. //   ULONG Hours1    :4; // Hours
  3502. //   ULONG Hours10  :4; // Tens of Hours
  3503. //
  3504. //   ULONG Minutes1  :4; // Minutes
  3505. //   ULONG Minutes10:4; // Tens of Minutes
  3506. //
  3507. //   ULONG Seconds1  :4; // Seconds
  3508. //   ULONG Seconds10:4; // Tens of Seconds
  3509. //
  3510. //   ULONG Frames1   :4; // Frames
  3511. //   ULONG Frames10 :2; // Tens of Frames
  3512. //
  3513. //   ULONG FrameRateCode: 2; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop
  3514. //} DVD_TIMECODE;
  3515.  
  3516.   tagDVD_TIMECODE = record
  3517.     Hours1    : byte;
  3518.     Hours10   : byte;
  3519.     Minutes1  : byte;
  3520.     Minutes10 : byte;
  3521.     Seconds1  : byte;
  3522.     Seconds10 : byte;
  3523.     Frames1   : byte;
  3524.     Frames10  : byte;
  3525.     FrameRateCode: byte;
  3526.   end;
  3527.   {$EXTERNALSYM tagDVD_TIMECODE}
  3528.   DVD_TIMECODE = tagDVD_TIMECODE;
  3529.   {$EXTERNALSYM DVD_TIMECODE}
  3530.   TDVDTimeCode = tagDVD_TIMECODE;
  3531.  
  3532. //DVD_TIMECODE_FLAGS
  3533. const
  3534.   DVD_TC_FLAG_25fps            = $1;
  3535.   {$EXTERNALSYM DVD_TC_FLAG_25fps}
  3536.     DVD_TC_FLAG_30fps            = $2;
  3537.   {$EXTERNALSYM DVD_TC_FLAG_30fps}
  3538.     DVD_TC_FLAG_DropFrame        = $4;
  3539.   {$EXTERNALSYM DVD_TC_FLAG_DropFrame}
  3540.   DVD_TC_FLAG_Interpolated    = $8;
  3541.   {$EXTERNALSYM DVD_TC_FLAG_Interpolated}
  3542.  
  3543. type
  3544.   PDVDHMSFTimeCode = ^TDVDHMSFTimeCode;
  3545.   tagDVD_HMSF_TIMECODE = record
  3546.   {$EXTERNALSYM tagDVD_HMSF_TIMECODE}
  3547.     bHours   : BYTE;
  3548.     bMinutes : BYTE;
  3549.     bSeconds : BYTE;
  3550.     bFrames  : BYTE;
  3551.   end;
  3552.   DVD_HMSF_TIMECODE = tagDVD_HMSF_TIMECODE;
  3553.   {$EXTERNALSYM DVD_HMSF_TIMECODE}
  3554.   TDVDHMSFTimeCode = tagDVD_HMSF_TIMECODE;
  3555.  
  3556.   tagDVD_PLAYBACK_LOCATION2 = record
  3557.     TitleNum      : ULONG;
  3558.     ChapterNum    : ULONG;
  3559.     TimeCode      : DVD_HMSF_TIMECODE;
  3560.     TimeCodeFlags : ULONG;
  3561.   end;
  3562.   {$EXTERNALSYM tagDVD_PLAYBACK_LOCATION2}
  3563.   DVD_PLAYBACK_LOCATION2 = tagDVD_PLAYBACK_LOCATION2;
  3564.   {$EXTERNALSYM DVD_PLAYBACK_LOCATION2}
  3565.   TDVDPlayBackLocation2 = tagDVD_PLAYBACK_LOCATION2;
  3566.  
  3567.   tagDVD_PLAYBACK_LOCATION = record
  3568.     TitleNum   : ULONG;
  3569.     ChapterNum : ULONG;
  3570.     TimeCode   : ULONG;
  3571.   end;
  3572.   {$EXTERNALSYM tagDVD_PLAYBACK_LOCATION}
  3573.   DVD_PLAYBACK_LOCATION = tagDVD_PLAYBACK_LOCATION;
  3574.   {$EXTERNALSYM DVD_PLAYBACK_LOCATION}
  3575.   TDVDPlaybackLocation = tagDVD_PLAYBACK_LOCATION;
  3576.  
  3577.   VALID_UOP_SOMTHING_OR_OTHER = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWord;
  3578.   {$EXTERNALSYM VALID_UOP_SOMTHING_OR_OTHER}
  3579.  
  3580. VALID_UOP_FLAG  = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWord;
  3581. {$EXTERNALSYM VALID_UOP_FLAG}
  3582.   const
  3583.   UOP_FLAG_Play_Title_Or_AtTime                      = $1;
  3584.   {$EXTERNALSYM UOP_FLAG_Play_Title_Or_AtTime}
  3585.   UOP_FLAG_Play_Chapter                              = $2;
  3586.   {$EXTERNALSYM UOP_FLAG_Play_Chapter}
  3587.   UOP_FLAG_Play_Title                                = $4;
  3588.   {$EXTERNALSYM UOP_FLAG_Play_Title}
  3589.   UOP_FLAG_Stop                                      = $8;
  3590.   {$EXTERNALSYM UOP_FLAG_Stop}
  3591.   UOP_FLAG_ReturnFromSubMenu                        = $10;
  3592.   {$EXTERNALSYM UOP_FLAG_ReturnFromSubMenu}
  3593.   UOP_FLAG_Play_Chapter_Or_AtTime                    = $20;
  3594.   {$EXTERNALSYM UOP_FLAG_Play_Chapter_Or_AtTime}
  3595.   UOP_FLAG_PlayPrev_Or_Replay_Chapter                = $40;
  3596.   {$EXTERNALSYM UOP_FLAG_PlayPrev_Or_Replay_Chapter}
  3597.   UOP_FLAG_PlayNext_Chapter                          = $80;
  3598.   {$EXTERNALSYM UOP_FLAG_PlayNext_Chapter}
  3599.   UOP_FLAG_Play_Forwards                            = $100;
  3600.   {$EXTERNALSYM UOP_FLAG_Play_Forwards}
  3601.   UOP_FLAG_Play_Backwards                            = $200;
  3602.   {$EXTERNALSYM UOP_FLAG_Play_Backwards}
  3603.   UOP_FLAG_ShowMenu_Title                            = $400;
  3604.   {$EXTERNALSYM UOP_FLAG_ShowMenu_Title}
  3605.   UOP_FLAG_ShowMenu_Root                            = $800;
  3606.   {$EXTERNALSYM UOP_FLAG_ShowMenu_Root}
  3607.   UOP_FLAG_ShowMenu_SubPic                          = $1000;
  3608.   {$EXTERNALSYM UOP_FLAG_ShowMenu_SubPic}
  3609.   UOP_FLAG_ShowMenu_Audio                            = $2000;
  3610.   {$EXTERNALSYM UOP_FLAG_ShowMenu_Audio}
  3611.   UOP_FLAG_ShowMenu_Angle                            = $4000;
  3612.   {$EXTERNALSYM UOP_FLAG_ShowMenu_Angle}
  3613.   UOP_FLAG_ShowMenu_Chapter                          = $8000;
  3614.   {$EXTERNALSYM UOP_FLAG_ShowMenu_Chapter}
  3615.   UOP_FLAG_Resume                                    = $10000;
  3616.   {$EXTERNALSYM UOP_FLAG_Resume}
  3617.   UOP_FLAG_Select_Or_Activate_Button                = $20000;
  3618.   {$EXTERNALSYM UOP_FLAG_Select_Or_Activate_Button}
  3619.   UOP_FLAG_Still_Off                                = $40000;
  3620.   {$EXTERNALSYM UOP_FLAG_Still_Off}
  3621.   UOP_FLAG_Pause_On                                  = $80000;
  3622.   {$EXTERNALSYM UOP_FLAG_Pause_On}
  3623.   UOP_FLAG_Select_Audio_Stream                      = $100000;
  3624.   {$EXTERNALSYM UOP_FLAG_Select_Audio_Stream}
  3625.   UOP_FLAG_Select_SubPic_Stream                      = $200000;
  3626.   {$EXTERNALSYM UOP_FLAG_Select_SubPic_Stream}
  3627.   UOP_FLAG_Select_Angle                              = $400000;
  3628.   {$EXTERNALSYM UOP_FLAG_Select_Angle}
  3629.   UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode    = $800000;
  3630.   {$EXTERNALSYM UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode}
  3631.   UOP_FLAG_Select_Video_Mode_Preference              = $1000000;
  3632.   {$EXTERNALSYM UOP_FLAG_Select_Video_Mode_Preference}
  3633.  
  3634. type
  3635.   DVD_TextCharSet = (
  3636.     DVD_CharSet_Unicode,
  3637.     DVD_CharSet_ISO646,
  3638.     DVD_CharSet_JIS_Roman_Kanji,
  3639.     DVD_CharSet_ISO8859_1,
  3640.     DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana
  3641.   );
  3642.   {$EXTERNALSYM DVD_TextCharSet}
  3643.   TDVDTextCharSet = DVD_TextCharSet;
  3644.  
  3645. const
  3646.   DVD_TITLE_MENU           = $000;
  3647.   {$EXTERNALSYM DVD_TITLE_MENU}
  3648.   DVD_STREAM_DATA_CURRENT  = $800;
  3649.   {$EXTERNALSYM DVD_STREAM_DATA_CURRENT}
  3650.   DVD_STREAM_DATA_VMGM     = $400;
  3651.   {$EXTERNALSYM DVD_STREAM_DATA_VMGM}
  3652.   DVD_STREAM_DATA_VTSM     = $401;
  3653.   {$EXTERNALSYM DVD_STREAM_DATA_VTSM}
  3654.   DVD_DEFAULT_AUDIO_STREAM = $0f ;
  3655.   {$EXTERNALSYM DVD_DEFAULT_AUDIO_STREAM}
  3656.  
  3657. type
  3658.   tagDVD_DECODER_CAPS = record
  3659.     dwSize           : DWORD;
  3660.     dwAudioCaps      : DWORD;
  3661.     dFwdMaxRateVideo : double;
  3662.     dFwdMaxRateAudio : double;
  3663.     dFwdMaxRateSP    : double;
  3664.     dBwdMaxRateVideo : double;
  3665.     dBwdMaxRateAudio : double;
  3666.     dBwdMaxRateSP    : double;
  3667.     dwRes1           : DWORD;
  3668.     dwRes2           : DWORD;
  3669.     dwRes3           : DWORD;
  3670.     dwRes4           : DWORD;
  3671.   end;
  3672.   {$EXTERNALSYM tagDVD_DECODER_CAPS}
  3673.   DVD_DECODER_CAPS = tagDVD_DECODER_CAPS;
  3674.   {$EXTERNALSYM DVD_DECODER_CAPS}
  3675.   TDVDDecoderCaps = tagDVD_DECODER_CAPS;
  3676.  
  3677. const
  3678.   DVD_AUDIO_CAPS_AC3   = $00000001;
  3679.   {$EXTERNALSYM DVD_AUDIO_CAPS_AC3}
  3680.   DVD_AUDIO_CAPS_MPEG2 = $00000002;
  3681.   {$EXTERNALSYM DVD_AUDIO_CAPS_MPEG2}
  3682.   DVD_AUDIO_CAPS_LPCM  = $00000004;
  3683.   {$EXTERNALSYM DVD_AUDIO_CAPS_LPCM}
  3684.   DVD_AUDIO_CAPS_DTS   = $00000008;
  3685.   {$EXTERNALSYM DVD_AUDIO_CAPS_DTS}
  3686.   DVD_AUDIO_CAPS_SDDS  = $00000010;
  3687.   {$EXTERNALSYM DVD_AUDIO_CAPS_SDDS}
  3688.  
  3689. type
  3690.   tagDVD_VideoAttributes = record
  3691.     fPanscanPermitted    : BOOL;
  3692.     fLetterboxPermitted  : BOOL;
  3693.     ulAspectX            : ULONG;
  3694.     ulAspectY            : ULONG;
  3695.     ulFrameRate          : ULONG;
  3696.     ulFrameHeight        : ULONG;
  3697.     Compression          : DVD_VIDEO_COMPRESSION;
  3698.     fLine21Field1InGOP   : BOOL;
  3699.     fLine21Field2InGOP   : BOOL;
  3700.     ulSourceResolutionX  : ULONG;
  3701.     ulSourceResolutionY  : ULONG;
  3702.     fIsSourceLetterboxed : BOOL;
  3703.     fIsFilmMode          : BOOL;
  3704.   end;
  3705.   {$EXTERNALSYM tagDVD_VideoAttributes}
  3706.   DVD_VideoAttributes = tagDVD_VideoAttributes;
  3707.   {$EXTERNALSYM DVD_VideoAttributes}
  3708.   TDVDVideoAttributes = tagDVD_VideoAttributes;
  3709.  
  3710.   tagDVD_SubpictureAttributes = record
  3711.     Type_             : DVD_SUBPICTURE_TYPE ;
  3712.     CodingMode        : DVD_SUBPICTURE_CODING ;
  3713.     Language          : LCID ;
  3714.     LanguageExtension : DVD_SUBPICTURE_LANG_EXT ;
  3715.   end;
  3716.   {$EXTERNALSYM tagDVD_SubpictureAttributes}
  3717.   DVD_SubpictureAttributes = tagDVD_SubpictureAttributes;
  3718.   {$EXTERNALSYM DVD_SubpictureAttributes}
  3719.   TDVDSubpictureAttributes = tagDVD_SubpictureAttributes;
  3720.  
  3721.   tagDVD_TITLE_APPMODE = (
  3722.   {$IFNDEF COMPILER6_UP}
  3723.     DVD_AppMode_Not_Specified,
  3724.     DVD_AppMode_Karaoke,
  3725.     DVD_AppMode_INVALID_2,
  3726.     DVD_AppMode_Other
  3727.   {$ELSE}
  3728.     DVD_AppMode_Not_Specified = 0,
  3729.     DVD_AppMode_Karaoke       = 1,
  3730.     DVD_AppMode_Other         = 3
  3731.   {$ENDIF}
  3732.   );
  3733.   {$EXTERNALSYM tagDVD_TITLE_APPMODE}
  3734.   DVD_TITLE_APPMODE = tagDVD_TITLE_APPMODE;
  3735.   {$EXTERNALSYM DVD_TITLE_APPMODE}
  3736.   TDVDTitleAPPMode = DVD_TITLE_APPMODE;
  3737.  
  3738.   tagDVD_MUA_MixingInfo = record
  3739.     fMixTo0           : BOOL;
  3740.     fMixTo1           : BOOL;
  3741.     fMix0InPhase      : BOOL;
  3742.     fMix1InPhase      : BOOL;
  3743.     dwSpeakerPosition : DWORD;
  3744.   end;
  3745.   {$EXTERNALSYM tagDVD_MUA_MixingInfo}
  3746.   DVD_MUA_MixingInfo = tagDVD_MUA_MixingInfo;
  3747.   {$EXTERNALSYM DVD_MUA_MixingInfo}
  3748.   TDVDMUAMixingInfo = tagDVD_MUA_MixingInfo;
  3749.  
  3750.   tagDVD_MUA_Coeff = record
  3751.     log2_alpha : Double;
  3752.     log2_beta  : Double;
  3753.   end;
  3754.   {$EXTERNALSYM tagDVD_MUA_Coeff}
  3755.   DVD_MUA_Coeff = tagDVD_MUA_Coeff;
  3756.   {$EXTERNALSYM DVD_MUA_Coeff}
  3757.   TDVDMUACoeff = tagDVD_MUA_Coeff;
  3758.  
  3759.   tagDVD_MultichannelAudioAttributes = record
  3760.     Info  : array[0..7] of DVD_MUA_MixingInfo;
  3761.     Coeff : array[0..7] of DVD_MUA_Coeff;
  3762.   end;
  3763.   {$EXTERNALSYM tagDVD_MultichannelAudioAttributes}
  3764.   DVD_MultichannelAudioAttributes = tagDVD_MultichannelAudioAttributes;
  3765.   {$EXTERNALSYM DVD_MultichannelAudioAttributes}
  3766.   TDVDMultichannelAudioAttributes = tagDVD_MultichannelAudioAttributes;
  3767.  
  3768. // DVD_KARAOKE_CONTENTS
  3769. const
  3770.      DVD_Karaoke_GuideVocal1      = $1;
  3771.   {$EXTERNALSYM DVD_Karaoke_GuideVocal1}
  3772.     DVD_Karaoke_GuideVocal2      = $2;
  3773.   {$EXTERNALSYM DVD_Karaoke_GuideVocal2}
  3774.     DVD_Karaoke_GuideMelody1    = $4;
  3775.   {$EXTERNALSYM DVD_Karaoke_GuideMelody1}
  3776.     DVD_Karaoke_GuideMelody2    = $8;
  3777.   {$EXTERNALSYM DVD_Karaoke_GuideMelody2}
  3778.     DVD_Karaoke_GuideMelodyA    = $10;
  3779.   {$EXTERNALSYM DVD_Karaoke_GuideMelodyA}
  3780.     DVD_Karaoke_GuideMelodyB    = $20;
  3781.   {$EXTERNALSYM DVD_Karaoke_GuideMelodyB}
  3782.     DVD_Karaoke_SoundEffectA    = $40;
  3783.   {$EXTERNALSYM DVD_Karaoke_SoundEffectA}
  3784.     DVD_Karaoke_SoundEffectB    = $80;
  3785.   {$EXTERNALSYM DVD_Karaoke_SoundEffectB}
  3786.  
  3787. type
  3788.  
  3789.   tagDVD_AudioAttributes = record
  3790.     AppMode              : DVD_AUDIO_APPMODE;
  3791.     AppModeData          : BYTE;
  3792.     AudioFormat          : DVD_AUDIO_FORMAT;
  3793.     Language             : LCID;
  3794.     LanguageExtension    : DVD_AUDIO_LANG_EXT;
  3795.     fHasMultichannelInfo : BOOL;
  3796.     dwFrequency          : DWORD;
  3797.     bQuantization        : BYTE;
  3798.     bNumberOfChannels    : BYTE;
  3799.     dwReserved           : array[0..1] of DWORD;
  3800.   end;
  3801.   {$EXTERNALSYM tagDVD_AudioAttributes}
  3802.   DVD_AudioAttributes = tagDVD_AudioAttributes;
  3803.   {$EXTERNALSYM DVD_AudioAttributes}
  3804.   TDVDAudioAttributes = tagDVD_AudioAttributes;
  3805.  
  3806.   tagDVD_TitleMainAttributes = record
  3807.     AppMode: DVD_TITLE_APPMODE ;
  3808.     VideoAttributes             : DVD_VideoAttributes;
  3809.     ulNumberOfAudioStreams      : ULONG ;
  3810.     AudioAttributes             : array[0..7] of DVD_AudioAttributes;
  3811.     MultichannelAudioAttributes : array[0..7] of DVD_MultichannelAudioAttributes;
  3812.     ulNumberOfSubpictureStreams : ULONG ;
  3813.     SubpictureAttributes        : array[0..31] of DVD_SubpictureAttributes;
  3814.   end;
  3815.   {$EXTERNALSYM tagDVD_TitleMainAttributes}
  3816.   DVD_TitleAttributes = tagDVD_TitleMainAttributes;
  3817.   {$EXTERNALSYM DVD_TitleAttributes}
  3818.   TDVDTitleAttributes = tagDVD_TitleMainAttributes;
  3819.  
  3820.   tagDVD_MenuAttributes = record
  3821.     fCompatibleRegion    : array[0..7] of BOOL;
  3822.     VideoAttributes      : DVD_VideoAttributes;
  3823.     fAudioPresent        : BOOL;
  3824.     AudioAttributes      : DVD_AudioAttributes;
  3825.     fSubpicturePresent   : BOOL;
  3826.     SubpictureAttributes : DVD_SubpictureAttributes;
  3827.   end;
  3828.   {$EXTERNALSYM tagDVD_MenuAttributes}
  3829.   DVD_MenuAttributes = tagDVD_MenuAttributes;
  3830.   {$EXTERNALSYM DVD_MenuAttributes}
  3831.   TDVDMenuAttributes = tagDVD_MenuAttributes;
  3832.  
  3833.   tagDVD_KaraokeAttributes = record
  3834.     bVersion                         : BYTE;
  3835.     fMasterOfCeremoniesInGuideVocal1 : BOOL;
  3836.     fDuet                            : BOOL;
  3837.     ChannelAssignment                : TDVDKaraokeAssignment;
  3838.     wChannelContents                 : array[0..7] of WORD;
  3839.   end;
  3840.   {$EXTERNALSYM tagDVD_KaraokeAttributes}
  3841.   DVD_KaraokeAttributes = tagDVD_KaraokeAttributes;
  3842.   {$EXTERNALSYM DVD_KaraokeAttributes}
  3843.   TDVDKaraokeAttributes = tagDVD_KaraokeAttributes;
  3844.  
  3845.  
  3846. const
  3847.   DVD_PARENTAL_LEVEL_8    = $8000;
  3848.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_8}
  3849.   DVD_PARENTAL_LEVEL_7    = $4000;
  3850.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_7}
  3851.   DVD_PARENTAL_LEVEL_6    = $2000;
  3852.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_6}
  3853.   DVD_PARENTAL_LEVEL_5    = $1000;
  3854.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_5}
  3855.   DVD_PARENTAL_LEVEL_4    = $0800;
  3856.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_4}
  3857.   DVD_PARENTAL_LEVEL_3    = $0400;
  3858.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_3}
  3859.   DVD_PARENTAL_LEVEL_2    = $0200;
  3860.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_2}
  3861.   DVD_PARENTAL_LEVEL_1    = $0100;
  3862.   {$EXTERNALSYM DVD_PARENTAL_LEVEL_1}
  3863.  
  3864. type
  3865.   DVD_CMD_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  3866.   {$EXTERNALSYM DVD_CMD_FLAGS}
  3867.  
  3868. const
  3869.   DVD_CMD_FLAG_None               = $00000000;
  3870.   {$EXTERNALSYM DVD_CMD_FLAG_None}
  3871.   DVD_CMD_FLAG_Flush              = $00000001;
  3872.   {$EXTERNALSYM DVD_CMD_FLAG_Flush}
  3873.   DVD_CMD_FLAG_SendEvents         = $00000002;
  3874.   {$EXTERNALSYM DVD_CMD_FLAG_SendEvents}
  3875.   DVD_CMD_FLAG_Block              = $00000004;
  3876.   {$EXTERNALSYM DVD_CMD_FLAG_Block}
  3877.   DVD_CMD_FLAG_StartWhenRendered  = $00000008;
  3878.   {$EXTERNALSYM DVD_CMD_FLAG_StartWhenRendered}
  3879.   DVD_CMD_FLAG_EndAfterRendered   = $00000010;
  3880.   {$EXTERNALSYM DVD_CMD_FLAG_EndAfterRendered}
  3881.  
  3882. type
  3883.   CountryCode = array[0..1] of BYTE;
  3884.  
  3885.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdState> _di_IDvdState;'}
  3886.   {$EXTERNALSYM IDvdState}
  3887.   IDvdState = interface(IUnknown)
  3888.       ['{86303d6d-1c4a-4087-ab42-f711167048ef}']
  3889.       (*** IDvdState methods ***)
  3890.       function GetDiscID(out pullUniqueID: Double): HResult; stdcall;
  3891.       function GetParentalLevel(out pulParentalLevel: ULONG): HResult; stdcall;
  3892.   end;
  3893.  
  3894.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdCmd> _di_IDvdCmd;'}
  3895.   {$EXTERNALSYM IDvdCmd}
  3896.   IDvdCmd = interface(IUnknown)
  3897.       ['{5A4A97E4-94EE-4A55-9751-74B5643AA27D}']
  3898.       (*** IDvdCmd methods ***)
  3899.       function WaitForStart: HResult; stdcall;
  3900.       function WaitForEnd: HResult; stdcall;
  3901.   end;
  3902.  
  3903.   //Deprecated Interface
  3904.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdControl> _di_IDvdControl;'}
  3905.   {$EXTERNALSYM IDvdControl}
  3906.   IDvdControl = interface(IUnknown)
  3907.     ['{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}']
  3908.     (*** IDvdControl methods ***)
  3909.     function TitlePlay(uiTitle: ULONG): HResult; stdcall;
  3910.     function ChapterPlay(uiTitle: ULONG; uiChapter: ULONG): HResult; stdcall;
  3911.     function TimePlay(uiTitle: ULONG; bcdTime: ULONG): HResult; stdcall;
  3912.     function StopForResume: HResult; stdcall;
  3913.     function GoUp: HResult; stdcall;
  3914.     function TimeSearch(bcdTime: ULONG): HResult; stdcall;
  3915.     function ChapterSearch(Chapter: ULONG): HResult; stdcall;
  3916.     function PrevPGSearch: HResult; stdcall;
  3917.     function TopPGSearch: HResult; stdcall;
  3918.     function NextPGSearch: HResult; stdcall;
  3919.     function ForwardScan(dwSpeed: double): HResult; stdcall;
  3920.     function BackwardScan(dwSpeed: double): HResult; stdcall;
  3921.     function MenuCall(MenuID: TDVDMenuID): HResult; stdcall;
  3922.     function Resume: HResult; stdcall;
  3923.     function UpperButtonSelect: HResult; stdcall;
  3924.     function LowerButtonSelect: HResult; stdcall;
  3925.     function LeftButtonSelect: HResult; stdcall;
  3926.     function RightButtonSelect: HResult; stdcall;
  3927.     function ButtonActivate: HResult; stdcall;
  3928.     function ButtonSelectAndActivate(uiButton: ULONG): HResult; stdcall;
  3929.     function StillOff: HResult; stdcall;
  3930.     function PauseOn: HResult; stdcall;
  3931.     function PauseOff: HResult; stdcall;
  3932.     function MenuLanguageSelect(Language: LCID): HResult; stdcall;
  3933.     function AudioStreamChange(nAudio: ULONG): HResult; stdcall;
  3934.     function SubpictureStreamChange(nSubPicture: ULONG; bDisplay: BOOL): HResult; stdcall;
  3935.     function AngleChange(ulAngle: ULONG): HResult; stdcall;
  3936.     function ParentalLevelSelect(ulParentalLevel: ULONG): HResult; stdcall;
  3937.     function ParentalCountrySelect(wCountry: Word): HResult; stdcall;
  3938.     function KaraokeAudioPresentationModeChange(ulMode: ULONG): HResult; stdcall;
  3939.     function VideoModePreferrence(ulPreferredDisplayMode: ULONG): HResult; stdcall;
  3940.     function SetRoot(pszPath: LPCWSTR): HResult; stdcall;
  3941.     function MouseActivate(point: TPoint): HResult; stdcall;
  3942.     function MouseSelect(point: TPoint): HResult; stdcall;
  3943.     function ChapterPlayAutoStop(ulTitle, ulChapter, ulChaptersToPlay: ULONG): HResult; stdcall;
  3944.   end;
  3945.  
  3946.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdControl2> _di_IDvdControl2;'}
  3947.   {$EXTERNALSYM IDvdControl2}
  3948.   IDvdControl2 = interface(IUnknown)
  3949.     ['{33BC7430-EEC0-11D2-8201-00A0C9D74842}']
  3950.     (*** IDvdControl2 methods ***)
  3951.     function PlayTitle(ulTitle, dwFlags: ULONG; var ppCmd: IDvdCmd): HResult; stdcall;
  3952.     function PlayChapterInTitle(ulTitle, ulChapter: ULONG; dwFlags: DWORD; var ppCmd: IDvdCmd): HResult; stdcall;
  3953.     function PlayAtTimeInTitle(ulTitle: ULONG; var pStartTime: TDVDHMSFTimeCode; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3954.     function Stop: HResult; stdcall;
  3955.     function ReturnFromSubmenu(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3956.     function PlayAtTime(pTime: PDVDHMSFTimeCode; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3957.     function PlayChapter(ulChapter: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3958.     function PlayPrevChapter(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3959.     function ReplayChapter(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3960.     function PlayNextChapter(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3961.     function PlayForwards(dSpeed: double; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3962.     function PlayBackwards(dSpeed: double; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3963.     function ShowMenu(MenuID: TDVDMenuID; dwFlags: DVD_CMD_FLAGS;out ppCmd: IDvdCmd): HResult; stdcall;
  3964.     function Resume(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3965.     function SelectRelativeButton(buttonDir: TDVDRelativeButton): HResult; stdcall;
  3966.     function ActivateButton: HResult; stdcall;
  3967.     function SelectButton(ulButton: ULONG): HResult; stdcall;
  3968.     function SelectAndActivateButton(ulButton: ULONG): HResult; stdcall;
  3969.     function StillOff: HResult; stdcall;
  3970.     function Pause(bState: BOOL): HResult; stdcall;
  3971.     function SelectAudioStream(ulAudio: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3972.     function SelectSubpictureStream(ulSubPicture: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3973.     function SetSubpictureState(bState: BOOL; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3974.     function SelectAngle(ulAngle: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3975.     function SelectParentalLevel(ulParentalLevel: ULONG): HResult; stdcall;
  3976.     function SelectParentalCountry(bCountry: CountryCode): HResult; stdcall;
  3977.     function SelectKaraokeAudioPresentationMode(ulMode: ULONG): HResult; stdcall;
  3978.     function SelectVideoModePreference(ulPreferredDisplayMode: ULONG): HResult; stdcall;
  3979.     function SetDVDDirectory(pszwPath: LPCWSTR): HResult; stdcall;
  3980.     function ActivateAtPosition(point: TPoint): HResult; stdcall;
  3981.     function SelectAtPosition(point : TPoint): HResult; stdcall;
  3982.     function PlayChaptersAutoStop(ulTitle, ulChapter, ulChaptersToPlay: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3983.     function AcceptParentalLevelChange(bAccept: BOOL): HResult; stdcall;
  3984.     function SetOption(flag: TDVDOptionFlag; fState: BOOL): HResult; stdcall;
  3985.     function SetState(pState: IDvdState; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3986.     function PlayPeriodInTitleAutoStop(ulTitle: ULONG; var pStartTime, pEndTime: TDVDHMSFTimeCode; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3987.     function SetGPRM(ulIndex: ULONG; wValue: WORD; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3988.     function SelectDefaultMenuLanguage(Language: LCID): HResult; stdcall;
  3989.     function SelectDefaultAudioLanguage(Language: LCID; audioExtension: TDVDAudioLangExt): HResult; stdcall;
  3990.     function SelectDefaultSubpictureLanguage(Language: LCID; subpictureExtension: TDVDSubpictureLangExt): HResult; stdcall;
  3991.   end;
  3992.  
  3993.   //Deprecated Interface
  3994.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdInfo> _di_IDvdInfo;'}
  3995.   {$EXTERNALSYM IDvdInfo}
  3996.   IDvdInfo = interface(IUnknown)
  3997.     ['{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}']
  3998.     (*** IDvdInfo methods ***)
  3999.     function GetCurrentDomain(out pDomain: TDVDDomain): HResult; stdcall;
  4000.     function GetCurrentLocation(out pLocation: TDVDPlaybackLocation): HResult; stdcall;
  4001.     function GetTotalTitleTime(out pTotalTime: ULONG): HResult; stdcall;
  4002.     function GetCurrentButton(out pnButtonsAvailable, pnCurrentButton: ULONG): HResult; stdcall;
  4003.     function GetCurrentAngle(out pnAnglesAvailable, pnCurrentAngle: ULONG): HResult; stdcall;
  4004.     function GetCurrentAudio(out pnStreamsAvailable, pnCurrentStream: ULONG): HResult; stdcall;
  4005.     function GetCurrentSubpicture(out pnStreamsAvailable, pnCurrentStream: ULONG;
  4006.              out pIsDisabled: BOOL): HResult; stdcall;
  4007.     function GetCurrentUOPS(out pUOP: VALID_UOP_SOMTHING_OR_OTHER): HResult; stdcall;
  4008.     function GetAllSPRMs(var pRegisterArray: TSPRMArray): HResult; stdcall;
  4009.     function GetAllGPRMs(var pRegisterArray: GPRMArray): HResult; stdcall;
  4010.     function GetAudioLanguage(nStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  4011.     function GetSubpictureLanguage(nStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  4012.     function GetTitleAttributes(nTitle: ULONG; out pATR: TDVDAtr): HResult; stdcall;
  4013.     function GetVMGAttributes(out pATR: TDVDAtr): HResult; stdcall;
  4014.     function GetCurrentVideoAttributes(out pATR: DVD_VideoATR): HResult; stdcall;
  4015.     function GetCurrentAudioAttributes(out pATR: DVD_AudioATR): HResult; stdcall;
  4016.     function GetCurrentSubpictureAttributes(out pATR: DVD_SubpictureATR): HResult; stdcall;
  4017.     function GetCurrentVolumeInfo(out pNumOfVol, pThisVolNum: ULONG;
  4018.         out pSide: TDVDDiscSide; out pNumOfTitles: ULONG): HResult; stdcall;
  4019.     function GetDVDTextInfo(out pTextManager: Byte; cbBufSize: ULONG;
  4020.              out pcbActualSize: ULONG): HResult; stdcall;
  4021.     function GetPlayerParentalLevel(out pParentalLevel, pCountryCode: ULONG): HResult; stdcall;
  4022.     function GetNumberOfChapters(ulTitle: ULONG; out pNumberOfChapters: ULONG): HResult; stdcall;
  4023.     function GetTitleParentalLevels(ulTitle: ULONG; out pParentalLevels: ULONG): HResult; stdcall;
  4024.     function GetRoot(pRoot: PChar; cbBufSize: ULONG; out pcbActualSize: ULONG): HResult; stdcall;
  4025.   end;
  4026.  
  4027.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdInfo2> _di_IDvdInfo2;'}
  4028.   {$EXTERNALSYM IDvdInfo2}
  4029.   IDvdInfo2 = interface(IUnknown)
  4030.     ['{34151510-EEC0-11D2-8201-00A0C9D74842}']
  4031.     (*** IDvdInfo2 methods ***)
  4032.     function GetCurrentDomain(out pDomain: TDVDDomain): HResult; stdcall;
  4033.     function GetCurrentLocation(out pLocation: TDVDPlaybackLocation2): HResult; stdcall;
  4034.     function GetTotalTitleTime(out pTotalTime: TDVDHMSFTimeCode; out ulTimeCodeFlags: ULONG): HResult; stdcall;
  4035.     function GetCurrentButton(out pulButtonsAvailable, pulCurrentButton: ULONG): HResult; stdcall;
  4036.     function GetCurrentAngle(out pulAnglesAvailable, pulCurrentAngle: ULONG): HResult; stdcall;
  4037.     function GetCurrentAudio(out pulStreamsAvailable, pulCurrentStream: ULONG): HResult; stdcall;
  4038.     function GetCurrentSubpicture(out pulStreamsAvailable, pulCurrentStream: ULONG; out pbIsDisabled: BOOL): HResult; stdcall;
  4039.     function GetCurrentUOPS(out pulUOPs: ULONG): HResult; stdcall;
  4040.     function GetAllSPRMs(out pRegisterArray: TSPRMArray): HResult; stdcall;
  4041.     function GetAllGPRMs(out pRegisterArray: GPRMArray): HResult; stdcall;
  4042.     function GetAudioLanguage(ulStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  4043.     function GetSubpictureLanguage(ulStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  4044.     function GetTitleAttributes(ulTitle: ULONG; out pMenu: TDVDMenuAttributes; out pTitle: TDVDTitleAttributes): HResult; stdcall;
  4045.     function GetVMGAttributes(out pATR: TDVDMenuAttributes): HResult; stdcall;
  4046.     function GetCurrentVideoAttributes(out pATR: TDVDVideoAttributes): HResult; stdcall;
  4047.     function GetAudioAttributes(ulStream: ULONG; out pATR: TDVDAudioAttributes): HResult; stdcall;
  4048.     function GetKaraokeAttributes(ulStream: ULONG; out pAttributes: TDVDKaraokeAttributes): HResult; stdcall;
  4049.     function GetSubpictureAttributes(ulStream :ULONG; out pATR: TDVDSubpictureAttributes): HResult; stdcall;
  4050.     function GetDVDVolumeInfo(out pulNumOfVolumes, pulVolume: ULONG; out pSide: TDVDDiscSide; out pulNumOfTitles: ULONG): HResult; stdcall;
  4051.     function GetDVDTextNumberOfLanguages(out pulNumOfLangs: ULONG): HResult; stdcall;
  4052.     function GetDVDTextLanguageInfo(ulLangIndex: ULONG; out pulNumOfStrings: ULONG; out pLangCode: LCID; out pbCharacterSet: TDVDTextCharSet): HResult; stdcall;
  4053.     function GetDVDTextStringAsNative(ulLangIndex, ulStringIndex: ULONG; out pbBuffer; ulMaxBufferSize: ULONG; out pulActualSize: ULONG; out pType: TDVDTextStringType): HResult; stdcall;
  4054.     function GetDVDTextStringAsUnicode(ulLangIndex, ulStringIndex: ULONG; out pchwBuffer; ulMaxBufferSize: ULONG; out pulActualSize: ULONG; out pType: TDVDTextStringType): HResult; stdcall;
  4055.     function GetPlayerParentalLevel(out pulParentalLevel: ULONG; out pbCountryCode: CountryCode): HResult; stdcall;
  4056.     function GetNumberOfChapters(ulTitle: ULONG; out pulNumOfChapters: ULONG): HResult; stdcall;
  4057.     function GetTitleParentalLevels(ulTitle: ULONG; out pulParentalLevels: ULONG): HResult; stdcall;
  4058.     function GetDVDDirectory(out pszwPath; ulMaxSize: ULONG; out pulActualSize: ULONG): HResult; stdcall;
  4059.     function IsAudioStreamEnabled(ulStreamNum: ULONG; out pbEnabled: BOOL): HResult; stdcall;
  4060.     function GetDiscID(pszwPath: LPCWSTR; out pullDiscID: Int64): HResult; stdcall;
  4061.     function GetState(out pStateData: IDvdState): HResult; stdcall;
  4062.     function GetMenuLanguages(out pLanguages: LCID; ulMaxLanguages: ULONG; out pulActualLanguages: ULONG): HResult; stdcall;
  4063.     function GetButtonAtPosition(point: Tpoint;out pulButtonIndex: ULONG): HResult; stdcall;
  4064.     function GetCmdFromEvent(lParam1: integer; out pCmdObj: IDvdCmd): HResult; stdcall;
  4065.     function GetDefaultMenuLanguage(out pLanguage: LCID): HResult; stdcall;
  4066.     function GetDefaultAudioLanguage(out pLanguage: LCID; out pAudioExtension: TDVDAudioLangExt): HResult; stdcall;
  4067.     function GetDefaultSubpictureLanguage(out pLanguage: LCID; out pSubpictureExtension: TDVDSubpictureLangExt): HResult; stdcall;
  4068.     function GetDecoderCaps(out pCaps: TDVDDecoderCaps): HResult; stdcall;
  4069.     function GetButtonRect(ulButton: ULONG; out pRect: TRect): HResult; stdcall;
  4070.     function IsSubpictureStreamEnabled(ulStreamNum: ULONG; out pbEnabled: BOOL): HResult; stdcall;
  4071.   end;
  4072.  
  4073.   {$HPPEMIT 'typedef System::DelphiInterface<IVideoFrameStep> _di_IVideoFrameStep;'}
  4074.   {$EXTERNALSYM IVideoFrameStep}
  4075.   IVideoFrameStep = interface(IUnknown)
  4076.     ['{e46a9787-2b71-444d-a4b5-1fab7b708d6a}']
  4077.     (*** IVideoFrameStep methods ***)
  4078.     function Step(dwFrames: DWORD; pStepObject: IUnKnown): HResult; stdcall;
  4079.     function CanStep(bMultiple: longint; pStepObject: IUnknown): HResult; stdcall;
  4080.     function CancelStep: HResult; stdcall;
  4081.   end;
  4082.  
  4083.  
  4084.  
  4085. const
  4086.   AM_DVD_HWDEC_PREFER = $01;   // default
  4087.   {$EXTERNALSYM AM_DVD_HWDEC_PREFER}
  4088.   AM_DVD_HWDEC_ONLY   = $02;
  4089.   {$EXTERNALSYM AM_DVD_HWDEC_ONLY}
  4090.   AM_DVD_SWDEC_PREFER = $04;
  4091.   {$EXTERNALSYM AM_DVD_SWDEC_PREFER}
  4092.   AM_DVD_SWDEC_ONLY   = $08;
  4093.   {$EXTERNALSYM AM_DVD_SWDEC_ONLY}
  4094.   AM_DVD_NOVPE        = $100;
  4095.   {$EXTERNALSYM AM_DVD_NOVPE}
  4096.   // DirectX9 Specific
  4097.   AM_DVD_VMR9_ONLY    = $800;    // only use VMR9 (otherwise fail) for rendering
  4098.   {$EXTERNALSYM AM_DVD_VMR9_ONLY}
  4099.  
  4100.   AM_DVD_STREAM_VIDEO    = $1;
  4101.   {$EXTERNALSYM AM_DVD_STREAM_VIDEO}
  4102.   AM_DVD_STREAM_AUDIO    = $2;
  4103.   {$EXTERNALSYM AM_DVD_STREAM_AUDIO}
  4104.   AM_DVD_STREAM_SUBPIC   = $4;
  4105.   {$EXTERNALSYM AM_DVD_STREAM_SUBPIC}
  4106.  
  4107. type
  4108.   AM_DVD_RENDERSTATUS = record
  4109.     hrVPEStatus: HResult;
  4110.     bDvdVolInvalid: BOOL;
  4111.     bDvdVolUnknown: BOOL;
  4112.     bNoLine21In: BOOL;
  4113.     bNoLine21Out: BOOL;
  4114.     iNumStreams: Integer;
  4115.     iNumStreamsFailed: Integer;
  4116.     dwFailedStreamsFlag: DWORD;
  4117.   end;
  4118.   {$EXTERNALSYM AM_DVD_RENDERSTATUS}
  4119.   TAMDVDRenderStatus = AM_DVD_RENDERSTATUS;
  4120.  
  4121.   {$HPPEMIT 'typedef System::DelphiInterface<IDvdGraphBuilder> _di_IDvdGraphBuilder;'}
  4122.   {$EXTERNALSYM IDvdGraphBuilder}
  4123.   IDvdGraphBuilder = interface(IUnknown)
  4124.     ['{FCC152B6-F372-11d0-8E00-00C04FD7C08B}']
  4125.     (*** IDvdGraphBuilder methods ***)
  4126.     function GetFiltergraph(out ppGB: IGraphBuilder): HResult; stdcall;
  4127.     function GetDvdInterface(const riid: TGUID; out ppvIF): HResult; stdcall;
  4128.     function RenderDvdVideoVolume(lpcwszPathName: PWideChar; dwFlags: DWORD;
  4129.              out pStatus: TAMDVDRenderStatus): HResult; stdcall;
  4130.   end;
  4131.  
  4132. //_AM_OVERLAY_NOTIFY_FLAGS
  4133. const
  4134.   AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = $1;
  4135.   {$EXTERNALSYM AM_OVERLAY_NOTIFY_VISIBLE_CHANGE}
  4136.     AM_OVERLAY_NOTIFY_SOURCE_CHANGE     = $2;
  4137.   {$EXTERNALSYM AM_OVERLAY_NOTIFY_SOURCE_CHANGE}
  4138.     AM_OVERLAY_NOTIFY_DEST_CHANGE       = $4;
  4139.   {$EXTERNALSYM AM_OVERLAY_NOTIFY_DEST_CHANGE}
  4140.  
  4141. type
  4142.   {$HPPEMIT 'typedef System::DelphiInterface<IDDrawExclModeVideoCallback> _di_IDDrawExclModeVideoCallback;'}
  4143.   {$EXTERNALSYM IDDrawExclModeVideoCallback}
  4144.   IDDrawExclModeVideoCallback = interface(IUnknown)
  4145.     ['{913c24a0-20ab-11d2-9038-00a0c9697298}']
  4146.     (*** IDDrawExclModeVideoCallback methods ***)
  4147.     function OnUpdateOverlay(bBefore: BOOL; dwFlags: DWORD; bOldVisible: BOOL;
  4148.              var prcOldSrc, prcOldDest: TRECT; bNewVisible: BOOL; var prcNewSrc, prcNewDest: TRECT): HResult; stdcall;
  4149.     function OnUpdateColorKey(var pKey: TCOLORKEY; dwColor: DWORD): HResult; stdcall;
  4150.     function OnUpdateSize(dwWidth, dwHeight, dwARWidth, dwARHeight: DWORD): HResult; stdcall;
  4151.   end;
  4152.  
  4153.   {$HPPEMIT 'typedef System::DelphiInterface<IDDrawExclModeVideo> _di_IDDrawExclModeVideo;'}
  4154.   {$EXTERNALSYM IDDrawExclModeVideo}
  4155.   IDDrawExclModeVideo = interface(IUnknown)
  4156.     ['{153ACC21-D83B-11d1-82BF-00A0C9696C8F}']
  4157.     (*** IDDrawExclModeVideo methods ***)
  4158.     function SetDDrawObject(pDDrawObject: IDirectDraw): HResult; stdcall;
  4159.     function GetDDrawObject(out ppDDrawObject: IDirectDraw; out pbUsingExternal: BOOL): HResult; stdcall;
  4160.     function SetDDrawSurface(pDDrawSurface: IDirectDrawSurface): HResult; stdcall;
  4161.     function GetDDrawSurface(out ppDDrawSurface: IDirectDrawSurface; out pbUsingExternal: BOOL): HResult; stdcall;
  4162.     function SetDrawParameters(prcSource, prcTarget: PRECT): HResult; stdcall;
  4163.     function GetNativeVideoProps(out pdwVideoWidth, pdwVideoHeight, pdwPictAspectRatioX,pdwPictAspectRatioY: DWORD): HResult; stdcall;
  4164.     function SetCallbackInterface(pCallback: IDDrawExclModeVideoCallback; dwFlags: DWORD): HResult; stdcall;
  4165.   end;
  4166.  
  4167.   {$HPPEMIT 'typedef System::DelphiInterface<IPinConnection> _di_IPinConnection;'}
  4168.   {$EXTERNALSYM IPinConnection}
  4169.   IPinConnection = interface(IUnknown)
  4170.     ['{4a9a62d3-27d4-403d-91e9-89f540e55534}']
  4171.     (*** IPinConnection methods ***)
  4172.     function DynamicQueryAccept(var pmt: TAMMediaType): HResult; stdcall;
  4173.     function NotifyEndOfStream(hNotifyEvent: THandle): HResult; stdcall;
  4174.     function IsEndPin: HResult; stdcall;
  4175.     function DynamicDisconnect: HResult; stdcall;
  4176.   end;
  4177.  
  4178.   {$HPPEMIT 'typedef System::DelphiInterface<IPinFlowControl> _di_IPinFlowControl;'}
  4179.   {$EXTERNALSYM IPinFlowControl}
  4180.   IPinFlowControl = interface(IUnknown)
  4181.     ['{c56e9858-dbf3-4f6b-8119-384af2060deb}']
  4182.     (*** IPinFlowControl methods ***)
  4183.     function Block(dwBlockFlags: DWORD; hEvent: THandle): HResult; stdcall;
  4184.   end;
  4185.  
  4186.   {$HPPEMIT 'typedef System::DelphiInterface<IGraphConfigCallback> _di_IGraphConfigCallback;'}
  4187.   {$EXTERNALSYM IGraphConfigCallback}
  4188.   IGraphConfigCallback = interface(IUnknown)
  4189.     ['{ade0fd60-d19d-11d2-abf6-00a0c905f375}']
  4190.     (*** IGraphConfigCallback methods ***)
  4191.     function Reconfigure(var pvContext; dwFlags: DWORD): HResult; stdcall;
  4192.   end;
  4193.  
  4194. const
  4195.   //_AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
  4196.   AM_PIN_FLOW_CONTROL_BLOCK    = $1;
  4197.   {$EXTERNALSYM AM_PIN_FLOW_CONTROL_BLOCK}
  4198.  
  4199.   //_AM_GRAPH_CONFIG_RECONNECT_FLAGS
  4200.   AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT              = $1;
  4201.   {$EXTERNALSYM AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT}
  4202.     AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS      = $2;
  4203.   {$EXTERNALSYM AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS}
  4204.     AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = $4;
  4205.   {$EXTERNALSYM AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS}
  4206.  
  4207.   //_AM_FILTER_FLAGS
  4208.   AM_FILTER_FLAGS_REMOVABLE    = $1;
  4209.   {$EXTERNALSYM AM_FILTER_FLAGS_REMOVABLE}
  4210.  
  4211.   //_REM_FILTER_FLAGS
  4212.   REMFILTERF_LEAVECONNECTED    = $1;
  4213.   {$EXTERNALSYM REMFILTERF_LEAVECONNECTED}
  4214.  
  4215. type
  4216.   {$HPPEMIT 'typedef System::DelphiInterface<IGraphConfig> _di_IGraphConfig;'}
  4217.   {$EXTERNALSYM IGraphConfig}
  4218.   IGraphConfig = interface(IUnknown)
  4219.     ['{03A1EB8E-32BF-4245-8502-114D08A9CB88}']
  4220.     (*** IGraphConfig methods ***)
  4221.     function Reconnect(pOutputPin, pInputPin: IPin; pmtFirstConnection: PAMMediaType;
  4222.              pUsingFilter: IBaseFilter; hAbortEvent: THandle; dwFlags: DWORD): HResult; stdcall;
  4223.     function Reconfigure(pCallback: IGraphConfigCallback; var pvContext;
  4224.              dwFlags: DWORD; hAbortEvent: THandle): HResult; stdcall;
  4225.     function AddFilterToCache(pFilter: IBaseFilter): HResult; stdcall;
  4226.     function EnumCacheFilter(out pEnum: IEnumFilters): HResult; stdcall;
  4227.     function RemoveFilterFromCache(pFilter: IBaseFilter): HResult; stdcall;
  4228.     function GetStartTime(out prtStart: TReferenceTime): HResult; stdcall;
  4229.     function PushThroughData(pOutputPin: IPin; pConnection: IPinConnection; hEventAbort: PHANDLE): HResult; stdcall;
  4230.     function SetFilterFlags(pFilter: IBaseFilter; dwFlags: DWORD): HResult; stdcall;
  4231.     function GetFilterFlags(pFilter: IBaseFilter; out pdwFlags: DWORD): HResult; stdcall;
  4232.     function RemoveFilterEx(pFilter: IBaseFilter; Flags: DWORD): HResult; stdcall;
  4233.   end;
  4234.  
  4235. // Filter Chain Definition
  4236. // 
  4237. //  Filter chains have the following properties:
  4238. // 
  4239. // - Each filter chain has one or more filters.
  4240. // 
  4241. // - Each filter in a filter chain has at most one connected input pin and one 
  4242. //   connected output pin.  For example, filters A, C, D, F, G, H, I, J and K
  4243. //   (see the diagram below) can be in a filter chain because each one has at 
  4244. //   most one connected input pin and one connected output pin.
  4245. // 
  4246. // - Any filter in a chain is reachable by any other filter in the chain.  
  4247. //   For example, in the filter chain F-G-H, F can reach H by following the F-
  4248. //   G connection to G and then following the G-H connection to H.  Filters F 
  4249. //   and J cannot be in the same filter chain because J is not reachable from 
  4250. //   F.  Anotherwords, there no sequence of connected filters between F and J.
  4251. //
  4252. // - The start filter is the only filter in the filter chain who's input 
  4253. //   pin is not connected to another filter in the chain.  For instance, F is 
  4254. //   the start filter in F-G-H because F's input pin is connected to E and E 
  4255. //   is not in the filter chain.  G's input pin is connected to F and H's is 
  4256. //   connected to G.  Both F and G are in the filter chain.
  4257. //
  4258. // - The end filter is the only filter in the filter chain who's output pin 
  4259. //   is not connected to another filter in the chain.  For example, in the 
  4260. //   filter chain J-K, K is the end filter because K's output pin is 
  4261. //   connected to L.  J's output pin is connected to K and K is in the J-K 
  4262. //   filter chain.
  4263. //
  4264. //
  4265. //            --->|---|    |---|--->                   
  4266. //                | C |--->| D |
  4267. // |---|    |---|--->|---|    |---|--->|---|    |---|    |---|    |---|
  4268. // | A |--->| B |                      | E |--->| F |--->| G |--->| H |
  4269. // |---|    |---|--->|---|------------>|---|    |---|    |---|    |---|
  4270. //                   | I |--->
  4271. //               --->|---|--->
  4272. // 
  4273. // |---|    |---|    |---|
  4274. // | J |--->| K |--->| L |
  4275. // |---|    |---|    |---|
  4276. // 
  4277. //              Example Filter Graph
  4278. // 
  4279. // 
  4280. // 
  4281. // IFilterChain Methods Documentation
  4282. // 
  4283. // HResult StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4284. // 
  4285. //      StartChain() switches all the filters in the chain into the running state
  4286. // If one of the filters will not switch to the running state, then all the filters 
  4287. // in the chain are stopped.  This method can only be called if the filter graph is 
  4288. // running.
  4289. // 
  4290. // Parameters:
  4291. // - pStartFilter [in]
  4292. //      The first filter in the filter chain.  Note that this can be the same 
  4293. // filter as pEndFilter .
  4294. // 
  4295. // - pEndFilter [in]
  4296. //      The last filter in the filter chain.  Note that this can be the same 
  4297. // filter as pStartFilter.  If pEndFilter is NULL then the filter chain extends
  4298. // from pStartFilter to the last downstream filter which can be in a filter chain.
  4299. // For example, IFilterChain::StartChain( A, NULL ) would start filter A.   
  4300. // IFilterChain::StartChain( G, NULL ) would start filters G and H.  
  4301. // IFilterChain::StartChain( C, NULL ) would start filters C and D.  Finally, 
  4302. // IFilterChain::StartChain( E, NULL ) would fail because E cannot be in a 
  4303. // filter chain (see the Filter Chain Definition section for more information).
  4304. // 
  4305. // Return Value:
  4306. //      An HResult.  See the Direct Show SDK and COM SDK documentation for more 
  4307. // information on interpreting HRESULTs.
  4308. // 
  4309. // 
  4310. // 
  4311. // 
  4312. // HResult PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4313. // 
  4314. //      PauseChain() switches all the filters in a chain to the paused state.  If it cannot
  4315. // switch one of the filtres into the paused state, all the filters in the chain are
  4316. // stopped.  This method can only be called if the filter graph is paused.
  4317. // 
  4318. // Parameters:
  4319. // - pStartFilter [in]
  4320. //      The first filter in the filter chain.  Note that this can be the same 
  4321. //  filter as pEndFilter . 
  4322. // 
  4323. // - pEndFilter [in]
  4324. //      The last filter in the filter chain.  Note that this can be the same
  4325. // filter as pStartFilter.  If pEndFilter is NULL then the filter chain extends 
  4326. // from pStartFilter to the last downstream filter which can be in a filter chain.
  4327. // For example, IFilterChain::StopChain( A, NULL ) would stop filter A.   
  4328. // IFilterChain::StopChain( G, NULL ) would stop filters G and H.  
  4329. // IFilterChain::StopChain( C, NULL ) would stop filters C and D.  Finally, 
  4330. // IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter 
  4331. // chain (see the Filter Chain Definition section for more information).
  4332. // 
  4333. // 
  4334. // Return Value:
  4335. //      An HResult.  See the Direct Show SDK and COM SDK documentation for more 
  4336. // information on interpreting HRESULTs.
  4337. // 
  4338. // 
  4339. // 
  4340. // HResult StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4341. // 
  4342. //  StopChain() switches all the filters in chain to the stopped state.
  4343. //
  4344. // Parameters:
  4345. // - pStartFilter [in]
  4346. //      The first filter in the filter chain.  Note that this can be the same 
  4347. //  filter as pEndFilter . 
  4348. // 
  4349. // - pEndFilter [in]
  4350. //      The last filter in the filter chain.  Note that this can be the same 
  4351. // filter as pStartFilter.  If pEndFilter is NULL then the filter chain extends 
  4352. // from pStartFilter to the last downstream filter which can be in a filter chain.
  4353. // For example, IFilterChain::StopChain( A, NULL ) would stop filter A.   
  4354. // IFilterChain::StopChain( G, NULL ) would stop filters G and H.  
  4355. // IFilterChain::StopChain( C, NULL ) would stop filters C and D.  Finally,
  4356. // IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter 
  4357. // chain (see the Filter Chain Definition section for more information).
  4358. // 
  4359. // 
  4360. // Return Value:
  4361. //      An HResult.  See the Direct Show SDK and COM SDK documentation for more 
  4362. // information on interpreting HRESULTs.
  4363. // 
  4364. // 
  4365. // 
  4366. // 
  4367. // 
  4368. // HResult RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4369. // 
  4370. //      RemoveChain() removes every filter in a chain from the filter graph.  
  4371. // The filters can be removed while the graph is running.
  4372. // 
  4373. // Parameters:
  4374. // - pStartFilter [in]
  4375. //      The first filter in the filter chain.  Note that this can be the same 
  4376. // filter as pEndFilter .
  4377. // 
  4378. // - pEndFilter [in]
  4379. //      The last filter in the filter chain.  Note that this can be the same 
  4380. // filter as pStartFilter.  If pEndFilter is NULL then the filter chain 
  4381. // extends from pStartFilter to the last downstream filter which can be in a 
  4382. // filter chain.  For example, IFilterChain::RemoveChain( A, NULL ) would remove 
  4383. // filter A from the filter graph.   IFilterChain::RemoveChain( G, NULL ) would 
  4384. // remove filters G and H.  IFilterChain::RemoveChain( C, NULL ) would remove 
  4385. // filters C and D.  Finally, IFilterChain::RemoveChain( E, NULL ) would fail 
  4386. // because E cannot be in a filter chain (see the Filter Chain Definition
  4387. // section for more information).
  4388. // 
  4389. //
  4390. // Return Value:
  4391. //      An HResult.  See the Direct Show SDK and COM SDK documentation for more 
  4392. // information on interpreting HRESULTs.
  4393. // 
  4394. // 
  4395.  
  4396.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterChain> _di_IFilterChain;'}
  4397.   {$EXTERNALSYM IFilterChain}
  4398.   IFilterChain = interface(IUnknown)
  4399.     ['{DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29}']
  4400.     (*** IFilterChain methods ***)
  4401.     function StartChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4402.     function PauseChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4403.     function StopChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4404.     function RemoveChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4405.   end;
  4406.  
  4407. ///////////////////////////////////////////////////////////////////////////////
  4408. //
  4409. // Allocator Presenter interfaces
  4410. //
  4411. ///////////////////////////////////////////////////////////////////////////////
  4412. {$IFDEF ENABLEVMR7}
  4413. //=====================================================================
  4414. //
  4415. // IVMRImagePresenter
  4416. //
  4417. //=====================================================================
  4418. type
  4419.   VMRPresentationFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  4420.   {$EXTERNALSYM VMRPresentationFlags}
  4421.   const
  4422.     VMRSample_SyncPoint       = $00000001;
  4423.     {$EXTERNALSYM VMRSample_SyncPoint}
  4424.     VMRSample_Preroll         = $00000002;
  4425.     {$EXTERNALSYM VMRSample_Preroll}
  4426.     VMRSample_Discontinuity   = $00000004;
  4427.     {$EXTERNALSYM VMRSample_Discontinuity}
  4428.     VMRSample_TimeValid       = $00000008;
  4429.     {$EXTERNALSYM VMRSample_TimeValid}
  4430.  
  4431.  
  4432. type
  4433.   PVMRPresentationInfo = ^TVMRPresentationInfo;
  4434.   tagVMRPRESENTATIONINFO = record
  4435.     dwFlags             : DWORD;
  4436.     lpSurf              : IDIRECTDRAWSURFACE7;
  4437.     rtStart             : TReferenceTime;
  4438.     rtEnd               : TReferenceTime;
  4439.     szAspectRatio       : TSIZE;
  4440.     rcSrc               : TRECT;
  4441.     rcDst               : TRECT;
  4442.     dwTypeSpecificFlags : DWORD;
  4443.     dwInterlaceFlags    : DWORD;
  4444.   end;
  4445.   {$EXTERNALSYM tagVMRPRESENTATIONINFO}
  4446.   VMRPRESENTATIONINFO = tagVMRPRESENTATIONINFO;
  4447.   {$EXTERNALSYM VMRPRESENTATIONINFO}
  4448.   TVMRPresentationInfo = tagVMRPRESENTATIONINFO;
  4449.  
  4450.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenter> _di_IVMRImagePresenter;'}
  4451.   {$EXTERNALSYM IVMRImagePresenter}
  4452.   IVMRImagePresenter = interface(IUnknown)
  4453.     ['{CE704FE7-E71E-41fb-BAA2-C4403E1182F5}']
  4454.     (*** IVMRImagePresenter methods ***)
  4455.     function StartPresenting(dwUserID: DWORD): HResult; stdcall;
  4456.     function StopPresenting(dwUserID: DWORD): HResult; stdcall;
  4457.     function PresentImage(dwUserID: DWORD; lpPresInfo: PVMRPRESENTATIONINFO): HResult; stdcall;
  4458.   end;
  4459. {$ENDIF}
  4460.  
  4461. {$IFDEF ENABLEVMR7}
  4462. //=====================================================================
  4463. //
  4464. // IVMRSurfaceAllocator
  4465. //
  4466. //=====================================================================
  4467.  
  4468. const
  4469.   AMAP_PIXELFORMAT_VALID  = $01;
  4470.   {$EXTERNALSYM AMAP_PIXELFORMAT_VALID}
  4471.   AMAP_3D_TARGET          = $02;
  4472.   {$EXTERNALSYM AMAP_3D_TARGET}
  4473.   AMAP_ALLOW_SYSMEM       = $04;
  4474.   {$EXTERNALSYM AMAP_ALLOW_SYSMEM}
  4475.   AMAP_FORCE_SYSMEM       = $08;
  4476.   {$EXTERNALSYM AMAP_FORCE_SYSMEM}
  4477.   AMAP_DIRECTED_FLIP      = $10;
  4478.   {$EXTERNALSYM AMAP_DIRECTED_FLIP}
  4479.   AMAP_NO_EXTRA_BUFFERS   = $20;
  4480.   {$EXTERNALSYM AMAP_NO_EXTRA_BUFFERS}
  4481.  
  4482. type
  4483.   PVMRAllocationInfo = ^TVMRAllocationInfo;
  4484.   tagVMRALLOCATIONINFO = record
  4485.     dwFlags          : DWORD;
  4486.     lpHdr            : PBITMAPINFOHEADER;
  4487.     lpPixFmt         : PDDPIXELFORMAT;
  4488.     szAspectRatio    : TSIZE;
  4489.     dwMinBuffers     : DWORD;
  4490.     dwMaxBuffers     : DWORD;
  4491.     dwInterlaceFlags : DWORD;
  4492.     szNativeSize     : TSIZE ;
  4493.   end;
  4494.   {$EXTERNALSYM tagVMRALLOCATIONINFO}
  4495.   VMRALLOCATIONINFO = tagVMRALLOCATIONINFO;
  4496.   {$EXTERNALSYM VMRALLOCATIONINFO}
  4497.   TVMRAllocationInfo = tagVMRALLOCATIONINFO;
  4498.  
  4499.   IVMRSurfaceAllocatorNotify = interface;
  4500.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurfaceAllocator> _di_IVMRSurfaceAllocator;'}
  4501.   {$EXTERNALSYM IVMRSurfaceAllocator}
  4502.   IVMRSurfaceAllocator = interface(IUnknown)
  4503.     ['{31ce832e-4484-458b-8cca-f4d7e3db0b52}']
  4504.     (*** IVMRSurfaceAllocator methods ***)
  4505.     function AllocateSurface(dwUserID: DWORD; lpAllocInfo: PVMRALLOCATIONINFO;
  4506.       var lpdwActualBuffers: DWORD; out lplpSurface: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4507.     function FreeSurface(dwID: DWORD): HResult; stdcall;
  4508.     function PrepareSurface(dwUserID: DWORD; lpSurface: IDIRECTDRAWSURFACE7;
  4509.       dwSurfaceFlags: DWORD): HResult; stdcall;
  4510.     function AdviseNotify(lpIVMRSurfAllocNotify: IVMRSurfaceAllocatorNotify): HResult; stdcall;
  4511.   end;
  4512. {$ENDIF}
  4513.  
  4514. {$IFDEF ENABLEVMR7}
  4515. //=====================================================================
  4516. //
  4517. // IVMRSurfaceAllocatorNotify
  4518. //
  4519. //=====================================================================
  4520.  
  4521.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurfaceAllocatorNotify> _di_IVMRSurfaceAllocatorNotify;'}
  4522.   {$EXTERNALSYM IVMRSurfaceAllocatorNotify}
  4523.   IVMRSurfaceAllocatorNotify = interface(IUnknown)
  4524.     ['{aada05a8-5a4e-4729-af0b-cea27aed51e2}']
  4525.     (*** IVMRSurfaceAllocatorNotify methods ***)
  4526.     function AdviseSurfaceAllocator(dwUserID: DWORD; lpIVRMSurfaceAllocator: IVMRSurfaceAllocator): HResult; stdcall;
  4527.     function SetDDrawDevice(lpDDrawDevice: IDirectDraw7; hMonitor: HMONITOR): HResult; stdcall;
  4528.     function ChangeDDrawDevice(lpDDrawDevice: IDIRECTDRAW7; hMonitor: HMONITOR): HResult; stdcall;
  4529.     function RestoreDDrawSurfaces: HResult; stdcall;
  4530.     function NotifyEvent(EventCode: LongInt; Param1, Param2: LongInt): HResult; stdcall;
  4531.     function SetBorderColor(clrBorder: COLORREF): HResult; stdcall;
  4532.   end;
  4533. {$ENDIF}
  4534. ///////////////////////////////////////////////////////////////////////////////
  4535. //
  4536. // Application control and configuration interfaces
  4537. //
  4538. ///////////////////////////////////////////////////////////////////////////////
  4539.  
  4540. //=====================================================================
  4541. //
  4542. // IVMRWindowlessControl
  4543. //
  4544. //=====================================================================
  4545.   VMR_ASPECT_RATIO_MODE = (
  4546.     VMR_ARMODE_NONE,
  4547.     VMR_ARMODE_LETTER_BOX
  4548.   );
  4549.   {$EXTERNALSYM VMR_ASPECT_RATIO_MODE}
  4550.   TVMRAspectRatioMode = VMR_ASPECT_RATIO_MODE;
  4551.  
  4552. {$IFDEF ENABLEVMR7}
  4553.  
  4554.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRWindowlessControl> _di_IVMRWindowlessControl;'}
  4555.   {$EXTERNALSYM IVMRWindowlessControl}
  4556.   IVMRWindowlessControl = interface(IUnknown)
  4557.     ['{0eb1088c-4dcd-46f0-878f-39dae86a51b7}']
  4558.     (*** IVMRWindowlessControl methods ***)
  4559.     //////////////////////////////////////////////////////////
  4560.     // Video size and position information
  4561.     //////////////////////////////////////////////////////////
  4562.     function GetNativeVideoSize(out lpWidth, lpHeight, lpARWidth, lpARHeight: LongInt): HResult; stdcall;
  4563.     function GetMinIdealVideoSize(out lpWidth, lpHeight: longint): HResult; stdcall;
  4564.     function GetMaxIdealVideoSize(out lpWidth, lpHeight: longint): HResult; stdcall;
  4565.     function SetVideoPosition(lpSRCRect, lpDSTRect: PRECT): HResult; stdcall;
  4566.     function GetVideoPosition(out lpSRCRect, lpDSTRect: TRECT): HResult; stdcall;
  4567.     function GetAspectRatioMode(out lpAspectRatioMode: DWORD): HResult; stdcall;
  4568.     function SetAspectRatioMode(AspectRatioMode: TVMRAspectRatioMode): HResult; stdcall;
  4569.     //////////////////////////////////////////////////////////
  4570.     // Display and clipping management
  4571.     //////////////////////////////////////////////////////////
  4572.     function SetVideoClippingWindow(hwnd: HWND): HResult; stdcall;
  4573.     function RepaintVideo(hwnd: HWND; hdc: HDC): HResult; stdcall;
  4574.     function DisplayModeChanged: HResult; stdcall;
  4575.     //////////////////////////////////////////////////////////
  4576.     // GetCurrentImage
  4577.     //
  4578.     // Returns the current image being displayed.  This images
  4579.     // is returned in the form of packed Windows DIB.
  4580.     //
  4581.     // GetCurrentImage can be called at any time, also
  4582.     // the caller is responsible for free the returned memory
  4583.     // by calling CoTaskMemFree.
  4584.     //
  4585.     // Excessive use of this function will degrade video
  4586.     // playback performed.
  4587.     //////////////////////////////////////////////////////////
  4588.     function GetCurrentImage(out lpDib): HResult; stdcall;
  4589.     //////////////////////////////////////////////////////////
  4590.     // Border Color control
  4591.     //
  4592.     // The border color is color used to fill any area of the
  4593.     // the destination rectangle that does not contain video.
  4594.     // It is typically used in two instances.  When the video
  4595.     // straddles two monitors and when the VMR is trying
  4596.     // to maintain the aspect ratio of the movies by letter
  4597.     // boxing the video to fit within the specified destination
  4598.     // rectangle. See SetAspectRatioMode above.
  4599.     //////////////////////////////////////////////////////////
  4600.     function SetBorderColor(Clr: COLORREF): HResult; stdcall;
  4601.     function GetBorderColor(out lpClr: COLORREF): HResult; stdcall;
  4602.     //////////////////////////////////////////////////////////
  4603.     // Color key control only meaningful when the VMR is using
  4604.     // and overlay
  4605.     //////////////////////////////////////////////////////////
  4606.     function SetColorKey(Clr: COLORREF): HResult; stdcall;
  4607.     function GetColorKey(out lpClr: COLORREF): HResult; stdcall;
  4608.   end;
  4609. {$ENDIF}
  4610. {$IFDEF ENABLEVMR7}
  4611. //=====================================================================
  4612. //
  4613. // IVMRMixerControl
  4614. //
  4615. //=====================================================================
  4616.  
  4617. //
  4618. //  Normalized relative rectangle
  4619. //  Coordinate ranges: x=[0...1) y=[0...1)
  4620. //  Where the output window goes from 0,0 (closed inclusive lower bound)
  4621. //  to 1,1 (open exclusive upper bound)
  4622. //
  4623.  
  4624. const
  4625.   MixerPref_NoDecimation           = $1;
  4626.   {$EXTERNALSYM MixerPref_NoDecimation}
  4627.   MixerPref_DecimateOutput         = $2;
  4628.   {$EXTERNALSYM MixerPref_DecimateOutput}
  4629.   MixerPref_DecimateMask           = $f;
  4630.   {$EXTERNALSYM MixerPref_DecimateMask}
  4631.   MixerPref_BiLinearFiltering       = $10;
  4632.   {$EXTERNALSYM MixerPref_BiLinearFiltering}
  4633.   MixerPref_PointFiltering         = $20;
  4634.   {$EXTERNALSYM MixerPref_PointFiltering}
  4635.   MixerPref_FilteringMask           = $f0;
  4636.   {$EXTERNALSYM MixerPref_FilteringMask}
  4637.   MixerPref_RenderTargetRGB         = $100;
  4638.   {$EXTERNALSYM MixerPref_RenderTargetRGB}
  4639.   MixerPref_RenderTargetYUV420     = $200;
  4640.   {$EXTERNALSYM MixerPref_RenderTargetYUV420}
  4641.   MixerPref_RenderTargetYUV422     = $400;
  4642.   {$EXTERNALSYM MixerPref_RenderTargetYUV422}
  4643.   MixerPref_RenderTargetYUV444     = $800;
  4644.   {$EXTERNALSYM MixerPref_RenderTargetYUV444}
  4645.   MixerPref_RenderTargetReserved = $f000;
  4646.   {$EXTERNALSYM MixerPref_RenderTargetReserved}
  4647.   MixerPref_RenderTargetMask       = $ff00;
  4648.   {$EXTERNALSYM MixerPref_RenderTargetMask}
  4649.  
  4650. type
  4651.   PNormalizedRect = ^TNormalizedRect;
  4652.   _NORMALIZEDRECT = record
  4653.     left   : Single;
  4654.     top    : Single;
  4655.     right  : Single;
  4656.     bottom : Single;
  4657.   end;
  4658.   {$EXTERNALSYM _NORMALIZEDRECT}
  4659.   NORMALIZEDRECT = _NORMALIZEDRECT;
  4660.   {$EXTERNALSYM NORMALIZEDRECT}
  4661.   TNormalizedRect = _NORMALIZEDRECT;
  4662.  
  4663.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRMixerControl> _di_IVMRMixerControl;'}
  4664.   {$EXTERNALSYM IVMRMixerControl}
  4665.   IVMRMixerControl = interface(IUnknown)
  4666.     ['{1c1a17b0-bed0-415d-974b-dc6696131599}']
  4667.     (*** IVMRMixerControl methods ***)
  4668.     //Alpha = Source alpha premultication factor (global alpha for source)
  4669.     function SetAlpha(dwStreamID: DWORD; Alpha: single): HResult; stdcall;
  4670.     function GetAlpha(dwStreamID: DWORD; out pAlpha: single): HResult; stdcall;
  4671.     function SetZOrder(dwStreamID, dwZ: DWORD): HResult; stdcall;
  4672.     function GetZOrder(dwStreamID: DWORD; out pZ: DWORD): HResult; stdcall;
  4673.     function SetOutputRect(dwStreamID: DWORD; const pRect: TNORMALIZEDRECT): HResult; stdcall;
  4674.     function GetOutputRect(dwStreamID: DWORD; out pRect: TNORMALIZEDRECT): HResult; stdcall;
  4675.     function SetBackgroundClr(ClrBkg: COLORREF): HResult; stdcall;
  4676.     function GetBackgroundClr(out lpClrBkg: COLORREF): HResult; stdcall;
  4677.     function SetMixingPrefs(dwMixerPrefs: DWORD): HResult; stdcall;
  4678.     function GetMixingPrefs(pdwMixerPrefs: DWORD): HResult; stdcall;
  4679.   end;
  4680. {$ENDIF}
  4681.  
  4682. {$IFDEF ENABLEVMR7}
  4683. ///////////////////////////////////////////////////////////////////////////////
  4684. //
  4685. // VMR Multimon configuration interface
  4686. //
  4687. ///////////////////////////////////////////////////////////////////////////////
  4688.   tagVMRGUID = record
  4689.     pGUID : PGUID; // is NULL if the default DDraw device
  4690.     GUID  : TGUID; // otherwise points to this GUID
  4691.   end;
  4692.   {$EXTERNALSYM tagVMRGUID}
  4693.   VMRGUID = tagVMRGUID;
  4694.   {$EXTERNALSYM VMRGUID}
  4695.   TVMRGuid = tagVMRGUID;
  4696.  
  4697.   tagVMRMONITORINFO = record
  4698.     guid            : VMRGUID;
  4699.     rcMonitor       : TRECT;
  4700.     hMon            : HMONITOR;
  4701.     dwFlags         : DWORD;    // described in MONITORINFOEX, currently only MONITORINFOF_PRIMARY
  4702.     szDevice        : array[0..31] of wchar;
  4703.     szDescription   : array[0..255] of wchar;
  4704.     liDriverVersion : int64;
  4705.     dwVendorId      : DWORD;
  4706.     dwDeviceId      : DWORD;
  4707.     dwSubSysId      : DWORD;
  4708.     dwRevision      : DWORD;
  4709.   end;
  4710.   {$EXTERNALSYM tagVMRMONITORINFO}
  4711.   VMRMONITORINFO = tagVMRMONITORINFO;
  4712.   {$EXTERNALSYM VMRMONITORINFO}
  4713.   TVMRMonitorInfo = tagVMRMONITORINFO;
  4714.  
  4715.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRMonitorConfig> _di_IVMRMonitorConfig;'}
  4716.   {$EXTERNALSYM IVMRMonitorConfig}
  4717.   IVMRMonitorConfig = interface(IUnknown)
  4718.     ['{9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce}']
  4719.     (*** IVMRMonitorConfig methods ***)
  4720.     // Use this method on a Multi-Monitor system to specify to the
  4721.     // mixer filter which Direct Draw driver should be used when connecting
  4722.     // to an upstream decoder filter.
  4723.     function SetMonitor(const pGUID: TVMRGUID): HResult; stdcall;
  4724.     // Use this method to determine the direct draw object that will be used when
  4725.     // connecting the  mixer filter to an upstream decoder filter.
  4726.     function GetMonitor(out pGUID: TVMRGUID): HResult; stdcall;
  4727.     // Use this method on a multi-monitor system to specify to the
  4728.     //  mixer filter the default Direct Draw device to use when
  4729.     // connecting to an upstream filter.  The default direct draw device
  4730.     // can be overriden for a particular connection by SetMonitor method
  4731.     // described above.
  4732.     function SetDefaultMonitor(const pGUID: TVMRGUID): HResult; stdcall;
  4733.     // Use this method on a multi-monitor system to determine which
  4734.     // is the default direct draw device the overlay mixer filter
  4735.     // will  use when connecting to an upstream filter.
  4736.     function GetDefaultMonitor(out pGUID: TVMRGUID): HResult; stdcall;
  4737.     // Use this method to get a list of Direct Draw device GUIDs and thier
  4738.     // associated monitor information that the mixer can use when
  4739.     // connecting to an upstream decoder filter.  Passing down a NULL pInfo
  4740.     // parameter allows the app to determine the required array size (returned
  4741.     // in pdwNumDevices).  Otherwise, dwNumDevices returns the actual
  4742.     // number of devices retrieved.
  4743.     function GetAvailableMonitors(out pInfo: TVMRMONITORINFO; //if it fail try : "out pInfo" only /hg
  4744.       dwMaxInfoArraySize: DWORD;                              // in array members
  4745.       out pdwNumDevices: DWORD): HResult; stdcall;            // actual number of devices retrieved
  4746.   end;
  4747. {$ENDIF}
  4748.  
  4749. {$IFDEF ENABLEVMR7}
  4750. //=====================================================================
  4751. //
  4752. // IVMRImageCompositor
  4753. //
  4754. //=====================================================================
  4755.  
  4756. type
  4757.   PVMRVideoStreamInfo = ^TVMRVideoStreamInfo;
  4758.   _VMRVIDEOSTREAMINFO = record
  4759.     pddsVideoSurface  : IDIRECTDRAWSURFACE7;
  4760.     dwWidth           : DWORD;
  4761.     dwHeight          : DWORD;
  4762.     dwStrmID          : DWORD;
  4763.     fAlpha            : single;
  4764.     ddClrKey          : TDDCOLORKEY;
  4765.     rNormal           : TNORMALIZEDRECT;
  4766.   end;
  4767.   {$EXTERNALSYM _VMRVIDEOSTREAMINFO}
  4768.   VMRVIDEOSTREAMINFO = _VMRVIDEOSTREAMINFO;
  4769.   {$EXTERNALSYM VMRVIDEOSTREAMINFO}
  4770.   TVMRVideoStreamInfo = _VMRVIDEOSTREAMINFO;
  4771.  
  4772.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRImageCompositor> _di_IVMRImageCompositor;'}
  4773.   {$EXTERNALSYM IVMRImageCompositor}
  4774.   IVMRImageCompositor = interface(IUnknown)
  4775.     ['{7a4fb5af-479f-4074-bb40-ce6722e43c82}']
  4776.     (*** IVMRImageCompositor methods ***)
  4777.     function InitCompositionTarget(pD3DDevice: IUnknown; pddsRenderTarget: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4778.     function TermCompositionTarget(pD3DDevice: IUnknown; pddsRenderTarget: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4779.     function SetStreamMediaType(dwStrmID: DWORD; pmt: PAMMediaType; fTexture: BOOL): HResult; stdcall;
  4780.     function CompositeImage(pD3DDevice: IUnknown; pddsRenderTarget: IDIRECTDRAWSURFACE7;
  4781.                pmtRenderTarget: PAMMediaType; rtStart, rtEnd: TReferenceTime;
  4782.                dwClrBkGnd: DWORD; pVideoStreamInfo: PVMRVIDEOSTREAMINFO; cStreams: cardinal): HResult; stdcall;
  4783.   end;
  4784. {$ENDIF}
  4785.  
  4786. {$IFDEF ENABLEVMR7}
  4787. ///////////////////////////////////////////////////////////////////////////////
  4788. //
  4789. // VMR Filter configuration interfaces
  4790. //
  4791. ///////////////////////////////////////////////////////////////////////////////
  4792.  
  4793. const
  4794.   RenderPrefs_RestrictToInitialMonitor     = $00000000; // not implemented do not use
  4795.   {$EXTERNALSYM RenderPrefs_RestrictToInitialMonitor}
  4796.   RenderPrefs_ForceOffscreen               = $00000001;
  4797.   {$EXTERNALSYM RenderPrefs_ForceOffscreen}
  4798.   RenderPrefs_ForceOverlays                = $00000002; // fail if no overlays
  4799.   {$EXTERNALSYM RenderPrefs_ForceOverlays}
  4800.   RenderPrefs_AllowOverlays                = $00000000; // overlay used by default
  4801.   {$EXTERNALSYM RenderPrefs_AllowOverlays}
  4802.   RenderPrefs_AllowOffscreen               = $00000000; // offscreen used if no overlay
  4803.   {$EXTERNALSYM RenderPrefs_AllowOffscreen}
  4804.   RenderPrefs_DoNotRenderColorKeyAndBorder = $00000008; // app paints color keys
  4805.   {$EXTERNALSYM RenderPrefs_DoNotRenderColorKeyAndBorder}
  4806.   RenderPrefs_Reserved                     = $00000010; // note: used to be RestrictToInitialMonitor
  4807.   {$EXTERNALSYM RenderPrefs_Reserved}
  4808.   RenderPrefs_PreferAGPMemWhenMixing         = $00000020;
  4809.   {$EXTERNALSYM RenderPrefs_PreferAGPMemWhenMixing}
  4810.   RenderPrefs_Mask                         = $0000003f; // OR of all above flags
  4811.   {$EXTERNALSYM RenderPrefs_Mask}
  4812.  
  4813.   VMRMode_Windowed                         = $00000001;
  4814.   {$EXTERNALSYM VMRMode_Windowed}
  4815.   VMRMode_Windowless                       = $00000002;
  4816.   {$EXTERNALSYM VMRMode_Windowless}
  4817.   VMRMode_Renderless                       = $00000004;
  4818.   {$EXTERNALSYM VMRMode_Renderless}
  4819.   VMRMode_Mask                             = $00000007; // OR of all above flags
  4820.   {$EXTERNALSYM VMRMode_Mask}
  4821.                                                         // not a valid value to pass to SetRenderMode
  4822.  
  4823.   MAX_NUMBER_OF_STREAMS    = 16;
  4824.   {$EXTERNALSYM MAX_NUMBER_OF_STREAMS}
  4825.  
  4826. type
  4827.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRFilterConfig> _di_IVMRFilterConfig;'}
  4828.   {$EXTERNALSYM IVMRFilterConfig}
  4829.   IVMRFilterConfig = interface(IUnknown)
  4830.     ['{9e5530c5-7034-48b4-bb46-0b8a6efc8e36}']
  4831.     (*** IVMRFilterConfig methods ***)
  4832.     function SetImageCompositor(lpVMRImgCompositor: IVMRImageCompositor): HResult; stdcall;
  4833.     function SetNumberOfStreams(dwMaxStreams: DWORD): HResult; stdcall;
  4834.     function GetNumberOfStreams(out pdwMaxStreams: DWORD): HResult; stdcall;
  4835.     function SetRenderingPrefs(dwRenderFlags: DWORD): HResult; stdcall; // a combination of VMRRenderingPrefFlags
  4836.     function GetRenderingPrefs(out pdwRenderFlags: DWORD): HResult; stdcall;
  4837.     function SetRenderingMode(Mode: DWORD): HResult; stdcall; // a combination of VMRMode
  4838.     function GetRenderingMode(out pMode: DWORD): HResult; stdcall;
  4839.   end;
  4840. {$ENDIF}
  4841.  
  4842. {$IFDEF ENABLEVMR7}
  4843. //=====================================================================
  4844. //
  4845. // IVMRAspectRatioControl
  4846. //
  4847. //=====================================================================
  4848.  
  4849.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRAspectRatioControl> _di_IVMRAspectRatioControl;'}
  4850.   {$EXTERNALSYM IVMRAspectRatioControl}
  4851.   IVMRAspectRatioControl = interface(IUnknown)
  4852.     ['{ede80b5c-bad6-4623-b537-65586c9f8dfd}']
  4853.     (*** IVMRAspectRatioControl methods ***)
  4854.     function GetAspectRatioMode(out lpdwARMode: TVMRAspectRatioMode): HResult; stdcall;
  4855.     function SetAspectRatioMode(dwARMode: TVMRAspectRatioMode): HResult; stdcall;
  4856.   end;
  4857. {$ENDIF}
  4858.  
  4859. {$IFDEF ENABLEVMR7}
  4860. //=====================================================================
  4861. //
  4862. // IVMRDeinterlaceControl
  4863. //
  4864. // New interfaced introduced into the WindowsXP SP1 release of the VMR.
  4865. // This interface allows applications to control the DX-VA deinterlacing
  4866. // support provided by the VMR.
  4867. //
  4868. // The VMR needs to be set into "mixing" mode for this interface to work.
  4869. //
  4870. // SetDeinterlaceMode is only effective for new connections made to the
  4871. // VMR.  It should be noted that the graphics device driver may refuse
  4872. // to use the specified deinterlace mode, in which case 3 fallback
  4873. // policies are offered by the VMR, these being:
  4874. //
  4875. //      1. Fallback to the next best mode offered by the driver.
  4876. //      2. Fallback to the BOB deinterlace mode.
  4877. //      3. Fallback to the WEAVE deinterlace mode (ie. turn deinterlacing off).
  4878. //
  4879. //=====================================================================
  4880. type
  4881.   VMRDeinterlacePrefs = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  4882.   {$EXTERNALSYM VMRDeinterlacePrefs}
  4883.  
  4884. const
  4885.   DeinterlacePref_NextBest = $01;
  4886.   {$EXTERNALSYM DeinterlacePref_NextBest}
  4887.   DeinterlacePref_BOB      = $02;
  4888.   {$EXTERNALSYM DeinterlacePref_BOB}
  4889.   DeinterlacePref_Weave    = $04;
  4890.   {$EXTERNALSYM DeinterlacePref_Weave}
  4891.   DeinterlacePref_Mask     = $07;
  4892.   {$EXTERNALSYM DeinterlacePref_Mask}
  4893.  
  4894. type
  4895.   VMRDeinterlaceTech = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  4896.   {$EXTERNALSYM VMRDeinterlaceTech}
  4897.  
  4898. const
  4899.   // the algorithm is unknown or proprietary
  4900.   DeinterlaceTech_Unknown                = $0000;
  4901.   {$EXTERNALSYM DeinterlaceTech_Unknown}
  4902.  
  4903.   // the algorithm creates the missing lines by repeating
  4904.   // the line either above or below it - this method will look very jaggy and
  4905.   // isn't recommended
  4906.   DeinterlaceTech_BOBLineReplicate       = $0001;
  4907.   {$EXTERNALSYM DeinterlaceTech_BOBLineReplicate}
  4908.  
  4909.  
  4910.   // the algorithm creates the missing lines by vertically stretching each
  4911.   // video field by a factor of two, for example by averaging two lines or
  4912.   // using a [-1, 9, 9, -1]/16 filter across four lines.
  4913.   // Slight vertical adjustments are made to ensure that the resulting image
  4914.   // does not "bob" up and down.
  4915.   DeinterlaceTech_BOBVerticalStretch     = $0002;
  4916.   {$EXTERNALSYM DeinterlaceTech_BOBVerticalStretch}
  4917.  
  4918.   // the pixels in the missing line are recreated by a median filtering operation
  4919.   DeinterlaceTech_MedianFiltering        = $0004;
  4920.   {$EXTERNALSYM DeinterlaceTech_MedianFiltering}
  4921.  
  4922.   // the pixels in the missing line are recreated by an edge filter.
  4923.   // In this process, spatial directional filters are applied to determine
  4924.   // the orientation of edges in the picture content, and missing
  4925.   // pixels are created by filtering along (rather than across) the
  4926.   // detected edges.
  4927.   DeinterlaceTech_EdgeFiltering          = $0010;
  4928.   {$EXTERNALSYM DeinterlaceTech_EdgeFiltering}
  4929.  
  4930.   // the pixels in the missing line are recreated by switching on a field by
  4931.   // field basis between using either spatial or temporal interpolation
  4932.   // depending on the amount of motion.
  4933.   DeinterlaceTech_FieldAdaptive          = $0020;
  4934.   {$EXTERNALSYM DeinterlaceTech_FieldAdaptive}
  4935.  
  4936.   // the pixels in the missing line are recreated by switching on a pixel by pixel
  4937.   // basis between using either spatial or temporal interpolation depending on
  4938.   // the amount of motion..
  4939.   DeinterlaceTech_PixelAdaptive          = $0040;
  4940.   {$EXTERNALSYM DeinterlaceTech_PixelAdaptive}
  4941.  
  4942.   // Motion Vector Steering  identifies objects within a sequence of video
  4943.   // fields.  The missing pixels are recreated after first aligning the
  4944.   // movement axes of the individual objects in the scene to make them
  4945.   // parallel with the time axis.
  4946.   DeinterlaceTech_MotionVectorSteered    = $0080;
  4947.   {$EXTERNALSYM DeinterlaceTech_MotionVectorSteered}
  4948.  
  4949. type
  4950.   PVMRFrequency = ^TVMRFrequency;
  4951.   _VMRFrequency = record
  4952.     dwNumerator   : DWORD;
  4953.     dwDenominator : DWORD;
  4954.   end;
  4955.   {$EXTERNALSYM _VMRFrequency}
  4956.   VMRFrequency = _VMRFrequency;
  4957.   {$EXTERNALSYM VMRFrequency}
  4958.   TVMRFrequency = _VMRFrequency;
  4959.  
  4960.   PVMRVideoDesc = ^TVMRVideoDesc;
  4961.   _VMRVideoDesc = record
  4962.     dwSize               : DWORD;
  4963.     dwSampleWidth        : DWORD;
  4964.     dwSampleHeight       : DWORD;
  4965.     SingleFieldPerSample : BOOL;
  4966.     dwFourCC             : DWORD;
  4967.     InputSampleFreq      : VMRFrequency;
  4968.     OutputFrameFreq      : VMRFrequency;
  4969.   end;
  4970.   {$EXTERNALSYM _VMRVideoDesc}
  4971.   VMRVideoDesc = _VMRVideoDesc;
  4972.   {$EXTERNALSYM VMRVideoDesc}
  4973.   TVMRVideoDesc = _VMRVideoDesc;
  4974.  
  4975.   PVMRDeinterlaceCaps = ^TVMRDeinterlaceCaps;
  4976.   _VMRDeinterlaceCaps = record
  4977.     dwSize                    : DWORD;
  4978.     dwNumPreviousOutputFrames : DWORD;
  4979.     dwNumForwardRefSamples    : DWORD;
  4980.     dwNumBackwardRefSamples   : DWORD;
  4981.     DeinterlaceTechnology     : VMRDeinterlaceTech;
  4982.   end;
  4983.   {$EXTERNALSYM _VMRDeinterlaceCaps}
  4984.   VMRDeinterlaceCaps = _VMRDeinterlaceCaps;
  4985.   {$EXTERNALSYM VMRDeinterlaceCaps}
  4986.   TVMRDeinterlaceCaps = _VMRDeinterlaceCaps;
  4987.  
  4988.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRDeinterlaceControl> _di_IVMRDeinterlaceControl;'}
  4989.   {$EXTERNALSYM IVMRDeinterlaceControl}
  4990.   IVMRDeinterlaceControl = interface(IUnknown)
  4991.     ['{bb057577-0db8-4e6a-87a7-1a8c9a505a0f}']
  4992.     (*** IVMRDeinterlaceControl methods ***)
  4993.     // For the specified video description returns the
  4994.     // number of deinterlacing modes available to the VMR.
  4995.     // The deinterlacing modes are returned in descending
  4996.     // quality order ie. the best quality mode is at
  4997.     // lpdwNumDeinterlaceModes[0], the next best at
  4998.     // lpdwNumDeinterlaceModes[1] and so on.
  4999.     //
  5000.     // To determine how big an array of guids to pass to the
  5001.     // GetNumberOfDeinterlaceModes method call
  5002.     // GetNumberOfDeinterlaceModes(lpVideoDescription, &dwNumModes, NULL);
  5003.     //
  5004.     function GetNumberOfDeinterlaceModes(lpVideoDescription: PVMRVideoDesc;
  5005.       var lpdwNumDeinterlaceModes: DWORD; lpDeinterlaceModes: PGUID): HResult; stdcall;
  5006.     // For the given video description get the capabilities of the
  5007.     // specified de-interlace mode.
  5008.     function GetDeinterlaceModeCaps(const lpDeinterlaceMode: TGUID;
  5009.       lpVideoDescription: PVMRVideoDesc; lpDeinterlaceCaps: PVMRDeinterlaceCaps): HResult; stdcall;
  5010.     // Get/Set the deinterlace mode that you would like the
  5011.     // VMR to use when de-interlacing the specified stream.
  5012.     // It should be noted that the VMR may not actually be able
  5013.     // to use the requested deinterlace mode, in which case the
  5014.     // the VMR will fall back to other de-interlace modes as specified
  5015.     // by the de-interlace preferences (see SetDeinterlacePrefs below).
  5016.     function  GetDeinterlaceMode(
  5017.       dwStreamID: DWORD;
  5018.       out lpDeinterlaceMode: TGUID   // returns GUID_NULL if SetDeinterlaceMode
  5019.       ): HResult; stdcall;             // has not been called yet.
  5020.  
  5021.     function SetDeinterlaceMode(
  5022.       dwStreamID: DWORD;              // use $FFFFFFFF to set mode for all streams
  5023.       const lpDeinterlaceMode: TGUID // GUID_NULL == turn deinterlacing off
  5024.       ): HResult; stdcall;
  5025.  
  5026.     function GetDeinterlacePrefs(out lpdwDeinterlacePrefs: VMRDeinterlacePrefs): HResult; stdcall;
  5027.     function SetDeinterlacePrefs(dwDeinterlacePrefs: VMRDeinterlacePrefs): HResult; stdcall;
  5028.  
  5029.     // Get the DeinterlaceMode currently in use for the specified
  5030.     // video stream (ie. pin).  The returned GUID will be NULL if
  5031.     // the de-interlacing h/w has not been created by the VMR at the
  5032.     // time the function is called, or if the VMR determines that
  5033.     // this stream should not or can be de-interlaced.
  5034.     function GetActualDeinterlaceMode(
  5035.       dwStreamID: DWORD; out lpDeinterlaceMode: TGUID): HResult; stdcall;
  5036.   end;
  5037. {$ENDIF}
  5038.  
  5039. {$IFDEF ENABLEVMR7}
  5040. //=====================================================================
  5041. //
  5042. // IVMRMixerBitmap
  5043. //
  5044. //=====================================================================
  5045.   PVMRAlphaBitmap = ^TVMRAlphaBitmap;
  5046.   _VMRALPHABITMAP = record
  5047.     dwFlags   : DWORD;               // flags word
  5048.     hdc       : HDC;                 // DC for the bitmap to copy
  5049.     pDDS      : IDIRECTDRAWSURFACE7; // DirectDraw surface to copy
  5050.     rSrc      : TRECT;               // rectangle to copy from the DC/DDS
  5051.     rDest     : NORMALIZEDRECT;     // output rectangle in composition space
  5052.     fAlpha    : single;              // opacity of the bitmap
  5053.     clrSrcKey : COLORREF;            // src color key
  5054.   end;
  5055.   {$EXTERNALSYM _VMRALPHABITMAP}
  5056.   VMRALPHABITMAP = _VMRALPHABITMAP;
  5057.   {$EXTERNALSYM VMRALPHABITMAP}
  5058.   TVMRAlphaBitmap = _VMRALPHABITMAP;
  5059.  
  5060. const
  5061.   // Disable the alpha bitmap for now
  5062.   VMRBITMAP_DISABLE           = $00000001;
  5063.   {$EXTERNALSYM VMRBITMAP_DISABLE}
  5064.  
  5065.   // Take the bitmap from the HDC rather than the DirectDraw surface
  5066.   VMRBITMAP_HDC               = $00000002;
  5067.   {$EXTERNALSYM VMRBITMAP_HDC}
  5068.  
  5069.   // Take the entire DDraw surface - rSrc is ignored
  5070.   VMRBITMAP_ENTIREDDS         = $00000004;
  5071.   {$EXTERNALSYM VMRBITMAP_ENTIREDDS}
  5072.  
  5073.   // Indicates that the clrTrans value is valid and should be
  5074.   // used when blending
  5075.   VMRBITMAP_SRCCOLORKEY       = $00000008;
  5076.   {$EXTERNALSYM VMRBITMAP_SRCCOLORKEY}
  5077.  
  5078.   VMRBITMAP_SRCRECT           = $00000010;
  5079.   {$EXTERNALSYM VMRBITMAP_SRCRECT}
  5080.  
  5081. type
  5082.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRMixerBitmap> _di_IVMRMixerBitmap;'}
  5083.   {$EXTERNALSYM IVMRMixerBitmap}
  5084.   IVMRMixerBitmap = interface(IUnknown)
  5085.     ['{1E673275-0257-40aa-AF20-7C608D4A0428}']
  5086.     (*** IVMRMixerBitmap methods ***)
  5087.     // Set bitmap, location to blend it, and blending value
  5088.     function SetAlphaBitmap(var pBmpParms: TVMRALPHABITMAP): HResult; stdcall;
  5089.     // Change bitmap location, size and blending value,
  5090.     // graph must be running for change to take effect.
  5091.     function UpdateAlphaBitmapParameters(pBmpParms: PVMRALPHABITMAP): HResult; stdcall;
  5092.     // Get bitmap, location to blend it, and blending value
  5093.     function GetAlphaBitmapParameters(out pBmpParms: TVMRALPHABITMAP): HResult; stdcall;
  5094.   end;
  5095. {$ENDIF}
  5096. {$IFDEF ENABLEVMR7}
  5097. //=====================================================================
  5098. //
  5099. // IVMRVideoStreamControl
  5100. //
  5101. //=====================================================================
  5102.  
  5103.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRVideoStreamControl> _di_IVMRVideoStreamControl;'}
  5104.   {$EXTERNALSYM IVMRVideoStreamControl}
  5105.   IVMRVideoStreamControl = interface(IUnknown)
  5106.     ['{058d1f11-2a54-4bef-bd54-df706626b727}']
  5107.     (*** IVMRVideoStreamControl methods ***)
  5108.     function SetColorKey(clr: PDDCOLORKEY): HResult; stdcall; // Source color key, set to 0xFFFFFFFF to disable
  5109.     function GetColorKey(out pclr: TDDCOLORKEY): HResult; stdcall;
  5110.     function SetStreamActiveState(fActive: BOOL): HResult; stdcall;
  5111.     function GetStreamActiveState(out lpfActive: BOOL): HResult; stdcall;
  5112.   end;
  5113. {$ENDIF}
  5114. {$IFDEF ENABLEVMR7}
  5115. //=====================================================================
  5116. //
  5117. // IVMRSurface
  5118. //
  5119. //=====================================================================
  5120.  
  5121.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurface> _di_IVMRSurface;'}
  5122.   {$EXTERNALSYM IVMRSurface}
  5123.   IVMRSurface = interface(IUnknown)
  5124.     ['{a9849bbe-9ec8-4263-b764-62730f0d15d0}']
  5125.     (*** IVMRSurface methods ***)
  5126.     function IsSurfaceLocked: HResult; stdcall;
  5127.     function LockSurface(out lpSurface: PBYTE): HResult; stdcall;
  5128.     function UnlockSurface: HResult; stdcall;
  5129.     function GetSurface(lplpSurface: IDIRECTDRAWSURFACE7): HResult; stdcall;
  5130.   end;
  5131. {$ENDIF}
  5132.  
  5133. {$IFDEF ENABLEVMR7}
  5134. //=====================================================================
  5135. //
  5136. // IVMRImagePresenterConfig
  5137. //
  5138. //=====================================================================
  5139.  
  5140.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenterConfig> _di_IVMRImagePresenterConfig;'}
  5141.   {$EXTERNALSYM IVMRImagePresenterConfig}
  5142.   IVMRImagePresenterConfig = interface(IUnknown)
  5143.     ['{9f3a1c85-8555-49ba-935f-be5b5b29d178}']
  5144.     (*** IVMRImagePresenterConfig methods ***)
  5145.     function SetRenderingPrefs(dwRenderFlags: DWORD): HResult; stdcall;
  5146.     function GetRenderingPrefs(out dwRenderFlags: DWORD): HResult; stdcall;
  5147.   end;
  5148. //=====================================================================
  5149. //
  5150. // IVMRImagePresenterExclModeConfig
  5151. //
  5152. //=====================================================================
  5153.  
  5154.   {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenterExclModeConfig> _di_IVMRImagePresenterExclModeConfig;'}
  5155.   {$EXTERNALSYM IVMRImagePresenterExclModeConfig}
  5156.   IVMRImagePresenterExclModeConfig = interface(IVMRImagePresenterConfig)
  5157.     ['{e6f7ce40-4673-44f1-8f77-5499d68cb4ea}']
  5158.     (*** IVMRImagePresenterExclModeConfig methods ***)
  5159.     function SetXlcModeDDObjAndPrimarySurface(lpDDObj: IDIRECTDRAW7; lpPrimarySurf: IDIRECTDRAWSURFACE7): HResult; stdcall;
  5160.     function GetXlcModeDDObjAndPrimarySurface(lpDDObj: IDIRECTDRAW7; lpPrimarySurf: IDIRECTDRAWSURFACE7): HResult; stdcall;
  5161.   end;
  5162. {$ENDIF}
  5163.  
  5164. //=====================================================================
  5165. //
  5166. // IVPManager
  5167. //
  5168. //=====================================================================
  5169.  
  5170.   {$HPPEMIT 'typedef System::DelphiInterface<IVPManager> _di_IVPManager;'}
  5171.   {$EXTERNALSYM IVPManager}
  5172.   IVPManager = interface(IUnknown)
  5173.     ['{aac18c18-e186-46d2-825d-a1f8dc8e395a}']
  5174.     (*** IVPManager methods ***)
  5175.     // Use this method on a Multi-Monitor system to specify to the
  5176.     // video port manager filter which videoport index is used
  5177.     // to an upstream decoder filter.
  5178.     function SetVideoPortIndex(dwVideoPortIndex: DWORD): HResult; stdcall; // the video port number that this is connected to
  5179.     // This method returns the current video port index being used by the VPM.
  5180.     function GetVideoPortIndex(out pdwVideoPortIndex: DWORD): HResult; stdcall; // the video port number that this is connected to
  5181.   end;
  5182.  
  5183.  
  5184. (*==========================================================================;
  5185.  *
  5186.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  5187.  *
  5188.  *  File:       mmstream.h
  5189.  *
  5190.  ***************************************************************************)
  5191.  
  5192. const
  5193.   IID_IMultiMediaStream: TGUID = '{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}';
  5194.   {$EXTERNALSYM IID_IMultiMediaStream}
  5195.   IID_IMediaStream: TGUID = '{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}';
  5196.   {$EXTERNALSYM IID_IMediaStream}
  5197.   IID_IStreamSample: TGUID = '{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}';
  5198.   {$EXTERNALSYM IID_IStreamSample}
  5199.  
  5200. const
  5201.   MS_S_PENDING                = $00040001;
  5202.   {$EXTERNALSYM MS_S_PENDING}
  5203.   MS_S_NOUPDATE               = $00040002;
  5204.   {$EXTERNALSYM MS_S_NOUPDATE}
  5205.   MS_S_ENDOFSTREAM            = $00040003;
  5206.   {$EXTERNALSYM MS_S_ENDOFSTREAM}
  5207.   MS_E_SAMPLEALLOC            = $80040401;
  5208.   {$EXTERNALSYM MS_E_SAMPLEALLOC}
  5209.   MS_E_PURPOSEID              = $80040402;
  5210.   {$EXTERNALSYM MS_E_PURPOSEID}
  5211.   MS_E_NOSTREAM               = $80040403;
  5212.   {$EXTERNALSYM MS_E_NOSTREAM}
  5213.   MS_E_NOSEEKING              = $80040404;
  5214.   {$EXTERNALSYM MS_E_NOSEEKING}
  5215.   MS_E_INCOMPATIBLE           = $80040405;
  5216.   {$EXTERNALSYM MS_E_INCOMPATIBLE}
  5217.   MS_E_BUSY                   = $80040406;
  5218.   {$EXTERNALSYM MS_E_BUSY}
  5219.   MS_E_NOTINIT                = $80040407;
  5220.   {$EXTERNALSYM MS_E_NOTINIT}
  5221.   MS_E_SOURCEALREADYDEFINED   = $80040408;
  5222.   {$EXTERNALSYM MS_E_SOURCEALREADYDEFINED}
  5223.   MS_E_INVALIDSTREAMTYPE      = $80040409;
  5224.   {$EXTERNALSYM MS_E_INVALIDSTREAMTYPE}
  5225.   MS_E_NOTRUNNING             = $8004040A;
  5226.   {$EXTERNALSYM MS_E_NOTRUNNING}
  5227.  
  5228.   MSPID_PrimaryVideo: TGUID = (D1:$A35FF56A;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
  5229.   {$EXTERNALSYM MSPID_PrimaryVideo}
  5230.   MSPID_PrimaryAudio: TGUID = (D1:$A35FF56B;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
  5231.   {$EXTERNALSYM MSPID_PrimaryAudio}
  5232.  
  5233. type
  5234.   PAPCFUNC = procedure(dwParam: DWORD); stdcall;
  5235.   {$EXTERNALSYM PAPCFUNC}
  5236.  
  5237.   STREAM_TIME = {$IFDEF TYPE_IDENTITY}type {$ENDIF} int64;
  5238.   {$EXTERNALSYM STREAM_TIME}
  5239.  
  5240.   PStreamType = ^TStreamType;
  5241.   STREAM_TYPE = (
  5242.     STREAMTYPE_READ,
  5243.     STREAMTYPE_WRITE,
  5244.     STREAMTYPE_TRANSFORM
  5245.   );
  5246.   {$EXTERNALSYM STREAM_TYPE}
  5247.   TStreamType = STREAM_TYPE;
  5248.  
  5249.   STREAM_STATE = (
  5250.     STREAMSTATE_STOP,
  5251.     STREAMSTATE_RUN
  5252.   );
  5253.   {$EXTERNALSYM STREAM_STATE}
  5254.   TStreamState = STREAM_STATE;
  5255.  
  5256. const
  5257.   COMPSTAT_NOUPDATEOK = 1;
  5258.   {$EXTERNALSYM COMPSTAT_NOUPDATEOK}
  5259.   COMPSTAT_WAIT       = 2;
  5260.   {$EXTERNALSYM COMPSTAT_WAIT}
  5261.   COMPSTAT_ABORT      = 4;
  5262.   {$EXTERNALSYM COMPSTAT_ABORT}
  5263.  
  5264.   MMSSF_HASCLOCK        = $1;
  5265.   {$EXTERNALSYM MMSSF_HASCLOCK}
  5266.   MMSSF_SUPPORTSEEK     = $2;
  5267.   {$EXTERNALSYM MMSSF_SUPPORTSEEK}
  5268.   MMSSF_ASYNCHRONOUS    = $4;
  5269.   {$EXTERNALSYM MMSSF_ASYNCHRONOUS}
  5270.  
  5271.   SSUPDATE_ASYNC = $1;
  5272.   {$EXTERNALSYM SSUPDATE_ASYNC}
  5273.   SSUPDATE_CONTINUOUS = $2;
  5274.   {$EXTERNALSYM SSUPDATE_CONTINUOUS}
  5275.  
  5276. type
  5277.   IMediaStream = interface;
  5278.   IStreamSample = interface;
  5279.  
  5280.   {$HPPEMIT 'typedef System::DelphiInterface<IMultiMediaStream> _di_IMultiMediaStream;'}
  5281.   {$EXTERNALSYM IMultiMediaStream}
  5282.   IMultiMediaStream = interface(IUnknown)
  5283.     ['{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}']
  5284.     (*** IMultiMediaStream methods ***)
  5285.     function GetInformation(pdwFlags: PDWORD; pStreamType: PStreamType):
  5286.         HResult; stdcall;
  5287.     function GetMediaStream(const idPurpose: TGUID;
  5288.         out ppMediaStream: IMediaStream): HResult; stdcall;
  5289.     function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream):
  5290.         HResult; stdcall;
  5291.     function GetState(out pCurrentState: TStreamState): HResult; stdcall;
  5292.     function SetState(NewState: TStreamState): HResult; stdcall;
  5293.     function GetTime(out pCurrentTime: STREAM_TIME): HResult; stdcall;
  5294.     function GetDuration(out pDuration: STREAM_TIME): HResult; stdcall;
  5295.     function Seek(SeekTime: STREAM_TIME): HResult; stdcall;
  5296.     function GetEndOfStreamEventHandle(out phEOS: THandle): HResult; stdcall;
  5297.   end;
  5298.  
  5299.  
  5300.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaStream> _di_IMediaStream;'}
  5301.   {$EXTERNALSYM IMediaStream}
  5302.   IMediaStream = interface(IUnknown)
  5303.     ['{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}']
  5304.     (*** IMediaStream methods ***)
  5305.     function GetMultiMediaStream(out ppMultiMediaStream: IMultiMediaStream):
  5306.         HResult; stdcall;
  5307.     function GetInformation(pPurposeId: PGUID; pType: PStreamType): HResult; stdcall;
  5308.     function SetSameFormat(pStreamThatHasDesiredFormat: IMediaStream;
  5309.         dwFlags: DWORD): HResult; stdcall;
  5310.     function AllocateSample(dwFlags: DWORD; out ppSample: IStreamSample): HResult; stdcall;
  5311.     function CreateSharedSample(pExistingSample: IStreamSample; dwFlags: DWORD;
  5312.         out ppNewSample: IStreamSample): HResult; stdcall;
  5313.     function SendEndOfStream(dwFlags: DWORD): HResult; stdcall;
  5314.   end;
  5315.  
  5316.   {$HPPEMIT 'typedef System::DelphiInterface<IStreamSample> _di_IStreamSample;'}
  5317.   {$EXTERNALSYM IStreamSample}
  5318.   IStreamSample = interface(IUnknown)
  5319.     ['{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}']
  5320.     (*** IStreamSample methods ***)
  5321.     function GetMediaStream(out ppMediaStream: IMediaStream): HResult; stdcall;
  5322.     function GetSampleTimes(out pStartTime, pEndTime,
  5323.         pCurrentTime: STREAM_TIME): HResult; stdcall;
  5324.     function SetSampleTimes(var pStartTime, pEndTime: STREAM_TIME): HResult; stdcall;
  5325.     function Update(dwFlags: DWORD; hEvent: THandle; pfnAPC: PAPCFUNC;
  5326.         dwAPCData: DWORD): HResult; stdcall;
  5327.     function CompletionStatus(dwFlags: DWORD; dwMilliseconds: DWORD): HResult; stdcall;
  5328.   end;
  5329.  
  5330. (*==========================================================================;
  5331.  *
  5332.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  5333.  *
  5334.  *  File:       amstream.h
  5335.  *
  5336.  ***************************************************************************)
  5337.  
  5338. const
  5339.   IID_IDirectShowStream: TGUID = '{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}';
  5340.   {$EXTERNALSYM IID_IDirectShowStream}
  5341.   IID_IAMMultiMediaStream: TGUID = '{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}';
  5342.   {$EXTERNALSYM IID_IAMMultiMediaStream}
  5343.   IID_IAMMediaStream: TGUID = '{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}';
  5344.   {$EXTERNALSYM IID_IAMMediaStream}
  5345.   IID_IMediaStreamFilter: TGUID = '{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}';
  5346.   {$EXTERNALSYM IID_IMediaStreamFilter}
  5347.   IID_IDirectDrawMediaSampleAllocator: TGUID = '{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}';
  5348.   {$EXTERNALSYM IID_IDirectDrawMediaSampleAllocator}
  5349.   IID_IDirectDrawMediaSample: TGUID = '{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}';
  5350.   {$EXTERNALSYM IID_IDirectDrawMediaSample}
  5351.   IID_IAMMediaTypeStream: TGUID = '{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}';
  5352.   {$EXTERNALSYM IID_IAMMediaTypeStream}
  5353.   IID_IAMMediaTypeSample: TGUID = '{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}';
  5354.   {$EXTERNALSYM IID_IAMMediaTypeSample}
  5355.  
  5356. const
  5357.   AMMSF_NOGRAPHTHREAD = $1;
  5358.   {$EXTERNALSYM AMMSF_NOGRAPHTHREAD}
  5359.  
  5360.   AMMSF_ADDDEFAULTRENDERER = $1;
  5361.   {$EXTERNALSYM AMMSF_ADDDEFAULTRENDERER}
  5362.   AMMSF_CREATEPEER         = $2;
  5363.   {$EXTERNALSYM AMMSF_CREATEPEER}
  5364.   AMMSF_STOPIFNOSAMPLES       = $4;
  5365.   {$EXTERNALSYM AMMSF_STOPIFNOSAMPLES}
  5366.   AMMSF_NOSTALL               = $8;
  5367.   {$EXTERNALSYM AMMSF_NOSTALL}
  5368.  
  5369.   AMMSF_RENDERTYPEMASK   = $3;
  5370.   {$EXTERNALSYM AMMSF_RENDERTYPEMASK}
  5371.   AMMSF_RENDERTOEXISTING = 0;
  5372.   {$EXTERNALSYM AMMSF_RENDERTOEXISTING}
  5373.   AMMSF_RENDERALLSTREAMS = $1;
  5374.   {$EXTERNALSYM AMMSF_RENDERALLSTREAMS}
  5375.   AMMSF_NORENDER         = $2;
  5376.   {$EXTERNALSYM AMMSF_NORENDER}
  5377.   AMMSF_NOCLOCK          = $4;
  5378.   {$EXTERNALSYM AMMSF_NOCLOCK}
  5379.   AMMSF_RUN              = $8;
  5380.   {$EXTERNALSYM AMMSF_RUN}
  5381.  
  5382. type
  5383.   OUTPUT_STATE = (
  5384.     Disabled,
  5385.     ReadData,
  5386.     RenderData
  5387.   );
  5388.   {$EXTERNALSYM OUTPUT_STATE}
  5389.   TOutputState = OUTPUT_STATE;
  5390.  
  5391.   {$HPPEMIT 'typedef System::DelphiInterface<IDirectShowStream> _di_IDirectShowStream;'}
  5392.   {$EXTERNALSYM IDirectShowStream}
  5393.   IDirectShowStream = interface(IDispatch)
  5394.     ['{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}']
  5395.     (*** IDirectShowStream methods ***)
  5396.     function get_FileName(out pVal: WideString): HResult; stdcall;
  5397.     function put_FileName(newVal: WideString): HResult; stdcall;
  5398.     function get_Video(out pVal: TOutputState): HResult; stdcall;
  5399.     function put_Video(newVal: TOutputState): HResult; stdcall;
  5400.     function get_Audio(out pVal: TOutputState): HResult; stdcall;
  5401.     function put_Audio(newVal: TOutputState): HResult; stdcall;
  5402.   end;
  5403.  
  5404.   IMediaStreamFilter = interface;
  5405.  
  5406.   {$HPPEMIT 'typedef System::DelphiInterface<IAMMultiMediaStream> _di_IAMMultiMediaStream;'}
  5407.   {$EXTERNALSYM IAMMultiMediaStream}
  5408.   IAMMultiMediaStream = interface(IMultiMediaStream)
  5409.     ['{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}']
  5410.     (*** IAMMultiMediaStream methods ***)
  5411.     function Initialize(StreamType: TStreamType; dwFlags: DWORD;
  5412.         pFilterGraph: IGraphBuilder): HResult; stdcall;
  5413.     function GetFilterGraph(out ppGraphBuilder: IGraphBuilder): HResult; stdcall;
  5414.     function GetFilter(out ppFilter: IMediaStreamFilter): HResult; stdcall;
  5415.     function AddMediaStream(pStreamObject: IUnknown; PurposeId: PGUID;
  5416.         dwFlags: DWORD; out ppNewStream: IMediaStream): HResult; stdcall;
  5417.     function OpenFile(pszFileName: PWideChar; dwFlags: DWORD): HResult; stdcall;
  5418.     function OpenMoniker(pCtx: IBindCtx; pMoniker: IMoniker; dwFlags: DWORD): HResult; stdcall;
  5419.     function Render(dwFlags: DWORD): HResult; stdcall;
  5420.   end;
  5421.  
  5422.   {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaStream> _di_IAMMediaStream;'}
  5423.   {$EXTERNALSYM IAMMediaStream}
  5424.   IAMMediaStream = interface(IMediaStream)
  5425.     ['{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}']
  5426.     (*** IAMMediaStream methods ***)
  5427.     function Initialize(pSourceObject: IUnknown; dwFlags: DWORD;
  5428.                PurposeId: PGUID; StreamType: TStreamType): HResult; stdcall;
  5429.     function SetState(State: TFilterState): HResult; stdcall;
  5430.     function JoinAMMultiMediaStream(pAMMultiMediaStream: IAMMultiMediaStream): HResult; stdcall;
  5431.     function JoinFilter(pMediaStreamFilter: IMediaStreamFilter): HResult; stdcall;
  5432.     function JoinFilterGraph(pFilterGraph: IFilterGraph): HResult; stdcall;
  5433.   end;
  5434.  
  5435.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaStreamFilter> _di_IMediaStreamFilter;'}
  5436.   {$EXTERNALSYM IMediaStreamFilter}
  5437.   IMediaStreamFilter = interface(IBaseFilter)
  5438.     ['{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}']
  5439.     (*** IMediaStreamFilter methods ***)
  5440.     function AddMediaStream(pAMMediaStream: IAMMediaStream): HResult; stdcall;
  5441.     function GetMediaStream( var idPurpose: TGUID;
  5442.         out ppMediaStream: IMediaStream): HResult; stdcall;
  5443.     function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream): HResult; stdcall;
  5444.     function SupportSeeking(bRenderer: BOOL): HResult; stdcall;
  5445.     function ReferenceTimeToStreamTime( var pTime: TReferenceTime): HResult; stdcall;
  5446.     function GetCurrentStreamTime(out pCurrentStreamTime: TReferenceTime): HResult; stdcall;
  5447.     function WaitUntil(WaitStreamTime: TReferenceTime): HResult; stdcall;
  5448.     function Flush(bCancelEOS: BOOL): HResult; stdcall;
  5449.     function EndOfStream: HResult; stdcall;
  5450.   end;
  5451.  
  5452.   {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawMediaSampleAllocator> _di_IDirectDrawMediaSampleAllocator;'}
  5453.   {$EXTERNALSYM IDirectDrawMediaSampleAllocator}
  5454.   IDirectDrawMediaSampleAllocator = interface(IUnknown)
  5455.     ['{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}']
  5456.     (*** IDirectDrawMediaSampleAllocator methods ***)
  5457.     function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  5458.   end;
  5459.  
  5460.   {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawMediaSample> _di_IDirectDrawMediaSample;'}
  5461.   {$EXTERNALSYM IDirectDrawMediaSample}
  5462.   IDirectDrawMediaSample = interface(IUnknown)
  5463.     ['{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}']
  5464.     (*** IDirectDrawMediaSample methods ***)
  5465.     function GetSurfaceAndReleaseLock(out ppDirectDrawSurface: IDirectDrawSurface;
  5466.         out pRect: TRect): HResult; stdcall;
  5467.     function LockMediaSamplePointer: HResult; stdcall;
  5468.   end;
  5469.  
  5470.   IAMMediaTypeSample = interface;
  5471.  
  5472.   {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaTypeStream> _di_IAMMediaTypeStream;'}
  5473.   {$EXTERNALSYM IAMMediaTypeStream}
  5474.   IAMMediaTypeStream = interface(IMediaStream)
  5475.     ['{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}']
  5476.     (*** IAMMediaTypeStream methods ***)
  5477.     function GetFormat(out pMediaType: TAMMediaType; dwFlags: DWORD): HResult; stdcall;
  5478.     function SetFormat(const pMediaType: TAMMediaType; dwFlags: DWORD): HResult; stdcall;
  5479.     function CreateSample(lSampleSize: Longint; pbBuffer: Pointer;
  5480.         dwFlags: DWORD; pUnkOuter: IUnknown; out ppAMMediaTypeSample: IAMMediaTypeSample): HResult; stdcall;
  5481.     function GetStreamAllocatorRequirements(var pProps: TAllocatorProperties): HResult; stdcall;
  5482.     function SetStreamAllocatorRequirements(const pProps: TAllocatorProperties): HResult; stdcall;
  5483.   end;
  5484.  
  5485.   {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaTypeSample> _di_IAMMediaTypeSample;'}
  5486.   {$EXTERNALSYM IAMMediaTypeSample}
  5487.   IAMMediaTypeSample = interface(IStreamSample)
  5488.     ['{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}']
  5489.     (*** IAMMediaTypeSample methods ***)
  5490.     function SetPointer(pBuffer: Pointer; lSize: Longint): HResult; stdcall;
  5491.     function GetPointer(out ppBuffer: Pointer): HResult; stdcall;
  5492.     function GetSize: Longint; stdcall;
  5493.     function GetTime(out pTimeStart, pTimeEnd: TReferenceTime): HResult; stdcall;
  5494.     function SetTime(pTimeStart, pTimeEnd: PReferenceTime): HResult; stdcall;
  5495.     function IsSyncPoint: HResult; stdcall;
  5496.     function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
  5497.     function IsPreroll: HResult; stdcall;
  5498.     function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
  5499.     function GetActualDataLength: Longint; stdcall;
  5500.     function SetActualDataLength(l: Longint): HResult; stdcall;
  5501.     function GetMediaType(var ppMediaType: PAMMediaType): HResult; stdcall;
  5502.     function SetMediaType(var pMediaType: TAMMediaType): HResult; stdcall;
  5503.     function IsDiscontinuity: HResult; stdcall;
  5504.     function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
  5505.     function GetMediaTime(out pTimeStart, pTimeEnd: int64): HResult; stdcall;
  5506.     function SetMediaTime(var pTimeStart, pTimeEnd: int64): HResult; stdcall;
  5507.   end;
  5508.  
  5509. const
  5510. {
  5511. EXTERN_C const IID LIBID_DirectShowStreamLib;
  5512.  
  5513. EXTERN_C const CLSID CLSID_AMMultiMediaStream;
  5514. }
  5515.   CLSID_AMMultiMediaStream: TGUID = '{49C47CE5-9BA4-11D0-8212-00C04FC32C45}';
  5516.   {$EXTERNALSYM CLSID_AMMultiMediaStream}
  5517.  
  5518.   CLSID_AMDirectDrawStream: TGUID = (D1:$49C47CE4;D2:$9BA4;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  5519.   {$EXTERNALSYM CLSID_AMDirectDrawStream}
  5520.   CLSID_AMAudioStream: TGUID = (D1:$8496E040;D2:$AF4C;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  5521.   {$EXTERNALSYM CLSID_AMAudioStream}
  5522.   CLSID_AMAudioData: TGUID = (D1:$F2468580;D2:$AF8A;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  5523.   {$EXTERNALSYM CLSID_AMAudioData}
  5524.   CLSID_AMMediaTypeStream: TGUID = (D1:$CF0F2F7C;D2:$F7BF;D3:$11D0;D4:($90,$0D,$00,$C0,$4F,$D9,$18,$9D));
  5525.   {$EXTERNALSYM CLSID_AMMediaTypeStream}
  5526.  
  5527. (*==========================================================================;
  5528.  *
  5529.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  5530.  *
  5531.  *  File:       ddstream.h
  5532.  *
  5533.  ***************************************************************************)
  5534.  
  5535. const
  5536.   DDSFF_PROGRESSIVERENDER = $1;
  5537.   {$EXTERNALSYM DDSFF_PROGRESSIVERENDER}
  5538.  
  5539.   IID_IDirectDrawMediaStream: TGUID = '{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}';
  5540.   {$EXTERNALSYM IID_IDirectDrawMediaStream}
  5541.   IID_IDirectDrawStreamSample: TGUID = '{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}';
  5542.   {$EXTERNALSYM IID_IDirectDrawStreamSample}
  5543.  
  5544. type
  5545.   IDirectDrawStreamSample = interface;
  5546.  
  5547.   {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawMediaStream> _di_IDirectDrawMediaStream;'}
  5548.   {$EXTERNALSYM IDirectDrawMediaStream}
  5549.   IDirectDrawMediaStream = interface(IMediaStream)
  5550.     ['{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}']
  5551.     (*** IDirectDrawMediaStream methods ***)
  5552.     function GetFormat(out pDDSDCurrent: TDDSurfaceDesc;
  5553.         out ppDirectDrawPalette: IDirectDrawPalette;
  5554.         out pDDSDDesired: TDDSurfaceDesc; out pdwFlags: DWORD): HResult; stdcall;
  5555.     function SetFormat(const pTDDSurfaceDesc: TDDSurfaceDesc;
  5556.         pDirectDrawPalette: IDirectDrawPalette): HResult; stdcall;
  5557.     function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  5558.     function SetDirectDraw(pDirectDraw: IDirectDraw): HResult; stdcall;
  5559.     function CreateSample(pSurface: IDirectDrawSurface; const pRect: TRect;
  5560.         dwFlags: DWORD; out ppSample: IDirectDrawStreamSample): HResult;
  5561.         stdcall;
  5562.     function GetTimePerFrame(var pFrameTime: STREAM_TIME): HResult; stdcall;
  5563.   end;
  5564.  
  5565.   {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawStreamSample> _di_IDirectDrawStreamSample;'}
  5566.   {$EXTERNALSYM IDirectDrawStreamSample}
  5567.   IDirectDrawStreamSample = interface(IStreamSample)
  5568.     ['{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}']
  5569.     (*** IDirectDrawStreamSample methods ***)
  5570.     function GetSurface(out ppDirectDrawSurface: IDirectDrawSurface;
  5571.         out pRect: TRect): HResult; stdcall;
  5572.     function SetRect(const pRect: TRect): HResult; stdcall;
  5573.   end;
  5574.  
  5575. (*==========================================================================;
  5576.  *
  5577.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  5578.  *
  5579.  *  File:       austream.h
  5580.  *
  5581.  ***************************************************************************)
  5582.  
  5583. const
  5584.   IID_IAudioMediaStream: TGUID = '{F7537560-A3BE-11D0-8212-00C04FC32C45}';
  5585.   {$EXTERNALSYM IID_IAudioMediaStream}
  5586.   IID_IAudioStreamSample: TGUID = '{345FEE00-ABA5-11D0-8212-00C04FC32C45}';
  5587.   {$EXTERNALSYM IID_IAudioStreamSample}
  5588.   IID_IMemoryData: TGUID = '{327FC560-AF60-11D0-8212-00C04FC32C45}';
  5589.   {$EXTERNALSYM IID_IMemoryData}
  5590.   IID_IAudioData: TGUID = '{54C719C0-AF60-11D0-8212-00C04FC32C45}';
  5591.   {$EXTERNALSYM IID_IAudioData}
  5592.  
  5593. type
  5594.   IAudioStreamSample = interface;
  5595.   IAudioData = interface;
  5596.  
  5597.   {$HPPEMIT 'typedef System::DelphiInterface<IAudioMediaStream> _di_IAudioMediaStream;'}
  5598.   {$EXTERNALSYM IAudioMediaStream}
  5599.   IAudioMediaStream = interface(IMediaStream)
  5600.     ['{F7537560-A3BE-11D0-8212-00C04FC32C45}']
  5601.     (*** IAudioMediaStream methods ***)
  5602.     function GetFormat(out pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
  5603.     function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
  5604.     function CreateSample(pAudioData: IAudioData; dwFlags: DWORD;
  5605.         out ppSample: IAudioStreamSample): HResult; stdcall;
  5606.   end;
  5607.  
  5608.   {$HPPEMIT 'typedef System::DelphiInterface<IAudioStreamSample> _di_IAudioStreamSample;'}
  5609.   {$EXTERNALSYM IAudioStreamSample}
  5610.   IAudioStreamSample = interface(IStreamSample)
  5611.     ['{345FEE00-ABA5-11D0-8212-00C04FC32C45}']
  5612.     (*** IAudioStreamSample methods ***)
  5613.     function GetAudioData(out ppAudio: IAudioData): HResult; stdcall;
  5614.   end;
  5615.  
  5616.   {$HPPEMIT 'typedef System::DelphiInterface<IMemoryData> _di_IMemoryData;'}
  5617.   {$EXTERNALSYM IMemoryData}
  5618.   IMemoryData = interface(IUnknown)
  5619.     ['{327FC560-AF60-11D0-8212-00C04FC32C45}']
  5620.     (*** IMemoryData methods ***)
  5621.     function SetBuffer(cbSize: DWORD; pbData: pointer; dwFlags: DWORD): HResult;
  5622.         stdcall;
  5623.     function GetInfo(out pdwLength: DWORD; out ppbData: pointer;
  5624.         out pcbActualData: DWORD): HResult; stdcall;
  5625.     function SetActual(cbDataValid: DWORD): HResult; stdcall;
  5626.   end;
  5627.  
  5628.   {$HPPEMIT 'typedef System::DelphiInterface<IAudioData> _di_IAudioData;'}
  5629.   {$EXTERNALSYM IAudioData}
  5630.   IAudioData = interface(IMemoryData)
  5631.     ['{54C719C0-AF60-11D0-8212-00C04FC32C45}']
  5632.     (*** IAudioData methods ***)
  5633.     function GetFormat(out pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
  5634.     function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
  5635.   end;
  5636.  
  5637. (*==========================================================================;
  5638.  *
  5639.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  5640.  *
  5641.  *  File:       mpconfig.h
  5642.  *
  5643.  ***************************************************************************)
  5644.  
  5645. const
  5646.   IID_IMixerPinConfig : TGUID = (D1:$593CDDE1;D2:$0759;D3:$11D1;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  5647.   {$EXTERNALSYM IID_IMixerPinConfig}
  5648.   IID_IMixerPinConfig2: TGUID = (D1:$ebf47182;D2:$8764;D3:$11d1;D4:($9e,$69,$00,$c0,$4f,$d7,$c1,$5b));
  5649.   {$EXTERNALSYM IID_IMixerPinConfig2}
  5650.  
  5651. type
  5652.   _AM_ASPECT_RATIO_MODE = (
  5653.     AM_ARMODE_STRETCHED,        // don't do any aspect ratio correction
  5654.     AM_ARMODE_LETTER_BOX,       // letter box the video, paint background color in the excess region
  5655.     AM_ARMODE_CROP,             // crop the video to the right aspect ratio
  5656.     AM_ARMODE_STRETCHED_AS_PRIMARY
  5657.   );
  5658.   {$EXTERNALSYM _AM_ASPECT_RATIO_MODE}
  5659.   AM_ASPECT_RATIO_MODE = _AM_ASPECT_RATIO_MODE;
  5660.   {$EXTERNALSYM AM_ASPECT_RATIO_MODE}
  5661.   TAMAspectRatioMode = AM_ASPECT_RATIO_MODE;
  5662.  
  5663.   {$HPPEMIT 'typedef System::DelphiInterface<IMixerPinConfig> _di_IMixerPinConfig;'}
  5664.   {$EXTERNALSYM IMixerPinConfig}
  5665.   IMixerPinConfig = interface(IUnknown)
  5666.     ['{593CDDE1-0759-11D1-9E69-00C04FD7C15B}']
  5667.     (*** IMixerPinConfig methods ***)
  5668.     function SetRelativePosition(dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
  5669.     function GetRelativePosition(out dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
  5670.     function SetZOrder(dwZOrder: DWORD): HResult; stdcall;
  5671.     function GetZOrder(out dwZOrder: DWORD): HResult; stdcall;
  5672.     function SetColorKey(var pColorKey: TColorKey): HResult; stdcall;
  5673.     function GetColorKey(out pColorKey: TColorKey; out pColor: DWORD): HResult; stdcall;
  5674.     function SetBlendingParameter(dwBlendingParameter: DWORD): HResult; stdcall;
  5675.     function GetBlendingParameter(out dwBlendingParameter: DWORD): HResult; stdcall;
  5676.     function SetAspectRatioMode(amAspectRatioMode: TAMAspectRatioMode): HResult; stdcall;
  5677.     function GetAspectRatioMode(out amAspectRatioMode: TAMAspectRatioMode): HResult; stdcall;
  5678.     function SetStreamTransparent(bStreamTransparent: BOOL): HResult; stdcall;
  5679.     function GetStreamTransparent(out bStreamTransparent: BOOL): HResult; stdcall;
  5680.   end;
  5681.  
  5682.   {$HPPEMIT 'typedef System::DelphiInterface<IMixerPinConfig2> _di_IMixerPinConfig2;'}
  5683.   {$EXTERNALSYM IMixerPinConfig2}
  5684.   IMixerPinConfig2 = interface(IMixerPinConfig)
  5685.     ['{EBF47182-8764-11d1-9E69-00C04FD7C15B}']
  5686.     (*** IMixerPinConfig2 methods ***)
  5687.     function SetOverlaySurfaceColorControls(pColorControl: PDDColorControl): HResult; stdcall;
  5688.     function GetOverlaySurfaceColorControls(out pColorControl: TDDColorControl): HResult; stdcall;
  5689.   end;
  5690.  
  5691. (*==========================================================================;
  5692.  *
  5693.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  5694.  *
  5695.  *  File:       control.h
  5696.  *
  5697.  ***************************************************************************)
  5698.  
  5699. const
  5700.   LIBID_QuartzTypeLib: TGUID = (D1:$56A868B0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5701.   {$EXTERNALSYM LIBID_QuartzTypeLib}
  5702.  
  5703.   IID_IAMCollection: TGUID = (D1:$56A868B9;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5704.   {$EXTERNALSYM IID_IAMCollection}
  5705.   IID_IMediaControl: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5706.   {$EXTERNALSYM IID_IMediaControl}
  5707.   IID_IMediaEvent: TGUID = (D1:$56A868B6;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5708.   {$EXTERNALSYM IID_IMediaEvent}
  5709.   IID_IMediaEventEx: TGUID = (D1:$56A868C0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5710.   {$EXTERNALSYM IID_IMediaEventEx}
  5711.   IID_IMediaPosition: TGUID = (D1:$56A868B2;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5712.   {$EXTERNALSYM IID_IMediaPosition}
  5713.   IID_IBasicAudio: TGUID = (D1:$56A868B3;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5714.   {$EXTERNALSYM IID_IBasicAudio}
  5715.   IID_IVideoWindow: TGUID = (D1:$56A868B4;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5716.   {$EXTERNALSYM IID_IVideoWindow}
  5717.   IID_IBasicVideo: TGUID = (D1:$56A868B5;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5718.   {$EXTERNALSYM IID_IBasicVideo}
  5719.   IID_IBasicVideo2: TGUID = (D1:$329bb360;D2:$f6ea;D3:$11d1;D4:($90,$38,$00,$a0,$c9,$69,$72,$98));
  5720.   {$EXTERNALSYM IID_IBasicVideo2}
  5721.   IID_IDeferredCommand: TGUID = (D1:$56A868B8;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5722.   {$EXTERNALSYM IID_IDeferredCommand}
  5723.   IID_IQueueCommand: TGUID = (D1:$56A868B7;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5724.   {$EXTERNALSYM IID_IQueueCommand}
  5725.  
  5726.   CLSID_FilgraphManager: TGUID = (D1:$E436EBB3;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  5727.   {$EXTERNALSYM CLSID_FilgraphManager}
  5728.  
  5729.   IID_IFilterInfo: TGUID = (D1:$56A868BA;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5730.   {$EXTERNALSYM IID_IFilterInfo}
  5731.   IID_IRegFilterInfo: TGUID = (D1:$56A868BB;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5732.   {$EXTERNALSYM IID_IRegFilterInfo}
  5733.   IID_IMediaTypeInfo: TGUID = (D1:$56A868BC;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5734.   {$EXTERNALSYM IID_IMediaTypeInfo}
  5735.   IID_IPinInfo: TGUID = (D1:$56A868BD;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5736.   {$EXTERNALSYM IID_IPinInfo}
  5737.   IID_IAMStats: TGUID = (D1:$bc9bcf80;D2:$dcd2;D3:$11d2;D4:($ab,$f6,$00,$a0,$c9,$05,$f3,$75));
  5738.   {$EXTERNALSYM IID_IAMStats}
  5739. type
  5740.   OAEVENT = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;
  5741.   {$EXTERNALSYM OAEVENT}
  5742.   OAHWND = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;
  5743.   {$EXTERNALSYM OAHWND}
  5744.   OAFilterState = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;
  5745.   {$EXTERNALSYM OAFilterState}
  5746.  
  5747.   {$HPPEMIT 'typedef System::DelphiInterface<IAMCollection> _di_IAMCollection;'}
  5748.   {$EXTERNALSYM IAMCollection}
  5749.   IAMCollection = interface(IDispatch)
  5750.     ['{56A868B9-0AD4-11CE-B03A-0020AF0BA770}']
  5751.     (*** IAMCollection methods ***)
  5752.     function get_Count(out plCount: Longint): HResult; stdcall;
  5753.     function Item(lItem: Longint; out ppUnk: IUnknown): HResult; stdcall;
  5754.     function get__NewEnum(out ppUnk: IUnknown): HResult; stdcall;
  5755.  
  5756.   end;
  5757.  
  5758.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaControl> _di_IMediaControl;'}
  5759.   {$EXTERNALSYM IMediaControl}
  5760.   IMediaControl = interface(IDispatch)
  5761.     ['{56A868B1-0AD4-11CE-B03A-0020AF0BA770}']
  5762.     (*** IMediaControl methods ***)
  5763.     function Run: HResult; stdcall;
  5764.     function Pause: HResult; stdcall;
  5765.     function Stop: HResult; stdcall;
  5766.     function GetState(msTimeout: DWORD; out pfs: TFilterState): HResult; stdcall;
  5767.     function RenderFile(strFilename: WideString): HResult; stdcall;
  5768.     function AddSourceFilter(strFilename: WideString; out ppUnk: IDispatch): HResult; stdcall;
  5769.     function get_FilterCollection(out ppUnk: IDispatch): HResult; stdcall;
  5770.     function get_RegFilterCollection(out ppUnk: IDispatch): HResult; stdcall;
  5771.     function StopWhenReady: HResult; stdcall;
  5772.   end;
  5773.  
  5774.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaEvent> _di_IMediaEvent;'}
  5775.   {$EXTERNALSYM IMediaEvent}
  5776.   IMediaEvent = interface(IDispatch)
  5777.     ['{56A868B6-0AD4-11CE-B03A-0020AF0BA770}']
  5778.     (*** IMediaEvent methods ***)
  5779.     function GetEventHandle(out hEvent: OAEVENT): HResult; stdcall;
  5780.     function GetEvent(out lEventCode: Longint; out lParam1, lParam2: Longint;
  5781.         msTimeout: DWORD): HResult; stdcall;
  5782.     function WaitForCompletion(msTimeout: DWORD; out pEvCode: Longint):
  5783.         HResult; stdcall;
  5784.     function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
  5785.     function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
  5786.     function FreeEventParams(lEvCode: Longint; lParam1, lParam2: Longint):
  5787.         HResult; stdcall;
  5788.   end;
  5789.  
  5790.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaEventEx> _di_IMediaEventEx;'}
  5791.   {$EXTERNALSYM IMediaEventEx}
  5792.   IMediaEventEx = interface(IMediaEvent)
  5793.     ['{56A868C0-0AD4-11CE-B03A-0020AF0BA770}']
  5794.     (*** IMediaEventEx methods ***)
  5795.     function SetNotifyWindow(hwnd: OAHWND; lMsg: Longint;
  5796.         lInstanceData: Longint): HResult; stdcall;
  5797.     function SetNotifyFlags(lNoNotifyFlags: Longint): HResult; stdcall;
  5798.     function GetNotifyFlags(out lplNoNotifyFlags): HResult; stdcall; //longint
  5799.   end;
  5800.  
  5801.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaPosition> _di_IMediaPosition;'}
  5802.   {$EXTERNALSYM IMediaPosition}
  5803.   IMediaPosition = interface(IDispatch)
  5804.     ['{56A868B2-0AD4-11CE-B03A-0020AF0BA770}']
  5805.     (*** IMediaPosition methods ***)
  5806.     function get_Duration(out plength: TRefTime): HResult; stdcall;
  5807.     function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
  5808.     function get_CurrentPosition(out pllTime: TRefTime): HResult; stdcall;
  5809.     function get_StopTime(out pllTime: TRefTime): HResult; stdcall;
  5810.     function put_StopTime(llTime: TRefTime): HResult; stdcall;
  5811.     function get_PrerollTime(out pllTime: TRefTime): HResult; stdcall;
  5812.     function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
  5813.     function put_Rate(dRate: double): HResult; stdcall;
  5814.     function get_Rate(out pdRate: double): HResult; stdcall;
  5815.     function CanSeekForward(out pCanSeekForward: Longint): HResult; stdcall;
  5816.     function CanSeekBackward(out pCanSeekBackward: Longint): HResult; stdcall;
  5817.   end;
  5818.  
  5819.   {$HPPEMIT 'typedef System::DelphiInterface<IBasicAudio> _di_IBasicAudio;'}
  5820.   {$EXTERNALSYM IBasicAudio}
  5821.   IBasicAudio = interface(IDispatch)
  5822.     ['{56A868B3-0AD4-11CE-B03A-0020AF0BA770}']
  5823.     (*** IBasicAudio methods ***)
  5824.     function put_Volume(lVolume: Longint): HResult; stdcall;
  5825.     function get_Volume(out plVolume: Longint): HResult; stdcall;
  5826.     function put_Balance(lBalance: Longint): HResult; stdcall;
  5827.     function get_Balance(out plBalance: Longint): HResult; stdcall;
  5828.   end;
  5829.  
  5830.   {$HPPEMIT 'typedef System::DelphiInterface<IVideoWindow> _di_IVideoWindow;'}
  5831.   {$EXTERNALSYM IVideoWindow}
  5832.   IVideoWindow = interface(IDispatch)
  5833.     ['{56A868B4-0AD4-11CE-B03A-0020AF0BA770}']
  5834.     (*** IVideoWindow methods ***)
  5835.     function put_Caption(strCaption: WideString): HResult; stdcall;
  5836.     function get_Caption(out strCaption: WideString): HResult; stdcall;
  5837.     function put_WindowStyle(WindowStyle: Longint): HResult; stdcall;
  5838.     function get_WindowStyle(out WindowStyle: Longint): HResult; stdcall;
  5839.     function put_WindowStyleEx(WindowStyleEx: Longint): HResult; stdcall;
  5840.     function get_WindowStyleEx(out WindowStyleEx: Longint): HResult; stdcall;
  5841.     function put_AutoShow(AutoShow: LongBool): HResult; stdcall;
  5842.     function get_AutoShow(out AutoShow: LongBool): HResult; stdcall;
  5843.     function put_WindowState(WindowState: Longint): HResult; stdcall;
  5844.     function get_WindowState(out WindowState: Longint): HResult; stdcall;
  5845.     function put_BackgroundPalette(BackgroundPalette: Longint): HResult; stdcall;
  5846.     function get_BackgroundPalette(out pBackgroundPalette: Longint): HResult; stdcall;
  5847.     function put_Visible(Visible: LongBool): HResult; stdcall;
  5848.     function get_Visible(out pVisible: LongBool): HResult; stdcall;
  5849.     function put_Left(Left: Longint): HResult; stdcall;
  5850.     function get_Left(out pLeft: Longint): HResult; stdcall;
  5851.     function put_Width(Width: Longint): HResult; stdcall;
  5852.     function get_Width(out pWidth: Longint): HResult; stdcall;
  5853.     function put_Top(Top: Longint): HResult; stdcall;
  5854.     function get_Top(out pTop: Longint): HResult; stdcall;
  5855.     function put_Height(Height: Longint): HResult; stdcall;
  5856.     function get_Height(out pHeight: Longint): HResult; stdcall;
  5857.     function put_Owner(Owner: OAHWND): HResult; stdcall;
  5858.     function get_Owner(out Owner: OAHWND): HResult; stdcall;
  5859.     function put_MessageDrain(Drain: OAHWND): HResult; stdcall;
  5860.     function get_MessageDrain(out Drain: OAHWND): HResult; stdcall;
  5861.     function get_BorderColor(out Color: Longint): HResult; stdcall;
  5862.     function put_BorderColor(Color: Longint): HResult; stdcall;
  5863.     function get_FullScreenMode(out FullScreenMode: LongBool): HResult; stdcall;
  5864.     function put_FullScreenMode(FullScreenMode: LongBool): HResult; stdcall;
  5865.     function SetWindowForeground(Focus: Longint): HResult; stdcall;
  5866.     function NotifyOwnerMessage(hwnd: Longint; uMsg, wParam, lParam: Longint): HResult; stdcall;
  5867.     function SetWindowPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  5868.     function GetWindowPosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5869.     function GetMinIdealImageSize(out pWidth, pHeight: Longint): HResult; stdcall;
  5870.     function GetMaxIdealImageSize(out pWidth, pHeight: Longint): HResult; stdcall;
  5871.     function GetRestorePosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5872.     function HideCursor(HideCursor: LongBool): HResult; stdcall;
  5873.     function IsCursorHidden(out CursorHidden: LongBool): HResult; stdcall;
  5874.   end;
  5875.  
  5876.   {$HPPEMIT 'typedef System::DelphiInterface<IBasicVideo> _di_IBasicVideo;'}
  5877.   {$EXTERNALSYM IBasicVideo}
  5878.   IBasicVideo = interface(IDispatch)
  5879.     ['{56A868B5-0AD4-11CE-B03A-0020AF0BA770}']
  5880.     (*** IBasicVideo methods ***)
  5881.     function get_AvgTimePerFrame(out pAvgTimePerFrame: TRefTime): HResult; stdcall;
  5882.     function get_BitRate(out pBitRate: Longint): HResult; stdcall;
  5883.     function get_BitErrorRate(out pBitErrorRate: Longint): HResult; stdcall;
  5884.     function get_VideoWidth(out pVideoWidth: Longint): HResult; stdcall;
  5885.     function get_VideoHeight(out pVideoHeight: Longint): HResult; stdcall;
  5886.     function put_SourceLeft(SourceLeft: Longint): HResult; stdcall;
  5887.     function get_SourceLeft(out pSourceLeft: Longint): HResult; stdcall;
  5888.     function put_SourceWidth(SourceWidth: Longint): HResult; stdcall;
  5889.     function get_SourceWidth(out pSourceWidth: Longint): HResult; stdcall;
  5890.     function put_SourceTop(SourceTop: Longint): HResult; stdcall;
  5891.     function get_SourceTop(out pSourceTop: Longint): HResult; stdcall;
  5892.     function put_SourceHeight(SourceHeight: Longint): HResult; stdcall;
  5893.     function get_SourceHeight(out pSourceHeight: Longint): HResult; stdcall;
  5894.     function put_DestinationLeft(DestinationLeft: Longint): HResult; stdcall;
  5895.     function get_DestinationLeft(out pDestinationLeft: Longint): HResult; stdcall;
  5896.     function put_DestinationWidth(DestinationWidth: Longint): HResult; stdcall;
  5897.     function get_DestinationWidth(out pDestinationWidth: Longint): HResult; stdcall;
  5898.     function put_DestinationTop(DestinationTop: Longint): HResult; stdcall;
  5899.     function get_DestinationTop(out pDestinationTop: Longint): HResult; stdcall;
  5900.     function put_DestinationHeight(DestinationHeight: Longint): HResult; stdcall;
  5901.     function get_DestinationHeight(out pDestinationHeight: Longint): HResult; stdcall;
  5902.     function SetSourcePosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  5903.     function GetSourcePosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5904.     function SetDefaultSourcePosition: HResult; stdcall;
  5905.     function SetDestinationPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  5906.     function GetDestinationPosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5907.     function SetDefaultDestinationPosition: HResult; stdcall;
  5908.     function GetVideoSize(out pWidth, Height: Longint): HResult; stdcall;
  5909.     function GetVideoPaletteEntries(StartIndex, Entries: Longint;
  5910.         out pRetrieved: Longint; out pPalette): HResult; stdcall;
  5911.     function GetCurrentImage(var BufferSize: Longint; var pDIBImage): HResult; stdcall;
  5912.     function IsUsingDefaultSource: HResult; stdcall;
  5913.     function IsUsingDefaultDestination: HResult; stdcall;
  5914.   end;
  5915.  
  5916.   {$HPPEMIT 'typedef System::DelphiInterface<IBasicVideo2> _di_IBasicVideo2;'}
  5917.   {$EXTERNALSYM IBasicVideo2}
  5918.   IBasicVideo2 = interface(IBasicVideo)
  5919.     ['{329bb360-f6ea-11d1-9038-00a0c9697298}']
  5920.     (*** IBasicVideo2 methods ***)
  5921.     function GetPreferredAspectRatio(out plAspectX, plAspectY: Longint): HResult; stdcall;
  5922.   end;
  5923.  
  5924.   {$HPPEMIT 'typedef System::DelphiInterface<IDeferredCommand> _di_IDeferredCommand;'}
  5925.   {$EXTERNALSYM IDeferredCommand}
  5926.   IDeferredCommand = interface(IDispatch)
  5927.     ['{56A868B8-0AD4-11CE-B03A-0020AF0BA770}']
  5928.     (*** IDeferredCommand methods ***)
  5929.     function Cancel: HResult; stdcall;
  5930.     function Confidence(out pConfidence: Longint): HResult; stdcall;
  5931.     function Postpone(newtime: TRefTime): HResult; stdcall;
  5932.     function GetHResult(out phrResult: HResult): HResult; stdcall;
  5933.   end;
  5934.  
  5935.   {$HPPEMIT 'typedef System::DelphiInterface<IQueueCommand> _di_IQueueCommand;'}
  5936.   {$EXTERNALSYM IQueueCommand}
  5937.   IQueueCommand = interface(IUnknown)
  5938.     ['{56A868B7-0AD4-11CE-B03A-0020AF0BA770}']
  5939.     (*** IQueueCommand methods ***)
  5940.     function InvokeAtStreamTime(out pCmd: IDeferredCommand; time: TRefTime;
  5941.         const iid: TGUID; dispidMethod: Longint; wFlags: SmallInt;
  5942.         cArgs: Longint; const pDispParams: OleVariant; var pvarResult: OleVariant;
  5943.         out puArgErr: SmallInt):  HResult; stdcall;
  5944.     function InvokeAtPresentationTime(out pCmd: IDeferredCommand;
  5945.         time: TRefTime; const iid: TGUID; dispidMethod: Longint;
  5946.         wFlags: SmallInt; cArgs: Longint; const pDispParams: OleVariant;
  5947.         var pvarResult: OleVariant; out puArgErr: SmallInt): HResult; stdcall;
  5948.   end;
  5949.  
  5950.   {$HPPEMIT 'typedef System::DelphiInterface<IFilterInfo> _di_IFilterInfo;'}
  5951.   {$EXTERNALSYM IFilterInfo}
  5952.   IFilterInfo = interface(IDispatch)
  5953.     ['{56A868BA-0AD4-11CE-B03A-0020AF0BA770}']
  5954.     (*** IFilterInfo methods ***)
  5955.     function FindPin(strPinID: WideString; out ppUnk: IDispatch): HResult; stdcall;
  5956.     function get_Name(out strName: WideString): HResult; stdcall;
  5957.     function get_VendorInfo(out strVendorInfo: WideString): HResult; stdcall;
  5958.     function get_Filter(out ppUnk: IUnknown): HResult; stdcall;
  5959.     function get_Pins(out ppUnk: IDispatch): HResult; stdcall;
  5960.     function get_IsFileSource(out pbIsSource: LongBool): HResult; stdcall;
  5961.     function get_Filename(out pstrFilename: WideString): HResult; stdcall;
  5962.     function put_Filename(strFilename: WideString): HResult; stdcall;
  5963.   end;
  5964.  
  5965.   {$HPPEMIT 'typedef System::DelphiInterface<IRegFilterInfo> _di_IRegFilterInfo;'}
  5966.   {$EXTERNALSYM IRegFilterInfo}
  5967.   IRegFilterInfo = interface(IDispatch)
  5968.     ['{56A868BB-0AD4-11CE-B03A-0020AF0BA770}']
  5969.     (*** IRegFilterInfo methods ***)
  5970.     function get_Name(out strName: WideString): HResult; stdcall;
  5971.     function Filter(out ppUnk: IDispatch): HResult; stdcall;
  5972.   end;
  5973.  
  5974.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaTypeInfo> _di_IMediaTypeInfo;'}
  5975.   {$EXTERNALSYM IMediaTypeInfo}
  5976.   IMediaTypeInfo = interface(IDispatch)
  5977.     ['{56A868BC-0AD4-11CE-B03A-0020AF0BA770}']
  5978.     (*** IMediaTypeInfo methods ***)
  5979.     function Get_Type(out strType: WideString): HResult; stdcall;
  5980.     function Get_Subtype(out strType: WideString): HResult; stdcall;
  5981.   end;
  5982.  
  5983.   {$HPPEMIT 'typedef System::DelphiInterface<IPinInfo> _di_IPinInfo;'}
  5984.   {$EXTERNALSYM IPinInfo}
  5985.   IPinInfo = interface(IDispatch)
  5986.     ['{56A868BD-0AD4-11CE-B03A-0020AF0BA770}']
  5987.     (*** IPinInfo methods ***)
  5988.     function get_Pin(out ppUnk: IUnknown): HResult; stdcall;
  5989.     function get_ConnectedTo(out ppUnk: IDispatch): HResult; stdcall;
  5990.     function get_ConnectionMediaType(out ppUnk: IDispatch): HResult; stdcall;
  5991.     function get_FilterInfo(out ppUnk: IDispatch): HResult; stdcall;
  5992.     function get_Name(out ppUnk: WideString): HResult; stdcall;
  5993.     function get_Direction(out ppDirection: Longint): HResult; stdcall;
  5994.     function get_PinID(out strPinID: WideString): HResult; stdcall;
  5995.     function get_MediaTypes(out ppUnk: IDispatch): HResult; stdcall;
  5996.     function Connect(pPin: IUnknown): HResult; stdcall;
  5997.     function ConnectDirect(pPin: IUnknown): HResult; stdcall;
  5998.     function ConnectWithType(pPin: IUnknown; pMediaType: IDispatch): HResult; stdcall;
  5999.     function Disconnect: HResult; stdcall;
  6000.     function Render: HResult; stdcall;
  6001.   end;
  6002.  
  6003.   {$HPPEMIT 'typedef System::DelphiInterface<IAMStats> _di_IAMStats;'}
  6004.   {$EXTERNALSYM IAMStats}
  6005.   IAMStats = interface(IDispatch)
  6006.     ['{bc9bcf80-dcd2-11d2-abf6-00a0c905f375}']
  6007.     (*** IAMStats methods ***)
  6008.     function Reset: HResult; stdcall;
  6009.     function get_Count(out plCount: Longint): HResult; stdcall;
  6010.     function GetValueByIndex(lIndex: longint; out szName: WideString; out lCount: longint;
  6011.              out dLast, dAverage, dStdDev, dMin, dMax: double): HResult; stdcall;
  6012.     function GetValueByName(szName: WideString; out lIndex, lCount: Longint;
  6013.              out dLast, dAverage, dStdDev, dMin, dMax: double): HResult; stdcall;
  6014.     function GetIndex(szName: WideString; lCreate: longint; out plIndex: longint): HResult; stdcall;
  6015.     function AddValue(lIndex: longint; dValue: double): HResult; stdcall;
  6016.   end;
  6017.  
  6018. (*==========================================================================;
  6019.  *
  6020.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6021.  *
  6022.  *  File:       qnetwork.h
  6023.  *
  6024.  ***************************************************************************)
  6025.  
  6026. const
  6027.   LIBID_QuartzNetTypeLib: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  6028.   {$EXTERNALSYM LIBID_QuartzNetTypeLib}
  6029.  
  6030.   IID_IAMNetShowConfig: TGUID = (D1:$FA2AA8F1;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6031.   {$EXTERNALSYM IID_IAMNetShowConfig}
  6032.   IID_IAMChannelInfo: TGUID = (D1:$FA2AA8F2;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6033.   {$EXTERNALSYM IID_IAMChannelInfo}
  6034.   IID_IAMNetworkStatus: TGUID = (D1:$FA2AA8F3;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6035.   {$EXTERNALSYM IID_IAMNetworkStatus}
  6036.   IID_IAMExtendedSeeking: TGUID = (D1:$FA2AA8F9;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6037.   {$EXTERNALSYM IID_IAMExtendedSeeking}
  6038.   IID_IAMNetShowExProps: TGUID = (D1:$FA2AA8F5;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6039.   {$EXTERNALSYM IID_IAMNetShowExProps}
  6040.   IID_IAMExtendedErrorInfo: TGUID = (D1:$FA2AA8F6;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6041.   {$EXTERNALSYM IID_IAMExtendedErrorInfo}
  6042.   IID_IAMMediaContent: TGUID = (D1:$FA2AA8EF;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  6043.   {$EXTERNALSYM IID_IAMMediaContent}
  6044.   IID_IAMMediaContent2 : TGUID = (D1:$CE8F78C1;D2:$74D9;D3:$11D2;D4:($B0,$9D,$00,$A0,$C9,$A8,$11,$17));
  6045.   {$EXTERNALSYM IID_IAMMediaContent2}
  6046.   IID_IAMNetShowPreroll: TGUID = (D1:$AAE7E4E2;D2:$6388;D3:$11D1;D4:($8D,$93,$00,$60,$97,$C9,$A2,$B2));
  6047.   {$EXTERNALSYM IID_IAMNetShowPreroll}
  6048.   IID_IDShowPlugin     : TGUID = (D1:$4746B7C8;D2:$700E;D3:$11D1;D4:($BE,$CC,$00,$C0,$4F,$B6,$E9,$37));
  6049.   {$EXTERNALSYM IID_IDShowPlugin}
  6050.  
  6051. //AMExtendedSeekingCapabilities
  6052. const
  6053.   AM_EXSEEK_CANSEEK               = 1;
  6054.   {$EXTERNALSYM AM_EXSEEK_CANSEEK}
  6055.   AM_EXSEEK_CANSCAN               = 2;
  6056.   {$EXTERNALSYM AM_EXSEEK_CANSCAN}
  6057.   AM_EXSEEK_MARKERSEEK            = 4;
  6058.   {$EXTERNALSYM AM_EXSEEK_MARKERSEEK}
  6059.   AM_EXSEEK_SCANWITHOUTCLOCK      = 8;
  6060.   {$EXTERNALSYM AM_EXSEEK_SCANWITHOUTCLOCK}
  6061.   AM_EXSEEK_NOSTANDARDREPAINT     = 16;
  6062.   {$EXTERNALSYM AM_EXSEEK_NOSTANDARDREPAINT}
  6063.   AM_EXSEEK_BUFFERING             = 32;
  6064.   {$EXTERNALSYM AM_EXSEEK_BUFFERING}
  6065.   AM_EXSEEK_SENDS_VIDEOFRAMEREADY = 64;
  6066.   {$EXTERNALSYM AM_EXSEEK_SENDS_VIDEOFRAMEREADY}
  6067.  
  6068. type
  6069.   DATE = record
  6070.     da_year: Integer;   // Year - 1980
  6071.     da_day : Byte;       // Day of the month
  6072.     da_mon : Byte;       // Month (1 = Jan)
  6073.   end;
  6074.   {$EXTERNALSYM DATE}
  6075.   //TDate = DATE;
  6076.  
  6077.   {$HPPEMIT 'typedef System::DelphiInterface<IAMNetShowConfig> _di_IAMNetShowConfig;'}
  6078.   {$EXTERNALSYM IAMNetShowConfig}
  6079.   IAMNetShowConfig = interface(IDispatch)
  6080.     ['{FA2AA8F1-8B62-11D0-A520-000000000000}']
  6081.     (*** IAMNetShowConfig methods ***)
  6082.     function get_BufferingTime(var pBufferingTime: double): HResult; stdcall;
  6083.     function put_BufferingTime(BufferingTime: double): HResult; stdcall;
  6084.     function get_UseFixedUDPPort(var pUseFixedUDPPort: WordBool): HResult; stdcall;
  6085.     function put_UseFixedUDPPort(UseFixedUDPPort: WordBool): HResult; stdcall;
  6086.     function get_FixedUDPPort(var pFixedUDPPort: Longint): HResult; stdcall;
  6087.     function put_FixedUDPPort(FixedUDPPort: Longint): HResult; stdcall;
  6088.     function get_UseHTTPProxy(var pUseHTTPProxy: WordBool): HResult; stdcall;
  6089.     function put_UseHTTPProxy(UseHTTPProxy: WordBool): HResult; stdcall;
  6090.     function get_EnableAutoProxy(var pEnableAutoProxy: WordBool): HResult; stdcall;
  6091.     function put_EnableAutoProxy(EnableAutoProxy: WordBool): HResult; stdcall;
  6092.     function get_HTTPProxyHost(var pbstrHTTPProxyHost: TBSTR): HResult; stdcall;
  6093.     function put_HTTPProxyHost(bstrHTTPProxyHost: TBSTR): HResult; stdcall;
  6094.     function get_HTTPProxyPort(var pHTTPProxyPort: Longint): HResult; stdcall;
  6095.     function put_HTTPProxyPort(HTTPProxyPort: Longint): HResult; stdcall;
  6096.     function get_EnableMulticast(var pEnableMulticast: WordBool): HResult; stdcall;
  6097.     function put_EnableMulticast(EnableMulticast: WordBool): HResult; stdcall;
  6098.     function get_EnableUDP(var pEnableUDP: WordBool): HResult; stdcall;
  6099.     function put_EnableUDP(EnableUDP: WordBool): HResult; stdcall;
  6100.     function get_EnableTCP(var pEnableTCP: WordBool): HResult; stdcall;
  6101.     function put_EnableTCP(EnableTCP: WordBool): HResult; stdcall;
  6102.     function get_EnableHTTP(var pEnableHTTP: WordBool): HResult; stdcall;
  6103.     function put_EnableHTTP(EnableHTTP: WordBool): HResult; stdcall;
  6104.   end;
  6105.  
  6106.   {$HPPEMIT 'typedef System::DelphiInterface<IAMChannelInfo> _di_IAMChannelInfo;'}
  6107.   {$EXTERNALSYM IAMChannelInfo}
  6108.   IAMChannelInfo = interface(IDispatch)
  6109.     ['{FA2AA8F2-8B62-11D0-A520-000000000000}']
  6110.     (*** IAMChannelInfo methods ***)
  6111.     function get_ChannelName(var pbstrChannelName: TBSTR): HResult; stdcall;
  6112.     function get_ChannelDescription(var pbstrChannelDescription: TBSTR): HResult; stdcall;
  6113.     function get_ChannelURL(var pbstrChannelURL: TBSTR): HResult; stdcall;
  6114.     function get_ContactAddress(var pbstrContactAddress: TBSTR): HResult; stdcall;
  6115.     function get_ContactPhone(var pbstrContactPhone: TBSTR): HResult; stdcall;
  6116.     function get_ContactEmail(var pbstrContactEmail: TBSTR): HResult; stdcall;
  6117.   end;
  6118.  
  6119.   {$HPPEMIT 'typedef System::DelphiInterface<IAMNetworkStatus> _di_IAMNetworkStatus;'}
  6120.   {$EXTERNALSYM IAMNetworkStatus}
  6121.   IAMNetworkStatus = interface(IDispatch)
  6122.     ['{FA2AA8F3-8B62-11D0-A520-000000000000}']
  6123.     (*** IAMNetworkStatus methods ***)
  6124.     function get_ReceivedPackets(var pReceivedPackets: Longint): HResult; stdcall;
  6125.     function get_RecoveredPackets(var pRecoveredPackets: Longint): HResult; stdcall;
  6126.     function get_LostPackets(var pLostPackets: Longint): HResult; stdcall;
  6127.     function get_ReceptionQuality(var pReceptionQuality: Longint): HResult; stdcall;
  6128.     function get_BufferingCount(var pBufferingCount: Longint): HResult; stdcall;
  6129.     function get_IsBroadcast(var pIsBroadcast: WordBool): HResult; stdcall;
  6130.     function get_BufferingProgress(var pBufferingProgress: Longint): HResult; stdcall;
  6131.   end;
  6132.  
  6133.   {$HPPEMIT 'typedef System::DelphiInterface<IAMExtendedSeeking> _di_IAMExtendedSeeking;'}
  6134.   {$EXTERNALSYM IAMExtendedSeeking}
  6135.   IAMExtendedSeeking = interface(IDispatch)
  6136.     ['{FA2AA8F9-8B62-11D0-A520-000000000000}']
  6137.     (*** IAMExtendedSeeking methods ***)
  6138.     function get_ExSeekCapabilities(var pExCapabilities: Longint): HResult; stdcall;
  6139.     function get_MarkerCount(var pMarkerCount: Longint): HResult; stdcall;
  6140.     function get_CurrentMarker(var pCurrentMarker: Longint): HResult; stdcall;
  6141.     function GetMarkerTime(MarkerNum: Longint; var pMarkerTime: double): HResult; stdcall;
  6142.     function GetMarkerName(MarkerNum: Longint; var pbstrMarkerName: TBSTR): HResult; stdcall;
  6143.     function put_PlaybackSpeed(Speed: double): HResult; stdcall;
  6144.     function get_PlaybackSpeed(var pSpeed: double): HResult; stdcall;
  6145.   end;
  6146.  
  6147.   {$HPPEMIT 'typedef System::DelphiInterface<IAMNetShowExProps> _di_IAMNetShowExProps;'}
  6148.   {$EXTERNALSYM IAMNetShowExProps}
  6149.   IAMNetShowExProps = interface(IDispatch)
  6150.     ['{FA2AA8F5-8B62-11D0-A520-000000000000}']
  6151.     (*** IAMNetShowExProps methods ***)
  6152.     function get_SourceProtocol(var pSourceProtocol: Longint): HResult; stdcall;
  6153.     function get_Bandwidth(var pBandwidth: Longint): HResult; stdcall;
  6154.     function get_ErrorCorrection(var pbstrErrorCorrection: TBSTR): HResult; stdcall;
  6155.     function get_CodecCount(var pCodecCount: Longint): HResult; stdcall;
  6156.     function GetCodecInstalled(CodecNum: Longint; var pCodecInstalled: WordBool): HResult; stdcall;
  6157.     function GetCodecDescription(CodecNum: Longint; var pbstrCodecDescription: TBSTR): HResult; stdcall;
  6158.     function GetCodecURL(CodecNum: Longint; var pbstrCodecURL: TBSTR): HResult; stdcall;
  6159.     function get_CreationDate(var pCreationDate: Date): HResult; stdcall;
  6160.     function get_SourceLink(var pbstrSourceLink: TBSTR): HResult; stdcall;
  6161.   end;
  6162.  
  6163.   {$HPPEMIT 'typedef System::DelphiInterface<IAMExtendedErrorInfo> _di_IAMExtendedErrorInfo;'}
  6164.   {$EXTERNALSYM IAMExtendedErrorInfo}
  6165.   IAMExtendedErrorInfo = interface(IDispatch)
  6166.     ['{FA2AA8F6-8B62-11D0-A520-000000000000}']
  6167.     (*** IAMExtendedErrorInfo methods ***)
  6168.     function get_HasError(var pHasError: WordBool): HResult; stdcall;
  6169.     function get_ErrorDescription(var pbstrErrorDescription: TBSTR): HResult; stdcall;
  6170.     function get_ErrorCode(var pErrorCode: Longint): HResult; stdcall;
  6171.   end;
  6172.  
  6173.   {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaContent> _di_IAMMediaContent;'}
  6174.   {$EXTERNALSYM IAMMediaContent}
  6175.   IAMMediaContent = interface(IDispatch)
  6176.     ['{FA2AA8EF-8B62-11D0-A520-000000000000}']
  6177.     (*** IAMMediaContent methods ***)
  6178.     function get_AuthorName(var pbstrAuthorName: TBSTR): HResult; stdcall;
  6179.     function get_Title(var pbstrTitle: TBSTR): HResult; stdcall;
  6180.     function get_Rating(var pbstrRating: TBSTR): HResult; stdcall;
  6181.     function get_Description(var pbstrDescription: TBSTR): HResult; stdcall;
  6182.     function get_Copyright(var pbstrCopyright: TBSTR): HResult; stdcall;
  6183.     function get_BaseURL(var pbstrBaseURL: TBSTR): HResult; stdcall;
  6184.     function get_LogoURL(var pbstrLogoURL: TBSTR): HResult; stdcall;
  6185.     function get_LogoIconURL(var pbstrLogoURL: TBSTR): HResult; stdcall;
  6186.     function get_WatermarkURL(var pbstrWatermarkURL: TBSTR): HResult; stdcall;
  6187.     function get_MoreInfoURL(var pbstrMoreInfoURL: TBSTR): HResult; stdcall;
  6188.   end;
  6189.  
  6190.   {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaContent2> _di_IAMMediaContent2;'}
  6191.   {$EXTERNALSYM IAMMediaContent2}
  6192.   IAMMediaContent2 = interface(IDispatch)
  6193.     ['{CE8F78C1-74D9-11D2-B09D-00A0C9A81117}']
  6194.     (*** IAMMediaContent2 methods ***)
  6195.     function get_MediaParameter(var EntryNum: longint; var bstrName, pbstrValue: TBSTR): HResult; stdcall;
  6196.     function get_MediaParameterName(var EntryNum, Index: longint; var pbstrName: TBSTR): HResult; stdcall;
  6197.     function get_PlaylistCount(var pNumberEntries: longint): HResult; stdcall;
  6198.   end;
  6199.  
  6200.   {$HPPEMIT 'typedef System::DelphiInterface<IAMNetShowPreroll> _di_IAMNetShowPreroll;'}
  6201.   {$EXTERNALSYM IAMNetShowPreroll}
  6202.   IAMNetShowPreroll = interface(IDispatch)
  6203.     ['{AAE7E4E2-6388-11D1-8D93-006097C9A2B2}']
  6204.     (*** IAMNetShowPreroll methods ***)
  6205.     function put_Preroll(var fPreroll : WordBool): HResult; stdcall;
  6206.     function get_Preroll(var pfPreroll: WordBool): HResult; stdcall;
  6207.   end;
  6208.  
  6209.   {$HPPEMIT 'typedef System::DelphiInterface<IDShowPlugin> _di_IDShowPlugin;'}
  6210.   {$EXTERNALSYM IDShowPlugin}
  6211.   IDShowPlugin = interface(IUnknown)
  6212.     ['{4746B7C8-700E-11D1-BECC-00C04FB6E937}']
  6213.     (*** IDShowPlugin methods ***)
  6214.     function get_URL(var pURL: TBSTR): HResult; stdcall;
  6215.     function get_UserAgent(var pUserAgent: TBSTR): HResult; stdcall;
  6216.   end;
  6217.  
  6218. (*==========================================================================;
  6219.  *
  6220.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6221.  *
  6222.  *  File:       playlist.h
  6223.  *
  6224.  ***************************************************************************)
  6225.  
  6226. const
  6227.   IID_IAMPlayListItem: TGUID = (D1:$56A868FF;D2:$0AD4;D3:$11CE;D4:($B0,$A3,$00,$20,$AF,$0B,$A7,$70));
  6228.   {$EXTERNALSYM IID_IAMPlayListItem}
  6229.   IID_IAMPlayList: TGUID = (D1:$56A868FE;D2:$0AD4;D3:$11CE;D4:($B0,$A3,$00,$20,$AF,$0B,$A7,$70));
  6230.   {$EXTERNALSYM IID_IAMPlayList}
  6231.   IID_ISpecifyParticularPages : TGUID = '{4C437B91-6E9E-11d1-A704-006097C4E476}';
  6232.   {$EXTERNALSYM IID_ISpecifyParticularPages}
  6233.   IID_IAMRebuild: TGUID = '{02EF04DD-7580-11d1-BECE-00C04FB6E937}';
  6234.   {$EXTERNALSYM IID_IAMRebuild}
  6235.   SPECIFYPAGES_STATISTICS: TGUID = (D1:$4c437b92;D2:$6e9e;D3:$11d1;D4:($a7,$4,$0,$60,$97,$c4,$e4,$76));
  6236.   {$EXTERNALSYM SPECIFYPAGES_STATISTICS}
  6237.  
  6238.   AMPLAYLISTITEM_CANSKIP = 1;
  6239.   {$EXTERNALSYM AMPLAYLISTITEM_CANSKIP}
  6240.   AMPLAYLISTITEM_CANBIND = 2;
  6241.   {$EXTERNALSYM AMPLAYLISTITEM_CANBIND}
  6242.  
  6243. type
  6244.   {$HPPEMIT 'typedef System::DelphiInterface<IAMPlayListItem> _di_IAMPlayListItem;'}
  6245.   {$EXTERNALSYM IAMPlayListItem}
  6246.   IAMPlayListItem = interface(IUnknown)
  6247.     ['{56A868FF-0AD4-11CE-B0A3-0020AF0BA770}']
  6248.     (*** IAMPlayListItem methods ***)
  6249.     function GetFlags(out pdwFlags: DWORD): HResult; stdcall;
  6250.     function GetSourceCount(out pdwSources: DWORD): HResult; stdcall;
  6251.     function GetSourceURL(dwSourceIndex: DWORD; out pbstrURL: WideChar): HResult; stdcall;
  6252.     function GetSourceStart(dwSourceIndex: DWORD; out prtStart: TReferenceTime): HResult; stdcall;
  6253.     function GetSourceDuration(dwSourceIndex: DWORD;
  6254.         out prtDuration: TReferenceTime): HResult; stdcall;
  6255.     function GetSourceStartMarker(dwSourceIndex: DWORD;
  6256.         out pdwMarker: DWORD): HResult; stdcall;
  6257.     function GetSourceEndMarker(dwSourceIndex: DWORD;
  6258.         out pdwMarker: DWORD): HResult; stdcall;
  6259.     function GetSourceStartMarkerName(dwSourceIndex: DWORD;
  6260.         out pbstrStartMarker: WideChar): HResult; stdcall;
  6261.     function GetSourceEndMarkerName(dwSourceIndex: DWORD;
  6262.         out pbstrEndMarker: WideChar): HResult; stdcall;
  6263.     function GetLinkURL(out pbstrURL: WideChar): HResult; stdcall;
  6264.     function GetScanDuration(dwSourceIndex: DWORD;
  6265.         out prtScanDuration: TReferenceTime): HResult; stdcall;
  6266.   end;
  6267.  
  6268. const
  6269.   AMPLAYLIST_STARTINSCANMODE = 1;
  6270.   {$EXTERNALSYM AMPLAYLIST_STARTINSCANMODE}
  6271.   AMPLAYLIST_FORCEBANNER     = 2;
  6272.   {$EXTERNALSYM AMPLAYLIST_FORCEBANNER}
  6273.  
  6274.   AMPLAYLISTEVENT_RESUME  = $0;
  6275.   {$EXTERNALSYM AMPLAYLISTEVENT_RESUME}
  6276.   AMPLAYLISTEVENT_BREAK      = $1;
  6277.   {$EXTERNALSYM AMPLAYLISTEVENT_BREAK}
  6278.   AMPLAYLISTEVENT_NEXT      = $2;
  6279.   {$EXTERNALSYM AMPLAYLISTEVENT_NEXT}
  6280.   AMPLAYLISTEVENT_MASK      = $f;
  6281.   {$EXTERNALSYM AMPLAYLISTEVENT_MASK}
  6282.   AMPLAYLISTEVENT_REFRESH    = $10;
  6283.   {$EXTERNALSYM AMPLAYLISTEVENT_REFRESH}
  6284.  
  6285. type
  6286.   {$HPPEMIT 'typedef System::DelphiInterface<IAMPlayList> _di_IAMPlayList;'}
  6287.   {$EXTERNALSYM IAMPlayList}
  6288.   IAMPlayList = interface(IUnknown)
  6289.     ['{56A868FE-0AD4-11CE-B0A3-0020AF0BA770}']
  6290.     (*** IAMPlayList methods ***)
  6291.     function GetFlags(out pdwFlags: DWORD): HResult; stdcall;
  6292.     function GetItemCount(out pdwItems: DWORD): HResult; stdcall;
  6293.     function GetItem(dwItemIndex: DWORD; out ppItem: IAMPlayListItem): HResult; stdcall;
  6294.     function GetNamedEvent(var pwszEventName: WideChar; dwItemIndex: DWORD;
  6295.         out ppItem: IAMPlayListItem; out pdwFlags: DWORD): HResult; stdcall;
  6296.     function GetRepeatInfo(out pdwRepeatCount, pdwRepeatStart,
  6297.         pdwRepeatEnd: DWORD): HResult; stdcall;
  6298.   end;
  6299.  
  6300.   {$HPPEMIT 'typedef System::DelphiInterface<ISpecifyParticularPages> _di_ISpecifyParticularPages;'}
  6301.   {$EXTERNALSYM ISpecifyParticularPages}
  6302.   ISpecifyParticularPages = interface(IUnknown)
  6303.     ['{4C437B91-6E9E-11d1-A704-006097C4E476}']
  6304.     (*** ISpecifyParticularPages methods ***)
  6305.     function GetPages(const guidWhatPages: TGUID; out pPages: PGUID): HResult; stdcall;
  6306.   end;
  6307.  
  6308.   {$HPPEMIT 'typedef System::DelphiInterface<IAMRebuild> _di_IAMRebuild;'}
  6309.   {$EXTERNALSYM IAMRebuild}
  6310.   IAMRebuild = interface(IUnknown)
  6311.     ['{02EF04DD-7580-11d1-BECE-00C04FB6E937}']
  6312.     (*** IAMRebuild methods ***)
  6313.     function RebuildNow: HResult; stdcall;
  6314.   end;
  6315.  
  6316. (*==========================================================================;
  6317.  *
  6318.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6319.  *
  6320.  *  File:       amvideo.h
  6321.  *
  6322.  ***************************************************************************)
  6323.  
  6324. const
  6325.   IID_IDirectDrawVideo: TGUID = (D1:$36D39EB0;D2:$DD75;D3:$11CE;D4:($BF,$0E,$00,$AA,$00,$55,$59,$5A));
  6326.   {$EXTERNALSYM IID_IDirectDrawVideo}
  6327.   IID_IQualProp: TGUID = (D1:$1BD0ECB0;D2:$F8E2;D3:$11CE;D4:($AA,$C6,$00,$20,$AF,$0B,$99,$A3));
  6328.   {$EXTERNALSYM IID_IQualProp}
  6329.   IID_IFullScreenVideo: TGUID = (D1:$DD1D7110;D2:$7836;D3:$11CF;D4:($BF,$47,$00,$AA,$00,$55,$59,$5A));
  6330.   {$EXTERNALSYM IID_IFullScreenVideo}
  6331.   IID_IFullScreenVideoEx: TGUID = (D1:$53479470;D2:$F1DD;D3:$11CF;D4:($BC,$42,$00,$AA,$00,$AC,$74,$F6));
  6332.   {$EXTERNALSYM IID_IFullScreenVideoEx}
  6333.   IID_IBaseVideoMixer: TGUID = (D1:$61DED640;D2:$E912;D3:$11CE;D4:($A0,$99,$00,$AA,$00,$47,$9A,$58));
  6334.   {$EXTERNALSYM IID_IBaseVideoMixer}
  6335.  
  6336. const
  6337.   AMDDS_NONE    = $00;        // No use for DCI/DirectDraw
  6338.   {$EXTERNALSYM AMDDS_NONE}
  6339.   AMDDS_DCIPS   = $01;        // Use DCI primary surface
  6340.   {$EXTERNALSYM AMDDS_DCIPS}
  6341.   AMDDS_PS      = $02;        // Use DirectDraw primary
  6342.   {$EXTERNALSYM AMDDS_PS}
  6343.   AMDDS_RGBOVR  = $04;        // RGB overlay surfaces
  6344.   {$EXTERNALSYM AMDDS_RGBOVR}
  6345.   AMDDS_YUVOVR  = $08;        // YUV overlay surfaces
  6346.   {$EXTERNALSYM AMDDS_YUVOVR}
  6347.   AMDDS_RGBOFF  = $10;        // RGB offscreen surfaces
  6348.   {$EXTERNALSYM AMDDS_RGBOFF}
  6349.   AMDDS_YUVOFF  = $20;        // YUV offscreen surfaces
  6350.   {$EXTERNALSYM AMDDS_YUVOFF}
  6351.   AMDDS_RGBFLP  = $40;        // RGB flipping surfaces
  6352.   {$EXTERNALSYM AMDDS_RGBFLP}
  6353.   AMDDS_YUVFLP  = $80;        // YUV flipping surfaces
  6354.   {$EXTERNALSYM AMDDS_YUVFLP}
  6355.   AMDDS_ALL     = $FF;        // ALL the previous flags
  6356.   {$EXTERNALSYM AMDDS_ALL}
  6357.   AMDDS_DEFAULT = AMDDS_ALL;   // Use all available surfaces
  6358.   {$EXTERNALSYM AMDDS_DEFAULT}
  6359.  
  6360.   AMDDS_YUV = AMDDS_YUVOFF or AMDDS_YUVOVR or AMDDS_YUVFLP;
  6361.   {$EXTERNALSYM AMDDS_YUV}
  6362.   AMDDS_RGB = AMDDS_RGBOFF or AMDDS_RGBOVR or AMDDS_RGBFLP;
  6363.   {$EXTERNALSYM AMDDS_RGB}
  6364.   AMDDS_PRIMARY = AMDDS_DCIPS or AMDDS_PS;
  6365.   {$EXTERNALSYM AMDDS_PRIMARY}
  6366.  
  6367. type
  6368.   {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawVideo> _di_IDirectDrawVideo;'}
  6369.   {$EXTERNALSYM IDirectDrawVideo}
  6370.   IDirectDrawVideo = interface(IUnknown)
  6371.     ['{36D39EB0-DD75-11CE-BF0E-00AA0055595A}']
  6372.     (*** IDirectDrawVideo methods ***)
  6373.     function GetSwitches(out pSwitches: DWORD): HResult; stdcall;
  6374.     function SetSwitches(pSwitches: DWORD): HResult; stdcall;
  6375.     function GetCaps(out pCaps: TDDCaps): HResult; stdcall;
  6376.     function GetEmulatedCaps(out pCaps: TDDCaps): HResult; stdcall;
  6377.     function GetSurfaceDesc(out pSurfaceDesc: TDDSurfaceDesc): HResult; stdcall;
  6378.     function GetFourCCCodes(out pCount, pCodes: DWORD): HResult; stdcall;
  6379.     function SetDirectDraw(pDirectDraw: IDirectDraw): HResult; stdcall;
  6380.     function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  6381.     function GetSurfaceType(out pSurfaceType: DWORD): HResult; stdcall;
  6382.     function SetDefault: HResult; stdcall;
  6383.     function UseScanLine(UseScanLine: LongBool): HResult; stdcall;
  6384.     function CanUseScanLine(var UseScanLine: LongBool): HResult; stdcall;
  6385.     function UseOverlayStretch(UseOverlayStretch: LongBool): HResult; stdcall;
  6386.     function CanUseOverlayStretch(var UseOverlayStretch: LongBool): HResult;
  6387.         stdcall;
  6388.     function UseWhenFullScreen(UseWhenFullScreen: LongBool): HResult; stdcall;
  6389.     function WillUseFullScreen(var UseWhenFullScreen: LongBool): HResult;
  6390.         stdcall;
  6391.   end;
  6392.  
  6393.   {$HPPEMIT 'typedef System::DelphiInterface<IQualProp> _di_IQualProp;'}
  6394.   {$EXTERNALSYM IQualProp}
  6395.   IQualProp = interface(IUnknown)
  6396.     ['{1BD0ECB0-F8E2-11CE-AAC6-0020AF0B99A3}']
  6397.     (*** IQualProp methods ***)
  6398.     // Compare these with the functions in class CGargle in gargle.h
  6399.     function get_FramesDroppedInRenderer(var pcFrames: Integer): HResult; stdcall;
  6400.     function get_FramesDrawn(out pcFrames: Integer): HResult; stdcall;
  6401.     function get_AvgFrameRate(out piAvgFrameRate: Integer): HResult; stdcall;
  6402.     function get_Jitter(out iJitter: Integer): HResult; stdcall;
  6403.     function get_AvgSyncOffset(out piAvg: Integer): HResult; stdcall;
  6404.     function get_DevSyncOffset(out piDev: Integer): HResult; stdcall;
  6405.   end;
  6406.  
  6407.   {$HPPEMIT 'typedef System::DelphiInterface<IFullScreenVideo> _di_IFullScreenVideo;'}
  6408.   {$EXTERNALSYM IFullScreenVideo}
  6409.   IFullScreenVideo = interface(IUnknown)
  6410.     ['{DD1D7110-7836-11CF-BF47-00AA0055595A}']
  6411.     (*** IFullScreenVideo methods ***)
  6412.     function CountModes(out pModes: Longint): HResult; stdcall;
  6413.     function GetModeInfo(Mode: Longint; out pWidth, pHeight, pDepth: Longint):
  6414.         HResult; stdcall;
  6415.     function GetCurrentMode(out pMode: Longint): HResult; stdcall;
  6416.     function IsModeAvailable(Mode: Longint): HResult; stdcall;
  6417.     function IsModeEnabled(Mode: Longint): HResult; stdcall;
  6418.     function SetEnabled(Mode: Longint; bEnabled: Longint): HResult; stdcall;
  6419.     function GetClipFactor(out pClipFactor: Longint): HResult; stdcall;
  6420.     function SetClipFactor(ClipFactor: Longint): HResult; stdcall;
  6421.     function SetMessageDrain(hwnd: HWND): HResult; stdcall;
  6422.     function GetMessageDrain(out hwnd: HWND): HResult; stdcall;
  6423.     function SetMonitor(Monitor: Longint): HResult; stdcall;
  6424.     function GetMonitor(out Monitor: Longint): HResult; stdcall;
  6425.     function HideOnDeactivate(Hide: LongBool): HResult; stdcall;
  6426.     function IsHideOnDeactivate: HResult; stdcall;
  6427.     function SetCaption(strCaption: TBStr): HResult; stdcall;
  6428.     function GetCaption(out pstrCaption: TBStr): HResult; stdcall;
  6429.     function SetDefault: HResult; stdcall;
  6430.   end;
  6431.  
  6432.   {$HPPEMIT 'typedef System::DelphiInterface<IFullScreenVideoEx> _di_IFullScreenVideoEx;'}
  6433.   {$EXTERNALSYM IFullScreenVideoEx}
  6434.   IFullScreenVideoEx = interface(IFullScreenVideo)
  6435.     ['{53479470-F1DD-11CF-BC42-00AA00AC74F6}']
  6436.     (*** IFullScreenVideoEx methods ***)
  6437.     // IFullScreenVideoEx
  6438.     function SetAcceleratorTable(hwnd: HWND; hAccel: HACCEL): HResult; stdcall;
  6439.     function GetAcceleratorTable(var hwnd: HWND; var hAccel: HACCEL): HResult;
  6440.         stdcall;
  6441.     function KeepPixelAspectRatio(KeepAspect: LongBool): HResult; stdcall;
  6442.     function IsKeepPixelAspectRatio(var pKeepAspect: LongBool): HResult; stdcall;
  6443.   end;
  6444.  
  6445.   {$HPPEMIT 'typedef System::DelphiInterface<IBaseVideoMixer> _di_IBaseVideoMixer;'}
  6446.   {$EXTERNALSYM IBaseVideoMixer}
  6447.   IBaseVideoMixer = interface(IUnknown)
  6448.     ['{61DED640-E912-11CE-A099-00AA00479A58}']
  6449.     (*** IBaseVideoMixer methods ***)
  6450.     function SetLeadPin(iPin: Integer): HResult; stdcall;
  6451.     function GetLeadPin(out iPin: Integer): HResult; stdcall;
  6452.     function GetInputPinCount(out piPinCount: Integer): HResult; stdcall;
  6453.     function IsUsingClock(out pbValue: Integer): HResult; stdcall;
  6454.     function SetUsingClock(bValue: Integer): HResult; stdcall;
  6455.     function GetClockPeriod(out pbValue: Integer): HResult; stdcall;
  6456.     function SetClockPeriod(bValue: Integer): HResult; stdcall;
  6457.   end;
  6458.  
  6459. const
  6460.   iPALETTE_COLORS = 256;     // Maximum colours in palette
  6461.   {$EXTERNALSYM iPALETTE_COLORS}
  6462.   iEGA_COLORS     = 16;      // Number colours in EGA palette
  6463.   {$EXTERNALSYM iEGA_COLORS}
  6464.   iMASK_COLORS    = 3;       // Maximum three components
  6465.   {$EXTERNALSYM iMASK_COLORS}
  6466.   iTRUECOLOR      = 16;      // Minimum true colour device
  6467.   {$EXTERNALSYM iTRUECOLOR}
  6468.   iRED            = 0;       // Index position for RED mask
  6469.   {$EXTERNALSYM iRED}
  6470.   iGREEN          = 1;       // Index position for GREEN mask
  6471.   {$EXTERNALSYM iGREEN}
  6472.   iBLUE           = 2;       // Index position for BLUE mask
  6473.   {$EXTERNALSYM iBLUE}
  6474.   iPALETTE        = 8;       // Maximum colour depth using a palette
  6475.   {$EXTERNALSYM iPALETTE}
  6476.   iMAXBITS        = 8;       // Maximum bits per colour component
  6477.   {$EXTERNALSYM iMAXBITS}
  6478.  
  6479. type
  6480.   // Used for true colour images that also have a palette
  6481.   tag_TRUECOLORINFO = record
  6482.     dwBitMasks: array[0..iMASK_COLORS-1] of DWORD;
  6483.     bmiColors: array[0..iPALETTE_COLORS-1] of TRGBQuad;
  6484.   end;
  6485.   {$EXTERNALSYM tag_TRUECOLORINFO}
  6486.   TRUECOLORINFO = tag_TRUECOLORINFO;
  6487.   {$EXTERNALSYM TRUECOLORINFO}
  6488.   TTrueColorInfo = tag_TRUECOLORINFO;
  6489.  
  6490.   PVideoInfoHeader = ^TVideoInfoHeader;
  6491.   tagVIDEOINFOHEADER = record
  6492.     rcSource: TRect;                   // The bit we really want to use
  6493.     rcTarget: TRect;                   // Where the video should go
  6494.     dwBitRate: DWORD;                  // Approximate bit data rate
  6495.     dwBitErrorRate: DWORD;             // Bit error rate for this stream
  6496.     AvgTimePerFrame: TReferenceTime;  // Average time per frame (100ns units)
  6497.  
  6498.     bmiHeader: TBitmapInfoHeader;
  6499.   end;
  6500.   {$EXTERNALSYM tagVIDEOINFOHEADER}
  6501.   VIDEOINFOHEADER = tagVIDEOINFOHEADER;
  6502.   {$EXTERNALSYM VIDEOINFOHEADER}
  6503.   TVideoInfoHeader = tagVIDEOINFOHEADER;
  6504.  
  6505. // make sure the pbmi is initialized before using these macros
  6506. {function TRUECOLOR(pbmi: PBitmapInfo): Pointer;
  6507. function COLORS(pbmi: PBitmapInfo): Pointer;
  6508. function BITMASKS(pbmi: PBitmapInfo): Pointer;
  6509. {
  6510. #define TRUECOLOR(pbmi)  ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \
  6511.                                         + (pbmi)->bmiHeader.biSize))
  6512. #define COLORS(pbmi)    ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader))     \
  6513.                                         + (pbmi)->bmiHeader.biSize))
  6514. #define BITMASKS(pbmi)  ((DWORD *)(((LPBYTE)&((pbmi)->bmiHeader))       \
  6515.                                         + (pbmi)->bmiHeader.biSize))
  6516.  }
  6517. // All the image based filters use this to communicate their media types. It's
  6518. // centred principally around the BITMAPINFO. This structure always contains a
  6519. // BITMAPINFOHEADER followed by a number of other fields depending on what the
  6520. // BITMAPINFOHEADER contains. If it contains details of a palettised format it
  6521. // will be followed by one or more RGBQUADs defining the palette. If it holds
  6522. // details of a true colour format then it may be followed by a set of three
  6523. // DWORD bit masks that specify where the RGB data can be found in the image
  6524. // (For more information regarding BITMAPINFOs see the Win32 documentation)
  6525.  
  6526. // The rcSource and rcTarget fields are not for use by filters supplying the
  6527. // data. The destination (target) rectangle should be set to all zeroes. The
  6528. // source may also be zero filled or set with the dimensions of the video. So
  6529. // if the video is 352x288 pixels then set it to (0,0,352,288). These fields
  6530. // are mainly used by downstream filters that want to ask the source filter
  6531. // to place the image in a different position in an output buffer. So when
  6532. // using for example the primary surface the video renderer may ask a filter
  6533. // to place the video images in a destination position of (100,100,452,388)
  6534. // on the display since that's where the window is positioned on the display
  6535.  
  6536. // !!! WARNING !!!
  6537. // DO NOT use this structure unless you are sure that the BITMAPINFOHEADER
  6538. // has a normal biSize == sizeof(BITMAPINFOHEADER) !
  6539. // !!! WARNING !!!
  6540.  
  6541. type
  6542.   PVideoInfo = ^TVideoInfo;
  6543.   tagVIDEOINFO = record
  6544.     rcSource: TRect;                   // The bit we really want to use
  6545.     rcTarget: TRect;                   // Where the video should go
  6546.     dwBitRate: DWORD;                  // Approximate bit data rate
  6547.     dwBitErrorRate: DWORD;             // Bit error rate for this stream
  6548.     AvgTimePerFrame: TReferenceTime;  // Average time per frame (100ns units)
  6549.  
  6550.     bmiHeader: TBitmapInfoHeader;
  6551.  
  6552.     case Integer of
  6553.     0: (
  6554.       bmiColors: array[0..iPALETTE_COLORS-1] of TRGBQuad // Colour palette
  6555.       );
  6556.     1: (
  6557.       dwBitMasks: array[0..iMASK_COLORS-1] of DWORD      // True colour masks
  6558.       );
  6559.     2: (
  6560.       TrueColorInfo: TTrueColorInfo                      // Both of the above
  6561.       );
  6562.   end;
  6563.   {$EXTERNALSYM tagVIDEOINFO}
  6564.   VIDEOINFO = tagVIDEOINFO;
  6565.   {$EXTERNALSYM VIDEOINFO}
  6566.   TVideoInfo = tagVIDEOINFO;
  6567.  
  6568. // These macros define some standard bitmap format sizes
  6569.  
  6570. const
  6571.   SIZE_EGA_PALETTE = iEGA_COLORS * SizeOf(TRGBQuad);
  6572.   {$EXTERNALSYM SIZE_EGA_PALETTE}
  6573.   SIZE_PALETTE = iPALETTE_COLORS * SizeOf(TRGBQuad);
  6574.   {$EXTERNALSYM SIZE_PALETTE}
  6575.   SIZE_MASKS = iMASK_COLORS * SizeOf(DWORD);
  6576.   {$EXTERNALSYM SIZE_MASKS}
  6577.  
  6578.   SIZE_PREHEADER = 48; // offset TVideoInfoHeader.bmiHeader
  6579.   {$EXTERNALSYM SIZE_PREHEADER}
  6580.   SIZE_VIDEOHEADER = SizeOf(TVideoInfoHeader);
  6581.   {$EXTERNALSYM SIZE_VIDEOHEADER}
  6582.  
  6583. // !!! for abnormal biSizes
  6584. // #define SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + SIZE_PREHEADER)
  6585.  
  6586. // DIBSIZE calculates the number of bytes required by an image
  6587. {
  6588. function WIDTHBYTES(bits: Integer): DWORD;
  6589. function DIBWIDTHBYTES(const bhi: TBitmapInfoHeader): DWORD;
  6590. function _DIBSIZE(const bmi: TBitmapInfoHeader): DWORD;
  6591. function DIBSIZE(const bmi: TBitmapInfoHeader): DWORD;
  6592. {
  6593. #define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
  6594. #define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
  6595. #define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
  6596. #define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi))
  6597. }
  6598. // This compares the bit masks between two VIDEOINFOHEADERs
  6599. {
  6600. function BIT_MASKS_MATCH(const bmi1, bmi2: TBitmapInfo): Boolean;
  6601. {
  6602. #define BIT_MASKS_MATCH(pbmi1,pbmi2)                                \
  6603.     (((pbmi1)->dwBitMasks[iRED] == (pbmi2)->dwBitMasks[iRED]) &&        \
  6604.      ((pbmi1)->dwBitMasks[iGREEN] == (pbmi2)->dwBitMasks[iGREEN]) &&    \
  6605.      ((pbmi1)->dwBitMasks[iBLUE] == (pbmi2)->dwBitMasks[iBLUE]))
  6606. }
  6607. // These zero fill different parts of the VIDEOINFOHEADER structure
  6608.  
  6609. // Only use these macros for pbmi's with a normal BITMAPINFOHEADER biSize
  6610. {procedure RESET_MASKS(var bmi: TBitmapInfo);
  6611. procedure RESET_HEADER(var bmi: TBitmapInfo);
  6612. procedure RESET_PALETTE(var bmi: TBitmapInfo);
  6613. {
  6614. #define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,SIZE_MASKS))
  6615. #define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi),SIZE_VIDEOHEADER))
  6616. #define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,SIZE_PALETTE));
  6617. }
  6618. {
  6619. // !!! This is the right way to do it, but may break existing code
  6620. #define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
  6621.                         (pbmi)->bmiHeader.biSize,SIZE_MASKS)))
  6622. #define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi), SIZE_PREHEADER +      \
  6623.                         sizeof(BITMAPINFOHEADER)))
  6624. #define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
  6625.                         (pbmi)->bmiHeader.biSize,SIZE_PALETTE))
  6626. }
  6627.  
  6628. // Other (hopefully) useful bits and bobs
  6629. {
  6630. #define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE)
  6631. #define PALETTE_ENTRIES(pbmi) ((DWORD) 1 << (pbmi)->bmiHeader.biBitCount)
  6632.  
  6633. // Returns the address of the BITMAPINFOHEADER from the VIDEOINFOHEADER
  6634. #define HEADER(pVideoInfo) (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader))
  6635.  }
  6636.  
  6637. // MPEG variant - includes a DWORD length followed by the
  6638. // video sequence header after the video header.
  6639. //
  6640. // The sequence header includes the sequence header start code and the
  6641. // quantization matrices associated with the first sequence header in the
  6642. // stream so is a maximum of 140 bytes long.
  6643. type
  6644.   PMPEG1VideoInfo = ^TMPEG1VideoInfo;
  6645.   tagMPEG1VIDEOINFO = record
  6646.     hdr: TVideoInfoHeader;                  // Compatible with VIDEOINFO
  6647.     dwStartTimeCode: DWORD;                 // 25-bit Group of pictures time code
  6648.                                             // at start of data
  6649.     cbSequenceHeader: DWORD;                // Length in bytes of bSequenceHeader
  6650.     bSequenceHeader: array[0..0] of Byte;   // Sequence header including
  6651.                                             // quantization matrices if any
  6652.   end;
  6653.   {$EXTERNALSYM tagMPEG1VIDEOINFO}
  6654.   MPEG1VIDEOINFO = tagMPEG1VIDEOINFO;
  6655.   {$EXTERNALSYM MPEG1VIDEOINFO}
  6656.   TMPEG1VideoInfo = tagMPEG1VIDEOINFO;
  6657.   
  6658. const
  6659.   MAX_SIZE_MPEG1_SEQUENCE_INFO = 140;
  6660.   {$EXTERNALSYM MAX_SIZE_MPEG1_SEQUENCE_INFO}
  6661. {
  6662. #define SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  6663. #define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  6664. }
  6665.  
  6666. // Analog video variant - Use this when the format is FORMAT_AnalogVideo
  6667. //
  6668. // rcSource defines the portion of the active video signal to use
  6669. // rcTarget defines the destination rectangle
  6670. //    both of the above are relative to the dwActiveWidth and dwActiveHeight fields
  6671. // dwActiveWidth is currently set to 720 for all formats (but could change for HDTV)
  6672. // dwActiveHeight is 483 for NTSC and 575 for PAL/SECAM  (but could change for HDTV)
  6673. type
  6674.   tagAnalogVideoInfo = record
  6675.     rcSource: TRect;                   // Width max is 720, height varies w/ TransmissionS
  6676.     rcTarget: TRect;                   // Where the video should go
  6677.     dwBitRate: DWORD;                  // Always 720 (CCIR-601 active samples per line)
  6678.     dwBitErrorRate: DWORD;             // 483 for NTSC, 575 for PAL/SECAM
  6679.     AvgTimePerFrame: TReferenceTime;  // Normal ActiveMovie units (100 nS)
  6680.   end;
  6681.   {$EXTERNALSYM tagAnalogVideoInfo}
  6682.   ANALOGVIDEOINFO = tagAnalogVideoInfo;
  6683.   {$EXTERNALSYM ANALOGVIDEOINFO}
  6684.   TAnalogVideoInfo = tagAnalogVideoInfo;
  6685.  
  6686.  
  6687. //
  6688. // AM_KSPROPSETID_FrameStep property set definitions
  6689. //
  6690.  
  6691.   AM_PROPERTY_FRAMESTEP = (
  6692.   {$IFNDEF COMPILER6_UP}
  6693.     AM_PROPERTY_FRAMESTEP_INVALID_O,
  6694.     //  Step
  6695.       AM_PROPERTY_FRAMESTEP_STEP,
  6696.       AM_PROPERTY_FRAMESTEP_CANCEL,
  6697.     //  S_OK for these 2 means we can - S_FALSE if we can't
  6698.     AM_PROPERTY_FRAMESTEP_CANSTEP,
  6699.     AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE
  6700.   {$ELSE}
  6701.     //  Step
  6702.       AM_PROPERTY_FRAMESTEP_STEP            = 1,
  6703.       AM_PROPERTY_FRAMESTEP_CANCEL          = 2 ,
  6704.     //  S_OK for these 2 means we can - S_FALSE if we can't
  6705.     AM_PROPERTY_FRAMESTEP_CANSTEP         = 3,
  6706.     AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 4
  6707.   {$ENDIF}
  6708.   );
  6709.   {$EXTERNALSYM AM_PROPERTY_FRAMESTEP}
  6710.   TAMPropertyFramesStep = AM_PROPERTY_FRAMESTEP;
  6711.  
  6712.  
  6713.   _AM_FRAMESTEP_STEP = record
  6714.     //  1 means step 1 frame forward
  6715.     //  0 is invalid
  6716.     //  n (n > 1) means skip n - 1 frames and show the nth
  6717.      dwFramesToStep: DWORD;
  6718.   end;
  6719.   {$EXTERNALSYM _AM_FRAMESTEP_STEP}
  6720.   AM_FRAMESTEP_STEP = _AM_FRAMESTEP_STEP;
  6721.   {$EXTERNALSYM AM_FRAMESTEP_STEP}
  6722.   TAMFramestepStep = _AM_FRAMESTEP_STEP;
  6723.      
  6724. (*==========================================================================;
  6725.  *
  6726.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6727.  *
  6728.  *  File:       amaudio.h
  6729.  *
  6730.  ***************************************************************************)
  6731.  
  6732. const
  6733.   IID_IAMDirectSound: TGUID = (D1:$546F4260;D2:$D53E;D3:$11CF;D4:($B3,$F0,$00,$AA,$00,$37,$61,$C5));
  6734.   {$EXTERNALSYM IID_IAMDirectSound}
  6735.  
  6736. // This is the interface the audio renderer supports to give the application
  6737. // access to the direct sound object and buffers it is using, to allow the
  6738. // application to use things like the 3D features of Direct Sound for the
  6739. // soundtrack of a movie being played with Active Movie
  6740.  
  6741. // be nice to our friends in C
  6742. type
  6743.   {$HPPEMIT 'typedef System::DelphiInterface<IAMDirectSound> _di_IAMDirectSound;'}
  6744.   {$EXTERNALSYM IAMDirectSound}
  6745.   IAMDirectSound = interface(IUnknown)
  6746.     ['{546F4260-D53E-11CF-B3F0-00AA003761C5}']
  6747.     (*** IAMDirectSound methods ***)
  6748.     function GetDirectSoundInterface(out lplpds: IDirectSound): HResult;
  6749.         stdcall;
  6750.     function GetPrimaryBufferInterface(out lplpdsb: IDirectSoundBuffer):
  6751.         HResult; stdcall;
  6752.     function GetSecondaryBufferInterface(out lplpdsb: IDirectSoundBuffer):
  6753.         HResult; stdcall;
  6754.     function ReleaseDirectSoundInterface(lpds: IDirectSound): HResult; stdcall;
  6755.     function ReleasePrimaryBufferInterface(lpdsb: IDirectSoundBuffer): HResult;
  6756.         stdcall;
  6757.     function ReleaseSecondaryBufferInterface(lpdsb: IDirectSoundBuffer):
  6758.         HResult; stdcall;
  6759.     function SetFocusWindow(hwnd: HWND; b: BOOL): HResult; stdcall;
  6760.     function GetFocusWindow(var hwnd: HWND; var b: BOOL): HResult; stdcall;
  6761.   end;
  6762.  
  6763. (*==========================================================================;
  6764.  *
  6765.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6766.  *
  6767.  *  File:       vptype.h
  6768.  *
  6769.  ***************************************************************************)
  6770.  
  6771. type
  6772.   // enum to specify the criterion, which the vpmixer is supposed to use
  6773.   // in order to select the video format
  6774.   _AMVP_SELECT_FORMAT_BY = (
  6775.     AMVP_DO_NOT_CARE,
  6776.     AMVP_BEST_BANDWIDTH,
  6777.     AMVP_INPUT_SAME_AS_OUTPUT
  6778.   );
  6779.   {$EXTERNALSYM _AMVP_SELECT_FORMAT_BY}
  6780.   AMVP_SELECT_FORMAT_BY = _AMVP_SELECT_FORMAT_BY;
  6781.   {$EXTERNALSYM AMVP_SELECT_FORMAT_BY}
  6782.   TAMVPSelectFormatBy = AMVP_SELECT_FORMAT_BY;
  6783.  
  6784.   // enum to specify the various mode
  6785.   _AMVP_MODE = (
  6786.     AMVP_MODE_WEAVE,
  6787.     AMVP_MODE_BOBINTERLEAVED,
  6788.     AMVP_MODE_BOBNONINTERLEAVED,
  6789.     AMVP_MODE_SKIPEVEN,
  6790.     AMVP_MODE_SKIPODD
  6791.   );
  6792.   {$EXTERNALSYM _AMVP_MODE}
  6793.   AMVP_MODE = _AMVP_MODE;
  6794.   {$EXTERNALSYM AMVP_MODE}
  6795.   TAMVPMode = AMVP_MODE;
  6796.  
  6797.   // struct to specify the width and height. The context could be anything
  6798.   // such as scaling cropping etc.
  6799.   PAMVPSize = ^TAMVPSize;
  6800.   _AMVPSIZE = record
  6801.     dwWidth  : DWORD;                   // the width
  6802.     dwHeight : DWORD;                   // the height
  6803.   end;
  6804.   {$EXTERNALSYM _AMVPSIZE}
  6805.   AMVPSIZE = _AMVPSIZE;
  6806.   {$EXTERNALSYM AMVPSIZE}
  6807.   LPAMVPSIZE = ^AMVPSIZE;
  6808.   {$EXTERNALSYM LPAMVPSIZE}
  6809.   TAMVPSize = _AMVPSIZE;
  6810.  
  6811.   // struct to specify the dimensional characteristics of the input stream
  6812.   PAMVPDimInfo = ^TAMVPDimInfo;
  6813.   _AMVPDIMINFO = record
  6814.   {$EXTERNALSYM _AMVPDIMINFO}
  6815.     dwFieldWidth  : DWORD;               // Field height of the data
  6816.     dwFieldHeight : DWORD;              // Field width of the data
  6817.     dwVBIWidth    : DWORD;                 // Width of the VBI data
  6818.     dwVBIHeight   : DWORD;                // Height of the VBI data
  6819.     rcValidRegion : TRect;              // The vaild rectangle, used for cropping
  6820.   end;
  6821.   AMVPDIMINFO = _AMVPDIMINFO;
  6822.   {$EXTERNALSYM AMVPDIMINFO}
  6823.   LPAMVPDIMINFO = ^AMVPDIMINFO;
  6824.   {$EXTERNALSYM LPAMVPDIMINFO}
  6825.   TAMVPDimInfo = _AMVPDIMINFO;
  6826.  
  6827.   // struct to specify the various data specific characteristics of the input stream
  6828.   PAMVPDataInfo = ^TAMVPDataInfo;
  6829.   _AMVPDATAINFO = record
  6830.      dwSize                 : DWORD;         // Size of the struct
  6831.      dwMicrosecondsPerField : DWORD;         // Time taken by each field
  6832.      amvpDimInfo            : TAMVPDIMInfo;  // Dimensional Information
  6833.      dwPictAspectRatioX     : DWORD;         // X dimension of Picture Aspect Ratio
  6834.      dwPictAspectRatioY     : DWORD;         // Y dimension of Picture Aspect Ratio
  6835.      bEnableDoubleClock     : BOOL;          // Videoport should enable double clocking
  6836.      bEnableVACT            : BOOL;          // Videoport should use an external VACT signal
  6837.      bDataIsInterlaced      : BOOL;          // Indicates that the signal is interlaced
  6838.      lHalfLinesOdd          : Longint;       // number of halflines in the odd field
  6839.      bFieldPolarityInverted : BOOL;          // Device inverts the polarity by default
  6840.      dwNumLinesInVREF       : DWORD;         // Number of lines of data in VREF
  6841.      lHalfLinesEven         : Longint;       // number of halflines in the even field
  6842.      dwReserved1            : DWORD;         // Reserved for future use
  6843.   end;
  6844.   {$EXTERNALSYM _AMVPDATAINFO}
  6845.   AMVPDATAINFO = _AMVPDATAINFO;
  6846.   {$EXTERNALSYM AMVPDATAINFO}
  6847.   LPAMVPDATAINFO = ^AMVPDATAINFO;
  6848.   {$EXTERNALSYM LPAMVPDATAINFO}
  6849.   TAMVPDataInfo = _AMVPDATAINFO;
  6850.  
  6851. (*==========================================================================;
  6852.  *
  6853.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6854.  *
  6855.  *  File:       vpconfig.h
  6856.  *
  6857.  ***************************************************************************)
  6858.  
  6859. const
  6860.   IID_IVPConfig: TGUID = (D1:$BC29A660;D2:$30E3;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  6861.   {$EXTERNALSYM IID_IVPConfig}
  6862.   IID_IVPVBIConfig: TGUID = (D1:$EC529B00;D2:$1A1F;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  6863.   {$EXTERNALSYM IID_IVPVBIConfig}
  6864.  
  6865. type
  6866.   {$HPPEMIT 'typedef System::DelphiInterface<IVPBaseConfig> _di_IVPBaseConfig;'}
  6867.   {$EXTERNALSYM IVPBaseConfig}
  6868.   IVPBaseConfig = interface(IUnknown)
  6869.     (*** IVPBaseConfig methods ***)
  6870.     // gets the various connection information structures (guid, portwidth)
  6871.     // in an array of structures. If the pointer to the array is NULL, first
  6872.     // parameter returns the total number of formats supported.
  6873.     function GetConnectInfo(var pdwNumConnectInfo: PDWORD;
  6874.       var pddVPConnectInfo: PDDVideoPortConnect): HResult; stdcall;
  6875.  
  6876.     // sets the connection entry chosen (0, 1, .. ,(dwNumProposedEntries-1))
  6877.     function SetConnectInfo(dwChosenEntry: DWORD): HResult; stdcall;
  6878.  
  6879.     // gets various data parameters, includes dimensionnal info
  6880.     function GetVPDataInfo(var pamvpDataInfo: PAMVPDataInfo): HResult; stdcall;
  6881.  
  6882.     // retrives maximum pixels per second rate expected for a given
  6883.     // format and a given scaling factor. If decoder does not support
  6884.     // those scaling factors, then it gives the rate and the nearest
  6885.     // scaling factors.
  6886.     function GetMaxPixelRate(var pamvpSize: PAMVPSize;
  6887.       out pdwMaxPixelsPerSecond: PDWORD): HResult; stdcall;
  6888.  
  6889.     // informs the callee of the videoformats supported by the videoport
  6890.     function InformVPInputFormats(dwNumFormats: DWORD;
  6891.              pTDDPixelFormats: PDDPixelFormat): HResult; stdcall;
  6892.  
  6893.     // gets the various formats supported by the decoder in an array
  6894.     // of structures. If the pointer to the array is NULL, first parameter
  6895.     // returns the total number of formats supported.
  6896.     function GetVideoFormats(var pdwNumFormats: PDWORD;
  6897.       var pTDDPixelFormats: PDDPixelFormat): HResult; stdcall;
  6898.  
  6899.     // sets the format entry chosen (0, 1, .. ,(dwNumProposedEntries-1))
  6900.     function SetVideoFormat(dwChosenEntry: DWORD): HResult; stdcall;
  6901.  
  6902.     // asks the decoder to treat even fields like odd fields and visa versa
  6903.     function SetInvertPolarity: HResult; stdcall;
  6904.  
  6905.     // the mixer uses this function to determine if the callee wants
  6906.     // the vpmixer to use its overlay surface and if so to get a pointer to it
  6907.     function GetOverlaySurface(out ppddOverlaySurface: IDirectDrawSurface):
  6908.         HResult; stdcall;
  6909.  
  6910.     // sets the direct draw kernel handle
  6911.     function SetDirectDrawKernelHandle(dwDDKernelHandle: THandle): HResult;
  6912.         stdcall;
  6913.  
  6914.     // sets the video port id
  6915.     function SetVideoPortID(dwVideoPortID: DWORD): HResult; stdcall;
  6916.  
  6917.     // sets the direct draw surface kernel handle
  6918.     function SetDDSurfaceKernelHandles(cHandles: DWORD;
  6919.         var rgDDKernelHandles: THandle): HResult; stdcall;
  6920.  
  6921.     // Tells driver about surface created on its behalf by ovmixer/vbisurf and
  6922.     // returned from videoport/ddraw. Should always return NOERROR or E_NOIMPL.
  6923.     // dwPitch is the pitch of the surface (distance in pixels between the start
  6924.     // pixels of two consecutive lines of the surface). (dwXOrigin, dwYOrigin)
  6925.     // are the (X, Y) coordinates of the pixel at which valid data starts.
  6926.     function SetSurfaceParameters(dwPitch, dwXOrigin, dwYOrigin: DWORD):
  6927.         HResult; stdcall;
  6928.   end;
  6929.  
  6930.   {$HPPEMIT 'typedef System::DelphiInterface<IVPConfig> _di_IVPConfig;'}
  6931.   {$EXTERNALSYM IVPConfig}
  6932.   IVPConfig = interface(IVPBaseConfig)
  6933.     ['{BC29A660-30E3-11D0-9E69-00C04FD7C15B}']
  6934.     (*** IVPConfig methods ***)
  6935.     // the mixer uses this function to determine if the callee wants
  6936.     // the mixer to decimate VIDEO data at its own descrition
  6937.     function IsVPDecimationAllowed(out pbIsDecimationAllowed: PBOOL): HResult;
  6938.         stdcall;
  6939.  
  6940.     // sets the scaling factors. If decoder does not support these,
  6941.     // then it sets the values to the nearest factors it can support
  6942.     function SetScalingFactors(pamvpSize: PAMVPSize): HResult; stdcall;
  6943.   end;
  6944.  
  6945.   {$HPPEMIT 'typedef System::DelphiInterface<IVPVBIConfig> _di_IVPVBIConfig;'}
  6946.   {$EXTERNALSYM IVPVBIConfig}
  6947.   IVPVBIConfig = interface(IVPBaseConfig)
  6948.     ['{EC529B00-1A1F-11D1-BAD9-00609744111A}']
  6949.     (*** IVPVBIConfig methods ***)
  6950.   end;
  6951.  
  6952. (*==========================================================================;
  6953.  *
  6954.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  6955.  *
  6956.  *  File:       vpnotify.h
  6957.  *
  6958.  ***************************************************************************)
  6959.  
  6960. const
  6961.   IID_IVPNotify: TGUID  = (D1:$C76794A1;D2:$D6C5;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  6962.   {$EXTERNALSYM IID_IVPNotify}
  6963.   IID_IVPVBINotify: TGUID = (D1:$EC529B01;D2:$1A1F;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  6964.   {$EXTERNALSYM IID_IVPVBINotify}
  6965.   IID_IVPNotify2: TGUID = (D1:$ebf47183;D2:$8764;D3:$11d1;D4:($9e,$69,$00,$c0,$4f,$d7,$c1,$5b));
  6966.   {$EXTERNALSYM IID_IVPNotify2}
  6967.  
  6968. type
  6969.   {$HPPEMIT 'typedef System::DelphiInterface<IVPBaseNotify> _di_IVPBaseNotify;'}
  6970.   {$EXTERNALSYM IVPBaseNotify}
  6971.   IVPBaseNotify = interface(IUnknown)
  6972.     (*** IVPBaseNotify methods ***)
  6973.     // this function initializes the reconnection to the decoder.
  6974.     function RenegotiateVPParameters: HResult; stdcall;
  6975.   end;
  6976.  
  6977.   {$HPPEMIT 'typedef System::DelphiInterface<IVPNotify> _di_IVPNotify;'}
  6978.   {$EXTERNALSYM IVPNotify}
  6979.   IVPNotify = interface(IVPBaseNotify)
  6980.     ['{C76794A1-D6C5-11D0-9E69-00C04FD7C15B}']
  6981.     (*** IVPNotify methods ***)
  6982.     // function to set the mode (bob, weave etc)
  6983.     function SetDeinterlaceMode(mode: TAMVPMode): HResult; stdcall;
  6984.     // function to get the mode (bob, weave etc)
  6985.     function GetDeinterlaceMode(out pMode: TAMVPMode): HResult; stdcall;
  6986.   end;
  6987.  
  6988. // 4 functions have been removed from dxmedia!!
  6989.   {$HPPEMIT 'typedef System::DelphiInterface<IVPNotify2> _di_IVPNotify2;'}
  6990.   {$EXTERNALSYM IVPNotify2}
  6991.   IVPNotify2 = interface(IVPNotify)
  6992.     ['{EBF47183-8764-11d1-9E69-00C04FD7C15B}']
  6993.     (*** IVPNotify2 methods ***)
  6994.     // function to set the mode (bob, weave etc)
  6995.     function SetVPSyncMaster(bVPSyncMaster: BOOL): HResult; stdcall;
  6996.     // function to get the mode (bob, weave etc)
  6997.     function GetVPSyncMaster(OUT pbVPSyncMaster: BOOL): HResult; stdcall;
  6998.   end;
  6999.  
  7000.   {$HPPEMIT 'typedef System::DelphiInterface<IVPVBINotify> _di_IVPVBINotify;'}
  7001.   {$EXTERNALSYM IVPVBINotify}
  7002.   IVPVBINotify = interface(IVPBaseNotify)
  7003.     ['{EC529B01-1A1F-11D1-BAD9-00609744111A}']
  7004.     (*** IVPVBINotify methods ***)
  7005.   end;
  7006.  
  7007. (*==========================================================================;
  7008.  *
  7009.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  7010.  *
  7011.  *  File:       mpegtype.h
  7012.  *
  7013.  ***************************************************************************)
  7014.  
  7015. const
  7016.   IID_IMpegAudioDecoder: TGUID = (D1:$B45DD570;D2:$3C77;D3:$11D1;D4:($AB,$E1,$00,$A0,$C9,$05,$F3,$75));
  7017.   {$EXTERNALSYM IID_IMpegAudioDecoder}
  7018.  
  7019. type
  7020. //
  7021. //  AM_MPEGSYSTEMTYPE defines the format block contents for
  7022. //  data of type MEDIATYPE_MPEG1System when the format
  7023. //  block GUID is FORMAT_MPEG1System
  7024. //
  7025. //  The format block consists of elements of type
  7026. //  AM_MPEGSYSTEMTYPE up to the length of the format block
  7027. //  Each format block is 8-byte aligned from the start of
  7028. //  the format block
  7029. //
  7030.  
  7031.   tagAM_MPEGSTREAMTYPE = record
  7032.     dwStreamId: DWORD;               // Stream id of stream to process
  7033.     dwReserved: DWORD;               // 8-byte alignment
  7034.     mt: TAMMediaType;              // Type for substream - pbFormat is NULL
  7035.     bFormat: array[0..0] of Byte;    // Format data
  7036.   end;
  7037.   {$EXTERNALSYM tagAM_MPEGSTREAMTYPE}
  7038.   AM_MPEGSTREAMTYPE = tagAM_MPEGSTREAMTYPE;
  7039.   {$EXTERNALSYM AM_MPEGSTREAMTYPE}
  7040.   TAMMPEGStreamType = tagAM_MPEGSTREAMTYPE;
  7041.  
  7042.   tagAM_MPEGSYSTEMTYPE = record
  7043.     dwBitRate: DWORD;                // Bits per second
  7044.     cStreams: DWORD;                 // Number of streams
  7045.     Streams: array[0..0] of TAMMPEGStreamType;
  7046.   end;
  7047.   {$EXTERNALSYM tagAM_MPEGSYSTEMTYPE}
  7048.   AM_MPEGSYSTEMTYPE = tagAM_MPEGSYSTEMTYPE;
  7049.   {$EXTERNALSYM AM_MPEGSYSTEMTYPE}
  7050.   TAMMPEGSystemType = tagAM_MPEGSYSTEMTYPE;
  7051. {
  7052. //
  7053. //  Helper macros for AM_MPEGSTREAMTYPE
  7054. //
  7055. #define AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType)  \
  7056.     FIELD_OFFSET(AM_MPEGSTREAMTYPE, bFormat[(pStreamType)->mt.cbFormat])
  7057. #define AM_MPEGSTREAMTYPE_NEXT(pStreamType)           \
  7058.     ((AM_MPEGSTREAMTYPE *)((PBYTE)(pStreamType) +     \
  7059.      ((AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) + 7) & ~7)))
  7060.  }
  7061. //
  7062. // IMpegAudioDecoder
  7063. //
  7064.  
  7065. // Values for DualMode
  7066. const
  7067.   AM_MPEG_AUDIO_DUAL_MERGE = 0;
  7068.   {$EXTERNALSYM AM_MPEG_AUDIO_DUAL_MERGE}
  7069.   AM_MPEG_AUDIO_DUAL_LEFT  = 1;
  7070.   {$EXTERNALSYM AM_MPEG_AUDIO_DUAL_LEFT}
  7071.   AM_MPEG_AUDIO_DUAL_RIGHT = 2;
  7072.   {$EXTERNALSYM AM_MPEG_AUDIO_DUAL_RIGHT}
  7073.  
  7074. type
  7075. //
  7076. //
  7077. // Microsoft MPEG audio WAV definition
  7078. //
  7079. (*  MPEG-1 audio wave format (audio layer only).   (0x0050)   *)
  7080.  
  7081.   MPEG1WAVEFORMAT = record
  7082.     wfx: TWaveFormatEx;
  7083.     fwHeadLayer: Word;
  7084.     dwHeadBitrate: DWORD;
  7085.     fwHeadMode: Word;
  7086.     fwHeadModeExt: Word;
  7087.     wHeadEmphasis: Word;
  7088.     fwHeadFlags: Word;
  7089.     dwPTSLow: DWORD;
  7090.     dwPTSHigh: DWORD;
  7091.   end;
  7092.   {$EXTERNALSYM MPEG1WAVEFORMAT}
  7093.   TMPEG1WaveFormat = MPEG1WAVEFORMAT;
  7094.  
  7095. const
  7096.   ACM_MPEG_LAYER1         = $0001;
  7097.   {$EXTERNALSYM ACM_MPEG_LAYER1}
  7098.   ACM_MPEG_LAYER2         = $0002;
  7099.   {$EXTERNALSYM ACM_MPEG_LAYER2}
  7100.   ACM_MPEG_LAYER3         = $0004;
  7101.   {$EXTERNALSYM ACM_MPEG_LAYER3}
  7102.   ACM_MPEG_STEREO         = $0001;
  7103.   {$EXTERNALSYM ACM_MPEG_STEREO}
  7104.   ACM_MPEG_JOINTSTEREO    = $0002;
  7105.   {$EXTERNALSYM ACM_MPEG_JOINTSTEREO}
  7106.   ACM_MPEG_DUALCHANNEL    = $0004;
  7107.   {$EXTERNALSYM ACM_MPEG_DUALCHANNEL}
  7108.   ACM_MPEG_SINGLECHANNEL  = $0008;
  7109.   {$EXTERNALSYM ACM_MPEG_SINGLECHANNEL}
  7110.   ACM_MPEG_PRIVATEBIT     = $0001;
  7111.   {$EXTERNALSYM ACM_MPEG_PRIVATEBIT}
  7112.   ACM_MPEG_COPYRIGHT      = $0002;
  7113.   {$EXTERNALSYM ACM_MPEG_COPYRIGHT}
  7114.   ACM_MPEG_ORIGINALHOME   = $0004;
  7115.   {$EXTERNALSYM ACM_MPEG_ORIGINALHOME}
  7116.   ACM_MPEG_PROTECTIONBIT  = $0008;
  7117.   {$EXTERNALSYM ACM_MPEG_PROTECTIONBIT}
  7118.   ACM_MPEG_ID_MPEG1       = $0010;
  7119.   {$EXTERNALSYM ACM_MPEG_ID_MPEG1}
  7120.  
  7121. type
  7122.   {$HPPEMIT 'typedef System::DelphiInterface<IMpegAudioDecoder> _di_IMpegAudioDecoder;'}
  7123.   {$EXTERNALSYM IMpegAudioDecoder}
  7124.   IMpegAudioDecoder = interface(IUnknown)
  7125.     ['{B45DD570-3C77-11D1-ABE1-00A0C905F375}']
  7126.     (*** IMpegAudioDecoder methods ***)
  7127.     function get_FrequencyDivider(out pDivider: LongWord): HResult; stdcall;
  7128.     function put_FrequencyDivider(Divider: LongWord): HResult; stdcall;
  7129.     function get_DecoderAccuracy(out pAccuracy: LongWord): HResult; stdcall;
  7130.     function put_DecoderAccuracy(Accuracy: LongWord): HResult; stdcall;
  7131.     function get_Stereo(out pStereo: LongWord): HResult; stdcall;
  7132.     function put_Stereo(Stereo: LongWord): HResult; stdcall;
  7133.     function get_DecoderWordSize(out pWordSize: LongWord): HResult; stdcall;
  7134.     function put_DecoderWordSize(WordSize: LongWord): HResult; stdcall;
  7135.     function get_IntegerDecode(out pIntDecode: LongWord): HResult; stdcall;
  7136.     function put_IntegerDecode(IntDecode: LongWord): HResult; stdcall;
  7137.     function get_DualMode(out pIntDecode: LongWord): HResult; stdcall;
  7138.     function put_DualMode(IntDecode: LongWord): HResult; stdcall;
  7139.     function get_AudioFormat(out lpFmt: TMPEG1WaveFormat): HResult; stdcall;
  7140.   end;
  7141.  
  7142. (*==========================================================================;
  7143.  *
  7144.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  7145.  *
  7146.  *  File:       il21dec.h
  7147.  *
  7148.  ***************************************************************************)
  7149. // Line 21 Decoder related definitions and interfaces for ActiveMovie
  7150.  
  7151. const
  7152.   IID_IAMLine21Decoder: TGUID = (D1:$6E8D4A21;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  7153.   {$EXTERNALSYM IID_IAMLine21Decoder}
  7154.  
  7155. type
  7156. //
  7157. //  Some enum data types used as line 21 decoder params by the interface
  7158. //
  7159.   _AM_LINE21_CCLEVEL = (       // should we use TC1, TC2 in stead?
  7160.     AM_L21_CCLEVEL_TC2
  7161.   );
  7162.   {$EXTERNALSYM _AM_LINE21_CCLEVEL}
  7163.   AM_LINE21_CCLEVEL = _AM_LINE21_CCLEVEL;
  7164.   {$EXTERNALSYM AM_LINE21_CCLEVEL}
  7165.   PAM_LINE21_CCLEVEL = ^AM_LINE21_CCLEVEL;
  7166.   {$EXTERNALSYM PAM_LINE21_CCLEVEL}
  7167.   TAMLine21CCLevel = AM_LINE21_CCLEVEL;
  7168.  
  7169.   _AM_LINE21_CCSERVICE = (
  7170.   {$IFNDEF COMPILER6_UP}
  7171.     AM_L21_CCSERVICE_None,
  7172.     AM_L21_CCSERVICE_Caption1,
  7173.     AM_L21_CCSERVICE_Caption2,
  7174.     AM_L21_CCSERVICE_Text1,
  7175.     AM_L21_CCSERVICE_Text2,
  7176.     AM_L21_CCSERVICE_XDS,
  7177.     AM_L21_CCSERVICE_INVALID_6,
  7178.     AM_L21_CCSERVICE_INVALID_7,
  7179.     AM_L21_CCSERVICE_INVALID_8,
  7180.     AM_L21_CCSERVICE_INVALID_9,
  7181.     AM_L21_CCSERVICE_DefChannel,
  7182.     AM_L21_CCSERVICE_Invalid
  7183.   {$ELSE}
  7184.     AM_L21_CCSERVICE_None       = 0,
  7185.     AM_L21_CCSERVICE_Caption1   = 1,
  7186.     AM_L21_CCSERVICE_Caption2   = 2,
  7187.     AM_L21_CCSERVICE_Text1      = 3,
  7188.     AM_L21_CCSERVICE_Text2      = 4,
  7189.     AM_L21_CCSERVICE_XDS        = 5,
  7190.     AM_L21_CCSERVICE_DefChannel = 10,
  7191.     AM_L21_CCSERVICE_Invalid    = 11
  7192.   {$ENDIF}
  7193.   );
  7194.   {$EXTERNALSYM _AM_LINE21_CCSERVICE}
  7195.   AM_LINE21_CCSERVICE = _AM_LINE21_CCSERVICE;
  7196.   {$EXTERNALSYM AM_LINE21_CCSERVICE}
  7197.   PAM_LINE21_CCSERVICE = ^AM_LINE21_CCSERVICE;
  7198.   {$EXTERNALSYM PAM_LINE21_CCSERVICE}
  7199.   TAMLine21CCService = AM_LINE21_CCSERVICE;
  7200.  
  7201.   _AM_LINE21_CCSTATE = (
  7202.     AM_L21_CCSTATE_Off,
  7203.     AM_L21_CCSTATE_On
  7204.   );
  7205.   {$EXTERNALSYM _AM_LINE21_CCSTATE}
  7206.   AM_LINE21_CCSTATE = _AM_LINE21_CCSTATE;
  7207.   {$EXTERNALSYM AM_LINE21_CCSTATE}
  7208.   PAM_LINE21_CCSTATE = ^AM_LINE21_CCSTATE;
  7209.   {$EXTERNALSYM PAM_LINE21_CCSTATE}
  7210.   TAMLine21CCState = AM_LINE21_CCSTATE;
  7211.  
  7212.   _AM_LINE21_CCSTYLE = (
  7213.     AM_L21_CCSTYLE_None,
  7214.     AM_L21_CCSTYLE_PopOn,
  7215.     AM_L21_CCSTYLE_PaintOn,
  7216.     AM_L21_CCSTYLE_RollUp
  7217.   );
  7218.   {$EXTERNALSYM _AM_LINE21_CCSTYLE}
  7219.   AM_LINE21_CCSTYLE = _AM_LINE21_CCSTYLE;
  7220.   {$EXTERNALSYM AM_LINE21_CCSTYLE}
  7221.   PAM_LINE21_CCSTYLE = ^AM_LINE21_CCSTYLE;
  7222.   {$EXTERNALSYM PAM_LINE21_CCSTYLE}
  7223.   TAMLine21CCStyle = AM_LINE21_CCSTYLE;
  7224.  
  7225.   _AM_LINE21_DRAWBGMODE = (
  7226.     AM_L21_DRAWBGMODE_Opaque,
  7227.     AM_L21_DRAWBGMODE_Transparent
  7228.   );
  7229.   {$EXTERNALSYM _AM_LINE21_DRAWBGMODE}
  7230.   AM_LINE21_DRAWBGMODE = _AM_LINE21_DRAWBGMODE;
  7231.   {$EXTERNALSYM AM_LINE21_DRAWBGMODE}
  7232.   PAM_LINE21_DRAWBGMODE = ^AM_LINE21_DRAWBGMODE;
  7233.   {$EXTERNALSYM PAM_LINE21_DRAWBGMODE}
  7234.   TAMLine21DrawBGMode = AM_LINE21_DRAWBGMODE;
  7235.   
  7236. //
  7237. //  Line 21 Decoder standard COM interface
  7238. //
  7239.   {$HPPEMIT 'typedef System::DelphiInterface<IAMLine21Decoder> _di_IAMLine21Decoder;'}
  7240.   {$EXTERNALSYM IAMLine21Decoder}
  7241.   IAMLine21Decoder = interface(IUnknown)
  7242.     ['{6E8D4A21-310C-11D0-B79A-00AA003767A7}']
  7243.     (*** IAMLine21Decoder methods ***)
  7244.     //
  7245.     // Decoder options to be used by apps
  7246.     //
  7247.  
  7248.     // What is the decoder's level
  7249.     function GetDecoderLevel(var lpLevel: TAMLine21CCLevel): HResult; stdcall;
  7250.     // supported level value is AM_L21Level_TC2 only
  7251.     // skipping the SetDecoderLevel( )
  7252.  
  7253.     // Which of the services is being currently used
  7254.     function GetCurrentService(var lpService: TAMLine21CCService): HResult;
  7255.         stdcall;
  7256.     function SetCurrentService(Service: TAMLine21CCService): HResult;
  7257.         stdcall;
  7258.     // supported service values are AM_L21Service_Caption1,
  7259.     // AM_L21Service_Caption2, AM_L21Service_Text1, AM_L21Service_Text2,
  7260.     // AM_L21Service_XDS, AM_L21Service_None)
  7261.  
  7262.     // Query/Set the service state (On/Off)
  7263.     // supported state values are AM_L21State_On and AM_L21State_Off
  7264.     function GetServiceState(var lpState: TAMLine21CCState): HResult;
  7265.         stdcall;
  7266.     function SetServiceState(State: TAMLine21CCState): HResult;
  7267.         stdcall;
  7268.  
  7269.     //
  7270.     // Output options to be used by downstream filters
  7271.     //
  7272.  
  7273.     // What size, bitdepth etc should the output video be
  7274.     function GetOutputFormat(lpbmih: PBitmapInfoHeader): HResult; stdcall;
  7275.     // GetOutputFormat() method, if successful, returns
  7276.     // 1.  S_FALSE if no output format has so far been defined by downstream filters
  7277.     // 2.  S_OK if an output format has already been defined by downstream filters
  7278.     function SetOutputFormat(lpbmih: PBitmapInfoHeader): HResult;
  7279.         stdcall;
  7280.  
  7281.     // Specify physical color to be used in colorkeying the background
  7282.     // for overlay mixing
  7283.     function GetBackgroundColor(var pdwPhysColor: DWORD): HResult; stdcall;
  7284.     function SetBackgroundColor(dwPhysColor: DWORD): HResult; stdcall;
  7285.  
  7286.     // Specify if whole output bitmap should be redrawn for each sample
  7287.     function GetRedrawAlways(lpbOption: PBOOL): HResult; stdcall;
  7288.     function SetRedrawAlways(bOption: BOOL): HResult; stdcall;
  7289.  
  7290.     // Specify if the caption text background should be opaque/transparent
  7291.     function GetDrawBackgroundMode(var lpMode: TAMLine21DrawBGMode): HResult;
  7292.         stdcall;
  7293.     function SetDrawBackgroundMode(Mode: TAMLine21DrawBGMode): HResult;
  7294.         stdcall;
  7295.     // supported mode values are AM_L21_DrawBGMode_Opaque and
  7296.     // AM_L21_DrawBGMode_Transparent
  7297.   end;
  7298.  
  7299. (*==========================================================================;
  7300.  *
  7301.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  7302.  *
  7303.  *  File:       dvdevcod.h
  7304.  *
  7305.  ***************************************************************************)
  7306. // list of standard DVD-Video event codes and the expected params
  7307.  
  7308. const
  7309.   EC_DVDBASE                                                    = $0100;
  7310.   {$EXTERNALSYM EC_DVDBASE}
  7311.  
  7312. type
  7313.   _tagDVD_ERROR = (
  7314.   {$IFNDEF COMPILER6_UP}
  7315.     DVD_ERROR_INVALID_0,
  7316.     DVD_ERROR_Unexpected,           // Something unexpected happened, perhaps content
  7317.                                     //   is incorrectly authored.  Playback is stopped.
  7318.     DVD_ERROR_CopyProtectFail,      // Key exchange for DVD copy protection failed.
  7319.                                     //   Playback is stopped.
  7320.     DVD_ERROR_InvalidDVD1_0Disc,    // DVD-Video disc is incorrectly authored for v1.0
  7321.                                     //   of spec. Playback is stopped.
  7322.     DVD_ERROR_InvalidDiscRegion,    // The Disc is not approved for playback by decoders
  7323.                                     //   from this DVD region.
  7324.     DVD_ERROR_LowParentalLevel,      // Player parental level is lower than the lowest parental
  7325.                                     //   level available in the DVD content. Playback is stopped.
  7326.     DVD_ERROR_MacrovisionFail,    // Macrovision Distribution Failed.
  7327.                                     // Playback is stopped.
  7328.     DVD_ERROR_IncompatibleSystemAndDecoderRegions,
  7329.                                     // No discs can be played because the system region
  7330.                                     // does not match the decoder region.
  7331.     DVD_ERROR_IncompatibleDiscAndDecoderRegions
  7332.                                     // The disc cannot be played because the disc is
  7333.                                     // not authored to be played in the decoder's region
  7334.   {$ELSE}
  7335.     DVD_ERROR_Unexpected        = 1,  // Something unexpected happened, perhaps content
  7336.                                       //   is incorrectly authored.  Playback is stopped.
  7337.     DVD_ERROR_CopyProtectFail   = 2,  // Key exchange for DVD copy protection failed.
  7338.                                       //   Playback is stopped.
  7339.     DVD_ERROR_InvalidDVD1_0Disc = 3,  // DVD-Video disc is incorrectly authored for v1.0
  7340.                                       //   of spec. Playback is stopped.
  7341.     DVD_ERROR_InvalidDiscRegion = 4,  // The Disc is not approved for playback by decoders
  7342.                                       //   from this DVD region.
  7343.     DVD_ERROR_LowParentalLevel  = 5,  // Player parental level is lower than the lowest parental
  7344.                                       //   level available in the DVD content. Playback is stopped.
  7345.     DVD_ERROR_MacrovisionFail   = 6,  // Macrovision Distribution Failed.
  7346.                                       // Playback is stopped.
  7347.     DVD_ERROR_IncompatibleSystemAndDecoderRegions = 7,
  7348.                                       // No discs can be played because the system region
  7349.                                       // does not match the decoder region.
  7350.     DVD_ERROR_IncompatibleDiscAndDecoderRegions = 8
  7351.                                       // The disc cannot be played because the disc is
  7352.                                       // not authored to be played in the decoder's region
  7353.   {$ENDIF}
  7354.   );
  7355.   {$EXTERNALSYM _tagDVD_ERROR}
  7356.   DVD_ERROR = _tagDVD_ERROR;
  7357.   {$EXTERNALSYM DVD_ERROR}
  7358.   TDVDError = DVD_ERROR;
  7359.  
  7360.   _tagDVD_WARNING = (
  7361.   {$IFNDEF COMPILER6_UP}
  7362.     DVD_WARNING_INVALID_0,
  7363.     DVD_WARNING_InvalidDVD1_0Disc,   // DVD-Video disc is incorrectly authored. Playback
  7364.                                      //   can continue, but unexpected behavior may occur.
  7365.     DVD_WARNING_FormatNotSupported,  // A decoder would not support the current format.  Playback
  7366.                                      //   of a stream (audio, video of SP) may not function.
  7367.                                      //   lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS) -> Windows XP
  7368.     DVD_WARNING_IllegalNavCommand,   // The internal DVD navigation command processor attempted to
  7369.                                      //   process an illegal command.
  7370.     DVD_WARNING_Open,                // File Open Failed
  7371.     DVD_WARNING_Seek,                // File Seek Failed
  7372.     DVD_WARNING_Read                 // File Read Failed
  7373.   {$ELSE}
  7374.     DVD_WARNING_InvalidDVD1_0Disc  = 1, // DVD-Video disc is incorrectly authored. Playback
  7375.                                         //   can continue, but unexpected behavior may occur.
  7376.     DVD_WARNING_FormatNotSupported = 2, // A decoder would not support the current format.  Playback
  7377.                                         //   of a stream (audio, video of SP) may not function.
  7378.                                         //   lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS) -> Windows XP
  7379.     DVD_WARNING_IllegalNavCommand = 3,  // The internal DVD navigation command processor attempted to
  7380.                                         //   process an illegal command.
  7381.     DVD_WARNING_Open = 4,               // File Open Failed
  7382.     DVD_WARNING_Seek = 5,               // File Seek Failed
  7383.     DVD_WARNING_Read = 6                // File Read Failed
  7384.   {$ENDIF}
  7385.   );
  7386.   {$EXTERNALSYM _tagDVD_WARNING}
  7387.   DVD_WARNING = _tagDVD_WARNING;
  7388.   {$EXTERNALSYM DVD_WARNING}
  7389.   TDVDWarning = DVD_WARNING;
  7390.  
  7391.   _tagDVD_PB_STOPPED = (
  7392.     DVD_PB_STOPPED_Other,               // The navigator stopped the playback (no reason available).
  7393.     DVD_PB_STOPPED_NoBranch,            // The nav completed the current pgc and there was no more video and
  7394.                                         // did not find any other branching instruction for subsequent playback.
  7395.     DVD_PB_STOPPED_NoFirstPlayDomain,   // The disc does not contain an initial startup program.
  7396.     DVD_PB_STOPPED_StopCommand,         // The app issued a stop() command or a stop command was authored on the disc.
  7397.     DVD_PB_STOPPED_Reset,               // The navigator was reset to the start of the disc (using ResetOnStop).
  7398.     DVD_PB_STOPPED_DiscEjected,         // The disc was ejected.
  7399.     DVD_PB_STOPPED_IllegalNavCommand,   // An illegal nav command prevented playback from continuing.
  7400.     DVD_PB_STOPPED_PlayPeriodAutoStop,  // PlayPeriod completed
  7401.     DVD_PB_STOPPED_PlayChapterAutoStop, // PlayChapter completed
  7402.     DVD_PB_STOPPED_ParentalFailure,     // A parental level failure prevented playback
  7403.     DVD_PB_STOPPED_RegionFailure,       // A region failure prevented playback
  7404.     DVD_PB_STOPPED_MacrovisionFailure,  // A Macrovision failure prevented playback.
  7405.     DVD_PB_STOPPED_DiscReadError,       // A read error prevented playback.
  7406.     DVD_PB_STOPPED_CopyProtectFailure   // Copy protection failure.
  7407.   );
  7408.   {$EXTERNALSYM _tagDVD_PB_STOPPED}
  7409.   DVD_PB_STOPPED = _tagDVD_PB_STOPPED;
  7410.   {$EXTERNALSYM DVD_PB_STOPPED}
  7411.   TDVDPBStopped = DVD_PB_STOPPED;
  7412.  
  7413. const
  7414.  
  7415. // DVD-Video event codes
  7416. // ======================
  7417. //
  7418. // All DVD-Video event are always passed on to the application, and are
  7419. // never processed by the filter graph
  7420.  
  7421.  
  7422.   EC_DVD_DOMAIN_CHANGE                    = (EC_DVDBASE + $01);
  7423.   {$EXTERNALSYM EC_DVD_DOMAIN_CHANGE}
  7424. // Parameters: ( DWORD, void )
  7425. // lParam1 is enum DVD_DOMAIN, and indicates the player's new domain
  7426. //
  7427. // Raised from following domains: all
  7428. //
  7429. // Signaled when ever the DVD player changes domains.
  7430.  
  7431.  
  7432.   EC_DVD_TITLE_CHANGE                     = (EC_DVDBASE + $02);
  7433.   {$EXTERNALSYM EC_DVD_TITLE_CHANGE}
  7434. // Parameters: ( DWORD, void )
  7435. // lParam1 is the new title number.
  7436. //
  7437. // Raised from following domains: DVD_DOMAIN_Title
  7438. //
  7439. // Indicates when the current title number changes.  Title numbers
  7440. // range 1 to 99.  This indicates the TTN, which is the title number
  7441. // with respect to the whole disc, not the VTS_TTN which is the title
  7442. // number with respect to just a current VTS.
  7443.  
  7444.  
  7445.   EC_DVD_CHAPTER_START                   = (EC_DVDBASE + $03);
  7446.   {$EXTERNALSYM EC_DVD_CHAPTER_START}
  7447. // Parameters: ( DWORD, void )
  7448. // lParam1 is the new chapter number (which is the program number for
  7449. // One_Sequential_PGC_Titles).
  7450. //
  7451. // Raised from following domains: DVD_DOMAIN_Title
  7452. //
  7453. // Signales that DVD player started playback of a new program in the Title
  7454. // domain.  This is only signaled for One_Sequential_PGC_Titles.
  7455.  
  7456.  
  7457.   EC_DVD_AUDIO_STREAM_CHANGE              = (EC_DVDBASE + $04);
  7458.   {$EXTERNALSYM EC_DVD_AUDIO_STREAM_CHANGE}
  7459. // Parameters: ( DWORD, void )
  7460. // lParam1 is the new user audio stream number.
  7461. //
  7462. // Raised from following domains: all
  7463. //
  7464. // Signaled when ever the current user audio stream number changes for the main
  7465. // title.  This can be changed automatically with a navigation command on disc
  7466. // as well as through IDVDAnnexJ.
  7467. // Audio stream numbers range from 0 to 7.  Stream $ffffffff
  7468. // indicates that no stream is selected.
  7469.  
  7470.   EC_DVD_SUBPICTURE_STREAM_CHANGE         = (EC_DVDBASE + $05);
  7471.   {$EXTERNALSYM EC_DVD_SUBPICTURE_STREAM_CHANGE}
  7472. // Parameters: ( DWORD, BOOL ) -> WindowsXP
  7473. // Parameters: ( DWORD, void )
  7474. // lParam1 is the new user subpicture stream number.
  7475. // lParam2 is the subpicture's on/off state (TRUE if on) -> WindowsXP
  7476.  
  7477. // Raised from following domains: all
  7478. //
  7479. // Signaled when ever the current user subpicture stream number changes for the main
  7480. // title.  This can be changed automatically with a navigation command on disc
  7481. // as well as through IDVDAnnexJ.
  7482. // Subpicture stream numbers range from 0 to 31.  Stream $ffffffff
  7483. // indicates that no stream is selected.
  7484.  
  7485.   EC_DVD_ANGLE_CHANGE                     = (EC_DVDBASE + $06);
  7486.   {$EXTERNALSYM EC_DVD_ANGLE_CHANGE}
  7487. // Parameters: ( DWORD, DWORD )
  7488. // lParam1 is the number of available angles.
  7489. // lParam2 is the current user angle number.
  7490. //
  7491. // Raised from following domains: all
  7492. //
  7493. // Signaled when ever either
  7494. //   a) the number of available angles changes, or
  7495. //   b) the current user angle number changes.
  7496. // Current angle number can be changed automatically with navigation command
  7497. // on disc as well as through IDVDAnnexJ.
  7498. // When the number of available angles is 1, the current video is not multiangle.
  7499. // Angle numbers range from 1 to 9.
  7500.  
  7501.  
  7502.   EC_DVD_BUTTON_CHANGE                    = (EC_DVDBASE + $07);
  7503.   {$EXTERNALSYM EC_DVD_BUTTON_CHANGE}
  7504. // Parameters: ( DWORD, DWORD )
  7505. // lParam1 is the number of available buttons.
  7506. // lParam2 is the current selected button number.
  7507. //
  7508. // Raised from following domains: all
  7509. //
  7510. // Signaled when ever either
  7511. //   a) the number of available buttons changes, or
  7512. //   b) the current selected button number changes.
  7513. // The current selected button can be changed automatically with navigation
  7514. // commands on disc as well as through IDVDAnnexJ.
  7515. // Button numbers range from 1 to 36.  Selected button number 0 implies that
  7516. // no button is selected.  Note that these button numbers enumerate all
  7517. // available button numbers, and do not always correspond to button numbers
  7518. // used for IDVDAnnexJ::ButtonSelectAndActivate since only a subset of buttons
  7519. // may be activated with ButtonSelectAndActivate.
  7520.  
  7521.  
  7522.   EC_DVD_VALID_UOPS_CHANGE                = (EC_DVDBASE + $08);
  7523.   {$EXTERNALSYM EC_DVD_VALID_UOPS_CHANGE}
  7524. // Parameters: ( DWORD, void )
  7525. // lParam1 is a VALID_UOP_SOMTHING_OR_OTHER bit-field stuct which indicates
  7526. //   which IDVDAnnexJ commands are explicitly disable by the DVD disc.
  7527. //
  7528. // Raised from following domains: all
  7529. //
  7530. // Signaled when ever the available set of IDVDAnnexJ methods changes.  This
  7531. // only indicates which operations are explicited disabled by the content on
  7532. // the DVD disc, and does not guarentee that it is valid to call methods
  7533. // which are not disabled.  For example, if no buttons are currently present,
  7534. // IDVDAnnexJ::ButtonActivate() won't work, even though the buttons are not
  7535. // explicitly disabled.
  7536.  
  7537.  
  7538.   EC_DVD_STILL_ON                         = (EC_DVDBASE + $09);
  7539.   {$EXTERNALSYM EC_DVD_STILL_ON}
  7540. // Parameters: ( BOOL, DWORD )
  7541. // lParam1 == 0  -->  buttons are available, so StillOff won't work
  7542. // lParam1 == 1  -->  no buttons available, so StillOff will work
  7543. // lParam2 indicates the number of seconds the still will last, with $ffffffff
  7544. //   indicating an infinite still (wait till button or StillOff selected).
  7545. //
  7546. // Raised from following domains: all
  7547. //
  7548. // Signaled at the beginning of any still: PGC still, Cell Still, or VOBU Still.
  7549. // Note that all combinations of buttons and still are possible (buttons on with
  7550. // still on, buttons on with still off, button off with still on, button off
  7551. // with still off).
  7552.  
  7553.   EC_DVD_STILL_OFF                         = (EC_DVDBASE + $0a);
  7554.   {$EXTERNALSYM EC_DVD_STILL_OFF}
  7555. // Parameters: ( void, void )
  7556. //
  7557. //   Indicating that any still that is currently active
  7558. //   has been released.
  7559. //
  7560. // Raised from following domains: all
  7561. //
  7562. // Signaled at the end of any still: PGC still, Cell Still, or VOBU Still.
  7563. //
  7564.  
  7565.   EC_DVD_CURRENT_TIME                     = (EC_DVDBASE + $0b);
  7566.   {$EXTERNALSYM EC_DVD_CURRENT_TIME}
  7567. // Parameters: ( DWORD, BOOL )
  7568. // lParam1 is a DVD_TIMECODE which indicates the current
  7569. //   playback time code in a BCD HH:MM:SS:FF format.
  7570. // lParam2 == 0  -->  time code is 25 frames/sec
  7571. // lParam2 == 1  -->  time code is 30 frames/sec (non-drop).
  7572. //
  7573. // Raised from following domains: DVD_DOMAIN_Title
  7574. //
  7575. // Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec.
  7576. // This is only signaled for One_Sequential_PGC_Titles.
  7577.  
  7578.  
  7579.   EC_DVD_ERROR                            = (EC_DVDBASE + $0c);
  7580.   {$EXTERNALSYM EC_DVD_ERROR}
  7581. // Parameters: ( DWORD, void)
  7582. // lParam1 is an enum DVD_ERROR which notifies the app of some error condition.
  7583. //
  7584. // Raised from following domains: all
  7585. //
  7586.  
  7587.   EC_DVD_WARNING                           = (EC_DVDBASE + $0d);
  7588.   {$EXTERNALSYM EC_DVD_WARNING}
  7589. // Parameters: ( DWORD, DWORD) -> WindowsXP
  7590. // Parameters: ( DWORD, void)
  7591. // lParam1 is an enum DVD_WARNING which notifies the app of some warning condition.
  7592. // lParam2 contains more specific information about the warning (warning dependent) -> WindowsXP
  7593.  
  7594. // Raised from following domains: all
  7595. //
  7596.  
  7597.   EC_DVD_CHAPTER_AUTOSTOP                  = (EC_DVDBASE + $0e);
  7598.   {$EXTERNALSYM EC_DVD_CHAPTER_AUTOSTOP}
  7599. // Parameters: (void, void)
  7600. //
  7601. //  Indicating that playback is stopped as a result of a call
  7602. //  to IDVDControl::ChapterPlayAutoStop()
  7603. //
  7604. // Raised from following domains : DVD_DOMAIN_TITLE
  7605. //
  7606.  
  7607.   EC_DVD_NO_FP_PGC                         = (EC_DVDBASE + $0f);
  7608.   {$EXTERNALSYM EC_DVD_NO_FP_PGC}
  7609. //  Parameters : (void, void)
  7610. //
  7611. //  Raised from the following domains : FP_DOM
  7612. //
  7613. //  Indicates that the DVD disc does not have a FP_PGC (First Play Program Chain)
  7614. //  and the DVD Navigator will not automatically load any PGC and start playback.
  7615. //
  7616.  
  7617.   EC_DVD_PLAYBACK_RATE_CHANGE              = (EC_DVDBASE + $10);
  7618.   {$EXTERNALSYM EC_DVD_PLAYBACK_RATE_CHANGE}
  7619. //  Parameters : (LONG, void)
  7620. //  lParam1 is a LONG indicating the new playback rate.
  7621. //  lParam1 < 0 indicates reverse playback mode.
  7622. //  lParam1 > 0 indicates forward playback mode
  7623. //  Value of lParam1 is the actual playback rate multiplied by 10000.
  7624. //  i.e. lParam1 = rate * 10000
  7625. //
  7626. //  Raised from the following domains : TT_DOM
  7627. //
  7628. //  Indicates that a rate change in playback has been initiated and the parameter
  7629. //  lParam1 indicates the new playback rate that is being used.
  7630. //
  7631.  
  7632.   EC_DVD_PARENTAL_LEVEL_CHANGE             = (EC_DVDBASE + $11);
  7633.   {$EXTERNALSYM EC_DVD_PARENTAL_LEVEL_CHANGE}
  7634. //  Parameters : (LONG, void)
  7635. //  lParam1 is a LONG indicating the new parental level.
  7636. //
  7637. //  Raised from the following domains : VMGM_DOM
  7638. //
  7639. //  Indicates that an authored Nav command has changed the parental level
  7640. //  setting in the player.
  7641. //
  7642.  
  7643.   EC_DVD_PLAYBACK_STOPPED                  = (EC_DVDBASE + $12);
  7644.   {$EXTERNALSYM EC_DVD_PLAYBACK_STOPPED}
  7645. //  Parameters : (DWORD, void)
  7646. //
  7647. //  Raised from the following domains : All Domains
  7648. //
  7649. // Indicates that playback has been stopped as the Navigator has completed
  7650. // playback of the pgc and did not find any other branching instruction for
  7651. // subsequent playback.
  7652. //
  7653. //  The DWORD returns the reason for the completion of the playback.  See
  7654. //  The DVD_PB_STOPPED enumeration for details.
  7655. //
  7656.  
  7657.   EC_DVD_ANGLES_AVAILABLE                  = (EC_DVDBASE + $13);
  7658.   {$EXTERNALSYM EC_DVD_ANGLES_AVAILABLE}
  7659. //  Parameters : (BOOL, void)
  7660. //  lParam1 == 0 indicates that playback is not in an angle block and angles are
  7661. //             not available
  7662. //  lParam1 == 1 indicates that an angle block is being played back and angle changes
  7663. //             can be performed.
  7664. //
  7665. //  Indicates whether an angle block is being played and if angle changes can be
  7666. //  performed. However, angle changes are not restricted to angle blocks and the
  7667. //  manifestation of the angle change can be seen only in an angle block.
  7668.  
  7669.   EC_DVD_PLAYPERIOD_AUTOSTOP               = (EC_DVDBASE + $14);
  7670.   {$EXTERNALSYM EC_DVD_PLAYPERIOD_AUTOSTOP}
  7671. // Parameters: (void, void)
  7672. // Sent when the PlayPeriodInTitle completes or is cancelled
  7673. //
  7674. // Raised from following domains : DVD_DOMAIN_TITLE
  7675. //
  7676.  
  7677.   EC_DVD_BUTTON_AUTO_ACTIVATED             = (EC_DVDBASE + $15);
  7678.   {$EXTERNALSYM EC_DVD_BUTTON_AUTO_ACTIVATED}
  7679. // Parameters: (DWORD button, void)
  7680. // Sent when a button is automatically activated
  7681. //
  7682. // Raised from following domains : DVD_DOMAIN_MENU
  7683. //
  7684.  
  7685.   EC_DVD_CMD_START                         = (EC_DVDBASE + $16);
  7686.   {$EXTERNALSYM EC_DVD_CMD_START}
  7687. // Parameters: (CmdID, HResult)
  7688. // Sent when a command begins
  7689. //
  7690.  
  7691.   EC_DVD_CMD_END                           = (EC_DVDBASE + $17);
  7692.   {$EXTERNALSYM EC_DVD_CMD_END}
  7693. // Parameters: (CmdID, HResult)
  7694. // Sent when a command completes
  7695. //
  7696.  
  7697.   EC_DVD_DISC_EJECTED                      = (EC_DVDBASE + $18);
  7698.   {$EXTERNALSYM EC_DVD_DISC_EJECTED}
  7699. // Parameters: none
  7700. // Sent when the nav detects that a disc was ejected and stops the playback
  7701. // The app does not need to take any action to stop the playback.
  7702. //
  7703.  
  7704.   EC_DVD_DISC_INSERTED                     = (EC_DVDBASE + $19);
  7705.   {$EXTERNALSYM EC_DVD_DISC_INSERTED}
  7706. // Parameters: none
  7707. // Sent when the nav detects that a disc was inserted and the nav begins playback
  7708. // The app does not need to take any action to start the playback.
  7709. //
  7710.  
  7711.   EC_DVD_CURRENT_HMSF_TIME                 = (EC_DVDBASE + $1a);
  7712.   {$EXTERNALSYM EC_DVD_CURRENT_HMSF_TIME}
  7713. // Parameters: ( ULONG, ULONG )
  7714. // lParam2 contains a union of the DVD_TIMECODE_FLAGS
  7715. // lParam1 contains a DVD_HMSF_TIMECODE.  Assign lParam1 to a ULONG then cast the
  7716. // ULONG as a DVD_HMSF_TIMECODE to use its values.
  7717. //
  7718. // Raised from following domains: DVD_DOMAIN_Title
  7719. //
  7720. // Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec.
  7721.  
  7722.   EC_DVD_KARAOKE_MODE                      = (EC_DVDBASE + $1b);
  7723.   {$EXTERNALSYM EC_DVD_KARAOKE_MODE}
  7724. // Parameters: ( BOOL, reserved )
  7725. // lParam1 is either TRUE (a karaoke track is being played) or FALSE (no karaoke data is being played).
  7726. //
  7727.  
  7728. (*==========================================================================;
  7729.  *
  7730.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  7731.  *
  7732.  *  File:       dvdmedia.h
  7733.  *
  7734.  ***************************************************************************)
  7735.  
  7736. type
  7737. // -----------------------------------------------------------------------
  7738. // AC-3 definition for the AM_KSPROPSETID_AC3 property set
  7739. // -----------------------------------------------------------------------
  7740.   AM_PROPERTY_AC3 = (
  7741.     AM_PROPERTY_AC3_INVALID_0,
  7742.     AM_PROPERTY_AC3_ERROR_CONCEALMENT,
  7743.     AM_PROPERTY_AC3_ALTERNATE_AUDIO,
  7744.     AM_PROPERTY_AC3_DOWNMIX,
  7745.     AM_PROPERTY_AC3_BIT_STREAM_MODE,
  7746.     AM_PROPERTY_AC3_DIALOGUE_LEVEL,
  7747.     AM_PROPERTY_AC3_LANGUAGE_CODE,
  7748.     AM_PROPERTY_AC3_ROOM_TYPE
  7749.   );
  7750.   {$EXTERNALSYM AM_PROPERTY_AC3}
  7751.   TAMPropertyAC3 = AM_PROPERTY_AC3;
  7752.  
  7753.   AM_AC3_ERROR_CONCEALMENT = record
  7754.     fRepeatPreviousBlock: BOOL;
  7755.     fErrorInCurrentBlock: BOOL;
  7756.   end;
  7757.   {$EXTERNALSYM AM_AC3_ERROR_CONCEALMENT}
  7758.   PAM_AC3_ERROR_CONCEALMENT = ^AM_AC3_ERROR_CONCEALMENT;
  7759.   {$EXTERNALSYM PAM_AC3_ERROR_CONCEALMENT}
  7760.   TAMAC3ErrorConcelment = AM_AC3_ERROR_CONCEALMENT;
  7761.  
  7762.   AM_AC3_ALTERNATE_AUDIO = record
  7763.     fStereo: BOOL;
  7764.     DualMode: ULONG;
  7765.   end;
  7766.   {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO}
  7767.   PAM_AC3_ALTERNATE_AUDIO = ^AM_AC3_ALTERNATE_AUDIO;
  7768.   {$EXTERNALSYM PAM_AC3_ALTERNATE_AUDIO}
  7769.   TAMAC3AlteranateAudio = AM_AC3_ALTERNATE_AUDIO;
  7770.  
  7771. const
  7772.   AM_AC3_ALTERNATE_AUDIO_1     = 1;
  7773.   {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO_1}
  7774.   AM_AC3_ALTERNATE_AUDIO_2     = 2;
  7775.   {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO_2}
  7776.   AM_AC3_ALTERNATE_AUDIO_BOTH   = 3;
  7777.   {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO_BOTH}
  7778.  
  7779. type
  7780.   AM_AC3_DOWNMIX = record
  7781.     fDownMix       : BOOL;
  7782.     fDolbySurround : BOOL;
  7783.   end;
  7784.   {$EXTERNALSYM AM_AC3_DOWNMIX}
  7785.   PAM_AC3_DOWNMIX = ^AM_AC3_DOWNMIX;
  7786.   {$EXTERNALSYM PAM_AC3_DOWNMIX}
  7787.   TAMAC3DownMix = AM_AC3_DOWNMIX;
  7788.  
  7789.   AM_AC3_BIT_STREAM_MODE = record
  7790.     BitStreamMode: Longint;
  7791.   end;
  7792.   {$EXTERNALSYM AM_AC3_BIT_STREAM_MODE}
  7793.   PAM_AC3_BIT_STREAM_MODE = ^AM_AC3_BIT_STREAM_MODE;
  7794.   {$EXTERNALSYM PAM_AC3_BIT_STREAM_MODE}
  7795.   TAMAC3BitStreamMode = AM_AC3_BIT_STREAM_MODE;
  7796. const
  7797.   AM_AC3_SERVICE_MAIN_AUDIO        = 0;
  7798.   {$EXTERNALSYM AM_AC3_SERVICE_MAIN_AUDIO}
  7799.   AM_AC3_SERVICE_NO_DIALOG         = 1;
  7800.   {$EXTERNALSYM AM_AC3_SERVICE_NO_DIALOG}
  7801.   AM_AC3_SERVICE_VISUALLY_IMPAIRED = 2;
  7802.   {$EXTERNALSYM AM_AC3_SERVICE_VISUALLY_IMPAIRED}
  7803.   AM_AC3_SERVICE_HEARING_IMPAIRED  = 3;
  7804.   {$EXTERNALSYM AM_AC3_SERVICE_HEARING_IMPAIRED}
  7805.   AM_AC3_SERVICE_DIALOG_ONLY       = 4;
  7806.   {$EXTERNALSYM AM_AC3_SERVICE_DIALOG_ONLY}
  7807.   AM_AC3_SERVICE_COMMENTARY        = 5;
  7808.   {$EXTERNALSYM AM_AC3_SERVICE_COMMENTARY}
  7809.   AM_AC3_SERVICE_EMERGENCY_FLASH   = 6;
  7810.   {$EXTERNALSYM AM_AC3_SERVICE_EMERGENCY_FLASH}
  7811.   AM_AC3_SERVICE_VOICE_OVER        = 7;
  7812.   {$EXTERNALSYM AM_AC3_SERVICE_VOICE_OVER}
  7813.  
  7814. type
  7815.   AM_AC3_DIALOGUE_LEVEL = record
  7816.     DialogueLevel: ULONG;
  7817.   end;
  7818.   {$EXTERNALSYM AM_AC3_DIALOGUE_LEVEL}
  7819.   PAM_AC3_DIALOGUE_LEVEL = ^AM_AC3_DIALOGUE_LEVEL;
  7820.   {$EXTERNALSYM PAM_AC3_DIALOGUE_LEVEL}
  7821.   TAMAC3DialogueLevel = AM_AC3_DIALOGUE_LEVEL;
  7822.  
  7823.   AM_AC3_ROOM_TYPE = record
  7824.     fLargeRoom: BOOL;
  7825.   end;
  7826.   {$EXTERNALSYM AM_AC3_ROOM_TYPE}
  7827.   PAM_AC3_ROOM_TYPE = ^AM_AC3_ROOM_TYPE;
  7828.   {$EXTERNALSYM PAM_AC3_ROOM_TYPE}
  7829.   TAMAC3RoomType = AM_AC3_ROOM_TYPE;
  7830.   
  7831. // -----------------------------------------------------------------------
  7832. // subpicture definition for the AM_KSPROPSETID_DvdSubPic property set
  7833. // -----------------------------------------------------------------------
  7834.  
  7835.   AM_PROPERTY_DVDSUBPIC = (
  7836.     AM_PROPERTY_DVDSUBPIC_PALETTE,
  7837.     AM_PROPERTY_DVDSUBPIC_HLI,
  7838.     AM_PROPERTY_DVDSUBPIC_COMPOSIT_ON   // TRUE for subpicture is displayed
  7839.   );
  7840.   {$EXTERNALSYM AM_PROPERTY_DVDSUBPIC}
  7841.   TAM_Property_DVDSubpic = AM_PROPERTY_DVDSUBPIC;
  7842.  
  7843.   _AM_DVD_YUV = record
  7844.     Reserved: Byte;
  7845.     Y: byte;
  7846.     U: Byte;
  7847.     V: Byte;
  7848.   end;
  7849.   {$EXTERNALSYM _AM_DVD_YUV}
  7850.   AM_DVD_YUV = _AM_DVD_YUV;
  7851.   {$EXTERNALSYM AM_DVD_YUV}
  7852.   TAMDVDYUV = _AM_DVD_YUV;
  7853.  
  7854.   _AM_PROPERTY_SPPAL = record
  7855.     sppal: array[0..15] of TAMDVDYUV;
  7856.   end;
  7857.   {$EXTERNALSYM _AM_PROPERTY_SPPAL}
  7858.   AM_PROPERTY_SPPAL = _AM_PROPERTY_SPPAL;
  7859.   {$EXTERNALSYM AM_PROPERTY_SPPAL}
  7860.   PAM_PROPERTY_SPPAL = ^AM_PROPERTY_SPPAL;
  7861.   {$EXTERNALSYM PAM_PROPERTY_SPPAL}
  7862.   TAMPropertySPPAL = _AM_PROPERTY_SPPAL;
  7863.  
  7864.   _AM_COLCON = record
  7865.     emph1col : Byte;
  7866.     emph2col : Byte;
  7867.     backcol  : Byte;
  7868.     patcol   : Byte;
  7869.     emph1con : Byte;
  7870.     emph2con : Byte;
  7871.     backcon  : Byte;
  7872.     patcon   : Byte;
  7873.   end;
  7874.   {$EXTERNALSYM _AM_COLCON}
  7875.   AM_COLCON = _AM_COLCON;
  7876.   {$EXTERNALSYM AM_COLCON}
  7877.   PAM_COLCON = ^AM_COLCON;
  7878.   {$EXTERNALSYM PAM_COLCON}
  7879.   TAMColcon = _AM_COLCON;
  7880.  
  7881.   _AM_PROPERTY_SPHLI = record
  7882.     HLISS    : Word;      //
  7883.     Reserved : Word;
  7884.     StartPTM : ULONG;   // start presentation time in x/90000
  7885.     EndPTM   : ULONG;     // end PTM in x/90000
  7886.     StartX   : Word;
  7887.     StartY   : Word;
  7888.     StopX    : Word;
  7889.     StopY    : Word;
  7890.     ColCon   : TAMColCon;     // color contrast description (4 bytes as given in HLI)
  7891.   end;
  7892.   {$EXTERNALSYM _AM_PROPERTY_SPHLI}
  7893.   AM_PROPERTY_SPHLI = _AM_PROPERTY_SPHLI;
  7894.   {$EXTERNALSYM AM_PROPERTY_SPHLI}
  7895.   TAMPropertySPHLI = _AM_PROPERTY_SPHLI;
  7896.  
  7897.   AM_PROPERTY_COMPOSIT_ON = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BOOL;
  7898.   {$EXTERNALSYM AM_PROPERTY_COMPOSIT_ON}
  7899.   PAM_PROPERTY_COMPOSIT_ON = ^AM_PROPERTY_COMPOSIT_ON;
  7900.   {$EXTERNALSYM PAM_PROPERTY_COMPOSIT_ON}
  7901.  
  7902. // -----------------------------------------------------------------------
  7903. // copy protection definitions
  7904. // -----------------------------------------------------------------------
  7905.  
  7906. // AM_UseNewCSSKey for the dwTypeSpecificFlags in IMediaSample2 to indicate
  7907. // the exact point in a stream after which to start applying a new CSS key.
  7908. // This is typically sent on an empty media sample just before attempting
  7909. // to renegotiate a CSS key.
  7910. const
  7911.   AM_UseNewCSSKey    = $1;
  7912.   {$EXTERNALSYM AM_UseNewCSSKey}
  7913.  
  7914. //
  7915. // AM_KSPROPSETID_CopyProt property set definitions
  7916. //
  7917.   AM_PROPERTY_DVDCOPY_CHLG_KEY       = $01;
  7918.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_CHLG_KEY}
  7919.   AM_PROPERTY_DVDCOPY_DVD_KEY1       = $02;
  7920.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_DVD_KEY1}
  7921.   AM_PROPERTY_DVDCOPY_DEC_KEY2       = $03;
  7922.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_DEC_KEY2}
  7923.   AM_PROPERTY_DVDCOPY_TITLE_KEY      = $04;
  7924.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_TITLE_KEY}
  7925.   AM_PROPERTY_COPY_MACROVISION       = $05;
  7926.   {$EXTERNALSYM AM_PROPERTY_COPY_MACROVISION}
  7927.   AM_PROPERTY_DVDCOPY_REGION         = $06;
  7928.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_REGION}
  7929.   AM_PROPERTY_DVDCOPY_SET_COPY_STATE = $07;
  7930.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_SET_COPY_STATE}
  7931.   AM_PROPERTY_DVDCOPY_DISC_KEY       = $80;
  7932.   {$EXTERNALSYM AM_PROPERTY_DVDCOPY_DISC_KEY}
  7933.  
  7934. type
  7935.   _AM_DVDCOPY_CHLGKEY = record
  7936.     ChlgKey: array[0..9] of Byte;
  7937.     Reserved: array[0..1] of Byte;
  7938.   end;
  7939.   {$EXTERNALSYM _AM_DVDCOPY_CHLGKEY}
  7940.   AM_DVDCOPY_CHLGKEY = _AM_DVDCOPY_CHLGKEY;
  7941.   {$EXTERNALSYM AM_DVDCOPY_CHLGKEY}
  7942.   PAM_DVDCOPY_CHLGKEY = ^AM_DVDCOPY_CHLGKEY;
  7943.   {$EXTERNALSYM PAM_DVDCOPY_CHLGKEY}
  7944.   TAMDVDCopyCHLGKey = _AM_DVDCOPY_CHLGKEY;
  7945.  
  7946.   _AM_DVDCOPY_BUSKEY = record
  7947.     BusKey: array[0..4] of Byte;
  7948.     Reserved: array[0..0] of Byte;
  7949.   end;
  7950.   {$EXTERNALSYM _AM_DVDCOPY_BUSKEY}
  7951.   AM_DVDCOPY_BUSKEY = _AM_DVDCOPY_BUSKEY;
  7952.   {$EXTERNALSYM AM_DVDCOPY_BUSKEY}
  7953.   PAM_DVDCOPY_BUSKEY = ^AM_DVDCOPY_BUSKEY;
  7954.   {$EXTERNALSYM PAM_DVDCOPY_BUSKEY}
  7955.   TAMDVDCopyBusKey = _AM_DVDCOPY_BUSKEY;
  7956.  
  7957.   _AM_DVDCOPY_DISCKEY = record
  7958.     DiscKey: array[0..2047] of Byte;
  7959.   end;
  7960.   {$EXTERNALSYM _AM_DVDCOPY_DISCKEY}
  7961.   AM_DVDCOPY_DISCKEY = _AM_DVDCOPY_DISCKEY;
  7962.   {$EXTERNALSYM AM_DVDCOPY_DISCKEY}
  7963.   PAM_DVDCOPY_DISCKEY = ^AM_DVDCOPY_DISCKEY;
  7964.   {$EXTERNALSYM PAM_DVDCOPY_DISCKEY}
  7965.   TAMDVDCopyDiscKey = _AM_DVDCOPY_DISCKEY;
  7966.  
  7967.   AM_DVDCOPY_TITLEKEY = record
  7968.     KeyFlags: ULONG;
  7969.     Reserved1: array[0..1] of ULONG;
  7970.     TitleKey: array[0..5] of Byte;
  7971.     Reserved2: array[0..1] of Byte;
  7972.   end;
  7973.   {$EXTERNALSYM AM_DVDCOPY_TITLEKEY}
  7974.   PAM_DVDCOPY_TITLEKEY = AM_DVDCOPY_TITLEKEY;
  7975.   {$EXTERNALSYM PAM_DVDCOPY_TITLEKEY}
  7976.   TAMDVDCopyTitleKey = AM_DVDCOPY_TITLEKEY;
  7977.  
  7978.   _AM_COPY_MACROVISION = record
  7979.     MACROVISIONLevel: ULONG;
  7980.   end;
  7981.   {$EXTERNALSYM _AM_COPY_MACROVISION}
  7982.   AM_COPY_MACROVISION = _AM_COPY_MACROVISION;
  7983.   {$EXTERNALSYM AM_COPY_MACROVISION}
  7984.   PAM_COPY_MACROVISION = ^AM_COPY_MACROVISION;
  7985.   {$EXTERNALSYM PAM_COPY_MACROVISION}
  7986.   TAMCopyMacroVision = _AM_COPY_MACROVISION;
  7987.  
  7988.   AM_DVDCOPY_SET_COPY_STATE = record
  7989.     DVDCopyState: ULONG;
  7990.   end;
  7991.   {$EXTERNALSYM AM_DVDCOPY_SET_COPY_STATE}
  7992.   PAM_DVDCOPY_SET_COPY_STATE = ^AM_DVDCOPY_SET_COPY_STATE;
  7993.   {$EXTERNALSYM PAM_DVDCOPY_SET_COPY_STATE}
  7994.   TAMDVDCopySetCopyState = AM_DVDCOPY_SET_COPY_STATE;
  7995.  
  7996.   AM_DVDCOPYSTATE = (
  7997.     AM_DVDCOPYSTATE_INITIALIZE,
  7998.     AM_DVDCOPYSTATE_INITIALIZE_TITLE,   // indicates we are starting a title
  7999.                                         // key copy protection sequence
  8000.     AM_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED,
  8001.     AM_DVDCOPYSTATE_AUTHENTICATION_REQUIRED,
  8002.     AM_DVDCOPYSTATE_DONE
  8003.   );
  8004.   {$EXTERNALSYM AM_DVDCOPYSTATE}
  8005.   TAMDVDCopyState = AM_DVDCOPYSTATE;
  8006.  
  8007.   AM_COPY_MACROVISION_LEVEL = (
  8008.     AM_MACROVISION_DISABLED,
  8009.     AM_MACROVISION_LEVEL1,
  8010.     AM_MACROVISION_LEVEL2,
  8011.     AM_MACROVISION_LEVEL3
  8012.   );
  8013.   {$EXTERNALSYM AM_COPY_MACROVISION_LEVEL}
  8014.   PAM_COPY_MACROVISION_LEVEL = ^AM_COPY_MACROVISION_LEVEL;
  8015.   {$EXTERNALSYM PAM_COPY_MACROVISION_LEVEL}
  8016.   TAMCopyMacroVisionLevel = AM_COPY_MACROVISION_LEVEL;
  8017.  
  8018.   // CSS region stucture
  8019.   _DVD_REGION = record
  8020.     CopySystem: Byte;
  8021.     RegionData: Byte;
  8022.     SystemRegion: Byte;
  8023.     Reserved: Byte;
  8024.   end;
  8025.   {$EXTERNALSYM _DVD_REGION}
  8026.   DVD_REGION = _DVD_REGION;
  8027.   {$EXTERNALSYM DVD_REGION}
  8028.   PDVD_REGION = ^DVD_REGION;
  8029.   {$EXTERNALSYM PDVD_REGION}
  8030.   TDVDRegion = _DVD_REGION;
  8031.  
  8032. //
  8033. // CGMS Copy Protection Flags
  8034. //
  8035.  
  8036. const
  8037.   AM_DVD_CGMS_RESERVED_MASK      = $00000078;
  8038.   {$EXTERNALSYM AM_DVD_CGMS_RESERVED_MASK}
  8039.  
  8040.   AM_DVD_CGMS_COPY_PROTECT_MASK  = $00000018;
  8041.   {$EXTERNALSYM AM_DVD_CGMS_COPY_PROTECT_MASK}
  8042.   AM_DVD_CGMS_COPY_PERMITTED     = $00000000;
  8043.   {$EXTERNALSYM AM_DVD_CGMS_COPY_PERMITTED}
  8044.   AM_DVD_CGMS_COPY_ONCE          = $00000010;
  8045.   {$EXTERNALSYM AM_DVD_CGMS_COPY_ONCE}
  8046.   AM_DVD_CGMS_NO_COPY            = $00000018;
  8047.   {$EXTERNALSYM AM_DVD_CGMS_NO_COPY}
  8048.  
  8049.   AM_DVD_COPYRIGHT_MASK          = $00000040;
  8050.   {$EXTERNALSYM AM_DVD_COPYRIGHT_MASK}
  8051.   AM_DVD_NOT_COPYRIGHTED         = $00000000;
  8052.   {$EXTERNALSYM AM_DVD_NOT_COPYRIGHTED}
  8053.   AM_DVD_COPYRIGHTED             = $00000040;
  8054.   {$EXTERNALSYM AM_DVD_COPYRIGHTED}
  8055.  
  8056.   AM_DVD_SECTOR_PROTECT_MASK     = $00000020;
  8057.   {$EXTERNALSYM AM_DVD_SECTOR_PROTECT_MASK}
  8058.   AM_DVD_SECTOR_NOT_PROTECTED    = $00000000;
  8059.   {$EXTERNALSYM AM_DVD_SECTOR_NOT_PROTECTED}
  8060.   AM_DVD_SECTOR_PROTECTED        = $00000020;
  8061.   {$EXTERNALSYM AM_DVD_SECTOR_PROTECTED}
  8062.  
  8063.  
  8064. // -----------------------------------------------------------------------
  8065. // video format blocks
  8066. // -----------------------------------------------------------------------
  8067.  
  8068. type
  8069.   AM_MPEG2Level = (
  8070.   {$IFNDEF COMPILER6_UP}
  8071.     AM_MPEG2Level_INVALID_0,
  8072.     AM_MPEG2Level_Low,
  8073.     AM_MPEG2Level_Main,
  8074.     AM_MPEG2Level_High1440,
  8075.     AM_MPEG2Level_High
  8076.   {$ELSE}
  8077.     AM_MPEG2Level_Low      = 1,
  8078.     AM_MPEG2Level_Main     = 2,
  8079.     AM_MPEG2Level_High1440 = 3,
  8080.     AM_MPEG2Level_High     = 4
  8081.   {$ENDIF}
  8082.   );
  8083.   {$EXTERNALSYM AM_MPEG2Level}
  8084.   TAMMPEG2Level = AM_MPEG2Level;
  8085.  
  8086.   AM_MPEG2Profile = (
  8087.   {$IFNDEF COMPILER6_UP}
  8088.     AM_MPEG2Profile_0,
  8089.     AM_MPEG2Profile_Simple,
  8090.     AM_MPEG2Profile_Main,
  8091.     AM_MPEG2Profile_SNRScalable,
  8092.     AM_MPEG2Profile_SpatiallyScalable,
  8093.     AM_MPEG2Profile_High
  8094.   {$ELSE}
  8095.     AM_MPEG2Profile_Simple            = 1,
  8096.     AM_MPEG2Profile_Main              = 2,
  8097.     AM_MPEG2Profile_SNRScalable       = 3,
  8098.     AM_MPEG2Profile_SpatiallyScalable = 4,
  8099.     AM_MPEG2Profile_High              = 5
  8100.   {$ENDIF}
  8101.   );
  8102.   {$EXTERNALSYM AM_MPEG2Profile}
  8103.   TAMMPEG2Profile = AM_MPEG2Profile;
  8104.  
  8105. const
  8106.   AMINTERLACE_IsInterlaced             = $00000001;  // if 0, other interlace bits are irrelevent
  8107.   {$EXTERNALSYM AMINTERLACE_IsInterlaced}
  8108.   AMINTERLACE_1FieldPerSample          = $00000002;  // else 2 fields per media sample
  8109.   {$EXTERNALSYM AMINTERLACE_1FieldPerSample}
  8110.   AMINTERLACE_Field1First              = $00000004;  // else Field 2 is first;  top field in PAL is field 1, top field in NTSC is field 2?
  8111.   {$EXTERNALSYM AMINTERLACE_Field1First}
  8112.   AMINTERLACE_UNUSED                   = $00000008;  //
  8113.   {$EXTERNALSYM AMINTERLACE_UNUSED}
  8114.   AMINTERLACE_FieldPatternMask         = $00000030;  // use this mask with AMINTERLACE_FieldPat*
  8115.   {$EXTERNALSYM AMINTERLACE_FieldPatternMask}
  8116.   AMINTERLACE_FieldPatField1Only       = $00000000;  // stream never contains a Field2
  8117.   {$EXTERNALSYM AMINTERLACE_FieldPatField1Only}
  8118.   AMINTERLACE_FieldPatField2Only       = $00000010;  // stream never contains a Field1
  8119.   {$EXTERNALSYM AMINTERLACE_FieldPatField2Only}
  8120.   AMINTERLACE_FieldPatBothRegular      = $00000020;  // There will be a Field2 for every Field1 (required for Weave?)
  8121.   {$EXTERNALSYM AMINTERLACE_FieldPatBothRegular}
  8122.   AMINTERLACE_FieldPatBothIrregular    = $00000030;  // Random pattern of Field1s and Field2s
  8123.   {$EXTERNALSYM AMINTERLACE_FieldPatBothIrregular}
  8124.   AMINTERLACE_DisplayModeMask          = $000000c0;
  8125.   {$EXTERNALSYM AMINTERLACE_DisplayModeMask}
  8126.   AMINTERLACE_DisplayModeBobOnly       = $00000000;
  8127.   {$EXTERNALSYM AMINTERLACE_DisplayModeBobOnly}
  8128.   AMINTERLACE_DisplayModeWeaveOnly     = $00000040;
  8129.   {$EXTERNALSYM AMINTERLACE_DisplayModeWeaveOnly}
  8130.   AMINTERLACE_DisplayModeBobOrWeave    = $00000080;
  8131.   {$EXTERNALSYM AMINTERLACE_DisplayModeBobOrWeave}
  8132.  
  8133.   AMCOPYPROTECT_RestrictDuplication    = $00000001;  // duplication of this stream should be restricted
  8134.   {$EXTERNALSYM AMCOPYPROTECT_RestrictDuplication}
  8135.  
  8136.   AMMPEG2_DoPanScan                    = $00000001;  //if set, the MPEG-2 video decoder should crop output image
  8137.   {$EXTERNALSYM AMMPEG2_DoPanScan}                   //  based on pan-scan vectors in picture_display_extension
  8138.                                                      //  and change the picture aspect ratio accordingly.
  8139.   AMMPEG2_DVDLine21Field1              = $00000002;  //if set, the MPEG-2 decoder must be able to produce an output
  8140.   {$EXTERNALSYM AMMPEG2_DVDLine21Field1}             //  pin for DVD style closed caption data found in GOP layer of field 1
  8141.   AMMPEG2_DVDLine21Field2              = $00000004;  //if set, the MPEG-2 decoder must be able to produce an output
  8142.   {$EXTERNALSYM AMMPEG2_DVDLine21Field2}             //  pin for DVD style closed caption data found in GOP layer of field 2
  8143.   AMMPEG2_SourceIsLetterboxed          = $00000008;  //if set, indicates that black bars have been encoded in the top
  8144.   {$EXTERNALSYM AMMPEG2_SourceIsLetterboxed}         //  and bottom of the video.
  8145.   AMMPEG2_FilmCameraMode               = $00000010;  //if set, indicates "film mode" used for 625/50 content.  If cleared,
  8146.   {$EXTERNALSYM AMMPEG2_FilmCameraMode}              //  indicates that "camera mode" was used.
  8147.   AMMPEG2_LetterboxAnalogOut           = $00000020;  //if set and this stream is sent to an analog output, it should
  8148.   {$EXTERNALSYM AMMPEG2_LetterboxAnalogOut}          //  be letterboxed.  Streams sent to VGA should be letterboxed only by renderers.
  8149.   AMMPEG2_DSS_UserData                 = $00000040;  //if set, the MPEG-2 decoder must process DSS style user data
  8150.   {$EXTERNALSYM AMMPEG2_DSS_UserData}
  8151.   AMMPEG2_DVB_UserData                 = $00000080;  //if set, the MPEG-2 decoder must process DVB style user data
  8152.   {$EXTERNALSYM AMMPEG2_DVB_UserData}
  8153.   AMMPEG2_27MhzTimebase                = $00000100;  //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz
  8154.   {$EXTERNALSYM AMMPEG2_27MhzTimebase}
  8155.  
  8156.   AMMPEG2_WidescreenAnalogOut          = $00000200;  //if set and this stream is sent to an analog output, it should
  8157.   {$EXTERNALSYM AMMPEG2_WidescreenAnalogOut}
  8158.                                                      //  be in widescreen format (4x3 content should be centered on a 16x9 output).
  8159.                                                      //  Streams sent to VGA should be widescreened only by renderers.
  8160.  
  8161. // PRESENT in dwReserved1 field in VIDEOINFOHEADER2
  8162.   AMCONTROL_USED                       = $00000001; // Used to test if these flags are supported.  Set and test for AcceptMediaType.
  8163.   {$EXTERNALSYM AMCONTROL_USED}                     // If rejected, then you cannot use the AMCONTROL flags (send 0 for dwReserved1)
  8164.   AMCONTROL_PAD_TO_4x3                 = $00000002; // if set means display the image in a 4x3 area
  8165.   {$EXTERNALSYM AMCONTROL_PAD_TO_4x3}
  8166.   AMCONTROL_PAD_TO_16x9                = $00000004; // if set means display the image in a 16x9 area
  8167.   {$EXTERNALSYM AMCONTROL_PAD_TO_16x9}
  8168.  
  8169. type
  8170.   PVideoInfoHeader2 = ^TVideoInfoHeader2;
  8171.   tagVIDEOINFOHEADER2 = record
  8172.     rcSource: TRect;
  8173.     rcTarget: TRect;
  8174.     dwBitRate: DWORD;
  8175.     dwBitErrorRate: DWORD;
  8176.     AvgTimePerFrame: TReferenceTime;
  8177.     dwInterlaceFlags: DWORD;         // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0
  8178.     dwCopyProtectFlags: DWORD;       // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0
  8179.     dwPictAspectRatioX: DWORD;       // X dimension of picture aspect ratio, e.g. 16 for 16x9 display
  8180.     dwPictAspectRatioY: DWORD;       // Y dimension of picture aspect ratio, e.g.  9 for 16x9 display
  8181.     case integer of
  8182.     0: (dwControlFlags: DWORD;           // use AMCONTROL_* defines, use this from now on
  8183.         dwReserved2: DWORD;              // must be 0; reject connection otherwise
  8184.         bmiHeader: TBitmapInfoHeader);
  8185.     1: (dwReserved1: DWORD ;              // for backward compatiblity (was "must be 0";  connection rejected otherwise)
  8186.         dwReserved2_: DWORD;              // must be 0; reject connection otherwise
  8187.         bmiHeader_: TBitmapInfoHeader);
  8188.   end;
  8189.   {$EXTERNALSYM tagVIDEOINFOHEADER2}
  8190.   VIDEOINFOHEADER2 = tagVIDEOINFOHEADER2;
  8191.   {$EXTERNALSYM VIDEOINFOHEADER2}
  8192.   TVideoInfoHeader2 = tagVIDEOINFOHEADER2;
  8193.  
  8194.   PMPEG2VideoInfo = ^TMPEG2VideoInfo;
  8195.   tagMPEG2VIDEOINFO = record
  8196.      hdr: TVIDEOINFOHEADER2;
  8197.      dwStartTimeCode: DWORD;                 //  ?? not used for DVD ??
  8198.      cbSequenceHeader: DWORD;                // is 0 for DVD (no sequence header)
  8199.      dwProfile: DWORD;                       // use enum MPEG2Profile
  8200.      dwLevel: DWORD;                         // use enum MPEG2Level
  8201.      dwFlags: DWORD;                         // use AMMPEG2_* defines.  Reject connection if undefined bits are not 0
  8202.      dwSequenceHeader: array[0..0] of DWORD; // DWORD instead of Byte for alignment purposes
  8203.                                                //   For MPEG-2, if a sequence_header is included, the sequence_extension
  8204.                                                //   should also be included
  8205.   end;
  8206.   {$EXTERNALSYM tagMPEG2VIDEOINFO}
  8207.   MPEG2VIDEOINFO = tagMPEG2VIDEOINFO;
  8208.   {$EXTERNALSYM MPEG2VIDEOINFO}
  8209.   TMPEG2VideoInfo = tagMPEG2VIDEOINFO;
  8210. {
  8211. #define SIZE_MPEG2VIDEOINFO(pv) (FIELD_OFFSET(MPEG2VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  8212. #define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  8213. // use this macro instead, the previous only works for MPEG1VIDEOINFO structures
  8214. #define MPEG2_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->dwSequenceHeader)
  8215.  }
  8216.  
  8217. //===================================================================================
  8218. // flags for dwTypeSpecificFlags in AM_SAMPLE2_PROPERTIES which define type specific
  8219. // data in IMediaSample2
  8220. //===================================================================================
  8221.  
  8222. const
  8223.   AM_VIDEO_FLAG_FIELD_MASK          = $0003;    // use this mask to check whether the sample is field1 or field2 or frame
  8224.   {$EXTERNALSYM AM_VIDEO_FLAG_FIELD_MASK}
  8225.   AM_VIDEO_FLAG_INTERLEAVED_FRAME   = $0000;    // the sample is a frame (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this)
  8226.   {$EXTERNALSYM AM_VIDEO_FLAG_INTERLEAVED_FRAME}
  8227.   AM_VIDEO_FLAG_FIELD1              = $0001;    // the sample is field1 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this)
  8228.   {$EXTERNALSYM AM_VIDEO_FLAG_FIELD1}
  8229.   AM_VIDEO_FLAG_FIELD2              = $0002;    // the sample is the field2 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this)
  8230.   {$EXTERNALSYM AM_VIDEO_FLAG_FIELD2}
  8231.   AM_VIDEO_FLAG_FIELD1FIRST         = $0004;    // if set means display field1 first, else display field2 first.
  8232.   {$EXTERNALSYM AM_VIDEO_FLAG_FIELD1FIRST}
  8233.                                         // this bit is irrelavant for 1FieldPerSample mode
  8234.   AM_VIDEO_FLAG_WEAVE               = $0008;    // if set use bob display mode else weave
  8235.   {$EXTERNALSYM AM_VIDEO_FLAG_WEAVE}
  8236.   AM_VIDEO_FLAG_IPB_MASK            = $0030;    // use this mask to check whether the sample is I, P or B
  8237.   {$EXTERNALSYM AM_VIDEO_FLAG_IPB_MASK}
  8238.   AM_VIDEO_FLAG_I_SAMPLE            = $0000;    // I Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this)
  8239.   {$EXTERNALSYM AM_VIDEO_FLAG_I_SAMPLE}
  8240.   AM_VIDEO_FLAG_P_SAMPLE            = $0010;    // P Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this)
  8241.   {$EXTERNALSYM AM_VIDEO_FLAG_P_SAMPLE}
  8242.   AM_VIDEO_FLAG_B_SAMPLE            = $0020;    // B Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this)
  8243.   {$EXTERNALSYM AM_VIDEO_FLAG_B_SAMPLE}
  8244.   AM_VIDEO_FLAG_REPEAT_FIELD        = $0040;    // if set means display the field which has been displayed first again after displaying
  8245.   {$EXTERNALSYM AM_VIDEO_FLAG_REPEAT_FIELD}
  8246.                                         // both fields first. This bit is irrelavant for 1FieldPerSample mode
  8247. // -----------------------------------------------------------------------
  8248. // AM_KSPROPSETID_DvdKaraoke property set definitions
  8249. // -----------------------------------------------------------------------
  8250. type
  8251.   tagAM_DvdKaraokeData = record
  8252.     dwDownmix           : DWORD;    // bitwise OR of AM_DvdKaraoke_Downmix flags
  8253.     dwSpeakerAssignment : DWORD;    // AM_DvdKaraoke_SpeakerAssignment
  8254.   end;
  8255.   {$EXTERNALSYM tagAM_DvdKaraokeData}
  8256.   AM_DvdKaraokeData = tagAM_DvdKaraokeData;
  8257.   {$EXTERNALSYM AM_DvdKaraokeData}
  8258.   TAMDvdKaraokeData = tagAM_DvdKaraokeData;
  8259.  
  8260.   AM_PROPERTY_DVDKARAOKE = (
  8261.     AM_PROPERTY_DVDKARAOKE_ENABLE,  // BOOL
  8262.     AM_PROPERTY_DVDKARAOKE_DATA
  8263.   );
  8264.   {$EXTERNALSYM AM_PROPERTY_DVDKARAOKE}
  8265.   TAMPropertyDVDKaraoke = AM_PROPERTY_DVDKARAOKE;
  8266.  
  8267. // -----------------------------------------------------------------------
  8268. // AM_KSPROPSETID_TSRateChange property set definitions for time stamp
  8269. // rate changes.
  8270. // -----------------------------------------------------------------------
  8271. type
  8272.   AM_PROPERTY_TS_RATE_CHANGE = (
  8273.   {$IFNDEF COMPILER6_UP}
  8274.     AM_RATE_INVALID_0,
  8275.     AM_RATE_SimpleRateChange,      // rw, use AM_SimpleRateChange
  8276.     AM_RATE_ExactRateChange,       // rw, use AM_ExactRateChange
  8277.     AM_RATE_MaxFullDataRate,       // r,  use AM_MaxFullDataRate
  8278.     AM_RATE_Step,                  // w,  use AM_Step
  8279.     AM_RATE_UseRateVersion,        // w,  use WORD
  8280.     AM_RATE_QueryFullFrameRate,    // r,  use AM_QueryRate
  8281.     AM_RATE_QueryLastRateSegPTS,   // r,  use REFERENCE_TIME
  8282.     AM_RATE_CorrectTS              // w,  use LONG
  8283.   {$ELSE}
  8284.     AM_RATE_SimpleRateChange    = 1, // rw, use AM_SimpleRateChange
  8285.     AM_RATE_ExactRateChange     = 2, // rw, use AM_ExactRateChange
  8286.     AM_RATE_MaxFullDataRate     = 3, // r,  use AM_MaxFullDataRate
  8287.     AM_RATE_Step                = 4, // w,  use AM_Step
  8288.     AM_RATE_UseRateVersion      = 5, // w,  use WORD
  8289.     AM_RATE_QueryFullFrameRate  = 6, // r,  use AM_QueryRate
  8290.     AM_RATE_QueryLastRateSegPTS = 7, // r,  use REFERENCE_TIME
  8291.     AM_RATE_CorrectTS           = 8 // w,  use LONG
  8292.   {$ENDIF}
  8293.   );
  8294.   {$EXTERNALSYM AM_PROPERTY_TS_RATE_CHANGE}
  8295.   TAMPropertyTSRateChange = AM_PROPERTY_TS_RATE_CHANGE;
  8296.  
  8297. // -------------------------------------------------------------------
  8298. // AM_KSPROPSETID_DVD_RateChange property set definitions for new DVD
  8299. // rate change scheme.
  8300. // -------------------------------------------------------------------
  8301.  
  8302.   AM_PROPERTY_DVD_RATE_CHANGE = (
  8303.   {$IFNDEF COMPILER6_UP}
  8304.     AM_RATE_INVALID__0,
  8305.     AM_RATE_ChangeRate,       // w,  use AM_DVD_ChangeRate
  8306.     AM_RATE_FullDataRateMax,  // r,  use AM_MaxFullDataRate
  8307.     AM_RATE_ReverseDecode,    // r,  use LONG
  8308.     AM_RATE_DecoderPosition,  // r,  use AM_DVD_DecoderPosition
  8309.     AM_RATE_DecoderVersion    // r,  use LONG
  8310.   {$ELSE}
  8311.     AM_RATE_ChangeRate      = 1, // w,  use AM_DVD_ChangeRate
  8312.     AM_RATE_FullDataRateMax = 2, // r,  use AM_MaxFullDataRate
  8313.     AM_RATE_ReverseDecode   = 3, // r,  use LONG
  8314.     AM_RATE_DecoderPosition = 4, // r,  use AM_DVD_DecoderPosition
  8315.     AM_RATE_DecoderVersion  = 5 // r,  use LONG
  8316.   {$ENDIF}
  8317.   );
  8318.   {$EXTERNALSYM AM_PROPERTY_DVD_RATE_CHANGE}
  8319.   TAMPropertyDVDRateChange = AM_PROPERTY_DVD_RATE_CHANGE;
  8320.  
  8321.   AM_SimpleRateChange = record
  8322.     // this is the simplest mechinism to set a time stamp rate change on
  8323.     // a filter (simplest for the person setting the rate change, harder
  8324.     // for the filter doing the rate change).
  8325.     StartTime: TReferenceTime;    //stream time at which to start this rate
  8326.     Rate: Longint;                //new rate * 10000 (decimal)
  8327.   end;
  8328.   {$EXTERNALSYM AM_SimpleRateChange}
  8329.   TAMSimpleRateChange = AM_SimpleRateChange;
  8330.  
  8331.   AM_QueryRate = record
  8332.     lMaxForwardFullFrame: LongInt; //  rate * 10000
  8333.     lMaxReverseFullFrame: LongInt; //  rate * 10000
  8334.   end;
  8335.   {$EXTERNALSYM AM_QueryRate}
  8336.   TAMQueryRate = AM_QueryRate;
  8337.  
  8338.   AM_ExactRateChange = record
  8339.     OutputZeroTime: TReferenceTime;   //input TS that maps to zero output TS
  8340.     Rate: Longint;                    //new rate * 10000 (decimal)
  8341.   end;
  8342.   {$EXTERNALSYM AM_ExactRateChange}
  8343.   TAMExactRateChange = AM_ExactRateChange;
  8344.  
  8345.   AM_MaxFullDateRate = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;    //rate * 10000 (decimal)
  8346.   {$EXTERNALSYM AM_MaxFullDateRate}
  8347.  
  8348.   AM_Step = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;        // number of frame to step
  8349.   {$EXTERNALSYM AM_Step}
  8350.  
  8351.   // New rate change property set, structs. enums etc.
  8352.   AM_DVD_ChangeRate = record
  8353.      StartInTime  : TReferenceTime;  // stream time (input) at which to start decoding at this rate
  8354.      StartOutTime : TReferenceTime;  // reference time (output) at which to start showing at this rate
  8355.      Rate         : Longint;         // new rate * 10000 (decimal)
  8356.   end;
  8357.   {$EXTERNALSYM AM_DVD_ChangeRate}
  8358.   TAMDVDChangeRate = AM_DVD_ChangeRate;
  8359.  
  8360.   AM_DVD_DecoderPosition = {$IFDEF TYPE_IDENTITY}type {$ENDIF} int64 ;
  8361.   {$EXTERNALSYM AM_DVD_DecoderPosition}
  8362.  
  8363.   DVD_PLAY_DIRECTION = (
  8364.     DVD_DIR_FORWARD,
  8365.     DVD_DIR_BACKWARD
  8366.   );
  8367.   {$EXTERNALSYM DVD_PLAY_DIRECTION}
  8368.   TDVDPlayDirection = DVD_PLAY_DIRECTION;
  8369.   
  8370. (*==========================================================================;
  8371.  *
  8372.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  8373.  *
  8374.  *  File:       activecf.h
  8375.  *
  8376.  ***************************************************************************)
  8377.  
  8378. const
  8379.   CFSTR_VFW_FILTERLIST = 'Video for Windows 4 Filters';
  8380.   {$EXTERNALSYM CFSTR_VFW_FILTERLIST}
  8381.  
  8382. type
  8383.   tagVFW_FILTERLIST = record
  8384.     cFilters: UINT;                     // number of CLSIDs in aClsId
  8385.     aClsId: array[0..0] of TGUID;       // ClsId of each filter
  8386.   end;
  8387.   {$EXTERNALSYM tagVFW_FILTERLIST}
  8388.   VFW_FILTERLIST = tagVFW_FILTERLIST;
  8389.   {$EXTERNALSYM VFW_FILTERLIST}
  8390.   TVFWFilterList = tagVFW_FILTERLIST;
  8391.  
  8392. (*==========================================================================;
  8393.  *
  8394.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  8395.  *
  8396.  *  File:       vfwmsgs.h
  8397.  *
  8398.  ***************************************************************************)
  8399.  
  8400. const
  8401. //
  8402. // Define the severity codes
  8403. //
  8404.  
  8405.   VFW_E_INVALIDMEDIATYPE                    = HResult($80040200);
  8406.   {$EXTERNALSYM VFW_E_INVALIDMEDIATYPE}
  8407.   VFW_E_INVALIDSUBTYPE                      = HResult($80040201);
  8408.   {$EXTERNALSYM VFW_E_INVALIDSUBTYPE}
  8409.   VFW_E_NEED_OWNER                          = HResult($80040202);
  8410.   {$EXTERNALSYM VFW_E_NEED_OWNER}
  8411.   VFW_E_ENUM_OUT_OF_SYNC                    = HResult($80040203);
  8412.   {$EXTERNALSYM VFW_E_ENUM_OUT_OF_SYNC}
  8413.   VFW_E_ALREADY_CONNECTED                   = HResult($80040204);
  8414.   {$EXTERNALSYM VFW_E_ALREADY_CONNECTED}
  8415.   VFW_E_FILTER_ACTIVE                       = HResult($80040205);
  8416.   {$EXTERNALSYM VFW_E_FILTER_ACTIVE}
  8417.   VFW_E_NO_TYPES                            = HResult($80040206);
  8418.   {$EXTERNALSYM VFW_E_NO_TYPES}
  8419.   VFW_E_NO_ACCEPTABLE_TYPES                 = HResult($80040207);
  8420.   {$EXTERNALSYM VFW_E_NO_ACCEPTABLE_TYPES}
  8421.   VFW_E_INVALID_DIRECTION                   = HResult($80040208);
  8422.   {$EXTERNALSYM VFW_E_INVALID_DIRECTION}
  8423.   VFW_E_NOT_CONNECTED                       = HResult($80040209);
  8424.   {$EXTERNALSYM VFW_E_NOT_CONNECTED}
  8425.   VFW_E_NO_ALLOCATOR                        = HResult($8004020A);
  8426.   {$EXTERNALSYM VFW_E_NO_ALLOCATOR}
  8427.   VFW_E_RUNTIME_ERROR                       = HResult($8004020B);
  8428.   {$EXTERNALSYM VFW_E_RUNTIME_ERROR}
  8429.   VFW_E_BUFFER_NOTSET                       = HResult($8004020C);
  8430.   {$EXTERNALSYM VFW_E_BUFFER_NOTSET}
  8431.   VFW_E_BUFFER_OVERFLOW                     = HResult($8004020D);
  8432.   {$EXTERNALSYM VFW_E_BUFFER_OVERFLOW}
  8433.   VFW_E_BADALIGN                            = HResult($8004020E);
  8434.   {$EXTERNALSYM VFW_E_BADALIGN}
  8435.   VFW_E_ALREADY_COMMITTED                   = HResult($8004020F);
  8436.   {$EXTERNALSYM VFW_E_ALREADY_COMMITTED}
  8437.   VFW_E_BUFFERS_OUTSTANDING                 = HResult($80040210);
  8438.   {$EXTERNALSYM VFW_E_BUFFERS_OUTSTANDING}
  8439.   VFW_E_NOT_COMMITTED                       = HResult($80040211);
  8440.   {$EXTERNALSYM VFW_E_NOT_COMMITTED}
  8441.   VFW_E_SIZENOTSET                          = HResult($80040212);
  8442.   {$EXTERNALSYM VFW_E_SIZENOTSET}
  8443.   VFW_E_NO_CLOCK                            = HResult($80040213);
  8444.   {$EXTERNALSYM VFW_E_NO_CLOCK}
  8445.   VFW_E_NO_SINK                             = HResult($80040214);
  8446.   {$EXTERNALSYM VFW_E_NO_SINK}
  8447.   VFW_E_NO_INTERFACE                        = HResult($80040215);
  8448.   {$EXTERNALSYM VFW_E_NO_INTERFACE}
  8449.   VFW_E_NOT_FOUND                           = HResult($80040216);
  8450.   {$EXTERNALSYM VFW_E_NOT_FOUND}
  8451.   VFW_E_CANNOT_CONNECT                      = HResult($80040217);
  8452.   {$EXTERNALSYM VFW_E_CANNOT_CONNECT}
  8453.   VFW_E_CANNOT_RENDER                       = HResult($80040218);
  8454.   {$EXTERNALSYM VFW_E_CANNOT_RENDER}
  8455.   VFW_E_CHANGING_FORMAT                     = HResult($80040219);
  8456.   {$EXTERNALSYM VFW_E_CHANGING_FORMAT}
  8457.   VFW_E_NO_COLOR_KEY_SET                    = HResult($8004021A);
  8458.   {$EXTERNALSYM VFW_E_NO_COLOR_KEY_SET}
  8459.   VFW_E_NOT_OVERLAY_CONNECTION              = HResult($8004021B);
  8460.   {$EXTERNALSYM VFW_E_NOT_OVERLAY_CONNECTION}
  8461.   VFW_E_NOT_SAMPLE_CONNECTION               = HResult($8004021C);
  8462.   {$EXTERNALSYM VFW_E_NOT_SAMPLE_CONNECTION}
  8463.   VFW_E_PALETTE_SET                         = HResult($8004021D);
  8464.   {$EXTERNALSYM VFW_E_PALETTE_SET}
  8465.   VFW_E_COLOR_KEY_SET                       = HResult($8004021E);
  8466.   {$EXTERNALSYM VFW_E_COLOR_KEY_SET}
  8467.   VFW_E_NO_COLOR_KEY_FOUND                  = HResult($8004021F);
  8468.   {$EXTERNALSYM VFW_E_NO_COLOR_KEY_FOUND}
  8469.   VFW_E_NO_PALETTE_AVAILABLE                = HResult($80040220);
  8470.   {$EXTERNALSYM VFW_E_NO_PALETTE_AVAILABLE}
  8471.   VFW_E_NO_DISPLAY_PALETTE                  = HResult($80040221);
  8472.   {$EXTERNALSYM VFW_E_NO_DISPLAY_PALETTE}
  8473.   VFW_E_TOO_MANY_COLORS                     = HResult($80040222);
  8474.   {$EXTERNALSYM VFW_E_TOO_MANY_COLORS}
  8475.   VFW_E_STATE_CHANGED                       = HResult($80040223);
  8476.   {$EXTERNALSYM VFW_E_STATE_CHANGED}
  8477.   VFW_E_NOT_STOPPED                         = HResult($80040224);
  8478.   {$EXTERNALSYM VFW_E_NOT_STOPPED}
  8479.   VFW_E_NOT_PAUSED                          = HResult($80040225);
  8480.   {$EXTERNALSYM VFW_E_NOT_PAUSED}
  8481.   VFW_E_NOT_RUNNING                         = HResult($80040226);
  8482.   {$EXTERNALSYM VFW_E_NOT_RUNNING}
  8483.   VFW_E_WRONG_STATE                         = HResult($80040227);
  8484.   {$EXTERNALSYM VFW_E_WRONG_STATE}
  8485.   VFW_E_START_TIME_AFTER_END                = HResult($80040228);
  8486.   {$EXTERNALSYM VFW_E_START_TIME_AFTER_END}
  8487.   VFW_E_INVALID_RECT                        = HResult($80040229);
  8488.   {$EXTERNALSYM VFW_E_INVALID_RECT}
  8489.   VFW_E_TYPE_NOT_ACCEPTED                   = HResult($8004022A);
  8490.   {$EXTERNALSYM VFW_E_TYPE_NOT_ACCEPTED}
  8491.   VFW_E_SAMPLE_REJECTED                     = HResult($8004022B);
  8492.   {$EXTERNALSYM VFW_E_SAMPLE_REJECTED}
  8493.   VFW_E_SAMPLE_REJECTED_EOS                 = HResult($8004022C);
  8494.   {$EXTERNALSYM VFW_E_SAMPLE_REJECTED_EOS}
  8495.   VFW_E_DUPLICATE_NAME                      = HResult($8004022D);
  8496.   {$EXTERNALSYM VFW_E_DUPLICATE_NAME}
  8497.   VFW_S_DUPLICATE_NAME                      = HResult($0004022D);
  8498.   {$EXTERNALSYM VFW_S_DUPLICATE_NAME}
  8499.   VFW_E_TIMEOUT                             = HResult($8004022E);
  8500.   {$EXTERNALSYM VFW_E_TIMEOUT}
  8501.   VFW_E_INVALID_FILE_FORMAT                 = HResult($8004022F);
  8502.   {$EXTERNALSYM VFW_E_INVALID_FILE_FORMAT}
  8503.   VFW_E_ENUM_OUT_OF_RANGE                   = HResult($80040230);
  8504.   {$EXTERNALSYM VFW_E_ENUM_OUT_OF_RANGE}
  8505.   VFW_E_CIRCULAR_GRAPH                      = HResult($80040231);
  8506.   {$EXTERNALSYM VFW_E_CIRCULAR_GRAPH}
  8507.   VFW_E_NOT_ALLOWED_TO_SAVE                 = HResult($80040232);
  8508.   {$EXTERNALSYM VFW_E_NOT_ALLOWED_TO_SAVE}
  8509.   VFW_E_TIME_ALREADY_PASSED                 = HResult($80040233);
  8510.   {$EXTERNALSYM VFW_E_TIME_ALREADY_PASSED}
  8511.   VFW_E_ALREADY_CANCELLED                   = HResult($80040234);
  8512.   {$EXTERNALSYM VFW_E_ALREADY_CANCELLED}
  8513.   VFW_E_CORRUPT_GRAPH_FILE                  = HResult($80040235);
  8514.   {$EXTERNALSYM VFW_E_CORRUPT_GRAPH_FILE}
  8515.   VFW_E_ADVISE_ALREADY_SET                  = HResult($80040236);
  8516.   {$EXTERNALSYM VFW_E_ADVISE_ALREADY_SET}
  8517.   VFW_S_STATE_INTERMEDIATE                  = HResult($00040237);
  8518.   {$EXTERNALSYM VFW_S_STATE_INTERMEDIATE}
  8519.   VFW_E_NO_MODEX_AVAILABLE                  = HResult($80040238);
  8520.   {$EXTERNALSYM VFW_E_NO_MODEX_AVAILABLE}
  8521.   VFW_E_NO_ADVISE_SET                       = HResult($80040239);
  8522.   {$EXTERNALSYM VFW_E_NO_ADVISE_SET}
  8523.   VFW_E_NO_FULLSCREEN                       = HResult($8004023B);
  8524.   {$EXTERNALSYM VFW_E_NO_FULLSCREEN}
  8525.   VFW_E_UNKNOWN_FILE_TYPE                   = HResult($80040240);
  8526.   {$EXTERNALSYM VFW_E_UNKNOWN_FILE_TYPE}
  8527.   VFW_E_CANNOT_LOAD_SOURCE_FILTER           = HResult($80040241);
  8528.   {$EXTERNALSYM VFW_E_CANNOT_LOAD_SOURCE_FILTER}
  8529.   VFW_S_PARTIAL_RENDER                      = HResult($00040242);
  8530.   {$EXTERNALSYM VFW_S_PARTIAL_RENDER}
  8531.   VFW_E_FILE_TOO_SHORT                      = HResult($80040243);
  8532.   {$EXTERNALSYM VFW_E_FILE_TOO_SHORT}
  8533.   VFW_E_INVALID_FILE_VERSION                = HResult($80040244);
  8534.   {$EXTERNALSYM VFW_E_INVALID_FILE_VERSION}
  8535.   VFW_S_SOME_DATA_IGNORED                   = HResult($00040245);
  8536.   {$EXTERNALSYM VFW_S_SOME_DATA_IGNORED}
  8537.   VFW_S_CONNECTIONS_DEFERRED                = HResult($00040246);
  8538.   {$EXTERNALSYM VFW_S_CONNECTIONS_DEFERRED}
  8539.   VFW_E_INVALID_CLSID                       = HResult($80040247);
  8540.   {$EXTERNALSYM VFW_E_INVALID_CLSID}
  8541.   VFW_E_INVALID_MEDIA_TYPE                  = HResult($80040248);
  8542.   {$EXTERNALSYM VFW_E_INVALID_MEDIA_TYPE}
  8543.   VFW_E_BAD_KEY                             = HResult($800403F2);
  8544.   {$EXTERNALSYM VFW_E_BAD_KEY}
  8545.   VFW_S_NO_MORE_ITEMS                       = HResult($00040103);
  8546.   {$EXTERNALSYM VFW_S_NO_MORE_ITEMS}
  8547.   VFW_E_SAMPLE_TIME_NOT_SET                 = HResult($80040249);
  8548.   {$EXTERNALSYM VFW_E_SAMPLE_TIME_NOT_SET}
  8549.   VFW_S_RESOURCE_NOT_NEEDED                 = HResult($00040250);
  8550.   {$EXTERNALSYM VFW_S_RESOURCE_NOT_NEEDED}
  8551.   VFW_E_MEDIA_TIME_NOT_SET                  = HResult($80040251);
  8552.   {$EXTERNALSYM VFW_E_MEDIA_TIME_NOT_SET}
  8553.   VFW_E_NO_TIME_FORMAT_SET                  = HResult($80040252);
  8554.   {$EXTERNALSYM VFW_E_NO_TIME_FORMAT_SET}
  8555.   VFW_E_MONO_AUDIO_HW                       = HResult($80040253);
  8556.   {$EXTERNALSYM VFW_E_MONO_AUDIO_HW}
  8557.   VFW_S_MEDIA_TYPE_IGNORED                  = HResult($00040254);
  8558.   {$EXTERNALSYM VFW_S_MEDIA_TYPE_IGNORED}
  8559.   VFW_E_NO_AUDIO_HARDWARE                   = HResult($80040256);
  8560.   {$EXTERNALSYM VFW_E_NO_AUDIO_HARDWARE}
  8561.   VFW_S_VIDEO_NOT_RENDERED                  = HResult($00040257);
  8562.   {$EXTERNALSYM VFW_S_VIDEO_NOT_RENDERED}
  8563.   VFW_S_AUDIO_NOT_RENDERED                  = HResult($00040258);
  8564.   {$EXTERNALSYM VFW_S_AUDIO_NOT_RENDERED}
  8565.   VFW_E_RPZA                                = HResult($80040259);
  8566.   {$EXTERNALSYM VFW_E_RPZA}
  8567.   VFW_S_RPZA                                = HResult($0004025A);
  8568.   {$EXTERNALSYM VFW_S_RPZA}
  8569.   VFW_E_PROCESSOR_NOT_SUITABLE              = HResult($8004025B);
  8570.   {$EXTERNALSYM VFW_E_PROCESSOR_NOT_SUITABLE}
  8571.   VFW_E_UNSUPPORTED_AUDIO                   = HResult($8004025C);
  8572.   {$EXTERNALSYM VFW_E_UNSUPPORTED_AUDIO}
  8573.   VFW_E_UNSUPPORTED_VIDEO                   = HResult($8004025D);
  8574.   {$EXTERNALSYM VFW_E_UNSUPPORTED_VIDEO}
  8575.   VFW_E_MPEG_NOT_CONSTRAINED                = HResult($8004025E);
  8576.   {$EXTERNALSYM VFW_E_MPEG_NOT_CONSTRAINED}
  8577.   VFW_E_NOT_IN_GRAPH                        = HResult($8004025F);
  8578.   {$EXTERNALSYM VFW_E_NOT_IN_GRAPH}
  8579.   VFW_S_ESTIMATED                           = HResult($00040260);
  8580.   {$EXTERNALSYM VFW_S_ESTIMATED}
  8581.   VFW_E_NO_TIME_FORMAT                      = HResult($80040261);
  8582.   {$EXTERNALSYM VFW_E_NO_TIME_FORMAT}
  8583.   VFW_E_READ_ONLY                           = HResult($80040262);
  8584.   {$EXTERNALSYM VFW_E_READ_ONLY}
  8585.   VFW_S_RESERVED                            = HResult($00040263);
  8586.   {$EXTERNALSYM VFW_S_RESERVED}
  8587.   VFW_E_BUFFER_UNDERFLOW                    = HResult($80040264);
  8588.   {$EXTERNALSYM VFW_E_BUFFER_UNDERFLOW}
  8589.   VFW_E_UNSUPPORTED_STREAM                  = HResult($80040265);
  8590.   {$EXTERNALSYM VFW_E_UNSUPPORTED_STREAM}
  8591.   VFW_E_NO_TRANSPORT                        = HResult($80040266);
  8592.   {$EXTERNALSYM VFW_E_NO_TRANSPORT}
  8593.   VFW_S_STREAM_OFF                          = HResult($00040267);
  8594.   {$EXTERNALSYM VFW_S_STREAM_OFF}
  8595.   VFW_S_CANT_CUE                            = HResult($00040268);
  8596.   {$EXTERNALSYM VFW_S_CANT_CUE}
  8597.   VFW_E_BAD_VIDEOCD                         = HResult($80040269);
  8598.   {$EXTERNALSYM VFW_E_BAD_VIDEOCD}
  8599.   VFW_S_NO_STOP_TIME                        = HResult($00040270);
  8600.   {$EXTERNALSYM VFW_S_NO_STOP_TIME}
  8601.   VFW_E_OUT_OF_VIDEO_MEMORY                 = HResult($80040271);
  8602.   {$EXTERNALSYM VFW_E_OUT_OF_VIDEO_MEMORY}
  8603.   VFW_E_VP_NEGOTIATION_FAILED               = HResult($80040272);
  8604.   {$EXTERNALSYM VFW_E_VP_NEGOTIATION_FAILED}
  8605.   VFW_E_DDRAW_CAPS_NOT_SUITABLE             = HResult($80040273);
  8606.   {$EXTERNALSYM VFW_E_DDRAW_CAPS_NOT_SUITABLE}
  8607.   VFW_E_NO_VP_HARDWARE                      = HResult($80040274);
  8608.   {$EXTERNALSYM VFW_E_NO_VP_HARDWARE}
  8609.   VFW_E_NO_CAPTURE_HARDWARE                 = HResult($80040275);
  8610.   {$EXTERNALSYM VFW_E_NO_CAPTURE_HARDWARE}
  8611.   VFW_E_DVD_OPERATION_INHIBITED             = HResult($80040276);
  8612.   {$EXTERNALSYM VFW_E_DVD_OPERATION_INHIBITED}
  8613.   VFW_E_DVD_INVALIDDOMAIN                   = HResult($80040277);
  8614.   {$EXTERNALSYM VFW_E_DVD_INVALIDDOMAIN}
  8615.   VFW_E_DVD_GRAPHNOTREADY                   = HResult($80040279);
  8616.   {$EXTERNALSYM VFW_E_DVD_GRAPHNOTREADY}
  8617.   VFW_E_DVD_RENDERFAIL                      = HResult($8004027A);
  8618.   {$EXTERNALSYM VFW_E_DVD_RENDERFAIL}
  8619.   VFW_E_DVD_DECNOTENOUGH                    = HResult($8004027B);
  8620.   {$EXTERNALSYM VFW_E_DVD_DECNOTENOUGH}
  8621.   VFW_E_DDRAW_VERSION_NOT_SUITABLE          = HResult($8004027C);
  8622.   {$EXTERNALSYM VFW_E_DDRAW_VERSION_NOT_SUITABLE}
  8623.   VFW_E_COPYPROT_FAILED                     = HResult($8004027D);
  8624.   {$EXTERNALSYM VFW_E_COPYPROT_FAILED}
  8625.   VFW_S_NOPREVIEWPIN                        = HResult($0004027E);
  8626.   {$EXTERNALSYM VFW_S_NOPREVIEWPIN}
  8627.   VFW_E_TIME_EXPIRED                        = HResult($8004027F);
  8628.   {$EXTERNALSYM VFW_E_TIME_EXPIRED}
  8629.   VFW_S_DVD_NON_ONE_SEQUENTIAL              = HResult($00040280);
  8630.   {$EXTERNALSYM VFW_S_DVD_NON_ONE_SEQUENTIAL}
  8631.   VFW_E_DVD_WRONG_SPEED                     = HResult($80040281);
  8632.   {$EXTERNALSYM VFW_E_DVD_WRONG_SPEED}
  8633.   VFW_E_DVD_MENU_DOES_NOT_EXIST             = HResult($80040282);
  8634.   {$EXTERNALSYM VFW_E_DVD_MENU_DOES_NOT_EXIST}
  8635.   VFW_E_DVD_CMD_CANCELLED                   = HResult($80040283);
  8636.   {$EXTERNALSYM VFW_E_DVD_CMD_CANCELLED}
  8637.   VFW_E_DVD_STATE_WRONG_VERSION             = HResult($80040284);
  8638.   {$EXTERNALSYM VFW_E_DVD_STATE_WRONG_VERSION}
  8639.   VFW_E_DVD_STATE_CORRUPT                   = HResult($80040285);
  8640.   {$EXTERNALSYM VFW_E_DVD_STATE_CORRUPT}
  8641.   VFW_E_DVD_STATE_WRONG_DISC                = HResult($80040286);
  8642.   {$EXTERNALSYM VFW_E_DVD_STATE_WRONG_DISC}
  8643.   VFW_E_DVD_INCOMPATIBLE_REGION             = HResult($80040287);
  8644.   {$EXTERNALSYM VFW_E_DVD_INCOMPATIBLE_REGION}
  8645.   VFW_E_DVD_NO_ATTRIBUTES                   = HResult($80040288);
  8646.   {$EXTERNALSYM VFW_E_DVD_NO_ATTRIBUTES}
  8647.   VFW_E_DVD_NO_GOUP_PGC                     = HResult($80040289);
  8648.   {$EXTERNALSYM VFW_E_DVD_NO_GOUP_PGC}
  8649.   VFW_E_DVD_LOW_PARENTAL_LEVEL              = HResult($8004028A);
  8650.   {$EXTERNALSYM VFW_E_DVD_LOW_PARENTAL_LEVEL}
  8651.   VFW_E_DVD_NOT_IN_KARAOKE_MODE             = HResult($8004028B);
  8652.   {$EXTERNALSYM VFW_E_DVD_NOT_IN_KARAOKE_MODE}
  8653.   VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE  = HResult($0004028C);
  8654.   {$EXTERNALSYM VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE}
  8655.   VFW_S_DVD_NOT_ACCURATE                    = HResult($0004028D);
  8656.   {$EXTERNALSYM VFW_S_DVD_NOT_ACCURATE}
  8657.   VFW_E_FRAME_STEP_UNSUPPORTED              = HResult($8004028E);
  8658.   {$EXTERNALSYM VFW_E_FRAME_STEP_UNSUPPORTED}
  8659.   VFW_E_DVD_STREAM_DISABLED                 = HResult($8004028F);
  8660.   {$EXTERNALSYM VFW_E_DVD_STREAM_DISABLED}
  8661.   VFW_E_DVD_TITLE_UNKNOWN                   = HResult($80040290);
  8662.   {$EXTERNALSYM VFW_E_DVD_TITLE_UNKNOWN}
  8663.   VFW_E_DVD_INVALID_DISC                    = HResult($80040291);
  8664.   {$EXTERNALSYM VFW_E_DVD_INVALID_DISC}
  8665.   VFW_E_DVD_NO_RESUME_INFORMATION           = HResult($80040292);
  8666.   {$EXTERNALSYM VFW_E_DVD_NO_RESUME_INFORMATION}
  8667.   VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD  = HResult($80040293);
  8668.   {$EXTERNALSYM VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD}
  8669.   VFW_E_PIN_ALREADY_BLOCKED                 = HResult($80040294);
  8670.   {$EXTERNALSYM VFW_E_PIN_ALREADY_BLOCKED}
  8671.   VFW_E_CERTIFICATION_FAILURE               = HResult($80040295);
  8672.   {$EXTERNALSYM VFW_E_CERTIFICATION_FAILURE}
  8673.   VFW_E_VMR_NOT_IN_MIXER_MODE               = HResult($80040296);
  8674.   {$EXTERNALSYM VFW_E_VMR_NOT_IN_MIXER_MODE}
  8675.  
  8676.   // The application has not yet provided the VMR filter with a valid allocator-presenter object.%0
  8677.   VFW_E_VMR_NO_AP_SUPPLIED       = HResult($80040297);
  8678.   {$EXTERNALSYM VFW_E_VMR_NO_AP_SUPPLIED}
  8679.  
  8680.   // The VMR could not find any de-interlacing hardware on the current display device.%0
  8681.   VFW_E_VMR_NO_DEINTERLACE_HW    = HResult($80040298);
  8682.   {$EXTERNALSYM VFW_E_VMR_NO_DEINTERLACE_HW}
  8683.  
  8684.   // The VMR could not find any ProcAmp hardware on the current display device.%0
  8685.   VFW_E_VMR_NO_PROCAMP_HW        = HResult($80040299);
  8686.   {$EXTERNALSYM VFW_E_VMR_NO_PROCAMP_HW}
  8687.  
  8688.   // VMR9 does not work with VPE-based hardware decoders.%0
  8689.   VFW_E_DVD_VMR9_INCOMPATIBLEDEC = HResult($8004029A);
  8690.   {$EXTERNALSYM VFW_E_DVD_VMR9_INCOMPATIBLEDEC}
  8691.  
  8692.   E_PROP_SET_UNSUPPORTED                    = HResult($80070492);
  8693.   {$EXTERNALSYM E_PROP_SET_UNSUPPORTED}
  8694.   E_PROP_ID_UNSUPPORTED                     = HResult($80070490);
  8695.   {$EXTERNALSYM E_PROP_ID_UNSUPPORTED}
  8696.  
  8697.  
  8698. (*==========================================================================;
  8699.  *
  8700.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  8701.  *
  8702.  *  Files:       edevdefs.h
  8703.  *               XPrtDefs.h (derived from edevdefs.h)
  8704.  *
  8705.  ***************************************************************************)
  8706.  
  8707. const
  8708.   ED_BASE                                 = $1000;
  8709.   {$EXTERNALSYM ED_BASE}
  8710.  
  8711. // this is used to tell the device communications object which
  8712. // physical communications port to use.
  8713.   DEV_PORT_SIM                            = 1;
  8714.   {$EXTERNALSYM DEV_PORT_SIM}
  8715.   DEV_PORT_COM1                           = 2; // standard serial ports
  8716.   {$EXTERNALSYM DEV_PORT_COM1}
  8717.   DEV_PORT_COM2                           = 3;
  8718.   {$EXTERNALSYM DEV_PORT_COM2}
  8719.   DEV_PORT_COM3                           = 4;
  8720.   {$EXTERNALSYM DEV_PORT_COM3}
  8721.   DEV_PORT_COM4                           = 5;
  8722.   {$EXTERNALSYM DEV_PORT_COM4}
  8723.   DEV_PORT_DIAQ                           = 6; // Diaquest driver
  8724.   {$EXTERNALSYM DEV_PORT_DIAQ}
  8725.   DEV_PORT_ARTI                           = 7; // ARTI driver
  8726.   {$EXTERNALSYM DEV_PORT_ARTI}
  8727.   DEV_PORT_1394                           = 8; // IEEE 1394 Serial Bus
  8728.   {$EXTERNALSYM DEV_PORT_1394}
  8729.   DEV_PORT_USB                            = 9; // Universal Serial Bus
  8730.   {$EXTERNALSYM DEV_PORT_USB}
  8731.   DEV_PORT_MIN                            = DEV_PORT_SIM;
  8732.   {$EXTERNALSYM DEV_PORT_MIN}
  8733.   DEV_PORT_MAX                            = DEV_PORT_USB;
  8734.   {$EXTERNALSYM DEV_PORT_MAX}
  8735.  
  8736. //      IAMExtDevice Capability Items:  unless otherwise specified, these items return
  8737. //         OATRUE or OAFALSE.  All return values are in pdwValue unless otherwise specified:
  8738.  
  8739.   ED_DEVCAP_CAN_RECORD                    = ED_BASE+1;
  8740.   {$EXTERNALSYM ED_DEVCAP_CAN_RECORD}
  8741.   ED_DEVCAP_CAN_RECORD_STROBE             = ED_BASE+2;
  8742.   {$EXTERNALSYM ED_DEVCAP_CAN_RECORD_STROBE}
  8743.   ED_DEVCAP_HAS_AUDIO                     = ED_BASE+3;
  8744.   {$EXTERNALSYM ED_DEVCAP_HAS_AUDIO}
  8745.   ED_DEVCAP_HAS_VIDEO                     = ED_BASE+4;
  8746.   {$EXTERNALSYM ED_DEVCAP_HAS_VIDEO}
  8747.   ED_DEVCAP_USES_FILES                    = ED_BASE+5;
  8748.   {$EXTERNALSYM ED_DEVCAP_USES_FILES}
  8749.   ED_DEVCAP_CAN_SAVE                      = ED_BASE+6;
  8750.   {$EXTERNALSYM ED_DEVCAP_CAN_SAVE}
  8751.   ED_DEVCAP_DEVICE_TYPE                   = ED_BASE+7;
  8752.   {$EXTERNALSYM ED_DEVCAP_DEVICE_TYPE}
  8753.   ED_DEVTYPE_VCR                          = ED_BASE+8;
  8754.   {$EXTERNALSYM ED_DEVTYPE_VCR}
  8755.   ED_DEVTYPE_LASERDISK                    = ED_BASE+9;
  8756.   {$EXTERNALSYM ED_DEVTYPE_LASERDISK}
  8757.   ED_DEVTYPE_ATR                          = ED_BASE+10;
  8758.   {$EXTERNALSYM ED_DEVTYPE_ATR}
  8759.   ED_DEVTYPE_DDR                          = ED_BASE+11;
  8760.   {$EXTERNALSYM ED_DEVTYPE_DDR}
  8761.   ED_DEVTYPE_ROUTER                       = ED_BASE+12;
  8762.   {$EXTERNALSYM ED_DEVTYPE_ROUTER}
  8763.   ED_DEVTYPE_KEYER                        = ED_BASE+13;
  8764.   {$EXTERNALSYM ED_DEVTYPE_KEYER}
  8765.   ED_DEVTYPE_MIXER_VIDEO                  = ED_BASE+14;
  8766.   {$EXTERNALSYM ED_DEVTYPE_MIXER_VIDEO}
  8767.   ED_DEVTYPE_DVE                          = ED_BASE+15;
  8768.   {$EXTERNALSYM ED_DEVTYPE_DVE}
  8769.   ED_DEVTYPE_WIPEGEN                      = ED_BASE+16;
  8770.   {$EXTERNALSYM ED_DEVTYPE_WIPEGEN}
  8771.   ED_DEVTYPE_MIXER_AUDIO                  = ED_BASE+17;
  8772.   {$EXTERNALSYM ED_DEVTYPE_MIXER_AUDIO}
  8773.   ED_DEVTYPE_CG                           = ED_BASE+18;
  8774.   {$EXTERNALSYM ED_DEVTYPE_CG}
  8775.   ED_DEVTYPE_TBC                          = ED_BASE+19;
  8776.   {$EXTERNALSYM ED_DEVTYPE_TBC}
  8777.   ED_DEVTYPE_TCG                          = ED_BASE+20;
  8778.   {$EXTERNALSYM ED_DEVTYPE_TCG}
  8779.   ED_DEVTYPE_GPI                          = ED_BASE+21;
  8780.   {$EXTERNALSYM ED_DEVTYPE_GPI}
  8781.   ED_DEVTYPE_JOYSTICK                     = ED_BASE+22;
  8782.   {$EXTERNALSYM ED_DEVTYPE_JOYSTICK}
  8783.   ED_DEVTYPE_KEYBOARD                     = ED_BASE+23;
  8784.   {$EXTERNALSYM ED_DEVTYPE_KEYBOARD}
  8785.  
  8786. // returns mfr-specific ID from external device.
  8787.   ED_DEVCAP_EXTERNAL_DEVICE_ID            = ED_BASE+24;
  8788.   {$EXTERNALSYM ED_DEVCAP_EXTERNAL_DEVICE_ID}
  8789.  
  8790.   ED_DEVCAP_TIMECODE_READ                 = ED_BASE+25;
  8791.   {$EXTERNALSYM ED_DEVCAP_TIMECODE_READ}
  8792.   ED_DEVCAP_TIMECODE_WRITE                = ED_BASE+26;
  8793.   {$EXTERNALSYM ED_DEVCAP_TIMECODE_WRITE}
  8794. //      used for seekable non-timecode enabled devices
  8795.   ED_DEVCAP_CTLTRK_READ                   = ED_BASE+27;
  8796.   {$EXTERNALSYM ED_DEVCAP_CTLTRK_READ}
  8797. //      used for seekable non-timecode enabled devices
  8798.   ED_DEVCAP_INDEX_READ                    = ED_BASE+28;
  8799.   {$EXTERNALSYM ED_DEVCAP_INDEX_READ}
  8800.  
  8801. // returns device preroll time in current time format
  8802.   ED_DEVCAP_PREROLL                       = ED_BASE+29;
  8803.   {$EXTERNALSYM ED_DEVCAP_PREROLL}
  8804. // returns device postroll time in current time format
  8805.   ED_DEVCAP_POSTROLL                     = ED_BASE+30;
  8806.   {$EXTERNALSYM ED_DEVCAP_POSTROLL}
  8807.  
  8808. // returns indication of deviceÆs synchronization accuracy.
  8809.   ED_DEVCAP_SYNC_ACCURACY                = ED_BASE+31;
  8810.   {$EXTERNALSYM ED_DEVCAP_SYNC_ACCURACY}
  8811.   ED_SYNCACC_PRECISE                     = ED_BASE+32;
  8812.   {$EXTERNALSYM ED_SYNCACC_PRECISE}
  8813.   ED_SYNCACC_FRAME                       = ED_BASE+33;
  8814.   {$EXTERNALSYM ED_SYNCACC_FRAME}
  8815.   ED_SYNCACC_ROUGH                       = ED_BASE+34;
  8816.   {$EXTERNALSYM ED_SYNCACC_ROUGH}
  8817.  
  8818. // returns deviceÆs normal framerate.
  8819.   ED_DEVCAP_NORMAL_RATE                  = ED_BASE+35;
  8820.   {$EXTERNALSYM ED_DEVCAP_NORMAL_RATE}
  8821.   ED_RATE_24                             = ED_BASE+36;
  8822.   {$EXTERNALSYM ED_RATE_24}
  8823.   ED_RATE_25                             = ED_BASE+37;
  8824.   {$EXTERNALSYM ED_RATE_25}
  8825.   ED_RATE_2997                           = ED_BASE+38;
  8826.   {$EXTERNALSYM ED_RATE_2997}
  8827.   ED_RATE_30                             = ED_BASE+39;
  8828.   {$EXTERNALSYM ED_RATE_30}
  8829.  
  8830.   ED_DEVCAP_CAN_PREVIEW = ED_BASE+40;
  8831.   {$EXTERNALSYM ED_DEVCAP_CAN_PREVIEW}
  8832.   ED_DEVCAP_CAN_MONITOR_SOURCES = ED_BASE+41;
  8833.   {$EXTERNALSYM ED_DEVCAP_CAN_MONITOR_SOURCES}
  8834.  
  8835. // indicates implementation allows testing of methods/parameters by
  8836. // setting the hi bit of a parm that makes sense - see individual methods
  8837. // for details.
  8838.   ED_DEVCAP_CAN_TEST                     = ED_BASE+42;
  8839.   {$EXTERNALSYM ED_DEVCAP_CAN_TEST}
  8840.  
  8841. // indicates device accepts video as an input.
  8842.   ED_DEVCAP_VIDEO_INPUTS                 = ED_BASE+43;
  8843.   {$EXTERNALSYM ED_DEVCAP_VIDEO_INPUTS}
  8844.  
  8845. // indicates device accepts audio as an input.
  8846.   ED_DEVCAP_AUDIO_INPUTS                 = ED_BASE+44;
  8847.   {$EXTERNALSYM ED_DEVCAP_AUDIO_INPUTS}
  8848.  
  8849.   ED_DEVCAP_NEEDS_CALIBRATING            = ED_BASE+45;
  8850.   {$EXTERNALSYM ED_DEVCAP_NEEDS_CALIBRATING}
  8851.  
  8852.   ED_DEVCAP_SEEK_TYPE                    = ED_BASE+46;
  8853.   {$EXTERNALSYM ED_DEVCAP_SEEK_TYPE}
  8854.   ED_SEEK_PERFECT                        = ED_BASE+47;
  8855.   {$EXTERNALSYM ED_SEEK_PERFECT}
  8856.   ED_SEEK_FAST                           = ED_BASE+48;
  8857.   {$EXTERNALSYM ED_SEEK_FAST}
  8858.   ED_SEEK_SLOW                           = ED_BASE+49;
  8859.   {$EXTERNALSYM ED_SEEK_SLOW}
  8860.  
  8861.   ED_POWER_ON                            = ED_BASE+50;
  8862.   {$EXTERNALSYM ED_POWER_ON}
  8863.   ED_POWER_OFF                           = ED_BASE+51;
  8864.   {$EXTERNALSYM ED_POWER_OFF}
  8865.   ED_POWER_STANDBY                       = ED_BASE+52;
  8866.   {$EXTERNALSYM ED_POWER_STANDBY}
  8867.  
  8868.   ED_ACTIVE                              = ED_BASE+53;
  8869.   {$EXTERNALSYM ED_ACTIVE}
  8870.   ED_INACTIVE                            = ED_BASE+54;
  8871.   {$EXTERNALSYM ED_INACTIVE}
  8872.   ED_ALL                                 = ED_BASE+55;
  8873.   {$EXTERNALSYM ED_ALL}
  8874.   ED_TEST                                = ED_BASE+56;
  8875.   {$EXTERNALSYM ED_TEST}
  8876.  
  8877. //      IAMExtTransport Capability Items:  unless otherwise specified, these items return
  8878. //         OATRUE or OAFALSE.  All return values are in pdwValue unless otherwise specified:
  8879.  
  8880.   ED_TRANSCAP_CAN_EJECT                  = ED_BASE+100;
  8881.   {$EXTERNALSYM ED_TRANSCAP_CAN_EJECT}
  8882.   ED_TRANSCAP_CAN_BUMP_PLAY              = ED_BASE+101;
  8883.   {$EXTERNALSYM ED_TRANSCAP_CAN_BUMP_PLAY}
  8884.   ED_TRANSCAP_CAN_PLAY_BACKWARDS         = ED_BASE+102;
  8885.   {$EXTERNALSYM ED_TRANSCAP_CAN_PLAY_BACKWARDS}
  8886.   ED_TRANSCAP_CAN_SET_EE                 = ED_BASE+103;
  8887.   {$EXTERNALSYM ED_TRANSCAP_CAN_SET_EE}
  8888.   ED_TRANSCAP_CAN_SET_PB                 = ED_BASE+104;
  8889.   {$EXTERNALSYM ED_TRANSCAP_CAN_SET_PB}
  8890.   ED_TRANSCAP_CAN_DELAY_VIDEO_IN         = ED_BASE+105;
  8891.   {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_VIDEO_IN}
  8892.   ED_TRANSCAP_CAN_DELAY_VIDEO_OUT        = ED_BASE+106;
  8893.   {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_VIDEO_OUT}
  8894.   ED_TRANSCAP_CAN_DELAY_AUDIO_IN         = ED_BASE+107;
  8895.   {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_AUDIO_IN}
  8896.   ED_TRANSCAP_CAN_DELAY_AUDIO_OUT        = ED_BASE+108;
  8897.   {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_AUDIO_OUT}
  8898.   ED_TRANSCAP_FWD_VARIABLE_MAX           = ED_BASE+109;
  8899.   {$EXTERNALSYM ED_TRANSCAP_FWD_VARIABLE_MAX}
  8900.   ED_TRANSCAP_FWD_VARIABLE_MIN             = ED_BASE+800;
  8901.   {$EXTERNALSYM ED_TRANSCAP_FWD_VARIABLE_MIN}
  8902.   ED_TRANSCAP_REV_VARIABLE_MAX           = ED_BASE+110;
  8903.   {$EXTERNALSYM ED_TRANSCAP_REV_VARIABLE_MAX}
  8904.   ED_TRANSCAP_REV_VARIABLE_MIN             = ED_BASE+801;
  8905.   {$EXTERNALSYM ED_TRANSCAP_REV_VARIABLE_MIN}
  8906.   ED_TRANSCAP_FWD_SHUTTLE_MAX                 = ED_BASE+802;
  8907.   {$EXTERNALSYM ED_TRANSCAP_FWD_SHUTTLE_MAX}
  8908.   ED_TRANSCAP_FWD_SHUTTLE_MIN                 = ED_BASE+803;
  8909.   {$EXTERNALSYM ED_TRANSCAP_FWD_SHUTTLE_MIN}
  8910.   ED_TRANSCAP_REV_SHUTTLE_MAX                 = ED_BASE+804;
  8911.   {$EXTERNALSYM ED_TRANSCAP_REV_SHUTTLE_MAX}
  8912.   ED_TRANSCAP_REV_SHUTTLE_MIN                 = ED_BASE+805;
  8913.   {$EXTERNALSYM ED_TRANSCAP_REV_SHUTTLE_MIN}
  8914.   ED_TRANSCAP_NUM_AUDIO_TRACKS           = ED_BASE+111;
  8915.   {$EXTERNALSYM ED_TRANSCAP_NUM_AUDIO_TRACKS}
  8916.   ED_TRANSCAP_LTC_TRACK                  = ED_BASE+112;
  8917.   {$EXTERNALSYM ED_TRANSCAP_LTC_TRACK}
  8918.   ED_TRANSCAP_NEEDS_TBC                  = ED_BASE+113;
  8919.   {$EXTERNALSYM ED_TRANSCAP_NEEDS_TBC}
  8920.   ED_TRANSCAP_NEEDS_CUEING               = ED_BASE+114;
  8921.   {$EXTERNALSYM ED_TRANSCAP_NEEDS_CUEING}
  8922.   ED_TRANSCAP_CAN_INSERT                 = ED_BASE+115;
  8923.   {$EXTERNALSYM ED_TRANSCAP_CAN_INSERT}
  8924.   ED_TRANSCAP_CAN_ASSEMBLE               = ED_BASE+116;
  8925.   {$EXTERNALSYM ED_TRANSCAP_CAN_ASSEMBLE}
  8926.   ED_TRANSCAP_FIELD_STEP                 = ED_BASE+117;
  8927.   {$EXTERNALSYM ED_TRANSCAP_FIELD_STEP}
  8928.   ED_TRANSCAP_CLOCK_INC_RATE             = ED_BASE+118;
  8929.   {$EXTERNALSYM ED_TRANSCAP_CLOCK_INC_RATE}
  8930.   ED_TRANSCAP_CAN_DETECT_LENGTH          = ED_BASE+119;
  8931.   {$EXTERNALSYM ED_TRANSCAP_CAN_DETECT_LENGTH}
  8932.   ED_TRANSCAP_CAN_FREEZE                 = ED_BASE+120;
  8933.   {$EXTERNALSYM ED_TRANSCAP_CAN_FREEZE}
  8934.   ED_TRANSCAP_HAS_TUNER                  = ED_BASE+121;
  8935.   {$EXTERNALSYM ED_TRANSCAP_HAS_TUNER}
  8936.   ED_TRANSCAP_HAS_TIMER                  = ED_BASE+122;
  8937.   {$EXTERNALSYM ED_TRANSCAP_HAS_TIMER}
  8938.   ED_TRANSCAP_HAS_CLOCK                  = ED_BASE+123;
  8939.   {$EXTERNALSYM ED_TRANSCAP_HAS_CLOCK}
  8940.   ED_TRANSCAP_MULTIPLE_EDITS             = ED_BASE+806;
  8941.   {$EXTERNALSYM ED_TRANSCAP_MULTIPLE_EDITS}
  8942.   ED_TRANSCAP_IS_MASTER                         = ED_BASE+807;
  8943.   {$EXTERNALSYM ED_TRANSCAP_IS_MASTER}
  8944.   ED_TRANSCAP_HAS_DT                           = ED_BASE+814;
  8945.   {$EXTERNALSYM ED_TRANSCAP_HAS_DT}
  8946.  
  8947. //      IAMExtTransport Media States
  8948.   ED_MEDIA_SPIN_UP                       = ED_BASE+130;
  8949.   {$EXTERNALSYM ED_MEDIA_SPIN_UP}
  8950.   ED_MEDIA_SPIN_DOWN                     = ED_BASE+131;
  8951.   {$EXTERNALSYM ED_MEDIA_SPIN_DOWN}
  8952.   ED_MEDIA_UNLOAD                        = ED_BASE+132;
  8953.   {$EXTERNALSYM ED_MEDIA_UNLOAD}
  8954.  
  8955. //      IAMExtTransport Modes
  8956.   ED_MODE_PLAY                           = ED_BASE+200;
  8957.   {$EXTERNALSYM ED_MODE_PLAY}
  8958.   ED_MODE_STOP                           = ED_BASE+201;
  8959.   {$EXTERNALSYM ED_MODE_STOP}
  8960.   ED_MODE_FREEZE                         = ED_BASE+202;
  8961.   {$EXTERNALSYM ED_MODE_FREEZE}
  8962.   ED_MODE_THAW                           = ED_BASE+203;
  8963.   {$EXTERNALSYM ED_MODE_THAW}
  8964.   ED_MODE_FF                             = ED_BASE+204;
  8965.   {$EXTERNALSYM ED_MODE_FF}
  8966.   ED_MODE_REW                            = ED_BASE+205;
  8967.   {$EXTERNALSYM ED_MODE_REW}
  8968.   ED_MODE_RECORD                         = ED_BASE+206;
  8969.   {$EXTERNALSYM ED_MODE_RECORD}
  8970.   ED_MODE_RECORD_STROBE                  = ED_BASE+207;
  8971.   {$EXTERNALSYM ED_MODE_RECORD_STROBE}
  8972.   ED_MODE_RECORD_FREEZE                       = ED_BASE+808; // never "put", only "get"
  8973.   {$EXTERNALSYM ED_MODE_RECORD_FREEZE}
  8974.   ED_MODE_STEP                           = ED_BASE+208;
  8975.   {$EXTERNALSYM ED_MODE_STEP}
  8976.   ED_MODE_STEP_FWD                             = ED_BASE+208;
  8977.   {$EXTERNALSYM ED_MODE_STEP_FWD}
  8978.   ED_MODE_STEP_REV                             = ED_BASE+809;
  8979.   {$EXTERNALSYM ED_MODE_STEP_REV}
  8980.   ED_MODE_SHUTTLE                        = ED_BASE+209;
  8981.   {$EXTERNALSYM ED_MODE_SHUTTLE}
  8982.   ED_MODE_EDIT_CUE                       = ED_BASE+210;
  8983.   {$EXTERNALSYM ED_MODE_EDIT_CUE}
  8984.   ED_MODE_VAR_SPEED                      = ED_BASE+211;
  8985.   {$EXTERNALSYM ED_MODE_VAR_SPEED}
  8986.   ED_MODE_PERFORM                        = ED_BASE+212;
  8987.   {$EXTERNALSYM ED_MODE_PERFORM}
  8988.   ED_MODE_LINK_ON                        = ED_BASE+280;
  8989.   {$EXTERNALSYM ED_MODE_LINK_ON}
  8990.   ED_MODE_LINK_OFF                       = ED_BASE+281;
  8991.   {$EXTERNALSYM ED_MODE_LINK_OFF}
  8992.   ED_MODE_NOTIFY_ENABLE                       = ED_BASE+810;
  8993.   {$EXTERNALSYM ED_MODE_NOTIFY_ENABLE}
  8994.   ED_MODE_NOTIFY_DISABLE                   = ED_BASE+811;
  8995.   {$EXTERNALSYM ED_MODE_NOTIFY_DISABLE}
  8996.   ED_MODE_SHOT_SEARCH                           = ED_BASE+812;
  8997.   {$EXTERNALSYM ED_MODE_SHOT_SEARCH}
  8998.  
  8999. //      IAMTimecodeReader/Generator/Display defines
  9000. //
  9001. // Timecode Generator Mode params and values:
  9002. //
  9003.   ED_TCG_TIMECODE_TYPE                   = ED_BASE+400;
  9004.   {$EXTERNALSYM ED_TCG_TIMECODE_TYPE}
  9005.   ED_TCG_SMPTE_LTC                       = ED_BASE+401;
  9006.   {$EXTERNALSYM ED_TCG_SMPTE_LTC}
  9007.   ED_TCG_SMPTE_VITC                      = ED_BASE+402;
  9008.   {$EXTERNALSYM ED_TCG_SMPTE_VITC}
  9009.   ED_TCG_MIDI_QF                         = ED_BASE+403;
  9010.   {$EXTERNALSYM ED_TCG_MIDI_QF}
  9011.   ED_TCG_MIDI_FULL                       = ED_BASE+404;
  9012.   {$EXTERNALSYM ED_TCG_MIDI_FULL}
  9013.  
  9014.   ED_TCG_FRAMERATE                       = ED_BASE+405;
  9015.   {$EXTERNALSYM ED_TCG_FRAMERATE}
  9016.   ED_FORMAT_SMPTE_30                     = ED_BASE+406;
  9017.   {$EXTERNALSYM ED_FORMAT_SMPTE_30}
  9018.   ED_FORMAT_SMPTE_30DROP                 = ED_BASE+407;
  9019.   {$EXTERNALSYM ED_FORMAT_SMPTE_30DROP}
  9020.   ED_FORMAT_SMPTE_25                     = ED_BASE+408;
  9021.   {$EXTERNALSYM ED_FORMAT_SMPTE_25}
  9022.   ED_FORMAT_SMPTE_24                     = ED_BASE+409;
  9023.   {$EXTERNALSYM ED_FORMAT_SMPTE_24}
  9024.  
  9025.   ED_TCG_SYNC_SOURCE                     = ED_BASE+410;
  9026.   {$EXTERNALSYM ED_TCG_SYNC_SOURCE}
  9027.   ED_TCG_VIDEO                           = ED_BASE+411;
  9028.   {$EXTERNALSYM ED_TCG_VIDEO}
  9029.   ED_TCG_READER                          = ED_BASE+412;
  9030.   {$EXTERNALSYM ED_TCG_READER}
  9031.   ED_TCG_FREE                            = ED_BASE+413;
  9032.   {$EXTERNALSYM ED_TCG_FREE}
  9033.  
  9034.   ED_TCG_REFERENCE_SOURCE                = ED_BASE+414;
  9035.   {$EXTERNALSYM ED_TCG_REFERENCE_SOURCE}
  9036.  
  9037. // TimeCodeReader Mode params and values:
  9038.   ED_TCR_SOURCE                          = ED_BASE+416;
  9039.   {$EXTERNALSYM ED_TCR_SOURCE}
  9040. // ED_TCG (already defined)
  9041.   ED_TCR_LTC                             = ED_BASE+417;
  9042.   {$EXTERNALSYM ED_TCR_LTC}
  9043.   ED_TCR_VITC                            = ED_BASE+418;
  9044.   {$EXTERNALSYM ED_TCR_VITC}
  9045.   ED_TCR_CT                              = ED_BASE+419;
  9046.   {$EXTERNALSYM ED_TCR_CT}
  9047.   ED_TCR_FTC                 = ED_BASE+420;
  9048.   {$EXTERNALSYM ED_TCR_FTC}
  9049.  
  9050. // ED_MODE_NOTIFY_ENABLE can be OATRUE or OAFALSE (defined in transport mode
  9051. //  section of this file).  
  9052.   ED_TCR_LAST_VALUE                           = ED_BASE+421;
  9053.   {$EXTERNALSYM ED_TCR_LAST_VALUE}
  9054.  
  9055. // TimeCode Display Mode params and values:
  9056. //
  9057.   ED_TCD_SOURCE                          = ED_BASE+422;
  9058.   {$EXTERNALSYM ED_TCD_SOURCE}
  9059.   ED_TCR                                 = ED_BASE+423;
  9060.   {$EXTERNALSYM ED_TCR}
  9061.   ED_TCG                                 = ED_BASE+424;
  9062.   {$EXTERNALSYM ED_TCG}
  9063.  
  9064.   ED_TCD_SIZE                            = ED_BASE+425;
  9065.   {$EXTERNALSYM ED_TCD_SIZE}
  9066.   ED_SMALL                               = ED_BASE+426;
  9067.   {$EXTERNALSYM ED_SMALL}
  9068.   ED_MED                                 = ED_BASE+427;
  9069.   {$EXTERNALSYM ED_MED}
  9070.   ED_LARGE                               = ED_BASE+428;
  9071.   {$EXTERNALSYM ED_LARGE}
  9072.  
  9073.   ED_TCD_POSITION                        = ED_BASE+429;
  9074.   {$EXTERNALSYM ED_TCD_POSITION}
  9075.   ED_TOP                                 = $0001;
  9076.   {$EXTERNALSYM ED_TOP}
  9077.   ED_MIDDLE                              = $0002;
  9078.   {$EXTERNALSYM ED_MIDDLE}
  9079.   ED_BOTTOM                              = $0004;
  9080.   {$EXTERNALSYM ED_BOTTOM}
  9081.   ED_LEFT                                = $0100;
  9082.   {$EXTERNALSYM ED_LEFT}
  9083.   ED_CENTER                              = $0200;
  9084.   {$EXTERNALSYM ED_CENTER}
  9085.   ED_RIGHT                               = $0400;
  9086.   {$EXTERNALSYM ED_RIGHT}
  9087.  
  9088.   ED_TCD_INTENSITY                       = ED_BASE+436;
  9089.   {$EXTERNALSYM ED_TCD_INTENSITY}
  9090.   ED_HIGH                                = ED_BASE+437;
  9091.   {$EXTERNALSYM ED_HIGH}
  9092.   ED_LOW                                 = ED_BASE+438;
  9093.   {$EXTERNALSYM ED_LOW}
  9094.  
  9095.   ED_TCD_TRANSPARENCY                    = ED_BASE+439;
  9096.   {$EXTERNALSYM ED_TCD_TRANSPARENCY}
  9097.   ED_TCD_INVERT                          = ED_BASE+440;
  9098.   {$EXTERNALSYM ED_TCD_INVERT}
  9099.  
  9100. //      IAMExtTransport defines
  9101. //
  9102. // Transport status, params and values
  9103. //
  9104.  
  9105. // IAMExtTransport Status items and and values:
  9106.   ED_MODE                                = ED_BASE+500;
  9107.   {$EXTERNALSYM ED_MODE}
  9108.   ED_ERROR                               = ED_BASE+501;
  9109.   {$EXTERNALSYM ED_ERROR}
  9110.   ED_LOCAL                               = ED_BASE+502;
  9111.   {$EXTERNALSYM ED_LOCAL}
  9112.   ED_RECORD_INHIBIT                      = ED_BASE+503;
  9113.   {$EXTERNALSYM ED_RECORD_INHIBIT}
  9114.   ED_SERVO_LOCK                          = ED_BASE+504;
  9115.   {$EXTERNALSYM ED_SERVO_LOCK}
  9116.   ED_MEDIA_PRESENT                       = ED_BASE+505;
  9117.   {$EXTERNALSYM ED_MEDIA_PRESENT}
  9118.   ED_MEDIA_LENGTH                        = ED_BASE+506;
  9119.   {$EXTERNALSYM ED_MEDIA_LENGTH}
  9120.   ED_MEDIA_SIZE                          = ED_BASE+507;
  9121.   {$EXTERNALSYM ED_MEDIA_SIZE}
  9122.   ED_MEDIA_TRACK_COUNT                   = ED_BASE+508;
  9123.   {$EXTERNALSYM ED_MEDIA_TRACK_COUNT}
  9124.   ED_MEDIA_TRACK_LENGTH                  = ED_BASE+509;
  9125.   {$EXTERNALSYM ED_MEDIA_TRACK_LENGTH}
  9126.   ED_MEDIA_SIDE                          = ED_BASE+510;
  9127.   {$EXTERNALSYM ED_MEDIA_SIDE}
  9128.  
  9129.   ED_MEDIA_TYPE                          = ED_BASE+511;
  9130.   {$EXTERNALSYM ED_MEDIA_TYPE}
  9131.   ED_MEDIA_VHS                           = ED_BASE+512;
  9132.   {$EXTERNALSYM ED_MEDIA_VHS}
  9133.   ED_MEDIA_SVHS                          = ED_BASE+513;
  9134.   {$EXTERNALSYM ED_MEDIA_SVHS}
  9135.   ED_MEDIA_HI8                           = ED_BASE+514;
  9136.   {$EXTERNALSYM ED_MEDIA_HI8}
  9137.   ED_MEDIA_UMATIC                        = ED_BASE+515;
  9138.   {$EXTERNALSYM ED_MEDIA_UMATIC}
  9139.   ED_MEDIA_DVC                           = ED_BASE+516;
  9140.   {$EXTERNALSYM ED_MEDIA_DVC}
  9141.   ED_MEDIA_1_INCH                        = ED_BASE+517;
  9142.   {$EXTERNALSYM ED_MEDIA_1_INCH}
  9143.   ED_MEDIA_D1                            = ED_BASE+518;
  9144.   {$EXTERNALSYM ED_MEDIA_D1}
  9145.   ED_MEDIA_D2                            = ED_BASE+519;
  9146.   {$EXTERNALSYM ED_MEDIA_D2}
  9147.   ED_MEDIA_D3                            = ED_BASE+520;
  9148.   {$EXTERNALSYM ED_MEDIA_D3}
  9149.   ED_MEDIA_D5                            = ED_BASE+521;
  9150.   {$EXTERNALSYM ED_MEDIA_D5}
  9151.   ED_MEDIA_DBETA                         = ED_BASE+522;
  9152.   {$EXTERNALSYM ED_MEDIA_DBETA}
  9153.   ED_MEDIA_BETA                          = ED_BASE+523;
  9154.   {$EXTERNALSYM ED_MEDIA_BETA}
  9155.   ED_MEDIA_8MM                           = ED_BASE+524;
  9156.   {$EXTERNALSYM ED_MEDIA_8MM}
  9157.   ED_MEDIA_DDR                           = ED_BASE+525;
  9158.   {$EXTERNALSYM ED_MEDIA_DDR}
  9159.   ED_MEDIA_SX                 = ED_BASE+813;
  9160.   {$EXTERNALSYM ED_MEDIA_SX}
  9161.   ED_MEDIA_OTHER                         = ED_BASE+526;
  9162.   {$EXTERNALSYM ED_MEDIA_OTHER}
  9163.   ED_MEDIA_CLV                           = ED_BASE+527;
  9164.   {$EXTERNALSYM ED_MEDIA_CLV}
  9165.   ED_MEDIA_CAV                           = ED_BASE+528;
  9166.   {$EXTERNALSYM ED_MEDIA_CAV}
  9167.   ED_MEDIA_POSITION                      = ED_BASE+529;
  9168.   {$EXTERNALSYM ED_MEDIA_POSITION}
  9169.   ED_MEDIA_NEO                           = ED_BASE+531; // Mini digital tape for MPEG2TS signal
  9170.   {$EXTERNALSYM ED_MEDIA_NEO}
  9171.  
  9172.   ED_LINK_MODE                           = ED_BASE+530;
  9173.   {$EXTERNALSYM ED_LINK_MODE}
  9174.  
  9175. // IAMExtTransport Basic Parms
  9176.   ED_TRANSBASIC_TIME_FORMAT              = ED_BASE+540;
  9177.   {$EXTERNALSYM ED_TRANSBASIC_TIME_FORMAT}
  9178.   ED_FORMAT_MILLISECONDS                 = ED_BASE+541;
  9179.   {$EXTERNALSYM ED_FORMAT_MILLISECONDS}
  9180.   ED_FORMAT_FRAMES                       = ED_BASE+542;
  9181.   {$EXTERNALSYM ED_FORMAT_FRAMES}
  9182.   ED_FORMAT_REFERENCE_TIME               = ED_BASE+543;
  9183.   {$EXTERNALSYM ED_FORMAT_REFERENCE_TIME}
  9184.  
  9185.   ED_FORMAT_HMSF                         = ED_BASE+547;
  9186.   {$EXTERNALSYM ED_FORMAT_HMSF}
  9187.   ED_FORMAT_TMSF                         = ED_BASE+548;
  9188.   {$EXTERNALSYM ED_FORMAT_TMSF}
  9189.  
  9190.   ED_TRANSBASIC_TIME_REFERENCE           = ED_BASE+549;
  9191.   {$EXTERNALSYM ED_TRANSBASIC_TIME_REFERENCE}
  9192.   ED_TIMEREF_TIMECODE                    = ED_BASE+550;
  9193.   {$EXTERNALSYM ED_TIMEREF_TIMECODE}
  9194.   ED_TIMEREF_CONTROL_TRACK               = ED_BASE+551;
  9195.   {$EXTERNALSYM ED_TIMEREF_CONTROL_TRACK}
  9196.   ED_TIMEREF_INDEX                       = ED_BASE+552;
  9197.   {$EXTERNALSYM ED_TIMEREF_INDEX}
  9198.  
  9199.   ED_TRANSBASIC_SUPERIMPOSE              = ED_BASE+553;
  9200.   {$EXTERNALSYM ED_TRANSBASIC_SUPERIMPOSE}
  9201.   ED_TRANSBASIC_END_STOP_ACTION          = ED_BASE+554;
  9202.   {$EXTERNALSYM ED_TRANSBASIC_END_STOP_ACTION}
  9203.  
  9204.   ED_TRANSBASIC_RECORD_FORMAT            = ED_BASE+555;
  9205.   {$EXTERNALSYM ED_TRANSBASIC_RECORD_FORMAT}
  9206.   ED_RECORD_FORMAT_SP                    = ED_BASE+556;
  9207.   {$EXTERNALSYM ED_RECORD_FORMAT_SP}
  9208.   ED_RECORD_FORMAT_LP                    = ED_BASE+557;
  9209.   {$EXTERNALSYM ED_RECORD_FORMAT_LP}
  9210.   ED_RECORD_FORMAT_EP                    = ED_BASE+558;
  9211.   {$EXTERNALSYM ED_RECORD_FORMAT_EP}
  9212.  
  9213.   ED_TRANSBASIC_STEP_COUNT               = ED_BASE+559;
  9214.   {$EXTERNALSYM ED_TRANSBASIC_STEP_COUNT}
  9215.   ED_TRANSBASIC_STEP_UNIT                = ED_BASE+560;
  9216.   {$EXTERNALSYM ED_TRANSBASIC_STEP_UNIT}
  9217.   ED_STEP_FIELD                          = ED_BASE+561;
  9218.   {$EXTERNALSYM ED_STEP_FIELD}
  9219.   ED_STEP_FRAME                          = ED_BASE+562;
  9220.   {$EXTERNALSYM ED_STEP_FRAME}
  9221.   ED_STEP_3_2                            = ED_BASE+563;
  9222.   {$EXTERNALSYM ED_STEP_3_2}
  9223.  
  9224.   ED_TRANSBASIC_PREROLL                  = ED_BASE+564;
  9225.   {$EXTERNALSYM ED_TRANSBASIC_PREROLL}
  9226.   ED_TRANSBASIC_RECPREROLL               = ED_BASE+565;
  9227.   {$EXTERNALSYM ED_TRANSBASIC_RECPREROLL}
  9228.   ED_TRANSBASIC_POSTROLL                 = ED_BASE+566;
  9229.   {$EXTERNALSYM ED_TRANSBASIC_POSTROLL}
  9230.   ED_TRANSBASIC_EDIT_DELAY               = ED_BASE+567;
  9231.   {$EXTERNALSYM ED_TRANSBASIC_EDIT_DELAY}
  9232.   ED_TRANSBASIC_PLAYTC_DELAY             = ED_BASE+568;
  9233.   {$EXTERNALSYM ED_TRANSBASIC_PLAYTC_DELAY}
  9234.   ED_TRANSBASIC_RECTC_DELAY              = ED_BASE+569;
  9235.   {$EXTERNALSYM ED_TRANSBASIC_RECTC_DELAY}
  9236.   ED_TRANSBASIC_EDIT_FIELD               = ED_BASE+570;
  9237.   {$EXTERNALSYM ED_TRANSBASIC_EDIT_FIELD}
  9238.   ED_TRANSBASIC_FRAME_SERVO              = ED_BASE+571;
  9239.   {$EXTERNALSYM ED_TRANSBASIC_FRAME_SERVO}
  9240.   ED_TRANSBASIC_CF_SERVO                 = ED_BASE+572;
  9241.   {$EXTERNALSYM ED_TRANSBASIC_CF_SERVO}
  9242.   ED_TRANSBASIC_SERVO_REF                = ED_BASE+573;
  9243.   {$EXTERNALSYM ED_TRANSBASIC_SERVO_REF}
  9244.   ED_REF_EXTERNAL                        = ED_BASE+574;
  9245.   {$EXTERNALSYM ED_REF_EXTERNAL}
  9246.   ED_REF_INPUT                           = ED_BASE+575;
  9247.   {$EXTERNALSYM ED_REF_INPUT}
  9248.   ED_REF_INTERNAL                        = ED_BASE+576;
  9249.   {$EXTERNALSYM ED_REF_INTERNAL}
  9250.   ED_REF_AUTO                            = ED_BASE+577;
  9251.   {$EXTERNALSYM ED_REF_AUTO}
  9252.  
  9253.   ED_TRANSBASIC_WARN_GL                  = ED_BASE+578;
  9254.   {$EXTERNALSYM ED_TRANSBASIC_WARN_GL}
  9255.   ED_TRANSBASIC_SET_TRACKING             = ED_BASE+579;
  9256.   {$EXTERNALSYM ED_TRANSBASIC_SET_TRACKING}
  9257.   ED_TRACKING_PLUS                       = ED_BASE+580;
  9258.   {$EXTERNALSYM ED_TRACKING_PLUS}
  9259.   ED_TRACKING_MINUS                      = ED_BASE+581;
  9260.   {$EXTERNALSYM ED_TRACKING_MINUS}
  9261.   ED_TRACKING_RESET                      = ED_BASE+582;
  9262.   {$EXTERNALSYM ED_TRACKING_RESET}
  9263.  
  9264.   ED_TRANSBASIC_SET_FREEZE_TIMEOUT       = ED_BASE+583;
  9265.   {$EXTERNALSYM ED_TRANSBASIC_SET_FREEZE_TIMEOUT}
  9266.   ED_TRANSBASIC_VOLUME_NAME              = ED_BASE+584;
  9267.   {$EXTERNALSYM ED_TRANSBASIC_VOLUME_NAME}
  9268.   ED_TRANSBASIC_BALLISTIC_1              = ED_BASE+585;
  9269.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_1}
  9270.   ED_TRANSBASIC_BALLISTIC_2              = ED_BASE+586;
  9271.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_2}
  9272.   ED_TRANSBASIC_BALLISTIC_3              = ED_BASE+587;
  9273.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_3}
  9274.   ED_TRANSBASIC_BALLISTIC_4              = ED_BASE+588;
  9275.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_4}
  9276.   ED_TRANSBASIC_BALLISTIC_5              = ED_BASE+589;
  9277.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_5}
  9278.   ED_TRANSBASIC_BALLISTIC_6              = ED_BASE+590;
  9279.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_6}
  9280.   ED_TRANSBASIC_BALLISTIC_7              = ED_BASE+591;
  9281.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_7}
  9282.   ED_TRANSBASIC_BALLISTIC_8              = ED_BASE+592;
  9283.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_8}
  9284.   ED_TRANSBASIC_BALLISTIC_9              = ED_BASE+593;
  9285.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_9}
  9286.   ED_TRANSBASIC_BALLISTIC_10             = ED_BASE+594;
  9287.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_10}
  9288.   ED_TRANSBASIC_BALLISTIC_11             = ED_BASE+595;
  9289.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_11}
  9290.   ED_TRANSBASIC_BALLISTIC_12             = ED_BASE+596;
  9291.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_12}
  9292.   ED_TRANSBASIC_BALLISTIC_13             = ED_BASE+597;
  9293.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_13}
  9294.   ED_TRANSBASIC_BALLISTIC_14             = ED_BASE+598;
  9295.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_14}
  9296.   ED_TRANSBASIC_BALLISTIC_15             = ED_BASE+599;
  9297.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_15}
  9298.   ED_TRANSBASIC_BALLISTIC_16             = ED_BASE+600;
  9299.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_16}
  9300.   ED_TRANSBASIC_BALLISTIC_17             = ED_BASE+601;
  9301.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_17}
  9302.   ED_TRANSBASIC_BALLISTIC_18             = ED_BASE+602;
  9303.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_18}
  9304.   ED_TRANSBASIC_BALLISTIC_19             = ED_BASE+603;
  9305.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_19}
  9306.   ED_TRANSBASIC_BALLISTIC_20             = ED_BASE+604;
  9307.   {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_20}
  9308.  
  9309. // consumer VCR items
  9310.   ED_TRANSBASIC_SETCLOCK                 = ED_BASE+605;
  9311.   {$EXTERNALSYM ED_TRANSBASIC_SETCLOCK}
  9312.   ED_TRANSBASIC_SET_COUNTER_FORMAT       = ED_BASE+606;
  9313.   {$EXTERNALSYM ED_TRANSBASIC_SET_COUNTER_FORMAT}
  9314.   ED_TRANSBASIC_SET_COUNTER_VALUE        = ED_BASE+607;
  9315.   {$EXTERNALSYM ED_TRANSBASIC_SET_COUNTER_VALUE}
  9316.  
  9317.   ED_TRANSBASIC_SETTUNER_CH_UP           = ED_BASE+608;
  9318.   {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_CH_UP}
  9319.   ED_TRANSBASIC_SETTUNER_CH_DN           = ED_BASE+609;
  9320.   {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_CH_DN}
  9321.   ED_TRANSBASIC_SETTUNER_SK_UP           = ED_BASE+610;
  9322.   {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_SK_UP}
  9323.   ED_TRANSBASIC_SETTUNER_SK_DN           = ED_BASE+611;
  9324.   {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_SK_DN}
  9325.   ED_TRANSBASIC_SETTUNER_CH              = ED_BASE+612;
  9326.   {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_CH}
  9327.   ED_TRANSBASIC_SETTUNER_NUM             = ED_BASE+613;
  9328.   {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_NUM}
  9329.   ED_TRANSBASIC_SETTIMER_EVENT           = ED_BASE+614;
  9330.   {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_EVENT}
  9331.   ED_TRANSBASIC_SETTIMER_STARTDAY        = ED_BASE+615;
  9332.   {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STARTDAY}
  9333.   ED_TRANSBASIC_SETTIMER_STARTTIME       = ED_BASE+616;
  9334.   {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STARTTIME}
  9335.   ED_TRANSBASIC_SETTIMER_STOPDAY         = ED_BASE+617;
  9336.   {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STOPDAY}
  9337.   ED_TRANSBASIC_SETTIMER_STOPTIME        = ED_BASE+618;
  9338.   {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STOPTIME}
  9339.  
  9340. // IAMExtTransport video parameters
  9341.   ED_TRANSVIDEO_SET_OUTPUT               = ED_BASE+630;
  9342.   {$EXTERNALSYM ED_TRANSVIDEO_SET_OUTPUT}
  9343.   ED_E2E                                 = ED_BASE+631;
  9344.   {$EXTERNALSYM ED_E2E}
  9345.   ED_PLAYBACK                            = ED_BASE+632;
  9346.   {$EXTERNALSYM ED_PLAYBACK}
  9347.   ED_OFF                                 = ED_BASE+633;
  9348.   {$EXTERNALSYM ED_OFF}
  9349.  
  9350.   ED_TRANSVIDEO_SET_SOURCE               = ED_BASE+634;
  9351.   {$EXTERNALSYM ED_TRANSVIDEO_SET_SOURCE}
  9352.  
  9353. // IAMExtTransport audio parameters
  9354.   ED_TRANSAUDIO_ENABLE_OUTPUT            = ED_BASE+640;
  9355.   {$EXTERNALSYM ED_TRANSAUDIO_ENABLE_OUTPUT}
  9356.   ED_AUDIO_ALL                           = $10000000;
  9357.   {$EXTERNALSYM ED_AUDIO_ALL}
  9358.   ED_AUDIO_1                             = $0000001;
  9359.   {$EXTERNALSYM ED_AUDIO_1}
  9360.   ED_AUDIO_2                             = $0000002;
  9361.   {$EXTERNALSYM ED_AUDIO_2}
  9362.   ED_AUDIO_3                             = $0000004;
  9363.   {$EXTERNALSYM ED_AUDIO_3}
  9364.   ED_AUDIO_4                             = $0000008;
  9365.   {$EXTERNALSYM ED_AUDIO_4}
  9366.   ED_AUDIO_5                             = $0000010;
  9367.   {$EXTERNALSYM ED_AUDIO_5}
  9368.   ED_AUDIO_6                             = $0000020;
  9369.   {$EXTERNALSYM ED_AUDIO_6}
  9370.   ED_AUDIO_7                             = $0000040;
  9371.   {$EXTERNALSYM ED_AUDIO_7}
  9372.   ED_AUDIO_8                             = $0000080;
  9373.   {$EXTERNALSYM ED_AUDIO_8}
  9374.   ED_AUDIO_9                             = $0000100;
  9375.   {$EXTERNALSYM ED_AUDIO_9}
  9376.   ED_AUDIO_10                            = $0000200;
  9377.   {$EXTERNALSYM ED_AUDIO_10}
  9378.   ED_AUDIO_11                            = $0000400;
  9379.   {$EXTERNALSYM ED_AUDIO_11}
  9380.   ED_AUDIO_12                            = $0000800;
  9381.   {$EXTERNALSYM ED_AUDIO_12}
  9382.   ED_AUDIO_13                            = $0001000;
  9383.   {$EXTERNALSYM ED_AUDIO_13}
  9384.   ED_AUDIO_14                            = $0002000;
  9385.   {$EXTERNALSYM ED_AUDIO_14}
  9386.   ED_AUDIO_15                            = $0004000;
  9387.   {$EXTERNALSYM ED_AUDIO_15}
  9388.   ED_AUDIO_16                            = $0008000;
  9389.   {$EXTERNALSYM ED_AUDIO_16}
  9390.   ED_AUDIO_17                            = $0010000;
  9391.   {$EXTERNALSYM ED_AUDIO_17}
  9392.   ED_AUDIO_18                            = $0020000;
  9393.   {$EXTERNALSYM ED_AUDIO_18}
  9394.   ED_AUDIO_19                            = $0040000;
  9395.   {$EXTERNALSYM ED_AUDIO_19}
  9396.   ED_AUDIO_20                            = $0080000;
  9397.   {$EXTERNALSYM ED_AUDIO_20}
  9398.   ED_AUDIO_21                            = $0100000;
  9399.   {$EXTERNALSYM ED_AUDIO_21}
  9400.   ED_AUDIO_22                            = $0200000;
  9401.   {$EXTERNALSYM ED_AUDIO_22}
  9402.   ED_AUDIO_23                            = $0400000;
  9403.   {$EXTERNALSYM ED_AUDIO_23}
  9404.   ED_AUDIO_24                            = $0800000;
  9405.   {$EXTERNALSYM ED_AUDIO_24}
  9406.   ED_VIDEO                               = $2000000;
  9407.   {$EXTERNALSYM ED_VIDEO}
  9408.  
  9409.   ED_TRANSAUDIO_ENABLE_RECORD            = ED_BASE+642;
  9410.   {$EXTERNALSYM ED_TRANSAUDIO_ENABLE_RECORD}
  9411.   ED_TRANSAUDIO_ENABLE_SELSYNC           = ED_BASE+643;
  9412.   {$EXTERNALSYM ED_TRANSAUDIO_ENABLE_SELSYNC}
  9413.   ED_TRANSAUDIO_SET_SOURCE               = ED_BASE+644;
  9414.   {$EXTERNALSYM ED_TRANSAUDIO_SET_SOURCE}
  9415.   ED_TRANSAUDIO_SET_MONITOR              = ED_BASE+645;
  9416.   {$EXTERNALSYM ED_TRANSAUDIO_SET_MONITOR}
  9417.  
  9418. // Edit Property Set-related defs
  9419.  
  9420. // The following values reflect (and control) the state of an
  9421. // edit property set
  9422.   ED_INVALID                             = ED_BASE+652;
  9423.   {$EXTERNALSYM ED_INVALID}
  9424.   ED_EXECUTING                           = ED_BASE+653;
  9425.   {$EXTERNALSYM ED_EXECUTING}
  9426.   ED_REGISTER                            = ED_BASE+654;
  9427.   {$EXTERNALSYM ED_REGISTER}
  9428.   ED_DELETE                              = ED_BASE+655;
  9429.   {$EXTERNALSYM ED_DELETE}
  9430.  
  9431. // Edit property set parameters and values
  9432.   ED_EDIT_HEVENT                         = ED_BASE+656;
  9433.   {$EXTERNALSYM ED_EDIT_HEVENT}
  9434.   ED_EDIT_TEST                           = ED_BASE+657;
  9435.   {$EXTERNALSYM ED_EDIT_TEST}
  9436.   ED_EDIT_IMMEDIATE                      = ED_BASE+658;
  9437.   {$EXTERNALSYM ED_EDIT_IMMEDIATE}
  9438.  
  9439.   ED_EDIT_MODE                           = ED_BASE+659;
  9440.   {$EXTERNALSYM ED_EDIT_MODE}
  9441. // can be one of the following values:
  9442.   ED_EDIT_MODE_ASSEMBLE                  = ED_BASE+660;
  9443.   {$EXTERNALSYM ED_EDIT_MODE_ASSEMBLE}
  9444.   ED_EDIT_MODE_INSERT                    = ED_BASE+661;
  9445.   {$EXTERNALSYM ED_EDIT_MODE_INSERT}
  9446.   ED_EDIT_MODE_CRASH_RECORD              = ED_BASE+662;
  9447.   {$EXTERNALSYM ED_EDIT_MODE_CRASH_RECORD}
  9448.   ED_EDIT_MODE_BOOKMARK_TIME             = ED_BASE+663;
  9449.   {$EXTERNALSYM ED_EDIT_MODE_BOOKMARK_TIME}
  9450.   ED_EDIT_MODE_BOOKMARK_CHAPTER          = ED_BASE+664;
  9451.   {$EXTERNALSYM ED_EDIT_MODE_BOOKMARK_CHAPTER}
  9452.  
  9453.   ED_EDIT_MASTER                         = ED_BASE+666;
  9454.   {$EXTERNALSYM ED_EDIT_MASTER}
  9455.  
  9456.   ED_EDIT_TRACK                          = ED_BASE+667;
  9457.   {$EXTERNALSYM ED_EDIT_TRACK}
  9458. // can be one of the following possible OR'd values:
  9459. //  ED_VIDEO, ED_AUDIO_1 thru ED_AUDIO_24 (or ED_AUDIO_ALL)
  9460.  
  9461.   EDED_EDIT_SRC_INPOINT                  = ED_BASE+668;
  9462.   {$EXTERNALSYM EDED_EDIT_SRC_INPOINT}
  9463.   ED_EDIT_SRC_OUTPOINT                   = ED_BASE+669;
  9464.   {$EXTERNALSYM ED_EDIT_SRC_OUTPOINT}
  9465.   ED_EDIT_REC_INPOINT                    = ED_BASE+670;
  9466.   {$EXTERNALSYM ED_EDIT_REC_INPOINT}
  9467.   ED_EDIT_REC_OUTPOINT                   = ED_BASE+671;
  9468.   {$EXTERNALSYM ED_EDIT_REC_OUTPOINT}
  9469.  
  9470.   ED_EDIT_REHEARSE_MODE                  = ED_BASE+672;
  9471.   {$EXTERNALSYM ED_EDIT_REHEARSE_MODE}
  9472. // can be one of the following possible values:
  9473.   ED_EDIT_BVB                            = ED_BASE+673;
  9474.   {$EXTERNALSYM ED_EDIT_BVB}
  9475.   ED_EDIT_VBV                            = ED_BASE+674;
  9476.   {$EXTERNALSYM ED_EDIT_VBV}
  9477.   ED_EDIT_VVV                            = ED_BASE+675;
  9478.   {$EXTERNALSYM ED_EDIT_VVV}
  9479.   ED_EDIT_PERFORM                        = ED_BASE+676;
  9480.   {$EXTERNALSYM ED_EDIT_PERFORM}
  9481.  
  9482.  
  9483. // Set this property to OATRUE to kill the edit if in progress
  9484.   ED_EDIT_ABORT                          = ED_BASE+677;
  9485.   {$EXTERNALSYM ED_EDIT_ABORT}
  9486. // how long to wait for edit to complete
  9487.   ED_EDIT_TIMEOUT                        = ED_BASE+678;
  9488.   {$EXTERNALSYM ED_EDIT_TIMEOUT}
  9489.  
  9490. // This property causes the device to seek to a point specified by
  9491. // ED_EDIT_SEEK_MODE (see below).  NOTE: Only one event at a time can seek.
  9492.   ED_EDIT_SEEK                           = ED_BASE+679;
  9493.   {$EXTERNALSYM ED_EDIT_SEEK}
  9494.   ED_EDIT_SEEK_MODE                      = ED_BASE+680;
  9495.   {$EXTERNALSYM ED_EDIT_SEEK_MODE}
  9496.  
  9497. //possible values:
  9498.   ED_EDIT_SEEK_EDIT_IN                   = ED_BASE+681;
  9499.   {$EXTERNALSYM ED_EDIT_SEEK_EDIT_IN}
  9500.   ED_EDIT_SEEK_EDIT_OUT                  = ED_BASE+682;
  9501.   {$EXTERNALSYM ED_EDIT_SEEK_EDIT_OUT}
  9502.   ED_EDIT_SEEK_PREROLL                   = ED_BASE+683;
  9503.   {$EXTERNALSYM ED_EDIT_SEEK_PREROLL}
  9504.   ED_EDIT_SEEK_PREROLL_CT                = ED_BASE+684;
  9505.   {$EXTERNALSYM ED_EDIT_SEEK_PREROLL_CT}
  9506.   ED_EDIT_SEEK_BOOKMARK                  = ED_BASE+685;
  9507.   {$EXTERNALSYM ED_EDIT_SEEK_BOOKMARK}
  9508.   ED_EDIT_OFFSET                     = ED_BASE+686;
  9509.   {$EXTERNALSYM ED_EDIT_OFFSET}
  9510.   ED_EDIT_PREREAD                     = ED_BASE+815;
  9511.   {$EXTERNALSYM ED_EDIT_PREREAD}
  9512. //
  9513. // Some error codes:
  9514. //
  9515. // device could be in local mode
  9516.   ED_ERR_DEVICE_NOT_READY                = ED_BASE+700;
  9517.   {$EXTERNALSYM ED_ERR_DEVICE_NOT_READY}
  9518.  
  9519. // **************************************************
  9520. //
  9521. // New constants added for implementation of DVCR
  9522. //
  9523. // **************************************************
  9524.  
  9525.  
  9526. //
  9527. // New Device type (a DV has two subunits: camera and VCR)
  9528. //
  9529.   ED_DEVTYPE_CAMERA        =  ED_BASE+900;
  9530.   {$EXTERNALSYM ED_DEVTYPE_CAMERA}
  9531.  
  9532.   ED_DEVTYPE_TUNER         =  ED_BASE+901;
  9533.   {$EXTERNALSYM ED_DEVTYPE_TUNER}
  9534.  
  9535.   ED_DEVTYPE_DVHS          =  ED_BASE+902;
  9536.   {$EXTERNALSYM ED_DEVTYPE_DVHS}
  9537.  
  9538.   ED_DEVTYPE_UNKNOWN       =  ED_BASE+903;
  9539.   {$EXTERNALSYM ED_DEVTYPE_UNKNOWN}
  9540.  
  9541. //
  9542. // Unknownn capability
  9543. //     Instead of return E_NOTIMPL, or S_OK with OAFALSE, it may return S_OK with _UNKNOWN
  9544. //
  9545.   ED_CAPABILITY_UNKNOWN    =  ED_BASE+910;
  9546.   {$EXTERNALSYM ED_CAPABILITY_UNKNOWN}
  9547.  
  9548.  
  9549. //
  9550. // Send RAW extenal device command via Get/SetTransportBasicParameters()
  9551. //
  9552.   ED_RAW_EXT_DEV_CMD       =  ED_BASE+920;
  9553.   {$EXTERNALSYM ED_RAW_EXT_DEV_CMD}
  9554.  
  9555.  
  9556. //
  9557. // MEDIUM INFO
  9558. //
  9559.   ED_MEDIA_VHSC            =  ED_BASE+925;  // New media type
  9560.   {$EXTERNALSYM ED_MEDIA_VHSC}
  9561.   ED_MEDIA_UNKNOWN         =  ED_BASE+926;  // Unknown media
  9562.   {$EXTERNALSYM ED_MEDIA_UNKNOWN}
  9563.   ED_MEDIA_NOT_PRESENT     =  ED_BASE+927;
  9564.   {$EXTERNALSYM ED_MEDIA_NOT_PRESENT}
  9565.  
  9566.  
  9567. //
  9568. // Device Control command that can result in pending state.
  9569. //
  9570.   ED_CONTROL_HEVENT_GET         =  ED_BASE+928;  // To get a sychronous event handle
  9571.   {$EXTERNALSYM ED_CONTROL_HEVENT_GET}
  9572.   ED_CONTROL_HEVENT_RELEASE     =  ED_BASE+929;  // To release sychronous event handle must match what it got
  9573.   {$EXTERNALSYM ED_CONTROL_HEVENT_RELEASE}
  9574.  
  9575.   ED_DEV_REMOVED_HEVENT_GET     =  ED_BASE+960;  // To be a notify event and will be signal if device is removed.
  9576.   {$EXTERNALSYM ED_DEV_REMOVED_HEVENT_GET}
  9577.   ED_DEV_REMOVED_HEVENT_RELEASE =  ED_BASE+961;  // Release this event handle
  9578.   {$EXTERNALSYM ED_DEV_REMOVED_HEVENT_RELEASE}
  9579.  
  9580.  
  9581. //
  9582. // TRANSPORT STATE
  9583. //
  9584.   ED_NOTIFY_HEVENT_GET     =  ED_BASE+930;  // To get a sychronous event handle
  9585.   {$EXTERNALSYM ED_NOTIFY_HEVENT_GET}
  9586.   ED_NOTIFY_HEVENT_RELEASE =  ED_BASE+931;  // To release sychronous event handle must match what it got
  9587.   {$EXTERNALSYM ED_NOTIFY_HEVENT_RELEASE}
  9588.   ED_MODE_CHANGE_NOTIFY    =  ED_BASE+932;  // This is asynchronous operation, wait for event.
  9589.   {$EXTERNALSYM ED_MODE_CHANGE_NOTIFY}
  9590.  
  9591.   ED_MODE_PLAY_FASTEST_FWD =  ED_BASE+933;
  9592.   {$EXTERNALSYM ED_MODE_PLAY_FASTEST_FWD}
  9593.   ED_MODE_PLAY_SLOWEST_FWD =  ED_BASE+934;
  9594.   {$EXTERNALSYM ED_MODE_PLAY_SLOWEST_FWD}
  9595.   ED_MODE_PLAY_FASTEST_REV =  ED_BASE+935;
  9596.   {$EXTERNALSYM ED_MODE_PLAY_FASTEST_REV}
  9597.   ED_MODE_PLAY_SLOWEST_REV =  ED_BASE+936;
  9598.   {$EXTERNALSYM ED_MODE_PLAY_SLOWEST_REV}
  9599.  
  9600.   ED_MODE_WIND             =  ED_BASE+937;
  9601.   {$EXTERNALSYM ED_MODE_WIND}
  9602.   ED_MODE_REW_FASTEST      =  ED_BASE+938;  // High speed rewind
  9603.   {$EXTERNALSYM ED_MODE_REW_FASTEST}
  9604.  
  9605.   ED_MODE_REV_PLAY         =  ED_BASE+939;  // x1 speed reverse play
  9606.   {$EXTERNALSYM ED_MODE_REV_PLAY}
  9607.  
  9608.  
  9609.  
  9610. //
  9611. // TRANSPOSRTBASIC: input and output signal
  9612. //
  9613.   ED_TRANSBASIC_INPUT_SIGNAL      = ED_BASE+940;
  9614.   {$EXTERNALSYM ED_TRANSBASIC_INPUT_SIGNAL}
  9615.   ED_TRANSBASIC_OUTPUT_SIGNAL     = ED_BASE+941;
  9616.   {$EXTERNALSYM ED_TRANSBASIC_OUTPUT_SIGNAL}
  9617.  
  9618.   ED_TRANSBASIC_SIGNAL_525_60_SD  = ED_BASE+942;
  9619.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_525_60_SD}
  9620.   ED_TRANSBASIC_SIGNAL_525_60_SDL = ED_BASE+943;
  9621.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_525_60_SDL}
  9622.   ED_TRANSBASIC_SIGNAL_625_50_SD  = ED_BASE+944;
  9623.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_SD}
  9624.   ED_TRANSBASIC_SIGNAL_625_50_SDL = ED_BASE+945;
  9625.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_SDL}
  9626.   ED_TRANSBASIC_SIGNAL_MPEG2TS    = ED_BASE+946;
  9627.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_MPEG2TS}
  9628.   ED_TRANSBASIC_SIGNAL_625_60_HD  = ED_BASE+947;
  9629.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_60_HD}
  9630.   ED_TRANSBASIC_SIGNAL_625_50_HD  = ED_BASE+948;
  9631.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_HD}
  9632.  
  9633.   ED_TRANSBASIC_SIGNAL_2500_60_MPEG   = ED_BASE+980;
  9634.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_2500_60_MPEG}
  9635.   ED_TRANSBASIC_SIGNAL_1250_60_MPEG   = ED_BASE+981;
  9636.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_1250_60_MPEG}
  9637.   ED_TRANSBASIC_SIGNAL_0625_60_MPEG   = ED_BASE+982;
  9638.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_0625_60_MPEG}
  9639.  
  9640.   ED_TRANSBASIC_SIGNAL_2500_50_MPEG   = ED_BASE+985;
  9641.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_2500_50_MPEG}
  9642.   ED_TRANSBASIC_SIGNAL_1250_50_MPEG   = ED_BASE+986;
  9643.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_1250_50_MPEG}
  9644.   ED_TRANSBASIC_SIGNAL_0625_50_MPEG   = ED_BASE+987;
  9645.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_0625_50_MPEG}
  9646.  
  9647.   ED_TRANSBASIC_SIGNAL_UNKNOWN   = ED_BASE+990;
  9648.   {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_UNKNOWN}
  9649.  
  9650.  
  9651. //
  9652. // TIMECODE/AbsoluteTrackNumber/RealTimeCounter read/seek/write
  9653. //
  9654.   ED_DEVCAP_TIMECODE_SEEK  =    ED_BASE+950;
  9655.   {$EXTERNALSYM ED_DEVCAP_TIMECODE_SEEK}
  9656.  
  9657.   ED_DEVCAP_ATN_READ       =    ED_BASE+951;
  9658.   {$EXTERNALSYM ED_DEVCAP_ATN_READ}
  9659.   ED_DEVCAP_ATN_SEEK       =    ED_BASE+952;
  9660.   {$EXTERNALSYM ED_DEVCAP_ATN_SEEK}
  9661.   ED_DEVCAP_ATN_WRITE       =    ED_BASE+953;
  9662.   {$EXTERNALSYM ED_DEVCAP_ATN_WRITE}
  9663.  
  9664.   ED_DEVCAP_RTC_READ       =    ED_BASE+954;
  9665.   {$EXTERNALSYM ED_DEVCAP_RTC_READ}
  9666.   ED_DEVCAP_RTC_SEEK       =    ED_BASE+955;
  9667.   {$EXTERNALSYM ED_DEVCAP_RTC_SEEK}
  9668.   ED_DEVCAP_RTC_WRITE       =    ED_BASE+956;
  9669.   {$EXTERNALSYM ED_DEVCAP_RTC_WRITE}
  9670.  
  9671. //
  9672. // Basic parameter
  9673. //
  9674.   ED_TIMEREF_ATN     =        ED_BASE+958;
  9675.   {$EXTERNALSYM ED_TIMEREF_ATN}
  9676.  
  9677. //
  9678. // GUID used to identify a class driver
  9679. //
  9680.   MSTapeDeviceGUID : TGUID = '{8C0F6AF2-0EDB-44c1-8AEB-59040BD830ED}'; // MSTapeDeviceGUID
  9681.   {$EXTERNALSYM MSTapeDeviceGUID}
  9682.  
  9683. (*==========================================================================;
  9684.  *
  9685.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  9686.  *
  9687.  *  File:       aviriff.h
  9688.  *
  9689.  ***************************************************************************)
  9690.  
  9691. type
  9692. (*+
  9693.  *
  9694.  * Structures and defines for the RIFF AVI file format extended to
  9695.  * handle very large/long files
  9696.  *
  9697.  *-=====================================================================*)
  9698.  
  9699.                  {
  9700. #if !defined NUMELMS
  9701.   #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
  9702. #endif
  9703.                   }
  9704. // all structures in this file are packed on word boundaries
  9705. //
  9706. (*
  9707.  * heres the general layout of an AVI riff file (new format)
  9708.  *
  9709.  * RIFF (3F??????) AVI       <- not more than 1 GB in size
  9710.  *     LIST (size) hdrl
  9711.  *         avih (0038)
  9712.  *         LIST (size) strl
  9713.  *             strh (0038)
  9714.  *             strf (????)
  9715.  *             indx (3ff8)   <- size may vary, should be sector sized
  9716.  *         LIST (size) strl
  9717.  *             strh (0038)
  9718.  *             strf (????)
  9719.  *             indx (3ff8)   <- size may vary, should be sector sized
  9720.  *         LIST (size) odml
  9721.  *             dmlh (????)
  9722.  *         JUNK (size)       <- fill to align to sector - 12
  9723.  *     LIST (7f??????) movi  <- aligned on sector - 12
  9724.  *         00dc (size)       <- sector aligned
  9725.  *         01wb (size)       <- sector aligned
  9726.  *         ix00 (size)       <- sector aligned
  9727.  *     idx1 (00??????)       <- sector aligned
  9728.  * RIFF (7F??????) AVIX
  9729.  *     JUNK (size)           <- fill to align to sector -12
  9730.  *     LIST (size) movi
  9731.  *         00dc (size)       <- sector aligned
  9732.  * RIFF (7F??????) AVIX      <- not more than 2GB in size
  9733.  *     JUNK (size)           <- fill to align to sector - 12
  9734.  *     LIST (size) movi
  9735.  *         00dc (size)       <- sector aligned
  9736.  *
  9737.  *-===================================================================*)
  9738.  
  9739. //
  9740. // structures for manipulating RIFF headers
  9741. //
  9742. {
  9743. #define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) |     \
  9744.                   (((DWORD)(ch4) & 0xFF00) << 8) |    \
  9745.                   (((DWORD)(ch4) & 0xFF0000) >> 8) |  \
  9746.                   (((DWORD)(ch4) & 0xFF000000) >> 24))
  9747. }
  9748.   PRIFFChunk = ^TRIFFChunk;
  9749.   _riffchunk = record
  9750.     fcc: FOURCC;
  9751.     cb: DWORD;
  9752.   end;
  9753.   {$EXTERNALSYM _riffchunk}
  9754.   RIFFCHUNK = _riffchunk;
  9755.   {$EXTERNALSYM RIFFCHUNK}
  9756.   LPRIFFCHUNK = ^RIFFCHUNK;
  9757.   {$EXTERNALSYM LPRIFFCHUNK}
  9758.   TRIFFChunk = _riffchunk;
  9759.  
  9760.   PRIFFList = ^TRIFFList;
  9761.   _rifflist = record
  9762.     fcc: FOURCC;
  9763.     cb: DWORD;
  9764.     fccListType: FOURCC;
  9765.   end;
  9766.   {$EXTERNALSYM _rifflist}
  9767.   RIFFLIST = _rifflist;
  9768.   {$EXTERNALSYM RIFFLIST}
  9769.   LPRIFFLIST = ^RIFFLIST;
  9770.   {$EXTERNALSYM LPRIFFLIST}
  9771.   TRIFFList = _rifflist;
  9772.  
  9773. {
  9774. #define RIFFROUND(cb) ((cb) + ((cb)&1))
  9775. #define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk) \
  9776.                           + sizeof(RIFFCHUNK) \
  9777.                           + RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
  9778.  
  9779. }
  9780. //
  9781. // ==================== avi header structures ===========================
  9782. //
  9783.  
  9784. // main header for the avi file (compatibility header)
  9785. const
  9786.   ckidMAINAVIHEADER = $68697661;// 'avih'
  9787.   {$EXTERNALSYM ckidMAINAVIHEADER}
  9788.  
  9789. type
  9790.   _avimainheader = record
  9791.     fcc: FOURCC;                   // 'avih'
  9792.     cb: DWORD;                     // size of this structure -8
  9793.     dwMicroSecPerFrame: DWORD;     // frame display rate (or 0L)
  9794.     dwMaxBytesPerSec: DWORD;       // max. transfer rate
  9795.     dwPaddingGranularity: DWORD;   // pad to multiples of this size; normally 2K.
  9796.     dwFlags: DWORD;                // the ever-present flags
  9797.     dwTotalFrames: DWORD;          // # frames in first movi list
  9798.     dwInitialFrames: DWORD;
  9799.     dwStreams: DWORD;
  9800.     dwSuggestedBufferSize: DWORD;
  9801.     dwWidth: DWORD;
  9802.     dwHeight: DWORD;
  9803.     dwReserved: array[0..3] of DWORD;
  9804.   end;
  9805.   {$EXTERNALSYM _avimainheader}
  9806.   AVIMAINHEADER = _avimainheader;
  9807.   {$EXTERNALSYM AVIMAINHEADER}
  9808.   TAVIMainHeader = _avimainheader;
  9809.  
  9810. const
  9811.   AVIF_HASINDEX       = $00000010; // Index at end of file?
  9812.   {$EXTERNALSYM AVIF_HASINDEX}
  9813.   AVIF_MUSTUSEINDEX   = $00000020;
  9814.   {$EXTERNALSYM AVIF_MUSTUSEINDEX}
  9815.   AVIF_ISINTERLEAVED  = $00000100;
  9816.   {$EXTERNALSYM AVIF_ISINTERLEAVED}
  9817.   AVIF_TRUSTCKTYPE    = $00000800; // Use CKType to find key frames
  9818.   {$EXTERNALSYM AVIF_TRUSTCKTYPE}
  9819.   AVIF_WASCAPTUREFILE = $00010000;
  9820.   {$EXTERNALSYM AVIF_WASCAPTUREFILE}
  9821.   AVIF_COPYRIGHTED    = $00020000;
  9822.   {$EXTERNALSYM AVIF_COPYRIGHTED}
  9823.  
  9824.   ckidODML            = $6C6D646F; //'odml'
  9825.   {$EXTERNALSYM ckidODML}
  9826.   ckidAVIEXTHEADER    = $686C6D64; //'dmlh'
  9827.   {$EXTERNALSYM ckidAVIEXTHEADER}
  9828.  
  9829. type
  9830.   _aviextheader = record
  9831.     fcc: FOURCC;                       // 'dmlh'
  9832.     cb: DWORD;                         // size of this structure -8
  9833.     dwGrandFrames: DWORD;              // total number of frames in the file
  9834.     dwFuture: array[0..60] of DWORD;   // to be defined later
  9835.   end;
  9836.   {$EXTERNALSYM _aviextheader}
  9837.   AVIEXTHEADER = _aviextheader;
  9838.   {$EXTERNALSYM AVIEXTHEADER}
  9839.   TAVIExtHeader = _aviextheader;
  9840.  
  9841. //
  9842. // structure of an AVI stream header riff chunk
  9843. //
  9844. const
  9845.   ckidSTREAMLIST    = $6C727473; //'strl'
  9846.   {$EXTERNALSYM ckidSTREAMLIST}
  9847.   ckidSTREAMHEADER  = $68727473; //'strh'
  9848.   {$EXTERNALSYM ckidSTREAMHEADER}
  9849.  
  9850. type
  9851.   _avistreamheader = record
  9852.      fcc: FOURCC;            // 'strh'
  9853.      cb: DWORD;              // size of this structure - 8
  9854.  
  9855.      fccType: FOURCC;        // stream type codes
  9856.  
  9857.      fccHandler: FOURCC;
  9858.      dwFlags: DWORD;
  9859.  
  9860.      wPriority: WORD;
  9861.      wLanguage: WORD;
  9862.      dwInitialFrames: DWORD;
  9863.      dwScale: DWORD;
  9864.      dwRate: DWORD;          // dwRate/dwScale is stream tick rate in ticks/sec
  9865.      dwStart: DWORD;
  9866.      dwLength: DWORD;
  9867.      dwSuggestedBufferSize: DWORD;
  9868.      dwQuality: DWORD;
  9869.      dwSampleSize: DWORD;
  9870.  
  9871.      rcFrame: record
  9872.        left: SmallInt;
  9873.        top: SmallInt;
  9874.        right: SmallInt;
  9875.        bottom: SmallInt;
  9876.      end;
  9877.   end;
  9878.   {$EXTERNALSYM _avistreamheader}
  9879.   AVISTREAMHEADER = _avistreamheader;
  9880.   {$EXTERNALSYM AVISTREAMHEADER}
  9881.   TAVIStreamHeader = _avistreamheader;
  9882.   
  9883. const
  9884.  
  9885.   streamtypeVIDEO = $73646976; //'vids'
  9886.   {$EXTERNALSYM streamtypeVIDEO}
  9887.   streamtypeAUDIO = $73647561; //'auds'
  9888.   {$EXTERNALSYM streamtypeAUDIO}
  9889.   streamtypeMIDI  = $7364696D; //'mids'
  9890.   {$EXTERNALSYM streamtypeMIDI}
  9891.   streamtypeTEXT  = $73747874; //'txts'
  9892.   {$EXTERNALSYM streamtypeTEXT}
  9893.  
  9894.   AVISF_DISABLED         = $00000001;
  9895.   {$EXTERNALSYM AVISF_DISABLED}
  9896.   AVISF_VIDEO_PALCHANGES = $00010000;
  9897.   {$EXTERNALSYM AVISF_VIDEO_PALCHANGES}
  9898.  
  9899. //
  9900. // structure of an AVI stream format chunk
  9901. //
  9902.  
  9903.   ckidSTREAMFORMAT = $66727473; //'strf'
  9904.   {$EXTERNALSYM ckidSTREAMFORMAT}
  9905.  
  9906. //
  9907. // avi stream formats are different for each stream type
  9908. //
  9909. // BITMAPINFOHEADER for video streams
  9910. // WAVEFORMATEX or PCMWAVEFORMAT for audio streams
  9911. // nothing for text streams
  9912. // nothing for midi streams
  9913.  
  9914.  
  9915. //
  9916. // structure of old style AVI index
  9917. //
  9918.   ckidAVIOLDINDEX = $31786469;//'idx1'
  9919.   {$EXTERNALSYM ckidAVIOLDINDEX}
  9920.  
  9921. type
  9922.   _avioldindex = record
  9923.     fcc: FOURCC;      // 'idx1'
  9924.     cb: DWORD;        // size of this structure -8
  9925.  
  9926.     aIndex: array[0..0] of record
  9927.       dwChunkId: DWORD;
  9928.       dwFlags: DWORD;
  9929.       dwOffset: DWORD;      // offset of riff chunk header for the data
  9930.       dwSize: DWORD;        // size of the data (excluding riff header size)
  9931.     end;                    // size of this array
  9932.   end;
  9933.   {$EXTERNALSYM _avioldindex}
  9934.   AVIOLDINDEX = _avioldindex;
  9935.   {$EXTERNALSYM AVIOLDINDEX}
  9936.   TAVIOldIndex = _avioldindex;
  9937.  
  9938. const
  9939.   AVIIF_LIST       = $00000001;
  9940.   {$EXTERNALSYM AVIIF_LIST}
  9941.   AVIIF_KEYFRAME   = $00000010;
  9942.   {$EXTERNALSYM AVIIF_KEYFRAME}
  9943.  
  9944.   AVIIF_NO_TIME    = $00000100;
  9945.   {$EXTERNALSYM AVIIF_NO_TIME}
  9946.   AVIIF_COMPRESSOR = $0FFF0000;  // unused?
  9947.   {$EXTERNALSYM AVIIF_COMPRESSOR}
  9948.  
  9949.  
  9950. // old timecode structure
  9951. //typedef union _timecode {
  9952. //   struct {
  9953. //      WORD   wFrameRate;
  9954. //      WORD   wFrameFract;
  9955. //      LONG   cFrames;
  9956. //      };
  9957. //   DWORDLONG  qw;
  9958. //   } TIMECODE;
  9959. //
  9960. // struct for all the SMPTE timecode info
  9961. //
  9962.   TIMECODE_RATE_30DROP = 0;   // this MUST be zero
  9963.   {$EXTERNALSYM TIMECODE_RATE_30DROP}
  9964.  
  9965. type
  9966.   _timecodedata = record
  9967.     time: TTimeCode;
  9968.     dwSMPTEflags: DWORD;
  9969.     dwUser: DWORD;
  9970.   end;
  9971.   {$EXTERNALSYM _timecodedata}
  9972.   TIMECODEDATA = _timecodedata;
  9973.   {$EXTERNALSYM TIMECODEDATA}
  9974.   TTimeCodeData = _timecodedata;
  9975.  
  9976. // dwSMPTEflags masks/values
  9977. //
  9978. const
  9979.   TIMECODE_SMPTE_BINARY_GROUP = $07;
  9980.   {$EXTERNALSYM TIMECODE_SMPTE_BINARY_GROUP}
  9981.   TIMECODE_SMPTE_COLOR_FRAME  = $08;
  9982.   {$EXTERNALSYM TIMECODE_SMPTE_COLOR_FRAME}
  9983.  
  9984. //
  9985. // ============ structures for new style AVI indexes =================
  9986. //
  9987.  
  9988. // index type codes
  9989. //
  9990.   AVI_INDEX_OF_INDEXES      = $00;
  9991.   {$EXTERNALSYM AVI_INDEX_OF_INDEXES}
  9992.   AVI_INDEX_OF_CHUNKS       = $01;
  9993.   {$EXTERNALSYM AVI_INDEX_OF_CHUNKS}
  9994.   AVI_INDEX_OF_TIMED_CHUNKS = $02;
  9995.   {$EXTERNALSYM AVI_INDEX_OF_TIMED_CHUNKS}
  9996.   AVI_INDEX_OF_SUB_2FIELD   = $03;
  9997.   {$EXTERNALSYM AVI_INDEX_OF_SUB_2FIELD}
  9998.   AVI_INDEX_IS_DATA         = $80;
  9999.   {$EXTERNALSYM AVI_INDEX_IS_DATA}
  10000.  
  10001. // index subtype codes
  10002. //
  10003.   AVI_INDEX_SUB_DEFAULT     = $00;
  10004.   {$EXTERNALSYM AVI_INDEX_SUB_DEFAULT}
  10005.  
  10006. // INDEX_OF_CHUNKS subtype codes
  10007. //
  10008.   AVI_INDEX_SUB_2FIELD      = $01;
  10009.   {$EXTERNALSYM AVI_INDEX_SUB_2FIELD}
  10010.  
  10011. // meta structure of all avi indexes
  10012. //
  10013. type
  10014.   _avimetaindex = record
  10015.     fcc: FOURCC;
  10016.     cb: UINT;
  10017.     wLongsPerEntry: WORD;
  10018.     bIndexSubType: BYTE;
  10019.     bIndexType: BYTE;
  10020.     nEntriesInUse: DWORD;
  10021.     dwChunkId: DWORD;
  10022.     dwReserved: array[0..2] of DWORD;
  10023.     adwIndex: array[0..0] of DWORD;
  10024.   end;
  10025.   {$EXTERNALSYM _avimetaindex}
  10026.   AVIMETAINDEX = _avimetaindex;
  10027.   {$EXTERNALSYM AVIMETAINDEX}
  10028.   TAVIMetaIndex = _avimetaindex;
  10029.  
  10030.  
  10031. const
  10032.   STDINDEXSIZE = $4000;
  10033.   {$EXTERNALSYM STDINDEXSIZE}
  10034. {
  10035. #define NUMINDEX(wLongsPerEntry) ((STDINDEXSIZE-32)/4/(wLongsPerEntry))
  10036. #define NUMINDEXFILL(wLongsPerEntry) ((STDINDEXSIZE/4) - NUMINDEX(wLongsPerEntry))
  10037. }
  10038. // structure of a super index (INDEX_OF_INDEXES)
  10039. //
  10040.   ckidAVISUPERINDEX = $78646E69;//'indx'
  10041.   {$EXTERNALSYM ckidAVISUPERINDEX}
  10042.  
  10043. type
  10044.  _avisuperindex = record
  10045.    fcc: FOURCC;                      // 'indx'
  10046.    cb: UINT;                         // size of this structure
  10047.    wLongsPerEntry: WORD;             // ==4
  10048.    bIndexSubType: BYTE;              // ==0 (frame index) or AVI_INDEX_SUB_2FIELD
  10049.    bIndexType: BYTE;                 // ==AVI_INDEX_OF_INDEXES
  10050.    nEntriesInUse: DWORD;             // offset of next unused entry in aIndex
  10051.    dwChunkId: DWORD;                 // chunk ID of chunks being indexed, (i.e. RGB8)
  10052.    dwReserved: array[0..2] of DWORD; // must be 0
  10053.  
  10054.    aIndex: array[0..3] of record
  10055.      qwOffset: Int64;             // 64 bit offset to sub index chunk
  10056.      dwSize: DWORD;              // 32 bit size of sub index chunk
  10057.      dwDuration: DWORD;          // time span of subindex chunk (in stream ticks)
  10058.    end;
  10059.  end;
  10060.  {$EXTERNALSYM _avisuperindex}
  10061.  AVISUPERINDEX = _avisuperindex;
  10062.  {$EXTERNALSYM AVISUPERINDEX}
  10063.  TAVISuperIndex = _avisuperindex;
  10064.  
  10065. //#define Valid_SUPERINDEX(pi) (*(DWORD *)(&((pi)->wLongsPerEntry)) == (4 | (AVI_INDEX_OF_INDEXES << 24)))
  10066.  
  10067. // struct of a standard index (AVI_INDEX_OF_CHUNKS)
  10068. //
  10069.  
  10070.  _avistdindex_entry = record
  10071.    dwOffset: DWORD;      // 32 bit offset to data (points to data, not riff header)
  10072.    dwSize: DWORD;        // 31 bit size of data (does not include size of riff header), bit 31 is deltaframe bit
  10073.  end;
  10074.  {$EXTERNALSYM _avistdindex_entry}
  10075.  AVISTDINDEX_ENTRY = _avistdindex_entry;
  10076.  {$EXTERNALSYM AVISTDINDEX_ENTRY}
  10077.  TAVIStdIndexEntry = _avistdindex_entry;
  10078.  
  10079. const
  10080.   AVISTDINDEX_DELTAFRAME = $80000000; // Delta frames have the high bit set;
  10081.   {$EXTERNALSYM AVISTDINDEX_DELTAFRAME}
  10082.   AVISTDINDEX_SIZEMASK = not $80000000;
  10083.   {$EXTERNALSYM AVISTDINDEX_SIZEMASK}
  10084.  
  10085. type
  10086.   _avistdindex = record
  10087.     fcc: FOURCC;           // 'indx' or '##ix'
  10088.     cb: UINT;              // size of this structure
  10089.     wLongsPerEntry: WORD;  // ==2
  10090.     bIndexSubType: BYTE;   // ==0
  10091.     bIndexType: BYTE;      // ==AVI_INDEX_OF_CHUNKS
  10092.     nEntriesInUse: DWORD;  // offset of next unused entry in aIndex
  10093.     dwChunkId: DWORD;      // chunk ID of chunks being indexed, (i.e. RGB8)
  10094.     qwBaseOffset: Int64;    // base offset that all index intries are relative to
  10095.     dwReserved_3: DWORD;
  10096.     aIndex: array[0..2043] of TAVIStdIndexEntry;
  10097.   end;
  10098.   {$EXTERNALSYM _avistdindex}
  10099.   AVISTDINDEX = _avistdindex;
  10100.   {$EXTERNALSYM AVISTDINDEX}
  10101.   TAVIStdIndex = _avistdindex;
  10102.  
  10103. // struct of a time variant standard index (AVI_INDEX_OF_TIMED_CHUNKS)
  10104. //
  10105.   _avitimedindex_entry = record
  10106.     dwOffset: DWORD;     // 32 bit offset to data (points to data, not riff header)
  10107.     dwSize: DWORD;       // 31 bit size of data (does not include size of riff header) (high bit is deltaframe bit)
  10108.     dwDuration: DWORD;   // how much time the chunk should be played (in stream ticks)
  10109.   end;
  10110.   {$EXTERNALSYM _avitimedindex_entry}
  10111.   AVITIMEDINDEX_ENTRY = _avitimedindex_entry;
  10112.   {$EXTERNALSYM AVITIMEDINDEX_ENTRY}
  10113.   TAVITimedIndexEntry = _avitimedindex_entry;
  10114.  
  10115.   _avitimedindex = record
  10116.     fcc: FOURCC;           // 'indx' or '##ix'
  10117.     cb: UINT;              // size of this structure
  10118.     wLongsPerEntry: WORD;  // ==3
  10119.     bIndexSubType: BYTE;   // ==0
  10120.     bIndexType: BYTE;      // ==AVI_INDEX_OF_TIMED_CHUNKS
  10121.     nEntriesInUse: DWORD;  // offset of next unused entry in aIndex
  10122.     dwChunkId: DWORD;      // chunk ID of chunks being indexed, (i.e. RGB8)
  10123.     qwBaseOffset: Int64;    // base offset that all index intries are relative to
  10124.     dwReserved_3: DWORD;   // must be 0
  10125.     aIndex: array[0..1361] of TAVITimedIndexEntry;
  10126.     adwTrailingFill: array[0..2733] of DWORD; // to align struct to correct size
  10127.   end;
  10128.   {$EXTERNALSYM _avitimedindex}
  10129.   AVITIMEDINDEX = _avitimedindex;
  10130.   {$EXTERNALSYM AVITIMEDINDEX}
  10131.   TAVITimedIndex = _avitimedindex;
  10132.  
  10133. // structure of a timecode stream
  10134. //
  10135.   _avitimecodeindex = record
  10136.     fcc: FOURCC;                      // 'indx' or '##ix'
  10137.     cb: UINT;                         // size of this structure
  10138.     wLongsPerEntry: WORD;             // ==4
  10139.     bIndexSubType: BYTE;              // ==0
  10140.     bIndexType: BYTE;                 // ==AVI_INDEX_IS_DATA
  10141.     nEntriesInUse: DWORD;             // offset of next unused entry in aIndex
  10142.     dwChunkId: DWORD;                 // 'time'
  10143.     dwReserved: array[0..2] of DWORD; // must be 0
  10144.     aIndex: array[0..0] of TTimeCodeData;
  10145.   end;
  10146.   {$EXTERNALSYM _avitimecodeindex}
  10147.   AVITIMECODEINDEX = _avitimecodeindex;
  10148.   {$EXTERNALSYM AVITIMECODEINDEX}
  10149.   TAviTimeCodeIndex = _avitimecodeindex;
  10150.  
  10151. // structure of a timecode discontinuity list (when wLongsPerEntry == 7)
  10152. //
  10153.   _avitcdlindex_entry = record
  10154.     dwTick: DWORD;             // stream tick time that maps to this timecode value
  10155.     time: TTimeCode;
  10156.     dwSMPTEflags: DWORD;
  10157.     dwUser: DWORD;
  10158.     szReelId: array[0..11] of Char;
  10159.   end;
  10160.   {$EXTERNALSYM _avitcdlindex_entry}
  10161.   AVITCDLINDEX_ENTRY = _avitcdlindex_entry;
  10162.   {$EXTERNALSYM AVITCDLINDEX_ENTRY}
  10163.   TAVITcdlIndexEntry = _avitcdlindex_entry;
  10164.  
  10165.   _avitcdlindex = record
  10166.     fcc: FOURCC;                      // 'indx' or '##ix'
  10167.     cb: UINT;                         // size of this structure
  10168.     wLongsPerEntry: WORD;             // ==7 (must be 4 or more all 'tcdl' indexes
  10169.     bIndexSubType: BYTE;              // ==0
  10170.     bIndexType: BYTE;                 // ==AVI_INDEX_IS_DATA
  10171.     nEntriesInUse: DWORD;             // offset of next unused entry in aIndex
  10172.     dwChunkId: DWORD;                 // 'tcdl'
  10173.     dwReserved: array[0..2] of DWORD; // must be 0
  10174.     aIndex: array[0..583] of TAVITcdlIndexEntry;
  10175.     adwTrailingFill: array[0..3511] of DWORD;  // to align struct to correct size
  10176.   end;
  10177.   {$EXTERNALSYM _avitcdlindex}
  10178.   AVITCDLINDEX = _avitcdlindex;
  10179.   {$EXTERNALSYM AVITCDLINDEX}
  10180.   TAVITcdlIndex = _avitcdlindex;
  10181.  
  10182.  
  10183.   _avifieldindex_chunk = record
  10184.   {$EXTERNALSYM _avifieldindex_chunk}
  10185.     fcc: FOURCC;            // 'ix##'
  10186.     cb: DWORD;              // size of this structure
  10187.     wLongsPerEntry: WORD;   // must be 3 (size of each entry in
  10188.                             // aIndex array)
  10189.     bIndexSubType: BYTE;    // AVI_INDEX_2FIELD
  10190.     bIndexType: BYTE;       // AVI_INDEX_OF_CHUNKS
  10191.     nEntriesInUse: DWORD;   //
  10192.     dwChunkId: DWORD;       // '##dc' or '##db'
  10193.     qwBaseOffset: Int64;     // offsets in aIndex array are relative to this
  10194.     dwReserved3: DWORD;     // must be 0
  10195.  
  10196.     aIndex: array[0..0] of record
  10197.       dwOffset: DWORD;
  10198.       dwSize: DWORD;          // size of all fields
  10199.       dwOffsetField2: DWORD;  // (bit 31 set for NON-keyframes)
  10200.     end;                      // offset to second field
  10201.   end;
  10202.   AVIFIELDINDEX = _avifieldindex_chunk;
  10203.   {$EXTERNALSYM AVIFIELDINDEX}
  10204.   PAVIFIELDINDEX = ^AVIFIELDINDEX;
  10205.   {$EXTERNALSYM PAVIFIELDINDEX}
  10206.   TAVIFieldIndex = _avifieldindex_chunk;
  10207.   
  10208. (*==========================================================================;
  10209.  *
  10210.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  10211.  *
  10212.  *  File:       evcode.h
  10213.  *
  10214.  ***************************************************************************)
  10215.  
  10216. const
  10217. //
  10218. // list of standard Quartz event codes and the expected params
  10219. //
  10220.  
  10221. // Event codes are broken into two groups
  10222. //   -- system event codes
  10223. //   -- extension event codes
  10224. // All system event codes are below EC_USER
  10225.  
  10226.   EC_SYSTEMBASE                        = $00;
  10227.   {$EXTERNALSYM EC_SYSTEMBASE}
  10228.   EC_USER                              = $8000;
  10229.   {$EXTERNALSYM EC_USER}
  10230.  
  10231.  
  10232. // System-defined event codes
  10233. // ==========================
  10234. //
  10235. // There are three types of system-defined event codes:
  10236. //
  10237. // 1.  Those which are always passed through to the application
  10238. //     (To be collected by calls to GetEvent or within WaitForCompletion.)
  10239. //     (e.g. EC_ERRORABORT, EC_USERABORT.)
  10240. //
  10241. // 2.  Those which are pure internal and will never be passed to
  10242. //     the application.  (e.g. EC_SHUTDOWN)
  10243. //
  10244. // 3.  Those which have default handling.  Default handing implies that
  10245. //     the event is not passed to the application.  However, default
  10246. //     handling may be canceled by calling
  10247. //     IMediaEvent::CancelDefaultHandling.  If the default handling is
  10248. //     cancelled in this way, then the message will be delivered to the
  10249. //     application and the application must action it appropriately.
  10250. //     Default handling can be restored by calling RestoreDefaultHandling.
  10251. //
  10252. // We will refer to these events as application, internal and defaulted
  10253. // events respectively.
  10254. //
  10255. // System-defined events may have interface pointers, BSTR's, etc passed
  10256. // as parameters.  It is therefore essential that, for any message
  10257. // retrieved using GetEvent, a matching call to FreeEventParams is made
  10258. // to ensure that relevant interfaces are released and storage freed.
  10259. // Failure to call FreeEventParams will result in memory leaks, if not
  10260. // worse.
  10261. //
  10262. // Filters sending these messages to the filter graph should not AddRef()
  10263. // any interfaces that they may pass as parameters.  The filter graph
  10264. // manager will AddRef them if required.  E.g. if the event is to be queued
  10265. // for the application or queued to a worker thread.
  10266.  
  10267. // Each event listed below is immediately followed by a parameter list
  10268. // detailing the types of the parameters associated with the message,
  10269. // and an indication of whether the message is an application, internal
  10270. // or defaulted message.  This is then followed by a short description.
  10271. // The use of "void" in the parameter list implies that the parameter is not
  10272. // used.  Such parameters should be zero.
  10273.  
  10274. // Other defined EC_ regions:
  10275. // DVD event codes           0x0100 - 0x0150 (dvdevcod.h)
  10276. // audio device event codes  0x0200 - 0x0250 (audevcod.h)
  10277. // WindowsMedia SDK-originated events 0x0251 - 0x0300 (see below)
  10278. // MSVIDCTL                  0x0301 - 0x0325 (msvidctl.idl)
  10279. // stream buffer engine (PVR)   0x0326 - 0x0350 (sbe.idl)
  10280.  
  10281.   EC_COMPLETE                          = $01;
  10282.   {$EXTERNALSYM EC_COMPLETE}
  10283. // ( HResult, void ) : defaulted (special)
  10284. // Signals the completed playback of a stream within the graph.  This message
  10285. // is sent by renderers when they receive end-of-stream.  The default handling
  10286. // of this message results in a _SINGLE_ EC_COMPLETE being sent to the
  10287. // application when ALL of the individual renderers have signaled EC_COMPLETE
  10288. // to the filter graph.  If the default handing is canceled, the application
  10289. // will see all of the individual EC_COMPLETEs.
  10290.  
  10291.  
  10292.   EC_USERABORT                         = $02;
  10293.   {$EXTERNALSYM EC_USERABORT}
  10294. // ( void, void ) : application
  10295. // In some sense, the user has requested that playback be terminated.
  10296. // This message is typically sent by renderers that render into a
  10297. // window if the user closes the window into which it was rendering.
  10298. // It is up to the application to decide if playback should actually
  10299. // be stopped.
  10300.  
  10301.  
  10302.   EC_ERRORABORT                        = $03;
  10303.   {$EXTERNALSYM EC_ERRORABORT}
  10304. // ( HResult, void ) : application
  10305. // Operation aborted because of error
  10306.  
  10307.  
  10308.   EC_TIME                              = $04;
  10309.   {$EXTERNALSYM EC_TIME}
  10310. // ( DWORD, DWORD ) : application
  10311. // The requested reference time occurred.  (This event is currently not used).
  10312. // lParam1 is low dword of ref time, lParam2 is high dword of TRefTime.
  10313.  
  10314.  
  10315.   EC_REPAINT                           = $05;
  10316.   {$EXTERNALSYM EC_REPAINT}
  10317. // ( IPin * (could be NULL), void ) : defaulted
  10318. // A repaint is required - lParam1 contains the (IPin *) that needs the data
  10319. // to be sent again. Default handling is: if the output pin which the IPin is
  10320. // attached  to supports the IMediaEventSink interface then it will be called
  10321. // with the EC_REPAINT first.  If that fails then normal repaint processing is
  10322. // done by the filter graph.
  10323.  
  10324.  
  10325. // Stream error notifications
  10326.   EC_STREAM_ERROR_STOPPED              = $06;
  10327.   {$EXTERNALSYM EC_STREAM_ERROR_STOPPED}
  10328.   EC_STREAM_ERROR_STILLPLAYING         = $07;
  10329.   {$EXTERNALSYM EC_STREAM_ERROR_STILLPLAYING}
  10330. // ( HResult, DWORD ) : application
  10331. // lParam 1 is major code, lParam2 is minor code, either may be zero.
  10332.  
  10333.  
  10334.   EC_ERROR_STILLPLAYING                = $08;
  10335.   {$EXTERNALSYM EC_ERROR_STILLPLAYING}
  10336. // ( HResult, void ) : application
  10337. // The filter graph manager may issue Run's to the graph asynchronously.
  10338. // If such a Run fails, EC_ERROR_STILLPLAYING is issued to notify the
  10339. // application of the failure.  The state of the underlying filters
  10340. // at such a time will be indeterminate - they will all have been asked
  10341. // to run, but some are almost certainly not.
  10342.  
  10343.  
  10344.   EC_PALETTE_CHANGED                   = $09;
  10345.   {$EXTERNALSYM EC_PALETTE_CHANGED}
  10346. // ( void, void ) : application
  10347. // notify application that the video palette has changed
  10348.  
  10349.  
  10350.   EC_VIDEO_SIZE_CHANGED                = $0A;
  10351.   {$EXTERNALSYM EC_VIDEO_SIZE_CHANGED}
  10352. // ( DWORD, void ) : application
  10353. // Sent by video renderers.
  10354. // Notifies the application that the native video size has changed.
  10355. // LOWORD of the DWORD is the new width, HIWORD is the new height.
  10356.  
  10357.  
  10358.   EC_QUALITY_CHANGE                    = $0B;
  10359.   {$EXTERNALSYM EC_QUALITY_CHANGE}
  10360. // ( void, void ) : application
  10361. // Notify application that playback degradation has occurred
  10362.  
  10363.  
  10364.   EC_SHUTTING_DOWN                     = $0C;
  10365.   {$EXTERNALSYM EC_SHUTTING_DOWN}
  10366. // ( void, void ) : internal
  10367. // This message is sent by the filter graph manager to any plug-in
  10368. // distributors which support IMediaEventSink to notify them that
  10369. // the filter graph is starting to shutdown.
  10370.  
  10371.  
  10372.   EC_CLOCK_CHANGED                     = $0D;
  10373.   {$EXTERNALSYM EC_CLOCK_CHANGED}
  10374. // ( void, void ) : application
  10375. // Notify application that the clock has changed.
  10376. // (i.e. SetSyncSource has been called on the filter graph and has been
  10377. // distributed successfully to the filters in the graph.)
  10378.  
  10379.   EC_PAUSED                            = $0E;
  10380.   {$EXTERNALSYM EC_PAUSED}
  10381. // ( HResult, void ) : application
  10382. // Notify application the previous pause request has completed
  10383.  
  10384.   EC_OPENING_FILE                            = $10;
  10385.   {$EXTERNALSYM EC_OPENING_FILE}
  10386.   EC_BUFFERING_DATA                    = $11;
  10387.   {$EXTERNALSYM EC_BUFFERING_DATA}
  10388. // ( BOOL, void ) : application
  10389. // lParam1 == 1   --> starting to open file or buffer data
  10390. // lParam1 == 0   --> not opening or buffering any more
  10391. // (This event does not appear to be used by ActiveMovie.)
  10392.  
  10393.  
  10394.   EC_FULLSCREEN_LOST                   = $12;
  10395.   {$EXTERNALSYM EC_FULLSCREEN_LOST}
  10396. // ( void, IBaseFilter * ) : application
  10397. // Sent by full screen renderers when switched away from full screen.
  10398. // IBaseFilter may be NULL.
  10399.  
  10400.  
  10401.   EC_ACTIVATE                          = $13;
  10402.   {$EXTERNALSYM EC_ACTIVATE}
  10403. // ( BOOL, IBaseFilter * ) : internal
  10404. // Sent by video renderers when they lose or gain activation.
  10405. // lParam1 is set to 1 if gained or 0 if lost
  10406. // lParam2 is the IBaseFilter* for the filter that is sending the message
  10407. // Used for sound follows focus and full-screen switching
  10408.  
  10409.  
  10410.   EC_NEED_RESTART                      = $14;
  10411.   {$EXTERNALSYM EC_NEED_RESTART}
  10412. // ( void, void ) : defaulted
  10413. // Sent by renderers when they regain a resource (e.g. audio renderer).
  10414. // Causes a restart by Pause/put_Current/Run (if running).
  10415.  
  10416.  
  10417.   EC_WINDOW_DESTROYED                  = $15;
  10418.   {$EXTERNALSYM EC_WINDOW_DESTROYED}
  10419. // ( IBaseFilter *, void ) : internal
  10420. // Sent by video renderers when the window has been destroyed. Handled
  10421. // by the filter graph / distributor telling the resource manager.
  10422. // lParam1 is the IBaseFilter* of the filter whose window is being destroyed
  10423.  
  10424.  
  10425.   EC_DISPLAY_CHANGED                   = $16;
  10426.   {$EXTERNALSYM EC_DISPLAY_CHANGED}
  10427. // ( IPin *, void ) : internal
  10428. // Sent by renderers when they detect a display change. the filter graph
  10429. // will arrange for the graph to be stopped and the pin send in lParam1
  10430. // to be reconnected. by being reconnected it allows a renderer to reset
  10431. // and connect with a more appropriate format for the new display mode
  10432. // lParam1 contains an (IPin *) that should be reconnected by the graph
  10433.  
  10434.  
  10435.   EC_STARVATION                        = $17;
  10436.   {$EXTERNALSYM EC_STARVATION}
  10437. // ( void, void ) : defaulted
  10438. // Sent by a filter when it detects starvation. Default handling (only when
  10439. // running) is for the graph to be paused until all filters enter the
  10440. // paused state and then run. Normally this would be sent by a parser or source
  10441. // filter when too little data is arriving.
  10442.  
  10443.  
  10444.   EC_OLE_EVENT                       = $18;
  10445.   {$EXTERNALSYM EC_OLE_EVENT}
  10446. // ( BSTR, BSTR ) : application
  10447. // Sent by a filter to pass a text string to the application.
  10448. // Conventionally, the first string is a type, and the second a parameter.
  10449.  
  10450.  
  10451.   EC_NOTIFY_WINDOW                     = $19;
  10452.   {$EXTERNALSYM EC_NOTIFY_WINDOW}
  10453. // ( HWND, void ) : internal
  10454. // Pass the window handle around during pin connection.
  10455.  
  10456.   EC_STREAM_CONTROL_STOPPED          = $1A;
  10457.   {$EXTERNALSYM EC_STREAM_CONTROL_STOPPED}
  10458. // ( IPin * pSender, DWORD dwCookie )
  10459. // Notification that an earlier call to IAMStreamControl::StopAt
  10460. // has now take effect.  Calls to the method can be marked
  10461. // with a cookie which is passed back in the second parameter,
  10462. // allowing applications to easily tie together request
  10463. // and completion notifications.
  10464. //
  10465. // NB: IPin will point to the pin that actioned the Stop.  This
  10466. // may not be the pin that the StopAt was sent to.
  10467.  
  10468.   EC_STREAM_CONTROL_STARTED          = $1B;
  10469.   {$EXTERNALSYM EC_STREAM_CONTROL_STARTED}
  10470. // ( IPin * pSender, DWORD dwCookie )
  10471. // Notification that an earlier call to IAMStreamControl::StartAt
  10472. // has now take effect.  Calls to the method can be marked
  10473. // with a cookie which is passed back in the second parameter,
  10474. // allowing applications to easily tie together request
  10475. // and completion notifications.
  10476. //
  10477. // NB: IPin will point to the pin that actioned the Start.  This
  10478. // may not be the pin that the StartAt was sent to.
  10479.  
  10480.   EC_END_OF_SEGMENT                    = $1C;
  10481.   {$EXTERNALSYM EC_END_OF_SEGMENT}
  10482. //
  10483. // ( const REFERENCE_TIME *pStreamTimeAtEndOfSegment, DWORD dwSegmentNumber )
  10484. //
  10485. // pStreamTimeAtEndOfSegment
  10486. //     pointer to the accumulated stream clock
  10487. //     time since the start of the segment - this is directly computable
  10488. //     as the sum of the previous and current segment durations (Stop - Start)
  10489. //     and the rate applied to each segment
  10490. //     The source add this time to the time within each segment to get
  10491. //     a total elapsed time
  10492. //
  10493. // dwSegmentNumber
  10494. //     Segment number - starts at 0
  10495. //
  10496. // Notifies that a segment end has been reached when the
  10497. // AM_SEEKING_Segment flags was set for IMediaSeeking::SetPositions
  10498. // Passes in an IMediaSeeking interface to allow the next segment
  10499. // to be defined by the application
  10500.  
  10501.   EC_SEGMENT_STARTED                   = $1D;
  10502.   {$EXTERNALSYM EC_SEGMENT_STARTED}
  10503. //
  10504. // ( const REFERENCE_TIME *pStreamTimeAtStartOfSegment, DWORD dwSegmentNumber)
  10505. //
  10506. // pStreamTimeAtStartOfSegment
  10507. //     pointer to the accumulated stream clock
  10508. //     time since the start of the segment - this is directly computable
  10509. //     as the sum of the previous segment durations (Stop - Start)
  10510. //     and the rate applied to each segment
  10511. //
  10512. // dwSegmentNumber
  10513. //     Segment number - starts at 0
  10514. //
  10515. // Notifies that a new segment has been started.
  10516. // This is sent synchronously by any entity that will issue
  10517. // EC_END_OF_SEGMENT when a new segment is started
  10518. // (See IMediaSeeking::SetPositions - AM_SEEKING_Segment flag)
  10519. // It is used to compute how many EC_END_OF_SEGMENT notifications
  10520. // to expect at the end of a segment and as a consitency check
  10521.  
  10522.   EC_LENGTH_CHANGED                   = $1E;
  10523.   {$EXTERNALSYM EC_LENGTH_CHANGED}
  10524. // (void, void)
  10525. // sent to indicate that the length of the "file" has changed
  10526.  
  10527.   EC_DEVICE_LOST                      = $1f;
  10528.   {$EXTERNALSYM EC_DEVICE_LOST}
  10529. // (IUnknown, 0)
  10530. //
  10531. // request window notification when the device is available again
  10532. // (through WM_DEVICECHANGED messages registered with
  10533. // RegisterDeviceNotification; see IAMDeviceRemoval interface)
  10534.  
  10535.   EC_STEP_COMPLETE                    = $24;
  10536.   {$EXTERNALSYM EC_STEP_COMPLETE}
  10537. // (BOOL bCacelled, void)
  10538. // Step request complete
  10539. // if bCancelled is TRUE the step was cancelled.  This can happen
  10540. // if the application issued some control request or because there
  10541. // was a mode change etc etc
  10542.  
  10543.  
  10544. //  EC_SKIP_FRAMES                      = $25;
  10545. // ( nFramesToSkip, void ) : internal
  10546. // Get the filter graph to seek accuratley.
  10547. // Event code 25 is reserved for future use. (dx8.1 specific)
  10548.  
  10549.   EC_TIMECODE_AVAILABLE              =    $30;
  10550.   {$EXTERNALSYM EC_TIMECODE_AVAILABLE}
  10551. // Sent by filter supporting timecode
  10552. // Param1 has a pointer to the sending object
  10553. // Param2 has the device ID of the sending object
  10554.  
  10555.   EC_EXTDEVICE_MODE_CHANGE          =    $31;
  10556.   {$EXTERNALSYM EC_EXTDEVICE_MODE_CHANGE}
  10557. // Sent by filter supporting IAMExtDevice
  10558. // Param1 has the new mode
  10559. // Param2 has the device ID of the sending object
  10560.  
  10561.  
  10562.   EC_STATE_CHANGE                   = $32;
  10563.   {$EXTERNALSYM EC_STATE_CHANGE}
  10564. // ( FILTER_STATE, BOOL bInternal)
  10565. // Used to notify the application of any state changes in the filter graph.
  10566. // lParam1  is of type enum FILTER_STATE (defined in strmif.h) and indicates
  10567. //          the state of the filter graph.
  10568. //
  10569. // lParam2 == 0 indicates that the previous state change request has completed
  10570. //              & a change in application state.
  10571. // lParam2 == 1 reserved for future use to indicate internal state changes.
  10572.  
  10573.   EC_GRAPH_CHANGED                    = $50;
  10574.   {$EXTERNALSYM EC_GRAPH_CHANGED}
  10575. // Sent by filter to notify interesting graph changes
  10576.  
  10577.   EC_CLOCK_UNSET                      = $51;
  10578.   {$EXTERNALSYM EC_CLOCK_UNSET}
  10579. // ( void, void ) : application
  10580. // Used to notify the filter graph to unset the current graph clock.
  10581. // Has the affect of forcing the filter graph to reestablish the graph clock
  10582. // on the next Pause/Run (note that this is only used by ksproxy, when the pin
  10583. // of a clock providing filter is disconnected)
  10584.  
  10585.   EC_VMR_RENDERDEVICE_SET               = $53;
  10586.   {$EXTERNALSYM EC_VMR_RENDERDEVICE_SET}
  10587. // (Render_Device type, void)
  10588. // Identifies the type of rendering mechanism the VMR
  10589. // is using to display video.  Types used include:
  10590.   VMR_RENDER_DEVICE_OVERLAY      = $01;
  10591.   {$EXTERNALSYM VMR_RENDER_DEVICE_OVERLAY}
  10592.   VMR_RENDER_DEVICE_VIDMEM       = $02;
  10593.   {$EXTERNALSYM VMR_RENDER_DEVICE_VIDMEM}
  10594.   VMR_RENDER_DEVICE_SYSMEM       = $04;
  10595.   {$EXTERNALSYM VMR_RENDER_DEVICE_SYSMEM}
  10596.  
  10597.  
  10598.   EC_VMR_SURFACE_FLIPPED         = $54;
  10599.   {$EXTERNALSYM EC_VMR_SURFACE_FLIPPED}
  10600. // (hr - Flip return code, void)
  10601. // Identifies the VMR's allocator-presenter has called the DDraw flip api on
  10602. // the surface being presented.   This allows the VMR to keep its DX-VA table
  10603. // of DDraw surfaces in sync with DDraws flipping chain.
  10604.  
  10605.   EC_VMR_RECONNECTION_FAILED     = $55;
  10606.   {$EXTERNALSYM EC_VMR_RECONNECTION_FAILED}
  10607. // (hr - ReceiveConnection return code, void)
  10608. // Identifies that an upstream decoder tried to perform a dynamic format
  10609. // change and the VMR was unable to accept the new format.
  10610.  
  10611.   EC_PREPROCESS_COMPLETE         = $56;
  10612.   {$EXTERNALSYM EC_PREPROCESS_COMPLETE}
  10613. // Sent by the WM ASF writer filter (WMSDK V9 version) to signal the completion
  10614. // of a pre-process run when running in multipass encode mode.
  10615. // Param1 = 0, Param2 = IBaseFilter ptr of sending filter
  10616.  
  10617.   EC_CODECAPI_EVENT              = $57;
  10618.   {$EXTERNALSYM EC_CODECAPI_EVENT}
  10619. // Sent by the Codec API when an event is encountered.  Both the Data
  10620. // must be freed by the recipient using CoTaskMemFree
  10621. // Param1 = UserDataPointer, Param2 = VOID* Data
  10622.  
  10623.  
  10624.  
  10625.  
  10626. //------------------------------------------
  10627. //
  10628. //  BDA events:
  10629. //
  10630. //      Event code 0x80 through 0x8f are reserved for BDA
  10631. //
  10632.  
  10633.  
  10634. //------------------------------------------
  10635. //
  10636. // WindowsMedia SDK filter-specific events:
  10637. //
  10638. // 
  10639. // Note that for EC_WMT_EVENT events the wmsdk-based filters use the following structure for 
  10640. // passing event parameters to the app:
  10641.  
  10642. type
  10643.   PAMWMTEventData = ^TAMWMTEventData;
  10644.   AM_WMT_EVENT_DATA = record
  10645.     hrStatus : HResult; // status code
  10646.     pData    : pointer; // event data
  10647.   end;
  10648.   {$EXTERNALSYM AM_WMT_EVENT_DATA}
  10649.   TAMWMTEventData = AM_WMT_EVENT_DATA;
  10650.   
  10651. const
  10652.  
  10653.   EC_WMT_EVENT_BASE  = $0251;
  10654.   {$EXTERNALSYM EC_WMT_EVENT_BASE}
  10655. //
  10656.   EC_WMT_INDEX_EVENT = EC_WMT_EVENT_BASE;
  10657.   {$EXTERNALSYM EC_WMT_INDEX_EVENT}
  10658. // WindowsMedia SDK-originated file indexing status, sent by WMSDK-based filters
  10659. //
  10660. // lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK
  10661. // lParam2 is specific to the lParam event
  10662. //
  10663. //     the following WMT_STATUS messages are sent for this event:
  10664. //         WMT_STARTED        - lParam2 is 0
  10665. //         WMT_CLOSED         - lParam2 is 0
  10666. //         WMT_INDEX_PROGRESS - lParam2 is a DWORD containing the progress percent complete
  10667. //
  10668.  
  10669.   EC_WMT_EVENT                     =   EC_WMT_EVENT_BASE+1;
  10670.   {$EXTERNALSYM EC_WMT_EVENT}
  10671. // WindowsMedia SDK-originated event, sent by WMSDK-based filters
  10672. //
  10673. // lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK
  10674. // lParam2 is a pointer an AM_WMT_EVENT_DATA structure where,
  10675. //                          hrStatus is the status code sent by the wmsdk
  10676. //                          pData is specific to the lParam1 event
  10677. //
  10678. //     the following WMT_STATUS messages are sent by the WMSDK Reader filter for this event:
  10679. //         WMT_NO_RIGHTS        - pData is a pointer to a WCHAR string containing a challenge URL
  10680. //         WMT_ACQUIRE_LICENSE  - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct
  10681. //         WMT_NO_RIGHTS_EX     - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct
  10682. //         WMT_NEEDS_INDIVIDUALIZATION - lParam2 is NULL
  10683. //         WMT_INDIVIDUALIZE    - lParam2 is a pointer to a WM_INDIVIDUALIZE_STATUS struct
  10684. //     the WMSDK (V9) ASF Writer filter will send this event in response to a wmsdk-signaled error during file
  10685. //         writing, along with the wmsdk WMT_STATUS error as the lParam1 and hrStatus embedded in the 
  10686. //         AM_WMT_EVENT_DATA struct pointed to by the lParam2 pointer.
  10687. //
  10688. // end WMSDK-originated events
  10689. //-----------------------------------------
  10690.  
  10691.   EC_BUILT                          = $300;
  10692.   {$EXTERNALSYM EC_BUILT}
  10693.   // Sent to notify transition from unbuilt to built state
  10694.  
  10695.   EC_UNBUILT                        = $301;
  10696.   {$EXTERNALSYM EC_UNBUILT}
  10697.   // Sent to notify transtion from built to unbuilt state
  10698.  
  10699. (*==========================================================================;
  10700.  *
  10701.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  10702.  *
  10703.  *  File:       uuids.h
  10704.  *
  10705.  ***************************************************************************)
  10706.  
  10707. const
  10708.  
  10709. // -- to allow consistent labeling of Media types and subtypes --
  10710.   // ?? GUID_NULL ??
  10711.   GUID_NULL: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  10712.   MEDIATYPE_NULL: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  10713.   MEDIASUBTYPE_NULL: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  10714.  
  10715. // -- Use this subtype if you don't have a use for a subtype for your type
  10716.   MEDIASUBTYPE_None: TGUID = (D1:$E436EB8E;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10717.   {$EXTERNALSYM MEDIASUBTYPE_None}
  10718.  
  10719. // -- major types ---
  10720.   MEDIATYPE_Video: TGUID = (D1:$73646976;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10721.   {$EXTERNALSYM MEDIATYPE_Video}
  10722.   MEDIATYPE_Audio: TGUID = (D1:$73647561;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10723.   {$EXTERNALSYM MEDIATYPE_Audio}
  10724.   MEDIATYPE_Text: TGUID = (D1:$73747874;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10725.   {$EXTERNALSYM MEDIATYPE_Text}
  10726.   MEDIATYPE_Midi: TGUID = (D1:$7364696D;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10727.   {$EXTERNALSYM MEDIATYPE_Midi}
  10728.   MEDIATYPE_Stream: TGUID = (D1:$E436EB83;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10729.   {$EXTERNALSYM MEDIATYPE_Stream}
  10730.   MEDIATYPE_Interleaved: TGUID = (D1:$73766169;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10731.   {$EXTERNALSYM MEDIATYPE_Interleaved}
  10732.   MEDIATYPE_File: TGUID = (D1:$656C6966;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10733.   {$EXTERNALSYM MEDIATYPE_File}
  10734.   MEDIATYPE_ScriptCommand: TGUID = (D1:$73636D64;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10735.   {$EXTERNALSYM MEDIATYPE_ScriptCommand}
  10736.   MEDIATYPE_AUXLine21Data: TGUID = (D1:$670AEA80;D2:$3A82;D3:$11D0;D4:($B7,$9B,$00,$AA,$00,$37,$67,$A7));
  10737.   {$EXTERNALSYM MEDIATYPE_AUXLine21Data}
  10738.   MEDIATYPE_VBI : TGUID = '{F72A76E1-EB0A-11D0-ACE4-0000C0CC16BA}';
  10739.   {$EXTERNALSYM MEDIATYPE_VBI}
  10740.   MEDIATYPE_Timecode: TGUID = (D1:$0482DEE3;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10741.   {$EXTERNALSYM MEDIATYPE_Timecode}
  10742.   MEDIATYPE_LMRT : TGUID = (D1:$74726c6d;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10743.   {$EXTERNALSYM MEDIATYPE_LMRT}
  10744.   MEDIATYPE_URL_STREAM: TGUID = (D1:$736c7275;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10745.   {$EXTERNALSYM MEDIATYPE_URL_STREAM}
  10746.  
  10747. // -- sub types ---
  10748.   MEDIASUBTYPE_CLPL: TGUID = (D1:$4C504C43;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10749.   {$EXTERNALSYM MEDIASUBTYPE_CLPL}
  10750.   MEDIASUBTYPE_YUYV: TGUID = (D1:$56595559;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10751.   {$EXTERNALSYM MEDIASUBTYPE_YUYV}
  10752.   MEDIASUBTYPE_IYUV: TGUID = (D1:$56555949;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10753.   {$EXTERNALSYM MEDIASUBTYPE_IYUV}
  10754.   MEDIASUBTYPE_YVU9: TGUID = (D1:$39555659;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10755.   {$EXTERNALSYM MEDIASUBTYPE_YVU9}
  10756.   MEDIASUBTYPE_Y411: TGUID = (D1:$31313459;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10757.   {$EXTERNALSYM MEDIASUBTYPE_Y411}
  10758.   MEDIASUBTYPE_Y41P: TGUID = (D1:$50313459;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10759.   {$EXTERNALSYM MEDIASUBTYPE_Y41P}
  10760.   MEDIASUBTYPE_YUY2: TGUID = (D1:$32595559;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10761.   {$EXTERNALSYM MEDIASUBTYPE_YUY2}
  10762.   MEDIASUBTYPE_YVYU: TGUID = (D1:$55595659;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10763.   {$EXTERNALSYM MEDIASUBTYPE_YVYU}
  10764.   MEDIASUBTYPE_UYVY: TGUID = (D1:$59565955;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10765.   {$EXTERNALSYM MEDIASUBTYPE_UYVY}
  10766.   MEDIASUBTYPE_Y211: TGUID = (D1:$31313259;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10767.   {$EXTERNALSYM MEDIASUBTYPE_Y211}
  10768.   MEDIASUBTYPE_CLJR: TGUID = (D1:$524A4C43;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10769.   {$EXTERNALSYM MEDIASUBTYPE_CLJR}
  10770.   MEDIASUBTYPE_IF09: TGUID = (D1:$39304649;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10771.   {$EXTERNALSYM MEDIASUBTYPE_IF09}
  10772.   MEDIASUBTYPE_CPLA: TGUID = (D1:$414C5043;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10773.   {$EXTERNALSYM MEDIASUBTYPE_CPLA}
  10774.   MEDIASUBTYPE_MJPG: TGUID = (D1:$47504A4D;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10775.   {$EXTERNALSYM MEDIASUBTYPE_MJPG}
  10776.   MEDIASUBTYPE_TVMJ: TGUID = (D1:$4A4D5654;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10777.   {$EXTERNALSYM MEDIASUBTYPE_TVMJ}
  10778.   MEDIASUBTYPE_WAKE: TGUID = (D1:$454B4157;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10779.   {$EXTERNALSYM MEDIASUBTYPE_WAKE}
  10780.   MEDIASUBTYPE_CFCC: TGUID = (D1:$43434643;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10781.   {$EXTERNALSYM MEDIASUBTYPE_CFCC}
  10782.   MEDIASUBTYPE_IJPG: TGUID = (D1:$47504A49;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10783.   {$EXTERNALSYM MEDIASUBTYPE_IJPG}
  10784.   MEDIASUBTYPE_Plum: TGUID = (D1:$6D756C50;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10785.   {$EXTERNALSYM MEDIASUBTYPE_Plum}
  10786.   MEDIASUBTYPE_DVCS: TGUID = (D1:$53435644;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10787.   {$EXTERNALSYM MEDIASUBTYPE_DVCS}
  10788.   MEDIASUBTYPE_DVSD: TGUID = (D1:$44535644;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10789.   {$EXTERNALSYM MEDIASUBTYPE_DVSD}
  10790.   MEDIASUBTYPE_MDVF: TGUID = (D1:$4656444D;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10791.   {$EXTERNALSYM MEDIASUBTYPE_MDVF}
  10792.   MEDIASUBTYPE_RGB1: TGUID = (D1:$E436EB78;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10793.   {$EXTERNALSYM MEDIASUBTYPE_RGB1}
  10794.   MEDIASUBTYPE_RGB4: TGUID = (D1:$E436EB79;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10795.   {$EXTERNALSYM MEDIASUBTYPE_RGB4}
  10796.   MEDIASUBTYPE_RGB8: TGUID = (D1:$E436EB7A;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10797.   {$EXTERNALSYM MEDIASUBTYPE_RGB8}
  10798.   MEDIASUBTYPE_RGB565: TGUID = (D1:$E436EB7B;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10799.   {$EXTERNALSYM MEDIASUBTYPE_RGB565}
  10800.   MEDIASUBTYPE_RGB555: TGUID = (D1:$E436EB7C;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10801.   {$EXTERNALSYM MEDIASUBTYPE_RGB555}
  10802.   MEDIASUBTYPE_RGB24: TGUID = (D1:$E436EB7D;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10803.   {$EXTERNALSYM MEDIASUBTYPE_RGB24}
  10804.   MEDIASUBTYPE_RGB32:  TGUID = (D1:$E436EB7E;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10805.   {$EXTERNALSYM MEDIASUBTYPE_RGB32}
  10806.   MEDIASUBTYPE_ARGB1555 : TGUID = '{297C55AF-E209-4cb3-B757-C76D6B9C88A8}';
  10807.   {$EXTERNALSYM MEDIASUBTYPE_ARGB1555}
  10808.   MEDIASUBTYPE_ARGB4444 : TGUID = '{6E6415E6-5C24-425f-93CD-80102B3D1CCA}';
  10809.   {$EXTERNALSYM MEDIASUBTYPE_ARGB4444}
  10810.   MEDIASUBTYPE_ARGB32   : TGUID = (D1:$773c9ac0;D2:$3274;D3:$11d0;D4:($b7,$24,$00,$aa,$00,$6c,$1a,$1 ));
  10811.   {$EXTERNALSYM MEDIASUBTYPE_ARGB32}
  10812.  
  10813.   MEDIASUBTYPE_A2R10G10B10 : TGUID = '{2f8bb76d-b644-4550-acf3-d30caa65d5c5}';
  10814.   {$EXTERNALSYM MEDIASUBTYPE_A2R10G10B10}
  10815.   MEDIASUBTYPE_A2B10G10R10 : TGUID = '{576f7893-bdf6-48c4-875f-ae7b81834567}';
  10816.   {$EXTERNALSYM MEDIASUBTYPE_A2B10G10R10}
  10817.  
  10818.   MEDIASUBTYPE_AYUV     : TGUID = '{56555941-0000-0010-8000-00AA00389B71}'; //'AYUV' == MEDIASUBTYPE_AYUV
  10819.   {$EXTERNALSYM MEDIASUBTYPE_AYUV}
  10820.   MEDIASUBTYPE_AI44     : TGUID = '{34344941-0000-0010-8000-00AA00389B71}'; //'AI44' == MEDIASUBTYPE_AI44
  10821.   {$EXTERNALSYM MEDIASUBTYPE_AI44}
  10822.   MEDIASUBTYPE_IA44     : TGUID = '{34344149-0000-0010-8000-00AA00389B71}'; //'IA44' == MEDIASUBTYPE_IA44
  10823.   {$EXTERNALSYM MEDIASUBTYPE_IA44}
  10824.  
  10825. {$IFDEF ENABLEVMR7}
  10826. //
  10827. // DirectX7 D3D Render Target media subtypes.
  10828. //
  10829.   MEDIASUBTYPE_RGB32_D3D_DX7_RT    : TGUID = '{32335237-0000-0010-8000-00AA00389B71}'; //'7R32' == MEDIASUBTYPE_RGB32_D3D_DX7_RT
  10830.   {$EXTERNALSYM MEDIASUBTYPE_RGB32_D3D_DX7_RT}
  10831.   MEDIASUBTYPE_RGB16_D3D_DX7_RT    : TGUID = '{36315237-0000-0010-8000-00AA00389B71}'; //'7R16' == MEDIASUBTYPE_RGB16_D3D_DX7_RT
  10832.   {$EXTERNALSYM MEDIASUBTYPE_RGB16_D3D_DX7_RT}
  10833.   MEDIASUBTYPE_ARGB32_D3D_DX7_RT   : TGUID = '{38384137-0000-0010-8000-00AA00389B71}'; //'7A88' == MEDIASUBTYPE_ARGB32_D3D_DX7_RT
  10834.   {$EXTERNALSYM MEDIASUBTYPE_ARGB32_D3D_DX7_RT}
  10835.   MEDIASUBTYPE_ARGB4444_D3D_DX7_RT : TGUID = '{34344137-0000-0010-8000-00AA00389B71}'; //'7A44' == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT
  10836.   {$EXTERNALSYM MEDIASUBTYPE_ARGB4444_D3D_DX7_RT}
  10837.   MEDIASUBTYPE_ARGB1555_D3D_DX7_RT : TGUID = '{35314137-0000-0010-8000-00AA00389B71}'; //'7A15' == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT
  10838.   {$EXTERNALSYM MEDIASUBTYPE_ARGB1555_D3D_DX7_RT}
  10839. {$ENDIF}
  10840. //
  10841. // DirectX9 D3D Render Target media subtypes.
  10842. //
  10843.  
  10844.   MEDIASUBTYPE_RGB32_D3D_DX9_RT    : TGUID = '{32335239-0000-0010-8000-00AA00389B71}'; // 9R32
  10845.   {$EXTERNALSYM MEDIASUBTYPE_RGB32_D3D_DX9_RT}
  10846.   MEDIASUBTYPE_RGB16_D3D_DX9_RT    : TGUID = '{36315239-0000-0010-8000-00AA00389B71}'; // 9R16
  10847.   {$EXTERNALSYM MEDIASUBTYPE_RGB16_D3D_DX9_RT}
  10848.   MEDIASUBTYPE_ARGB32_D3D_DX9_RT   : TGUID = '{38384139-0000-0010-8000-00AA00389B71}'; // 9A88
  10849.   {$EXTERNALSYM MEDIASUBTYPE_ARGB32_D3D_DX9_RT}
  10850.   MEDIASUBTYPE_ARGB4444_D3D_DX9_RT : TGUID = '{34344139-0000-0010-8000-00AA00389B71}'; // 9A44
  10851.   {$EXTERNALSYM MEDIASUBTYPE_ARGB4444_D3D_DX9_RT}
  10852.   MEDIASUBTYPE_ARGB1555_D3D_DX9_RT : TGUID = '{35314139-0000-0010-8000-00AA00389B71}'; // 9A15
  10853.   {$EXTERNALSYM MEDIASUBTYPE_ARGB1555_D3D_DX9_RT}
  10854.  
  10855.  
  10856. {
  10857. #define MEDIASUBTYPE_HASALPHA(mt) ( ((mt).subtype == MEDIASUBTYPE_ARGB4444)            || \
  10858.                                     ((mt).subtype == MEDIASUBTYPE_ARGB32)              || \
  10859.                                     ((mt).subtype == MEDIASUBTYPE_AYUV)                || \
  10860.                                     ((mt).subtype == MEDIASUBTYPE_AI44)                || \
  10861.                                     ((mt).subtype == MEDIASUBTYPE_IA44)                || \
  10862.                                     ((mt).subtype == MEDIASUBTYPE_ARGB1555)            || \
  10863.                                     ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT)   || \
  10864.                                     ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \
  10865.                                     ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \
  10866.                                     ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT)   || \
  10867.                                     ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \
  10868.                                     ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) )
  10869.  
  10870. #define MEDIASUBTYPE_HASALPHA7(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT)   || \
  10871.                                     ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \
  10872.                                     ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) )
  10873.  
  10874. #define MEDIASUBTYPE_D3D_DX7_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT)   || \
  10875.                                      ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \
  10876.                                      ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \
  10877.                                      ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX7_RT)    || \
  10878.                                      ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX7_RT))
  10879.  
  10880. #define MEDIASUBTYPE_HASALPHA9(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT)   || \
  10881.                                     ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \
  10882.                                     ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) )
  10883.  
  10884.  
  10885. #define MEDIASUBTYPE_D3D_DX9_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT)   || \
  10886.                                      ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \
  10887.                                      ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) || \
  10888.                                      ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX9_RT)    || \
  10889.                                      ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX9_RT))
  10890. }
  10891.  
  10892. // DX-VA uncompressed surface formats
  10893.  
  10894.   MEDIASUBTYPE_YV12 : TGUID = '{32315659-0000-0010-8000-00AA00389B71}'; // YV12
  10895.   {$EXTERNALSYM MEDIASUBTYPE_YV12}
  10896.   MEDIASUBTYPE_NV12 : TGUID = '{3231564E-0000-0010-8000-00AA00389B71}'; // NV12
  10897.   {$EXTERNALSYM MEDIASUBTYPE_NV12}
  10898.   MEDIASUBTYPE_IMC1 : TGUID = '{31434D49-0000-0010-8000-00AA00389B71}'; // IMC1
  10899.   {$EXTERNALSYM MEDIASUBTYPE_IMC1}
  10900.   MEDIASUBTYPE_IMC2 : TGUID = '{32434d49-0000-0010-8000-00AA00389B71}'; // IMC2
  10901.   {$EXTERNALSYM MEDIASUBTYPE_IMC2}
  10902.   MEDIASUBTYPE_IMC3 : TGUID = '{33434d49-0000-0010-8000-00AA00389B71}'; // IMC3
  10903.   {$EXTERNALSYM MEDIASUBTYPE_IMC3}
  10904.   MEDIASUBTYPE_IMC4 : TGUID = '{34434d49-0000-0010-8000-00AA00389B71}'; // IMC4
  10905.   {$EXTERNALSYM MEDIASUBTYPE_IMC4}
  10906.   MEDIASUBTYPE_S340 : TGUID = '{30343353-0000-0010-8000-00AA00389B71}'; // S340
  10907.   {$EXTERNALSYM MEDIASUBTYPE_S340}
  10908.   MEDIASUBTYPE_S342 : TGUID = '{32343353-0000-0010-8000-00AA00389B71}'; // S342
  10909.   {$EXTERNALSYM MEDIASUBTYPE_S342}
  10910.  
  10911.  
  10912.   MEDIASUBTYPE_Overlay: TGUID = (D1:$E436EB7F;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10913.   {$EXTERNALSYM MEDIASUBTYPE_Overlay}
  10914.   MEDIASUBTYPE_MPEG1Packet: TGUID = (D1:$E436EB80;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10915.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1Packet}
  10916.   MEDIASUBTYPE_MPEG1Payload: TGUID = (D1:$E436EB81;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10917.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1Payload}
  10918.   MEDIASUBTYPE_MPEG1AudioPayload: TGUID = (D1:$00000050;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10919.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1AudioPayload}
  10920.   MEDIATYPE_MPEG1SystemStream: TGUID = (D1:$E436EB82;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10921.   {$EXTERNALSYM MEDIATYPE_MPEG1SystemStream}
  10922.   MEDIASUBTYPE_MPEG1System: TGUID = (D1:$E436EB84;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10923.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1System}
  10924.   MEDIASUBTYPE_MPEG1VideoCD: TGUID = (D1:$E436EB85;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10925.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1VideoCD}
  10926.   MEDIASUBTYPE_MPEG1Video: TGUID = (D1:$E436EB86;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10927.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1Video}
  10928.   MEDIASUBTYPE_MPEG1Audio: TGUID = (D1:$E436EB87;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10929.   {$EXTERNALSYM MEDIASUBTYPE_MPEG1Audio}
  10930.   MEDIASUBTYPE_Avi: TGUID = (D1:$E436EB88;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10931.   {$EXTERNALSYM MEDIASUBTYPE_Avi}
  10932.   MEDIASUBTYPE_Asf: TGUID = (D1:$3db80f90;D2:$9412;D3:$11d1;D4:($ad,$ed,$00,$00,$f8,$75,$4b,$99));
  10933.   {$EXTERNALSYM MEDIASUBTYPE_Asf}
  10934.   MEDIASUBTYPE_QTMovie: TGUID = (D1:$E436EB89;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10935.   {$EXTERNALSYM MEDIASUBTYPE_QTMovie}
  10936.   MEDIASUBTYPE_QTRpza: TGUID = (D1:$617A7072;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10937.   {$EXTERNALSYM MEDIASUBTYPE_QTRpza}
  10938.   MEDIASUBTYPE_QTSmc: TGUID = (D1:$20636D73;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10939.   {$EXTERNALSYM MEDIASUBTYPE_QTSmc}
  10940.   MEDIASUBTYPE_QTRle: TGUID = (D1:$20656C72;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10941.   {$EXTERNALSYM MEDIASUBTYPE_QTRle}
  10942.   MEDIASUBTYPE_QTJpeg: TGUID = (D1:$6765706A;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10943.   {$EXTERNALSYM MEDIASUBTYPE_QTJpeg}
  10944.   MEDIASUBTYPE_PCMAudio_Obsolete: TGUID = (D1:$E436EB8A;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10945.   {$EXTERNALSYM MEDIASUBTYPE_PCMAudio_Obsolete}
  10946.   MEDIASUBTYPE_PCM: TGUID = (D1:$00000001;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10947.   {$EXTERNALSYM MEDIASUBTYPE_PCM}
  10948.   MEDIASUBTYPE_WAVE: TGUID = (D1:$E436EB8B;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10949.   {$EXTERNALSYM MEDIASUBTYPE_WAVE}
  10950.   MEDIASUBTYPE_AU: TGUID = (D1:$E436EB8C;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10951.   {$EXTERNALSYM MEDIASUBTYPE_AU}
  10952.   MEDIASUBTYPE_AIFF: TGUID = (D1:$E436EB8D;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10953.   {$EXTERNALSYM MEDIASUBTYPE_AIFF}
  10954.   MEDIASUBTYPE_dvsd_: TGUID = (D1:$64737664;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10955.   {$EXTERNALSYM MEDIASUBTYPE_dvsd_}
  10956.   MEDIASUBTYPE_dvhd: TGUID = (D1:$64687664;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10957.   {$EXTERNALSYM MEDIASUBTYPE_dvhd}
  10958.   MEDIASUBTYPE_dvsl : TGUID = (D1:$6C737664;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10959.   {$EXTERNALSYM MEDIASUBTYPE_dvsl}
  10960.  
  10961.   MEDIASUBTYPE_dv25 : TGUID = '{35327664-0000-0010-8000-00aa00389b71}';
  10962.   {$EXTERNALSYM MEDIASUBTYPE_dv25}
  10963.   MEDIASUBTYPE_dv50 : TGUID = '{30357664-0000-0010-8000-00aa00389b71}';
  10964.   {$EXTERNALSYM MEDIASUBTYPE_dv50}
  10965.   MEDIASUBTYPE_dvh1 : TGUID = '{31687664-0000-0010-8000-00aa00389b71}';
  10966.   {$EXTERNALSYM MEDIASUBTYPE_dvh1}
  10967.  
  10968.   MEDIASUBTYPE_Line21_BytePair: TGUID = (D1:$6E8D4A22;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10969.   {$EXTERNALSYM MEDIASUBTYPE_Line21_BytePair}
  10970.   MEDIASUBTYPE_Line21_GOPPacket: TGUID = (D1:$6E8D4A23;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10971.   {$EXTERNALSYM MEDIASUBTYPE_Line21_GOPPacket}
  10972.   MEDIASUBTYPE_Line21_VBIRawData: TGUID = (D1:$6E8D4A24;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10973.   {$EXTERNALSYM MEDIASUBTYPE_Line21_VBIRawData}
  10974.   MEDIASUBTYPE_TELETEXT : TGUID = '{F72A76E3-EB0A-11D0-ACE4-0000C0CC16BA}'; // MEDIASUBTYPE_TELETEXT
  10975.   {$EXTERNALSYM MEDIASUBTYPE_TELETEXT}
  10976.   MEDIASUBTYPE_DRM_Audio: TGUID = (D1:$00000009;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10977.   {$EXTERNALSYM MEDIASUBTYPE_DRM_Audio}
  10978.   MEDIASUBTYPE_IEEE_FLOAT: TGUID = (D1:$00000003;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10979.   {$EXTERNALSYM MEDIASUBTYPE_IEEE_FLOAT}
  10980.   MEDIASUBTYPE_DOLBY_AC3_SPDIF: TGUID = (D1:$00000092;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10981.   {$EXTERNALSYM MEDIASUBTYPE_DOLBY_AC3_SPDIF}
  10982.   MEDIASUBTYPE_RAW_SPORT: TGUID = (D1:$00000240;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10983.   {$EXTERNALSYM MEDIASUBTYPE_RAW_SPORT}
  10984.   MEDIASUBTYPE_SPDIF_TAG_241h: TGUID = (D1:$00000241;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10985.   {$EXTERNALSYM MEDIASUBTYPE_SPDIF_TAG_241h}
  10986.  
  10987. // DirectShow DSS definitions
  10988.  
  10989.   MEDIASUBTYPE_DssVideo: TGUID = (D1:$A0AF4F81;D2:$E163;D3:$11D0;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10990.   {$EXTERNALSYM MEDIASUBTYPE_DssVideo}
  10991.   MEDIASUBTYPE_DssAudio: TGUID = (D1:$A0AF4F82;D2:$E163;D3:$11D0;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10992.   {$EXTERNALSYM MEDIASUBTYPE_DssAudio}
  10993.   MEDIASUBTYPE_VPVideo: TGUID = (D1:$5A9B6A40;D2:$1A22;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10994.   {$EXTERNALSYM MEDIASUBTYPE_VPVideo}
  10995.   MEDIASUBTYPE_VPVBI: TGUID = (D1:$5A9B6A41;D2:$1A22;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10996.   {$EXTERNALSYM MEDIASUBTYPE_VPVBI}
  10997.  
  10998. //--- dxmedia (the cutlist source filter)
  10999.   CLSID_SimpleCutList: TGUID = (D1:$A5EA8D30;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  11000.   {$EXTERNALSYM CLSID_SimpleCutList}
  11001.   CLSID_VideoFileClip: TGUID = (D1:$A5EA8D31;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  11002.   {$EXTERNALSYM CLSID_VideoFileClip}
  11003.   CLSID_AudioFileClip: TGUID = (D1:$A5EA8D32;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  11004.   {$EXTERNALSYM CLSID_AudioFileClip}
  11005.   CLSID_CutListCacheMemory: TGUID = (D1:$A5EA8D33;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  11006.   {$EXTERNALSYM CLSID_CutListCacheMemory}
  11007. //--- end cut list stuff
  11008.   CLSID_CaptureGraphBuilder: TGUID = (D1:$BF87B6E0;D2:$8C27;D3:$11D0;D4:($B3,$F0,$00,$AA,$00,$37,$61,$C5));
  11009.   {$EXTERNALSYM CLSID_CaptureGraphBuilder}
  11010.   CLSID_CaptureGraphBuilder2: TGUID = (D1:$BF87B6E1;D2:$8C27;D3:$11d0;D4:($B3,$F0,$00,$AA,$00,$37,$61,$C5));
  11011.   {$EXTERNALSYM CLSID_CaptureGraphBuilder2}
  11012.   CLSID_ProtoFilterGraph: TGUID = (D1:$E436EBB0;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11013.   {$EXTERNALSYM CLSID_ProtoFilterGraph}
  11014.   CLSID_SystemClock: TGUID = (D1:$E436EBB1;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11015.   {$EXTERNALSYM CLSID_SystemClock}
  11016.   CLSID_FilterMapper: TGUID = (D1:$E436EBB2;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11017.   {$EXTERNALSYM CLSID_FilterMapper}
  11018.   CLSID_FilterGraph: TGUID = (D1:$E436EBB3;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11019.   {$EXTERNALSYM CLSID_FilterGraph}
  11020.   CLSID_FilterGraphNoThread: TGUID = (D1:$E436EBB8;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11021.   {$EXTERNALSYM CLSID_FilterGraphNoThread}
  11022.   CLSID_MPEG1Doc: TGUID = (D1:$E4BBD160;D2:$4269;D3:$11CE;D4:($83,$8D,$00,$AA,$00,$55,$59,$5A));
  11023.   {$EXTERNALSYM CLSID_MPEG1Doc}
  11024.   CLSID_FileSource: TGUID = (D1:$701722E0;D2:$8AE3;D3:$11CE;D4:($A8,$5C,$00,$AA,$00,$2F,$EA,$B5));
  11025.   {$EXTERNALSYM CLSID_FileSource}
  11026.   CLSID_MPEG1PacketPlayer: TGUID = (D1:$26C25940;D2:$4CA9;D3:$11CE;D4:($A8,$28,$00,$AA,$00,$2F,$EA,$B5));
  11027.   {$EXTERNALSYM CLSID_MPEG1PacketPlayer}
  11028.   CLSID_MPEG1Splitter: TGUID = (D1:$336475D0;D2:$942A;D3:$11CE;D4:($A8,$70,$00,$AA,$00,$2F,$EA,$B5));
  11029.   {$EXTERNALSYM CLSID_MPEG1Splitter}
  11030.   CLSID_CMpegVideoCodec: TGUID = (D1:$FEB50740;D2:$7BEF;D3:$11CE;D4:($9B,$D9,$00,$00,$E2,$02,$59,$9C));
  11031.   {$EXTERNALSYM CLSID_CMpegVideoCodec}
  11032.   CLSID_CMpegAudioCodec: TGUID = (D1:$4A2286E0;D2:$7BEF;D3:$11CE;D4:($9B,$D9,$00,$00,$E2,$02,$59,$9C));
  11033.   {$EXTERNALSYM CLSID_CMpegAudioCodec}
  11034.   CLSID_TextRender: TGUID = (D1:$E30629D3;D2:$27E5;D3:$11CE;D4:($87,$5D,$00,$60,$8C,$B7,$80,$66));
  11035.   {$EXTERNALSYM CLSID_TextRender}
  11036.  
  11037.   CLSID_InfTee: TGUID = (D1:$F8388A40;D2:$D5BB;D3:$11D0;D4:($BE,$5A,$00,$80,$C7,$06,$56,$8E));
  11038.   {$EXTERNALSYM CLSID_InfTee}
  11039.   CLSID_AviSplitter: TGUID = (D1:$1B544C20;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1E));
  11040.   {$EXTERNALSYM CLSID_AviSplitter}
  11041.   CLSID_AviReader: TGUID = (D1:$1B544C21;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1E));
  11042.   {$EXTERNALSYM CLSID_AviReader}
  11043.   CLSID_VfwCapture: TGUID = (D1:$1B544C22;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1E));
  11044.   {$EXTERNALSYM CLSID_VfwCapture}
  11045.   CLSID_CaptureProperties: TGUID = (D1:$1B544C22;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1F));
  11046.   {$EXTERNALSYM CLSID_CaptureProperties}
  11047.   CLSID_FGControl: TGUID = (D1:$E436EBB4;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11048.   {$EXTERNALSYM CLSID_FGControl}
  11049.   CLSID_MOVReader: TGUID = (D1:$44584800;D2:$F8EE;D3:$11CE;D4:($B2,$D4,$00,$DD,$01,$10,$1B,$85));
  11050.   {$EXTERNALSYM CLSID_MOVReader}
  11051.   CLSID_QuickTimeParser: TGUID = (D1:$d51bd5a0;D2:$7548;D3:$11cf;D4:($a5,$20,$00,$80,$c7,$7e,$f5,$8a));
  11052.   {$EXTERNALSYM CLSID_QuickTimeParser}
  11053.   CLSID_QTDec: TGUID = (D1:$fdfe9681;D2:$74a3;D3:$11d0;D4:($af,$a7,$00,$aa,$00,$b6,$7a,$42));
  11054.   {$EXTERNALSYM CLSID_QTDec}
  11055.   CLSID_AVIDoc: TGUID = (D1:$D3588AB0;D2:$0781;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  11056.   {$EXTERNALSYM CLSID_AVIDoc}
  11057. //---dxmedia
  11058.   CLSID_AVIDocWriter: TGUID = (D1:$D3588AB1;D2:$0781;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  11059.   {$EXTERNALSYM CLSID_AVIDocWriter}
  11060. //---
  11061.   CLSID_VideoRenderer: TGUID = (D1:$70E102B0;D2:$5556;D3:$11CE;D4:($97,$C0,$00,$AA,$00,$55,$59,$5A));
  11062.   {$EXTERNALSYM CLSID_VideoRenderer}
  11063.   CLSID_Colour: TGUID = (D1:$1643E180;D2:$90F5;D3:$11CE;D4:($97,$D5,$00,$AA,$00,$55,$59,$5A));
  11064.   {$EXTERNALSYM CLSID_Colour}
  11065.   CLSID_Dither: TGUID = (D1:$1DA08500;D2:$9EDC;D3:$11CF;D4:($BC,$10,$00,$AA,$00,$AC,$74,$F6));
  11066.   {$EXTERNALSYM CLSID_Dither}
  11067.   CLSID_ModexRenderer: TGUID = (D1:$07167665;D2:$5011;D3:$11CF;D4:($BF,$33,$00,$AA,$00,$55,$59,$5A));
  11068.   {$EXTERNALSYM CLSID_ModexRenderer}
  11069.   CLSID_AudioRender: TGUID = (D1:$E30629D1;D2:$27E5;D3:$11CE;D4:($87,$5D,$00,$60,$8C,$B7,$80,$66));
  11070.   {$EXTERNALSYM CLSID_AudioRender}
  11071.   CLSID_AudioProperties: TGUID = (D1:$05589FAF;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  11072.   {$EXTERNALSYM CLSID_AudioProperties}
  11073.  
  11074.   CLSID_DSoundRender: TGUID = (D1:$79376820;D2:$07D0;D3:$11CF;D4:($A2,$4D,$00,$20,$AF,$D7,$97,$67));
  11075.   {$EXTERNALSYM CLSID_DSoundRender}
  11076.   CLSID_AudioRecord: TGUID = (D1:$E30629D2;D2:$27E5;D3:$11CE;D4:($87,$5D,$00,$60,$8C,$B7,$80,$66));
  11077.   {$EXTERNALSYM CLSID_AudioRecord}
  11078.   CLSID_AudioInputMixerProperties: TGUID = (D1:$2ca8ca52;D2:$3c3f;D3:$11d2;D4:($b7,$3d,$00,$c0,$4f,$b6,$bd,$3d));
  11079.   {$EXTERNALSYM CLSID_AudioInputMixerProperties}
  11080.   CLSID_AVIDec: TGUID = (D1:$CF49D4E0;D2:$1115;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  11081.   {$EXTERNALSYM CLSID_AVIDec}
  11082.   CLSID_AVIDraw: TGUID = (D1:$a888df60;D2:$1e90;D3:$11cf;D4:($ac,$98,$00,$aa,$00,$4c,$f,$a9));
  11083.   {$EXTERNALSYM CLSID_AVIDraw}
  11084.   CLSID_ACMWrapper: TGUID = (D1:$6A08CF80;D2:$0E18;D3:$11CF;D4:($A2,$4D,$00,$20,$AF,$D7,$97,$67));
  11085.   {$EXTERNALSYM CLSID_ACMWrapper}
  11086.   CLSID_AsyncReader: TGUID = (D1:$E436EBB5;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11087.   {$EXTERNALSYM CLSID_AsyncReader}
  11088.   CLSID_URLReader: TGUID = (D1:$E436EBB6;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11089.   {$EXTERNALSYM CLSID_URLReader}
  11090.   CLSID_PersistMonikerPID: TGUID = (D1:$E436EBB7;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  11091.   {$EXTERNALSYM CLSID_PersistMonikerPID}
  11092.   CLSID_AMovie: TGUID = (D1:$5F2759C0;D2:$7685;D3:$11CF;D4:($8B,$23,$00,$80,$5F,$6C,$EF,$60));
  11093.   {$EXTERNALSYM CLSID_AMovie}
  11094.   CLSID_AVICo: TGUID = (D1:$D76E2820;D2:$1563;D3:$11CF;D4:($AC,$98,$00,$AA,$00,$4C,$0F,$A9));
  11095.   {$EXTERNALSYM CLSID_AVICo}
  11096.   CLSID_FileWriter: TGUID = (D1:$8596E5F0;D2:$0DA5;D3:$11D0;D4:($BD,$21,$00,$A0,$C9,$11,$CE,$86));
  11097.   {$EXTERNALSYM CLSID_FileWriter}
  11098.  
  11099.   CLSID_AviDest: TGUID = (D1:$E2510970;D2:$F137;D3:$11CE;D4:($8B,$67,$00,$AA,$00,$A3,$F1,$A6));
  11100.   {$EXTERNALSYM CLSID_AviDest}
  11101.   CLSID_AviMuxProptyPage: TGUID = (D1:$C647B5C0;D2:$157C;D3:$11D0;D4:($BD,$23,$00,$A0,$C9,$11,$CE,$86));
  11102.   {$EXTERNALSYM CLSID_AviMuxProptyPage}
  11103.   CLSID_AviMuxProptyPage1: TGUID = (D1:$0A9AE910;D2:$85C0;D3:$11D0;D4:($BD,$42,$00,$A0,$C9,$11,$CE,$86));
  11104.   {$EXTERNALSYM CLSID_AviMuxProptyPage1}
  11105.   CLSID_AVIMIDIRender: TGUID = (D1:$07B65360;D2:$C445;D3:$11CE;D4:($AF,$DE,$00,$AA,$00,$6C,$14,$F4));
  11106.   {$EXTERNALSYM CLSID_AVIMIDIRender}
  11107.   CLSID_WMAsfReader: TGUID = (D1:$187463a0;D2:$5bb7;D3:$11d3;D4:($ac,$be,$00,$80,$c7,$5e,$24,$6e));
  11108.   {$EXTERNALSYM CLSID_WMAsfReader}
  11109.   CLSID_WMAsfWriter: TGUID = (D1:$7c23220e;D2:$55bb;D3:$11d3;D4:($8b,$16,$00,$c0,$4f,$b6,$bd,$3d));
  11110.   {$EXTERNALSYM CLSID_WMAsfWriter}
  11111.   CLSID_MPEG2Demultiplexer: TGUID = (D1:$afb6c280;D2:$2c41;D3:$11d3;D4:($8a,$60,$00,$00,$f8,$1e,$0e,$4a));
  11112.   {$EXTERNALSYM CLSID_MPEG2Demultiplexer}
  11113.   CLSID_MMSPLITTER: TGUID = (D1:$3ae86b20;D2:$7be8;D3:$11d1;D4:($ab,$e6,$00,$a0,$c9,$05,$f3,$75));
  11114.   {$EXTERNALSYM CLSID_MMSPLITTER}
  11115.  
  11116.   CLSID_StreamBufferSink                : TGUID = '{2DB47AE5-CF39-43c2-B4D6-0CD8D90946F4}';
  11117.   {$EXTERNALSYM CLSID_StreamBufferSink}
  11118.   CLSID_StreamBufferSource              : TGUID = '{C9F5FE02-F851-4eb5-99EE-AD602AF1E619}';
  11119.   {$EXTERNALSYM CLSID_StreamBufferSource}
  11120.   CLSID_StreamBufferConfig              : TGUID = '{FA8A68B2-C864-4ba2-AD53-D3876A87494B}';
  11121.   {$EXTERNALSYM CLSID_StreamBufferConfig}
  11122.   CLSID_Mpeg2VideoStreamAnalyzer        : TGUID = '{6CFAD761-735D-4aa5-8AFC-AF91A7D61EBA}';
  11123.   {$EXTERNALSYM CLSID_Mpeg2VideoStreamAnalyzer}
  11124.   CLSID_StreamBufferRecordingAttributes : TGUID = '{CCAA63AC-1057-4778-AE92-1206AB9ACEE6}';
  11125.   {$EXTERNALSYM CLSID_StreamBufferRecordingAttributes}
  11126.   CLSID_StreamBufferComposeRecording    : TGUID = '{D682C4BA-A90A-42fe-B9E1-03109849C423}';
  11127.   {$EXTERNALSYM CLSID_StreamBufferComposeRecording}
  11128.  
  11129.   CLSID_DVVideoCodec: TGUID = (D1:$B1B77C00;D2:$C3E4;D3:$11CF;D4:($AF,$79,$00,$AA,$00,$B6,$7A,$42));
  11130.   {$EXTERNALSYM CLSID_DVVideoCodec}
  11131.   CLSID_DVVideoEnc: TGUID = (D1:$13AA3650;D2:$BB6F;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  11132.   {$EXTERNALSYM CLSID_DVVideoEnc}
  11133.   CLSID_DVSplitter: TGUID = (D1:$4EB31670;D2:$9FC6;D3:$11CF;D4:($AF,$6E,$00,$AA,$00,$B6,$7A,$42));
  11134.   {$EXTERNALSYM CLSID_DVSplitter}
  11135.   CLSID_DVMux: TGUID = (D1:$129D7E40;D2:$C10D;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  11136.   {$EXTERNALSYM CLSID_DVMux}
  11137.   CLSID_SeekingPassThru: TGUID = (D1:$060AF76C;D2:$68DD;D3:$11D0;D4:($8F,$C1,$00,$C0,$4F,$D9,$18,$9D));
  11138.   {$EXTERNALSYM CLSID_SeekingPassThru}
  11139.   CLSID_Line21Decoder  : TGUID = (D1:$6E8D4A20;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  11140.   {$EXTERNALSYM CLSID_Line21Decoder}
  11141.   CLSID_Line21Decoder2 : TGUID = '{E4206432-01A1-4BEE-B3E1-3702C8EDC574}'; //Line21 (CC) Decoder v2
  11142.   {$EXTERNALSYM CLSID_Line21Decoder2}
  11143.   CLSID_OverlayMixer: TGUID = (D1:$CD8743A1;D2:$3736;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  11144.   {$EXTERNALSYM CLSID_OverlayMixer}
  11145.   CLSID_OverlayMixer2: TGUID = '{A0025E90-E45B-11D1-ABE9-00A0C905F375}'; //Overlay Mixer v2
  11146.   {$EXTERNALSYM CLSID_OverlayMixer2}
  11147.   CLSID_VBISurfaces: TGUID = (D1:$814B9800;D2:$1C88;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  11148.   {$EXTERNALSYM CLSID_VBISurfaces}
  11149.   CLSID_WSTDecoder : TGUID = '{70BC06E0-5666-11d3-A184-00105AEF9F33}'; //WST Teletext Decoder
  11150.   {$EXTERNALSYM CLSID_WSTDecoder}
  11151.   CLSID_MjpegDec   : TGUID = '{301056D0-6DFF-11d2-9EEB-006008039E37}';
  11152.   {$EXTERNALSYM CLSID_MjpegDec}
  11153.   CLSID_MJPGEnc    : TGUID = '{B80AB0A0-7416-11d2-9EEB-006008039E37}';
  11154.   {$EXTERNALSYM CLSID_MJPGEnc}
  11155.  
  11156. // pnp objects and categories
  11157.   CLSID_SystemDeviceEnum: TGUID = (D1:$62BE5D10;D2:$60EB;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  11158.   {$EXTERNALSYM CLSID_SystemDeviceEnum}
  11159.   CLSID_CDeviceMoniker: TGUID = (D1:$4315D437;D2:$5B8C;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  11160.   {$EXTERNALSYM CLSID_CDeviceMoniker}
  11161.   CLSID_VideoInputDeviceCategory: TGUID = (D1:$860BB310;D2:$5D01;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  11162.   {$EXTERNALSYM CLSID_VideoInputDeviceCategory}
  11163.   CLSID_CVidCapClassManager: TGUID = (D1:$860BB310;D2:$5D01;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  11164.   {$EXTERNALSYM CLSID_CVidCapClassManager}
  11165.   CLSID_LegacyAmFilterCategory: TGUID = (D1:$083863F1;D2:$70DE;D3:$11D0;D4:($BD,$40,$00,$A0,$C9,$11,$CE,$86));
  11166.   {$EXTERNALSYM CLSID_LegacyAmFilterCategory}
  11167.   CLSID_CQzFilterClassManager: TGUID = (D1:$083863F1;D2:$70DE;D3:$11D0;D4:($BD,$40,$00,$A0,$C9,$11,$CE,$86));
  11168.   {$EXTERNALSYM CLSID_CQzFilterClassManager}
  11169.   CLSID_VideoCompressorCategory: TGUID = (D1:$33D9A760;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  11170.   {$EXTERNALSYM CLSID_VideoCompressorCategory}
  11171.   CLSID_CIcmCoClassManager: TGUID = (D1:$33D9A760;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  11172.   {$EXTERNALSYM CLSID_CIcmCoClassManager}
  11173.   CLSID_AudioCompressorCategory: TGUID = (D1:$33D9A761;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  11174.   {$EXTERNALSYM CLSID_AudioCompressorCategory}
  11175.   CLSID_CAcmCoClassManager: TGUID = (D1:$33D9A761;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  11176.   {$EXTERNALSYM CLSID_CAcmCoClassManager}
  11177.   CLSID_AudioInputDeviceCategory: TGUID = (D1:$33D9A762;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  11178.   {$EXTERNALSYM CLSID_AudioInputDeviceCategory}
  11179.   CLSID_CWaveinClassManager: TGUID = (D1:$33D9A762;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  11180.   {$EXTERNALSYM CLSID_CWaveinClassManager}
  11181.   CLSID_AudioRendererCategory: TGUID = (D1:$E0F158E1;D2:$CB04;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  11182.   {$EXTERNALSYM CLSID_AudioRendererCategory}
  11183.   CLSID_CWaveOutClassManager: TGUID = (D1:$E0F158E1;D2:$CB04;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  11184.   {$EXTERNALSYM CLSID_CWaveOutClassManager}
  11185.   CLSID_MidiRendererCategory: TGUID = (D1:$4EFE2452;D2:$168A;D3:$11D1;D4:($BC,$76,$00,$C0,$4F,$B9,$45,$3B));
  11186.   {$EXTERNALSYM CLSID_MidiRendererCategory}
  11187.   CLSID_CMidiOutClassManager: TGUID = (D1:$4EFE2452;D2:$168A;D3:$11D1;D4:($BC,$76,$00,$C0,$4F,$B9,$45,$3B));
  11188.   {$EXTERNALSYM CLSID_CMidiOutClassManager}
  11189.   CLSID_TransmitCategory: TGUID = (D1:$cc7bfb41;D2:$f175;D3:$11d1;D4:($a3,$92,$00,$e0,$29,$1f,$39,$59));
  11190.   {$EXTERNALSYM CLSID_TransmitCategory}
  11191.   CLSID_DeviceControlCategory: TGUID = (D1:$cc7bfb46;D2:$f175;D3:$11d1;D4:($a3,$92,$00,$e0,$29,$1f,$39,$59));
  11192.   {$EXTERNALSYM CLSID_DeviceControlCategory}
  11193.   CLSID_ActiveMovieCategories: TGUID = (D1:$DA4E3DA0;D2:$D07D;D3:$11D0;D4:($BD,$50,$00,$A0,$C9,$11,$CE,$86));
  11194.   {$EXTERNALSYM CLSID_ActiveMovieCategories}
  11195.   CLSID_DVDHWDecodersCategory: TGUID = (D1:$2721AE20;D2:$7E70;D3:$11D0;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  11196.   {$EXTERNALSYM CLSID_DVDHWDecodersCategory}
  11197.  
  11198.   CLSID_MediaEncoderCategory     : TGUID = '{7D22E920-5CA9-4787-8C2B-A6779BD11781}'; // Encoder API encoder category
  11199.   {$EXTERNALSYM CLSID_MediaEncoderCategory}
  11200.   CLSID_MediaMultiplexerCategory : TGUID = '{236C9559-ADCE-4736-BF72-BAB34E392196}'; // Encoder API multiplexer category
  11201.   {$EXTERNALSYM CLSID_MediaMultiplexerCategory}
  11202.  
  11203.   CLSID_FilterMapper2: TGUID = (D1:$CDA42200;D2:$BD88;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  11204.   {$EXTERNALSYM CLSID_FilterMapper2}
  11205.   CLSID_MemoryAllocator: TGUID = (D1:$1E651CC0;D2:$B199;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  11206.   {$EXTERNALSYM CLSID_MemoryAllocator}
  11207.   CLSID_MediaPropertyBag: TGUID = (D1:$CDBD8D00;D2:$C193;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  11208.   {$EXTERNALSYM CLSID_MediaPropertyBag}
  11209.   CLSID_DvdGraphBuilder: TGUID = (D1:$FCC152B7;D2:$F372;D3:$11D0;D4:($8E,$00,$00,$C0,$4F,$D7,$C0,$8B));
  11210.   {$EXTERNALSYM CLSID_DvdGraphBuilder}
  11211.   CLSID_DVDNavigator: TGUID = (D1:$9B8C4620;D2:$2C1A;D3:$11D0;D4:($84,$93,$00,$A0,$24,$38,$AD,$48));
  11212.   {$EXTERNALSYM CLSID_DVDNavigator}
  11213.   CLSID_DVDState: TGUID = (D1:$f963c5cf;D2:$a659;D3:$4a93;D4:($96,$38,$ca,$f3,$cd,$27,$7d,$13));
  11214.   {$EXTERNALSYM CLSID_DVDState}
  11215.   CLSID_SmartTee: TGUID = (D1:$cc58e280;D2:$8aa1;D3:$11d1;D4:($b3,$f1,$00,$aa,$00,$37,$61,$c5));
  11216.   {$EXTERNALSYM CLSID_SmartTee}
  11217.  
  11218. // -- format types ---
  11219.   FORMAT_None: TGUID = (D1:$0F6417D6;D2:$C318;D3:$11D0;D4:($A4,$3F,$00,$A0,$C9,$22,$31,$96));
  11220.   {$EXTERNALSYM FORMAT_None}
  11221.   FORMAT_VideoInfo: TGUID = (D1:$05589F80;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  11222.   {$EXTERNALSYM FORMAT_VideoInfo}
  11223.   FORMAT_VideoInfo2: TGUID = (D1:$F72A76A0;D2:$EB0A;D3:$11D0;D4:($AC,$E4,$00,$00,$C0,$CC,$16,$BA));
  11224.   {$EXTERNALSYM FORMAT_VideoInfo2}
  11225.   FORMAT_WaveFormatEx: TGUID = (D1:$05589F81;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  11226.   {$EXTERNALSYM FORMAT_WaveFormatEx}
  11227.   FORMAT_MPEGVideo: TGUID = (D1:$05589F82;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  11228.   {$EXTERNALSYM FORMAT_MPEGVideo}
  11229.   FORMAT_MPEGStreams: TGUID = (D1:$05589F83;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  11230.   {$EXTERNALSYM FORMAT_MPEGStreams}
  11231.   FORMAT_DvInfo: TGUID = (D1:$05589F84;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  11232.   {$EXTERNALSYM FORMAT_DvInfo}
  11233.  
  11234.  
  11235. // -- Video related GUIDs ---
  11236.   CLSID_DirectDrawProperties: TGUID = (D1:$944D4C00;D2:$DD52;D3:$11CE;D4:($BF,$0E,$00,$AA,$00,$55,$59,$5A));
  11237.   {$EXTERNALSYM CLSID_DirectDrawProperties}
  11238.   CLSID_PerformanceProperties: TGUID = (D1:$59CE6880;D2:$ACF8;D3:$11CF;D4:($B5,$6E,$00,$80,$C7,$C4,$B6,$8A));
  11239.   {$EXTERNALSYM CLSID_PerformanceProperties}
  11240.   CLSID_QualityProperties: TGUID = (D1:$418AFB70;D2:$F8B8;D3:$11CE;D4:($AA,$C6,$00,$20,$AF,$0B,$99,$A3));
  11241.   {$EXTERNALSYM CLSID_QualityProperties}
  11242.   CLSID_VPObject: TGUID = (D1:$CE292861;D2:$FC88;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  11243.   {$EXTERNALSYM CLSID_VPObject}
  11244.   IID_IVPObject: TGUID = (D1:$CE292862;D2:$FC88;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  11245.   {$EXTERNALSYM IID_IVPObject}
  11246.   IID_IVPControl: TGUID = (D1:$25DF12C1;D2:$3DE0;D3:$11D1;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  11247.   {$EXTERNALSYM IID_IVPControl}
  11248.   CLSID_VPVBIObject: TGUID = (D1:$814B9801;D2:$1C88;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  11249.   {$EXTERNALSYM CLSID_VPVBIObject}
  11250.   IID_IVPVBIObject: TGUID = (D1:$814B9802;D2:$1C88;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  11251.   {$EXTERNALSYM IID_IVPVBIObject}
  11252.  
  11253.   CLSID_ModexProperties: TGUID = (D1:$0618AA30;D2:$6BC4;D3:$11CF;D4:($BF,$36,$00,$AA,$00,$55,$59,$5A));
  11254.   {$EXTERNALSYM CLSID_ModexProperties}
  11255.  
  11256. // DV decoder property
  11257.   CLSID_DVDecPropertiesPage: TGUID = (D1:$101193C0;D2:$0BFE;D3:$11D0;D4:($AF,$91,$00,$AA,$00,$B6,$7A,$42));
  11258.   {$EXTERNALSYM CLSID_DVDecPropertiesPage}
  11259.  
  11260. // DV encoder property
  11261.   CLSID_DVEncPropertiesPage: TGUID = (D1:$4150F050;D2:$BB6F;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  11262.   {$EXTERNALSYM CLSID_DVEncPropertiesPage}
  11263.  
  11264. // DV Muxer property
  11265.   CLSID_DVMuxPropertyPage: TGUID = (D1:$4DB880E0;D2:$C10D;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  11266.   {$EXTERNALSYM CLSID_DVMuxPropertyPage}
  11267.  
  11268.  
  11269. // -- Analog video related GUIDs ---
  11270.  
  11271.  
  11272. // -- format types ---
  11273.   FORMAT_AnalogVideo    : TGUID = (D1:$0482DDE0;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11274.   {$EXTERNALSYM FORMAT_AnalogVideo}
  11275.  
  11276.   MEDIATYPE_AnalogAudio : TGUID = '{0482DEE1-7817-11cf-8a03-00aa006ecb65}';
  11277.   {$EXTERNALSYM MEDIATYPE_AnalogAudio}
  11278.   MEDIATYPE_AnalogVideo : TGUID = (D1:$0482DDE1;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11279.   {$EXTERNALSYM MEDIATYPE_AnalogVideo}
  11280.   MEDIASUBTYPE_AnalogVideo_NTSC_M: TGUID = (D1:$0482DDE2;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11281.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_NTSC_M}
  11282.   MEDIASUBTYPE_AnalogVideo_PAL_B: TGUID = (D1:$0482DDE5;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11283.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_B}
  11284.   MEDIASUBTYPE_AnalogVideo_PAL_D: TGUID = (D1:$0482DDE6;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11285.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_D}
  11286.   MEDIASUBTYPE_AnalogVideo_PAL_G: TGUID = (D1:$0482DDE7;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11287.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_G}
  11288.   MEDIASUBTYPE_AnalogVideo_PAL_H: TGUID = (D1:$0482DDE8;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11289.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_H}
  11290.   MEDIASUBTYPE_AnalogVideo_PAL_I: TGUID = (D1:$0482DDE9;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11291.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_I}
  11292.   MEDIASUBTYPE_AnalogVideo_PAL_M: TGUID = (D1:$0482DDEA;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11293.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_M}
  11294.   MEDIASUBTYPE_AnalogVideo_PAL_N : TGUID = (D1:$0482DDEB;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11295.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_N}
  11296.   MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO: TGUID = (D1:$482ddec;D2:$7817;D3:$11cf;D4:($8a,$3,$00,$aa,$00,$6e,$cb,$65));
  11297.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO}
  11298.  
  11299. // -- Analog Video subtypes, SECAM
  11300.   MEDIASUBTYPE_AnalogVideo_SECAM_B: TGUID = (D1:$0482DDF0;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11301.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_B}
  11302.   MEDIASUBTYPE_AnalogVideo_SECAM_D: TGUID = (D1:$0482DDF1;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11303.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_D}
  11304.   MEDIASUBTYPE_AnalogVideo_SECAM_G: TGUID = (D1:$0482DDF2;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11305.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_G}
  11306.   MEDIASUBTYPE_AnalogVideo_SECAM_H: TGUID = (D1:$0482DDF3;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11307.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_H}
  11308.   MEDIASUBTYPE_AnalogVideo_SECAM_K: TGUID = (D1:$0482DDF4;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11309.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_K}
  11310.   MEDIASUBTYPE_AnalogVideo_SECAM_K1: TGUID = (D1:$0482DDF5;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11311.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_K1}
  11312.   MEDIASUBTYPE_AnalogVideo_SECAM_L: TGUID = (D1:$0482DDF6;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11313.   {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_L}
  11314.  
  11315. // -- Well known time format GUIDs ---
  11316.   TIME_FORMAT_NONE: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  11317.   {$EXTERNALSYM TIME_FORMAT_NONE}
  11318.   TIME_FORMAT_FRAME: TGUID = (D1:$7B785570;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  11319.   {$EXTERNALSYM TIME_FORMAT_FRAME}
  11320.   TIME_FORMAT_BYTE: TGUID = (D1:$7B785571;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  11321.   {$EXTERNALSYM TIME_FORMAT_BYTE}
  11322.   TIME_FORMAT_SAMPLE: TGUID = (D1:$7B785572;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  11323.   {$EXTERNALSYM TIME_FORMAT_SAMPLE}
  11324.   TIME_FORMAT_FIELD: TGUID = (D1:$7B785573;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  11325.   {$EXTERNALSYM TIME_FORMAT_FIELD}
  11326.   TIME_FORMAT_MEDIA_TIME: TGUID = (D1:$7B785574;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  11327.   {$EXTERNALSYM TIME_FORMAT_MEDIA_TIME}
  11328.  
  11329. // for IKsPropertySet
  11330.   AMPROPSETID_Pin: TGUID = (D1:$9B00F101;D2:$1567;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  11331.   {$EXTERNALSYM AMPROPSETID_Pin}
  11332.   PIN_CATEGORY_CAPTURE: TGUID = (D1:$FB6C4281;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11333.   {$EXTERNALSYM PIN_CATEGORY_CAPTURE}
  11334.   PIN_CATEGORY_PREVIEW: TGUID = (D1:$FB6C4282;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11335.   {$EXTERNALSYM PIN_CATEGORY_PREVIEW}
  11336.   PIN_CATEGORY_ANALOGVIDEOIN: TGUID = (D1:$FB6C4283;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11337.   {$EXTERNALSYM PIN_CATEGORY_ANALOGVIDEOIN}
  11338.   PIN_CATEGORY_VBI: TGUID = (D1:$FB6C4284;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11339.   {$EXTERNALSYM PIN_CATEGORY_VBI}
  11340.   PIN_CATEGORY_VIDEOPORT: TGUID = (D1:$FB6C4285;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11341.   {$EXTERNALSYM PIN_CATEGORY_VIDEOPORT}
  11342.   PIN_CATEGORY_NABTS: TGUID = (D1:$FB6C4286;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11343.   {$EXTERNALSYM PIN_CATEGORY_NABTS}
  11344.   PIN_CATEGORY_EDS: TGUID = (D1:$FB6C4287;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11345.   {$EXTERNALSYM PIN_CATEGORY_EDS}
  11346.   PIN_CATEGORY_TELETEXT: TGUID = (D1:$FB6C4288;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11347.   {$EXTERNALSYM PIN_CATEGORY_TELETEXT}
  11348.   PIN_CATEGORY_CC: TGUID = (D1:$FB6C4289;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11349.   {$EXTERNALSYM PIN_CATEGORY_CC}
  11350.   PIN_CATEGORY_STILL: TGUID = (D1:$FB6C428A;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11351.   {$EXTERNALSYM PIN_CATEGORY_STILL}
  11352.   PIN_CATEGORY_TIMECODE: TGUID = (D1:$FB6C428B;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11353.   {$EXTERNALSYM PIN_CATEGORY_TIMECODE}
  11354.   PIN_CATEGORY_VIDEOPORT_VBI: TGUID = (D1:$FB6C428C;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  11355.   {$EXTERNALSYM PIN_CATEGORY_VIDEOPORT_VBI}
  11356.  
  11357. // the following special GUIDS are used by ICaptureGraphBuilder::FindInterface
  11358.   LOOK_UPSTREAM_ONLY:   TGUID = (D1:$ac798be0;D2:$98e3;D3:$11d1;D4:($b3,$f1,$0,$aa,$0,$37,$61,$c5));
  11359.   {$EXTERNALSYM LOOK_UPSTREAM_ONLY}
  11360.   LOOK_DOWNSTREAM_ONLY: TGUID = (D1:$ac798be1;D2:$98e3;D3:$11d1;D4:($b3,$f1,$0,$aa,$0,$37,$61,$c5));
  11361.   {$EXTERNALSYM LOOK_DOWNSTREAM_ONLY}
  11362.  
  11363. // -------------------------------------------------------------------------
  11364. // KSProxy GUIDS
  11365. // -------------------------------------------------------------------------
  11366.  
  11367.   CLSID_TVTunerFilterPropertyPage: TGUID = (D1:$266EEE41;D2:$6C63;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  11368.   {$EXTERNALSYM CLSID_TVTunerFilterPropertyPage}
  11369.   CLSID_CrossbarFilterPropertyPage: TGUID = (D1:$71F96461;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  11370.   {$EXTERNALSYM CLSID_CrossbarFilterPropertyPage}
  11371.   CLSID_TVAudioFilterPropertyPage: TGUID = (D1:$71F96463;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  11372.   {$EXTERNALSYM CLSID_TVAudioFilterPropertyPage}
  11373.   CLSID_VideoProcAmpPropertyPage: TGUID = (D1:$71F96464;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  11374.   {$EXTERNALSYM CLSID_VideoProcAmpPropertyPage}
  11375.   CLSID_CameraControlPropertyPage: TGUID = (D1:$71F96465;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  11376.   {$EXTERNALSYM CLSID_CameraControlPropertyPage}
  11377.   CLSID_AnalogVideoDecoderPropertyPage: TGUID = (D1:$71F96466;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  11378.   {$EXTERNALSYM CLSID_AnalogVideoDecoderPropertyPage}
  11379.   CLSID_VideoStreamConfigPropertyPage: TGUID = (D1:$71F96467;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  11380.   {$EXTERNALSYM CLSID_VideoStreamConfigPropertyPage}
  11381.   CLSID_AudioRendererAdvancedProperties: TGUID = (D1:$37e92a92;D2:$d9aa;D3:$11d2;D4:($bf,$84,$8e,$f2,$b1,$55,$5a,$ed));
  11382.   {$EXTERNALSYM CLSID_AudioRendererAdvancedProperties}
  11383.  
  11384. // -------------------------------------------------------------------------
  11385. // VMRender GUIDS DX8
  11386. // -------------------------------------------------------------------------
  11387.   CLSID_VideoMixingRenderer     : TGUID = (D1:$B87BEB7B;D2:$8D29;D3:$423f;D4:($AE,$4D,$65,$82,$C1,$01,$75,$AC));
  11388.   {$EXTERNALSYM CLSID_VideoMixingRenderer}
  11389.   CLSID_VideoRendererDefault    : TGUID = '{6BC1CFFA-8FC1-4261-AC22-CFB4CC38DB50}';
  11390.   {$EXTERNALSYM CLSID_VideoRendererDefault}
  11391.   CLSID_AllocPresenter          : TGUID = '{99d54f63-1a69-41ae-aa4d-c976eb3f0713}';
  11392.   {$EXTERNALSYM CLSID_AllocPresenter}
  11393.   CLSID_AllocPresenterDDXclMode : TGUID = '{4444ac9e-242e-471b-a3c7-45dcd46352bc}';
  11394.   {$EXTERNALSYM CLSID_AllocPresenterDDXclMode}
  11395.   CLSID_VideoPortManager        : TGUID = '{6f26a6cd-967b-47fd-874a-7aed2c9d25a2}';
  11396.   {$EXTERNALSYM CLSID_VideoPortManager}
  11397.   CLSID_ImageSynchronization    : TGUID = '{7D8AA343-6E63-4663-BE90-6B80F66540A3}';
  11398.   {$EXTERNALSYM CLSID_ImageSynchronization}
  11399.   CLSID_VideoMixer              : TGUID = '{06b32aee-77da-484b-973b-5d64f47201b0}';
  11400.   {$EXTERNALSYM CLSID_VideoMixer}
  11401. // -------------------------------------------------------------------------
  11402. // VMR GUIDS for DX9
  11403. // -------------------------------------------------------------------------
  11404.  
  11405.   CLSID_VideoMixingRenderer9 : TGUID = '{51b4abf3-748f-4e3b-a276-c828330e926a}';
  11406.   {$EXTERNALSYM CLSID_VideoMixingRenderer9}
  11407.   CLSID_AllocPresenter9         : TGUID = '{2D2E24CB-0CD5-458F-86EA-3E6FA22C8E64}'; // Found in Registry, Should'nt be used directly
  11408.   {$EXTERNALSYM CLSID_AllocPresenter9}
  11409.   CLSID_ImageSynchronization9   : TGUID = '{E4979309-7A32-495E-8A92-7B014AAD4961}'; // Found in Registry
  11410.   {$EXTERNALSYM CLSID_ImageSynchronization9}
  11411.  
  11412. // -------------------------------------------------------------------------
  11413. // BDA Network Provider GUIDS
  11414. // -------------------------------------------------------------------------
  11415.   CLSID_ATSCNetworkProvider    : TGUID = (D1:$0dad2fdd;D2:$5fd7;D3:$11d3;D4:($8f,$50,$00,$c0,$4f,$79,$71,$e2));
  11416.   {$EXTERNALSYM CLSID_ATSCNetworkProvider}
  11417.   CLSID_ATSCNetworkPropertyPage: TGUID = (D1:$e3444d16;D2:$5ac4;D3:$4386;D4:($88,$df,$13,$fd,$23,$0e,$1d,$da));
  11418.   {$EXTERNALSYM CLSID_ATSCNetworkPropertyPage}
  11419.   CLSID_DVBSNetworkProvider    : TGUID = (D1:$fa4b375a;D2:$45b4;D3:$4d45;D4:($84,$40,$26,$39,$57,$b1,$16,$23));
  11420.   {$EXTERNALSYM CLSID_DVBSNetworkProvider}
  11421.   CLSID_DVBTNetworkProvider    : TGUID = '{216C62DF-6D7F-4e9a-8571-05F14EDB766A}';
  11422.   {$EXTERNALSYM CLSID_DVBTNetworkProvider}
  11423.   CLSID_DVBCNetworkProvider    : TGUID = '{DC0C0FE7-0485-4266-B93F-68FBF80ED834}';
  11424.   {$EXTERNALSYM CLSID_DVBCNetworkProvider}
  11425.  
  11426.  
  11427. // --- WST Decoder interface GUID ---
  11428.   IID_IAMWstDecoder            : TGUID = '{C056DE21-75C2-11d3-A184-00105AEF9F33}'; // IID_IAMWstDecoder
  11429.   {$EXTERNALSYM IID_IAMWstDecoder}
  11430. // --- WST Decoder Property Page ---
  11431.   CLSID_WstDecoderPropertyPage : TGUID = '{04E27F80-91E4-11d3-A184-00105AEF9F33}'; // WST Decoder Property Page
  11432.   {$EXTERNALSYM CLSID_WstDecoderPropertyPage}
  11433.  
  11434. // -------------------------------------------------------------------------
  11435. // TVE Receiver filter guids
  11436. // -------------------------------------------------------------------------
  11437.  
  11438. // The CLSID used by the TVE Receiver filter
  11439.   CLSID_DShowTVEFilter           : TGUID = '{05500280-FAA5-4DF9-8246-BFC23AC5CEA8}';
  11440.   {$EXTERNALSYM CLSID_DShowTVEFilter}
  11441.   CLSID_TVEFilterTuneProperties  : TGUID = '{05500281-FAA5-4DF9-8246-BFC23AC5CEA8}';
  11442.   {$EXTERNALSYM CLSID_TVEFilterTuneProperties}
  11443.   CLSID_TVEFilterCCProperties    : TGUID = '{05500282-FAA5-4DF9-8246-BFC23AC5CEA8}';
  11444.   {$EXTERNALSYM CLSID_TVEFilterCCProperties}
  11445.   CLSID_TVEFilterStatsProperties : TGUID = '{05500283-FAA5-4DF9-8246-BFC23AC5CEA8}';
  11446.   {$EXTERNALSYM CLSID_TVEFilterStatsProperties}
  11447.  
  11448. // -------------------------------------------------------------------------
  11449. // Defined ENCAPI parameter GUIDs
  11450. // -------------------------------------------------------------------------
  11451.  
  11452.   // The CLSID for the original IVideoEncoder proxy plug-in
  11453.   CLSID_IVideoEncoderProxy : TGUID = '{B43C4EEC-8C32-4791-9102-508ADA5EE8E7}';
  11454.   {$EXTERNALSYM CLSID_IVideoEncoderProxy}
  11455.  
  11456.   // The CLSID for the ICodecAPI proxy plug-in
  11457.   CLSID_ICodecAPIProxy : TGUID = '{7ff0997a-1999-4286-a73c-622b8814e7eb}';
  11458.   {$EXTERNALSYM CLSID_ICodecAPIProxy}
  11459.  
  11460.   // The CLSID for the combination ICodecAPI/IVideoEncoder proxy plug-in
  11461.   CLSID_IVideoEncoderCodecAPIProxy : TGUID = '{b05dabd9-56e5-4fdc-afa4-8a47e91f1c9c}';
  11462.   {$EXTERNALSYM CLSID_IVideoEncoderCodecAPIProxy}
  11463.  
  11464.   ENCAPIPARAM_BITRATE      : TGUID = '{49CC4C43-CA83-4ad4-A9AF-F3696AF666DF}';
  11465.   {$EXTERNALSYM ENCAPIPARAM_BITRATE}
  11466.   ENCAPIPARAM_PEAK_BITRATE : TGUID = '{703F16A9-3D48-44a1-B077-018DFF915D19}';
  11467.   {$EXTERNALSYM ENCAPIPARAM_PEAK_BITRATE}
  11468.   ENCAPIPARAM_BITRATE_MODE : TGUID = '{EE5FB25C-C713-40d1-9D58-C0D7241E250F}';
  11469.   {$EXTERNALSYM ENCAPIPARAM_BITRATE_MODE}
  11470.  
  11471.   // for kernel control
  11472.  
  11473.   CODECAPI_CHANGELISTS       : TGUID = '{62b12acf-f6b0-47d9-9456-96f22c4e0b9d}';
  11474.   {$EXTERNALSYM CODECAPI_CHANGELISTS}
  11475.   CODECAPI_VIDEO_ENCODER     : TGUID = '{7112e8e1-3d03-47ef-8e60-03f1cf537301}';
  11476.   {$EXTERNALSYM CODECAPI_VIDEO_ENCODER}
  11477.   CODECAPI_AUDIO_ENCODER     : TGUID = '{b9d19a3e-f897-429c-bc46-8138b7272b2d}';
  11478.   {$EXTERNALSYM CODECAPI_AUDIO_ENCODER}
  11479.   CODECAPI_SETALLDEFAULTS    : TGUID = '{6c5e6a7c-acf8-4f55-a999-1a628109051b}';
  11480.   {$EXTERNALSYM CODECAPI_SETALLDEFAULTS}
  11481.   CODECAPI_ALLSETTINGS       : TGUID = '{6a577e92-83e1-4113-adc2-4fcec32f83a1}';
  11482.   {$EXTERNALSYM CODECAPI_ALLSETTINGS}
  11483.   CODECAPI_SUPPORTSEVENTS    : TGUID = '{0581af97-7693-4dbd-9dca-3f9ebd6585a1}';
  11484.   {$EXTERNALSYM CODECAPI_SUPPORTSEVENTS}
  11485.   CODECAPI_CURRENTCHANGELIST : TGUID = '{1cb14e83-7d72-4657-83fd-47a2c5b9d13d}';
  11486.   {$EXTERNALSYM CODECAPI_CURRENTCHANGELIST}
  11487.  
  11488. (*==========================================================================;
  11489.  *
  11490.  *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
  11491.  *
  11492.  *  File:       ksuuids.h
  11493.  *
  11494.  ***************************************************************************)
  11495. // contains the GUIDs for the MediaType type, subtype fields and format types
  11496. // for DVD/MPEG2 media types.
  11497.  
  11498. const
  11499. // --- MPEG 2 definitions ---
  11500.   MEDIATYPE_MPEG2_PACK: TGUID     = (D1:$36523B13;D2:$8EE5;D3:$11d1;D4:($8C,$A3,$00,$60,$B0,$57,$66,$4A));
  11501.   {$EXTERNALSYM MEDIATYPE_MPEG2_PACK}
  11502.   MEDIATYPE_MPEG2_PES: TGUID      = (D1:$e06d8020;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  11503.   {$EXTERNALSYM MEDIATYPE_MPEG2_PES}
  11504.   MEDIATYPE_CONTROL: TGUID        = (D1:$e06d8021;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  11505.   {$EXTERNALSYM MEDIATYPE_CONTROL}
  11506.   MEDIASUBTYPE_MPEG2_VIDEO: TGUID = (D1:$e06d8026;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  11507.   {$EXTERNALSYM MEDIASUBTYPE_MPEG2_VIDEO}
  11508.  
  11509.   MEDIATYPE_MPEG2_SECTIONS : TGUID = '{455f176c-4b06-47ce-9aef-8caef73df7b5}';
  11510.   {$EXTERNALSYM MEDIATYPE_MPEG2_SECTIONS}
  11511.   MEDIASUBTYPE_ATSC_SI     : TGUID = '{b3c7397c-d303-414d-b33c-4ed2c9d29733}';
  11512.   {$EXTERNALSYM MEDIASUBTYPE_ATSC_SI}
  11513.   MEDIASUBTYPE_DVB_SI      : TGUID = '{e9dd31a3-221d-4adb-8532-9af309c1a408}';
  11514.   {$EXTERNALSYM MEDIASUBTYPE_DVB_SI}
  11515.   MEDIASUBTYPE_MPEG2DATA   : TGUID = '{C892E55B-252D-42b5-A316-D997E7A5D995}';
  11516.   {$EXTERNALSYM MEDIASUBTYPE_MPEG2DATA}
  11517.  
  11518.  
  11519. // use MPEG2VIDEOINFO (defined below) with FORMAT_MPEG2_VIDEO
  11520.   FORMAT_MPEG2_VIDEO: TGUID = (D1:$e06d80e3;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  11521.   {$EXTERNALSYM FORMAT_MPEG2_VIDEO}
  11522.  
  11523. // MPEG2 Other subtypes
  11524.   MEDIASUBTYPE_MPEG2_PROGRAM: TGUID   = (D1:$e06d8022;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$05f,$6c,$bb,$ea));
  11525.   {$EXTERNALSYM MEDIASUBTYPE_MPEG2_PROGRAM}
  11526.   MEDIASUBTYPE_MPEG2_TRANSPORT: TGUID = (D1:$e06d8023;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$05f,$6c,$bb,$ea));
  11527.   {$EXTERNALSYM MEDIASUBTYPE_MPEG2_TRANSPORT}
  11528.   MEDIASUBTYPE_MPEG2_AUDIO: TGUID = (D1:$E06D802B;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11529.   {$EXTERNALSYM MEDIASUBTYPE_MPEG2_AUDIO}
  11530.   MEDIASUBTYPE_DOLBY_AC3: TGUID = (D1:$E06D802C;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11531.   {$EXTERNALSYM MEDIASUBTYPE_DOLBY_AC3}
  11532.   MEDIASUBTYPE_DVD_SUBPICTURE: TGUID = (D1:$E06D802D;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11533.   {$EXTERNALSYM MEDIASUBTYPE_DVD_SUBPICTURE}
  11534.   MEDIASUBTYPE_DVD_LPCM_AUDIO: TGUID = (D1:$E06D8032;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11535.   {$EXTERNALSYM MEDIASUBTYPE_DVD_LPCM_AUDIO}
  11536.   MEDIASUBTYPE_DTS: TGUID  = (D1:$e06d8033;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  11537.   {$EXTERNALSYM MEDIASUBTYPE_DTS}
  11538.   MEDIASUBTYPE_SDDS: TGUID = (D1:$e06d8034;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  11539.   {$EXTERNALSYM MEDIASUBTYPE_SDDS}
  11540.  
  11541. // DVD-related mediatypes
  11542.   MEDIATYPE_DVD_ENCRYPTED_PACK: TGUID = (D1:$ED0B916A;D2:$044D;D3:$11D1;D4:($AA,$78,$00,$C0,$004F,$C3,$1D,$60));
  11543.   {$EXTERNALSYM MEDIATYPE_DVD_ENCRYPTED_PACK}
  11544.   MEDIATYPE_DVD_NAVIGATION: TGUID = (D1:$E06D802E;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11545.   {$EXTERNALSYM MEDIATYPE_DVD_NAVIGATION}
  11546.   MEDIASUBTYPE_DVD_NAVIGATION_PCI: TGUID = (D1:$E06D802F;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11547.   {$EXTERNALSYM MEDIASUBTYPE_DVD_NAVIGATION_PCI}
  11548.   MEDIASUBTYPE_DVD_NAVIGATION_DSI: TGUID = (D1:$E06D8030;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11549.   {$EXTERNALSYM MEDIASUBTYPE_DVD_NAVIGATION_DSI}
  11550.   MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER: TGUID = (D1:$E06D8031;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11551.   {$EXTERNALSYM MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER}
  11552.  
  11553. //
  11554. // DVD - MPEG2/AC3-related Formats
  11555. //
  11556.  
  11557.   FORMAT_MPEG2Video: TGUID = (D1:$E06D80E3;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11558.   {$EXTERNALSYM FORMAT_MPEG2Video}
  11559.   FORMAT_DolbyAC3: TGUID = (D1:$E06D80E4;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11560.   {$EXTERNALSYM FORMAT_DolbyAC3}
  11561.   FORMAT_MPEG2Audio: TGUID = (D1:$E06D80E5;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11562.   {$EXTERNALSYM FORMAT_MPEG2Audio}
  11563.   FORMAT_DVD_LPCMAudio: TGUID = (D1:$E06D80E6;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  11564.   {$EXTERNALSYM FORMAT_DVD_LPCMAudio}
  11565.  
  11566. //
  11567. // KS Property Set Id (to communicate with the WDM Proxy filter) -- from
  11568. // ksmedia.h of WDM DDK.
  11569. //
  11570.  
  11571.   AM_KSPROPSETID_AC3: TGUID = (D1:$BFABE720;D2:$6E1F;D3:$11D0;D4:($BC,$F2,$44,$45,$53,$54,$00,$00));
  11572.   {$EXTERNALSYM AM_KSPROPSETID_AC3}
  11573.   AM_KSPROPSETID_DvdSubPic: TGUID = (D1:$AC390460;D2:$43AF;D3:$11D0;D4:($BD,$6A,$00,$35,$05,$C1,$03,$A9));
  11574.   {$EXTERNALSYM AM_KSPROPSETID_DvdSubPic}
  11575.   AM_KSPROPSETID_CopyProt: TGUID = (D1:$0E8A0A40;D2:$6AEF;D3:$11D0;D4:($9E,$D0,$00,$A0,$24,$CA,$19,$B3));
  11576.   {$EXTERNALSYM AM_KSPROPSETID_CopyProt}
  11577.   AM_KSPROPSETID_TSRateChange: TGUID = (D1:$A503C5C0;D2:$1D1D;D3:$11D1;D4:($AD,$80,$44,$45,$53,$54,$00,$00));
  11578.   {$EXTERNALSYM AM_KSPROPSETID_TSRateChange}
  11579.   AM_KSPROPSETID_DVD_RateChange: TGUID = (D1:$3577eb09;D2:$9582;D3:$477f;D4:($b2,$9c,$b0,$c4,$52,$a4,$ff,$9a));
  11580.   {$EXTERNALSYM AM_KSPROPSETID_DVD_RateChange}
  11581.   AM_KSPROPSETID_DvdKaraoke: TGUID = (D1:$ae4720ae;D2:$aa71;D3:$42d8;D4:($b8,$2a,$ff,$fd,$f5,$8b,$76,$fd));
  11582.   {$EXTERNALSYM AM_KSPROPSETID_DvdKaraoke}
  11583.   AM_KSPROPSETID_FrameStep: TGUID = (D1:$c830acbd;D2:$ab07;D3:$492f;D4:($88,$52,$45,$b6,$98,$7c,$29,$79));
  11584.   {$EXTERNALSYM AM_KSPROPSETID_FrameStep}
  11585. //
  11586. // KS categories from ks.h and ksmedia.h
  11587. //
  11588. //
  11589.  
  11590.   AM_KSCATEGORY_CAPTURE: TGUID = (D1:$65E8773D;D2:$8F56;D3:$11D0;D4:($A3,$B9,$00,$A0,$C9,$22,$31,$96));
  11591.   {$EXTERNALSYM AM_KSCATEGORY_CAPTURE}
  11592.   AM_KSCATEGORY_RENDER: TGUID = (D1:$65E8773E;D2:$8F56;D3:$11D0;D4:($A3,$B9,$00,$A0,$C9,$22,$31,$96));
  11593.   {$EXTERNALSYM AM_KSCATEGORY_RENDER}
  11594.   AM_KSCATEGORY_DATACOMPRESSOR: TGUID = (D1:$1E84C900;D2:$7E70;D3:$11D0;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  11595.   {$EXTERNALSYM AM_KSCATEGORY_DATACOMPRESSOR}
  11596.   AM_KSCATEGORY_AUDIO: TGUID = (D1:$6994AD04;D2:$93EF;D3:$11D0;D4:($A3,$CC,$00,$A0,$C9,$22,$31,$96));
  11597.   {$EXTERNALSYM AM_KSCATEGORY_AUDIO}
  11598.   AM_KSCATEGORY_VIDEO: TGUID = (D1:$6994AD05;D2:$93EF;D3:$11D0;D4:($A3,$CC,$00,$A0,$C9,$22,$31,$96));
  11599.   {$EXTERNALSYM AM_KSCATEGORY_VIDEO}
  11600.   AM_KSCATEGORY_TVTUNER: TGUID = (D1:$A799A800;D2:$A46D;D3:$11D0;D4:($A1,$8C,$00,$A0,$24,$01,$DC,$D4));
  11601.   {$EXTERNALSYM AM_KSCATEGORY_TVTUNER}
  11602.   AM_KSCATEGORY_CROSSBAR: TGUID = (D1:$A799A801;D2:$A46D;D3:$11D0;D4:($A1,$8C,$00,$A0,$24,$01,$DC,$D4));
  11603.   {$EXTERNALSYM AM_KSCATEGORY_CROSSBAR}
  11604.   AM_KSCATEGORY_TVAUDIO: TGUID = (D1:$A799A802;D2:$A46D;D3:$11D0;D4:($A1,$8C,$00,$A0,$24,$01,$DC,$D4));
  11605.   {$EXTERNALSYM AM_KSCATEGORY_TVAUDIO}
  11606.   AM_KSCATEGORY_VBICODEC: TGUID = (D1:$07dad660;D2:$22f1;D3:$11d1;D4:($a9,$f4,$00,$c0,$4f,$bb,$de,$8f));
  11607.   {$EXTERNALSYM AM_KSCATEGORY_VBICODEC}
  11608.   AM_KSCATEGORY_SPLITTER: TGUID = (D1:$0A4252A0;D2:$7E70;D3:$11D0;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  11609.   {$EXTERNALSYM AM_KSCATEGORY_SPLITTER}
  11610.  
  11611. //
  11612. // guids needed to support IKsPin interface
  11613. //
  11614. //
  11615.   IID_IKsInterfaceHandler: TGUID = (D1:$D3ABC7E0;D2:$9A61;D3:$11D0;D4:($A4,$0D,$00,$A0,$C9,$22,$31,$96));
  11616.   {$EXTERNALSYM IID_IKsInterfaceHandler}
  11617.   STATIC_IID_IKsInterfaceHandler: TGUID = (D1:$D3ABC7E0;D2:$9A61;D3:$11D0;D4:($A4,$0D,$00,$A0,$C9,$22,$31,$96));
  11618.   {$EXTERNALSYM STATIC_IID_IKsInterfaceHandler}
  11619.  
  11620.   IID_IKsDataTypeHandler:  TGUID = (D1:$5FFBAA02;D2:$49A3;D3:$11D0;D4:($9F,$36,$00,$AA,$00,$A2,$16,$A1));
  11621.   {$EXTERNALSYM IID_IKsDataTypeHandler}
  11622.   STATIC_IID_IKsDataTypeHandler:  TGUID = (D1:$5FFBAA02;D2:$49A3;D3:$11D0;D4:($9F,$36,$00,$AA,$00,$A2,$16,$A1));
  11623.   {$EXTERNALSYM STATIC_IID_IKsDataTypeHandler}
  11624.  
  11625.   IID_IKsPin: TGUID = (D1:$B61178D1;D2:$A2D9;D3:$11CF;D4:($9E,$53,$00,$AA,$00,$A2,$16,$A1));
  11626.   {$EXTERNALSYM IID_IKsPin}
  11627.   STATIC_IID_IKsPin: TGUID = (D1:$B61178D1;D2:$A2D9;D3:$11CF;D4:($9E,$53,$00,$AA,$00,$A2,$16,$A1));
  11628.   {$EXTERNALSYM STATIC_IID_IKsPin}
  11629.  
  11630.   IID_IKsControl:    TGUID = (D1:$28F54685;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  11631.   {$EXTERNALSYM IID_IKsControl}
  11632.   STATIC_IID_IKsControl : TGUID = (D1:$28F54685;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  11633.  
  11634.   {$EXTERNALSYM STATIC_IID_IKsControl}
  11635.   IID_IKsPinFactory: TGUID = (D1:$CD5EBE6B;D2:$8B6E;D3:$11D1;D4:($8A,$E0,$00,$A0,$C9,$22,$31,$96));
  11636.   {$EXTERNALSYM IID_IKsPinFactory}
  11637.   AM_INTERFACESETID_Standard: TGUID = (D1:$1A8766A0;D2:$62CE;D3:$11CF;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  11638.   {$EXTERNALSYM AM_INTERFACESETID_Standard}
  11639.  
  11640. //------------------------------------------------------------------------------
  11641. // File: DXVA.h
  11642. // Desc: DirectX Video Acceleration header file.
  11643. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  11644. //------------------------------------------------------------------------------
  11645.  
  11646. const
  11647.   DXVA_ModeNone     : TGUID = (D1:$1b81be00; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11648.   {$EXTERNALSYM DXVA_ModeNone}
  11649.   DXVA_ModeH261_A   : TGUID = (D1:$1b81be01; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11650.   {$EXTERNALSYM DXVA_ModeH261_A}
  11651.   DXVA_ModeH261_B   : TGUID = (D1:$1b81be02; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11652.   {$EXTERNALSYM DXVA_ModeH261_B}
  11653.   DXVA_ModeH263_A   : TGUID = (D1:$1b81be03; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11654.   {$EXTERNALSYM DXVA_ModeH263_A}
  11655.   DXVA_ModeH263_B   : TGUID = (D1:$1b81be04; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11656.   {$EXTERNALSYM DXVA_ModeH263_B}
  11657.   DXVA_ModeH263_C   : TGUID = (D1:$1b81be05; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11658.   {$EXTERNALSYM DXVA_ModeH263_C}
  11659.   DXVA_ModeH263_D   : TGUID = (D1:$1b81be06; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11660.   {$EXTERNALSYM DXVA_ModeH263_D}
  11661.   DXVA_ModeH263_E   : TGUID = (D1:$1b81be07; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11662.   {$EXTERNALSYM DXVA_ModeH263_E}
  11663.   DXVA_ModeH263_F   : TGUID = (D1:$1b81be08; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11664.   {$EXTERNALSYM DXVA_ModeH263_F}
  11665.   DXVA_ModeMPEG1_A  : TGUID = (D1:$1b81be09; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11666.   {$EXTERNALSYM DXVA_ModeMPEG1_A}
  11667.   DXVA_ModeMPEG2_A  : TGUID = (D1:$1b81be0A; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11668.   {$EXTERNALSYM DXVA_ModeMPEG2_A}
  11669.   DXVA_ModeMPEG2_B  : TGUID = (D1:$1b81be0B; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11670.   {$EXTERNALSYM DXVA_ModeMPEG2_B}
  11671.   DXVA_ModeMPEG2_C  : TGUID = (D1:$1b81be0C; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11672.   {$EXTERNALSYM DXVA_ModeMPEG2_C}
  11673.   DXVA_ModeMPEG2_D  : TGUID = (D1:$1b81be0D; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11674.   {$EXTERNALSYM DXVA_ModeMPEG2_D}
  11675.  
  11676.   DXVA_ModeWMV8_A   : TGUID = (D1:$1b81be80 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11677.   {$EXTERNALSYM DXVA_ModeWMV8_A}
  11678.   DXVA_ModeWMV8_B   : TGUID = (D1:$1b81be81 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11679.   {$EXTERNALSYM DXVA_ModeWMV8_B}
  11680.  
  11681.   DXVA_ModeWMV9_A   : TGUID = (D1:$1b81be90 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11682.   {$EXTERNALSYM DXVA_ModeWMV9_A}
  11683.   DXVA_ModeWMV9_B   : TGUID = (D1:$1b81be91 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11684.   {$EXTERNALSYM DXVA_ModeWMV9_B}
  11685.   DXVA_ModeWMV9_Ai  : TGUID = (D1:$1b81be92 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11686.   {$EXTERNALSYM DXVA_ModeWMV9_Ai}
  11687.   DXVA_ModeWMV9_Bi  : TGUID = (D1:$1b81be93 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11688.   {$EXTERNALSYM DXVA_ModeWMV9_Bi}
  11689.  
  11690.   DXVA_NoEncrypt    : TGUID = (D1:$1b81beD0;D2:$a0c7;D3:$11d3;D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11691.   {$EXTERNALSYM DXVA_NoEncrypt}
  11692.   //DXVA_EncryptProt1 : TGUID = (D1:$1b81beD1;D2:$a0c7;D3:$11d3;D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  11693.  
  11694.   DXVA_RESTRICTED_MODE_UNRESTRICTED =       $FFFF;
  11695.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_UNRESTRICTED}
  11696.   DXVA_RESTRICTED_MODE_H261_A  = 1;
  11697.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H261_A}
  11698.   DXVA_RESTRICTED_MODE_H261_B  = 2;
  11699.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H261_B}
  11700.   DXVA_RESTRICTED_MODE_H263_A  = 3;
  11701.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_A}
  11702.   DXVA_RESTRICTED_MODE_H263_B  = 4;
  11703.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_B}
  11704.   DXVA_RESTRICTED_MODE_H263_C  = 5;
  11705.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_C}
  11706.   DXVA_RESTRICTED_MODE_H263_D  = 6;
  11707.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_D}
  11708.   DXVA_RESTRICTED_MODE_H263_E  = 7;
  11709.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_E}
  11710.   DXVA_RESTRICTED_MODE_H263_F  = 8;
  11711.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_F}
  11712.   DXVA_RESTRICTED_MODE_MPEG1_A = 9;
  11713.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG1_A}
  11714.   DXVA_RESTRICTED_MODE_MPEG2_A = $A;
  11715.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_A}
  11716.   DXVA_RESTRICTED_MODE_MPEG2_B = $B;
  11717.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_B}
  11718.   DXVA_RESTRICTED_MODE_MPEG2_C = $C;
  11719.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_C}
  11720.   DXVA_RESTRICTED_MODE_MPEG2_D = $D;
  11721.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_D}
  11722.  
  11723.   DXVA_RESTRICTED_MODE_WMV8_A  = $80;
  11724.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV8_A}
  11725.   DXVA_RESTRICTED_MODE_WMV8_B  = $81;
  11726.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV8_B}
  11727.  
  11728.   DXVA_RESTRICTED_MODE_WMV9_A  = $90;
  11729.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_A}
  11730.   DXVA_RESTRICTED_MODE_WMV9_B  = $91;
  11731.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_B}
  11732.   DXVA_RESTRICTED_MODE_WMV9_Ai = $92;
  11733.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_Ai}
  11734.   DXVA_RESTRICTED_MODE_WMV9_Bi = $93;
  11735.   {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_Bi}
  11736.  
  11737.  
  11738.   DXVA_COMPBUFFER_TYPE_THAT_IS_NOT_USED   = 0;
  11739.   {$EXTERNALSYM DXVA_COMPBUFFER_TYPE_THAT_IS_NOT_USED}
  11740.   DXVA_PICTURE_DECODE_BUFFER              = 1;
  11741.   {$EXTERNALSYM DXVA_PICTURE_DECODE_BUFFER}
  11742.   DXVA_MACROBLOCK_CONTROL_BUFFER          = 2;
  11743.   {$EXTERNALSYM DXVA_MACROBLOCK_CONTROL_BUFFER}
  11744.   DXVA_RESIDUAL_DIFFERENCE_BUFFER         = 3;
  11745.   {$EXTERNALSYM DXVA_RESIDUAL_DIFFERENCE_BUFFER}
  11746.   DXVA_DEBLOCKING_CONTROL_BUFFER          = 4;
  11747.   {$EXTERNALSYM DXVA_DEBLOCKING_CONTROL_BUFFER}
  11748.   DXVA_INVERSE_QUANTIZATION_MATRIX_BUFFER = 5;
  11749.   {$EXTERNALSYM DXVA_INVERSE_QUANTIZATION_MATRIX_BUFFER}
  11750.   DXVA_SLICE_CONTROL_BUFFER               = 6;
  11751.   {$EXTERNALSYM DXVA_SLICE_CONTROL_BUFFER}
  11752.   DXVA_BITSTREAM_DATA_BUFFER              = 7;
  11753.   {$EXTERNALSYM DXVA_BITSTREAM_DATA_BUFFER}
  11754.   DXVA_AYUV_BUFFER                        = 8;
  11755.   {$EXTERNALSYM DXVA_AYUV_BUFFER}
  11756.   DXVA_IA44_SURFACE_BUFFER                = 9;
  11757.   {$EXTERNALSYM DXVA_IA44_SURFACE_BUFFER}
  11758.   DXVA_DPXD_SURFACE_BUFFER                = 10;
  11759.   {$EXTERNALSYM DXVA_DPXD_SURFACE_BUFFER}
  11760.   DXVA_HIGHLIGHT_BUFFER                   = 11;
  11761.   {$EXTERNALSYM DXVA_HIGHLIGHT_BUFFER}
  11762.   DXVA_DCCMD_SURFACE_BUFFER               = 12;
  11763.   {$EXTERNALSYM DXVA_DCCMD_SURFACE_BUFFER}
  11764.   DXVA_ALPHA_BLEND_COMBINATION_BUFFER     = 13;
  11765.   {$EXTERNALSYM DXVA_ALPHA_BLEND_COMBINATION_BUFFER}
  11766.   DXVA_PICTURE_RESAMPLE_BUFFER            = 14;
  11767.   {$EXTERNALSYM DXVA_PICTURE_RESAMPLE_BUFFER}
  11768.   DXVA_READ_BACK_BUFFER                   = 15;
  11769.   {$EXTERNALSYM DXVA_READ_BACK_BUFFER}
  11770.  
  11771.   DXVA_NUM_TYPES_COMP_BUFFERS             = 16;
  11772.   {$EXTERNALSYM DXVA_NUM_TYPES_COMP_BUFFERS}
  11773.  
  11774.   // values for bDXVA_Func
  11775.   DXVA_PICTURE_DECODING_FUNCTION        = 1;
  11776.   {$EXTERNALSYM DXVA_PICTURE_DECODING_FUNCTION}
  11777.   DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION   = 2;
  11778.   {$EXTERNALSYM DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION}
  11779.   DXVA_ALPHA_BLEND_COMBINATION_FUNCTION = 3;
  11780.   {$EXTERNALSYM DXVA_ALPHA_BLEND_COMBINATION_FUNCTION}
  11781.   DXVA_PICTURE_RESAMPLE_FUNCTION        = 4;
  11782.   {$EXTERNALSYM DXVA_PICTURE_RESAMPLE_FUNCTION}
  11783.  
  11784.   // values returned from Execute command in absence of read-back
  11785.   DXVA_EXECUTE_RETURN_OK                 = 0;
  11786.   {$EXTERNALSYM DXVA_EXECUTE_RETURN_OK}
  11787.   DXVA_EXECUTE_RETURN_DATA_ERROR_MINOR   = 1;
  11788.   {$EXTERNALSYM DXVA_EXECUTE_RETURN_DATA_ERROR_MINOR}
  11789.   DXVA_EXECUTE_RETURN_DATA_ERROR_SIGNIF  = 2;
  11790.   {$EXTERNALSYM DXVA_EXECUTE_RETURN_DATA_ERROR_SIGNIF}
  11791.   DXVA_EXECUTE_RETURN_DATA_ERROR_SEVERE  = 3;
  11792.   {$EXTERNALSYM DXVA_EXECUTE_RETURN_DATA_ERROR_SEVERE}
  11793.   DXVA_EXECUTE_RETURN_OTHER_ERROR_SEVERE = 4;
  11794.   {$EXTERNALSYM DXVA_EXECUTE_RETURN_OTHER_ERROR_SEVERE}
  11795.  
  11796. type
  11797.   PDXVAConnectMode = ^TDXVAConnectMode;
  11798.   _DXVA_ConnectMode = record
  11799.      guidMode        : TGUID;
  11800.      wRestrictedMode : WORD;
  11801.   end;
  11802.   {$EXTERNALSYM _DXVA_ConnectMode}
  11803.   DXVA_ConnectMode = _DXVA_ConnectMode;
  11804.   {$EXTERNALSYM DXVA_ConnectMode}
  11805.   LPDXVA_ConnectMode = ^DXVA_ConnectMode;
  11806.   {$EXTERNALSYM LPDXVA_ConnectMode}
  11807.   TDXVAConnectMode = _DXVA_ConnectMode;
  11808.  
  11809.   DXVA_ConfigQueryOrReplyFunc = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  11810.   {$EXTERNALSYM DXVA_ConfigQueryOrReplyFunc}
  11811.   LPDXVA_ConfigQueryOrReplyFunc = ^DXVA_ConfigQueryOrReplyFunc;
  11812.   {$EXTERNALSYM LPDXVA_ConfigQueryOrReplyFunc}
  11813.  
  11814. const
  11815.   DXVA_QUERYORREPLYFUNCFLAG_DECODER_PROBE_QUERY    = $FFFFF1;
  11816.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_DECODER_PROBE_QUERY}
  11817.   DXVA_QUERYORREPLYFUNCFLAG_DECODER_LOCK_QUERY     = $FFFFF5;
  11818.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_DECODER_LOCK_QUERY}
  11819.   DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_COPY    = $FFFFF8;
  11820.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_COPY}
  11821.   DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_PLUS    = $FFFFF9;
  11822.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_PLUS}
  11823.   DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_OK_COPY     = $FFFFFC;
  11824.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_OK_COPY}
  11825.   DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_FALSE_PLUS = $FFFFFB;
  11826.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_FALSE_PLUS}
  11827.   DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_FALSE_PLUS  = $FFFFFF;
  11828.   {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_FALSE_PLUS}
  11829.  
  11830. {
  11831. #define readDXVA_QueryOrReplyFuncFlag(ptr)        ((*(ptr)) >> 8)
  11832. #define readDXVA_QueryOrReplyFuncFlag_ACCEL(ptr)  (((*(ptr)) >> 11) & 1)
  11833. #define readDXVA_QueryOrReplyFuncFlag_LOCK(ptr)   (((*(ptr)) >> 10) & 1)
  11834. #define readDXVA_QueryOrReplyFuncFlag_BAD(ptr)    (((*(ptr)) >>  9) & 1)
  11835. #define readDXVA_QueryOrReplyFuncFlag_PLUS(ptr)   (((*(ptr)) >>  8) & 1)
  11836. #define readDXVA_QueryOrReplyFuncFunc(ptr)        ((*(ptr)) & 0xFF)
  11837. #define writeDXVA_QueryOrReplyFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc))
  11838. #define setDXVA_QueryOrReplyFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8))
  11839. #define setDXVA_QueryOrReplyFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc));
  11840. }
  11841.  
  11842. type
  11843.   DXVA_EncryptProtocolFunc = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  11844.   {$EXTERNALSYM DXVA_EncryptProtocolFunc}
  11845.   LPDXVA_EncryptProtocolFunc = ^DXVA_EncryptProtocolFunc;
  11846.   {$EXTERNALSYM LPDXVA_EncryptProtocolFunc}
  11847.  
  11848. const
  11849.   DXVA_ENCRYPTPROTOCOLFUNCFLAG_HOST  = $FFFF00;
  11850.   {$EXTERNALSYM DXVA_ENCRYPTPROTOCOLFUNCFLAG_HOST}
  11851.   DXVA_ENCRYPTPROTOCOLFUNCFLAG_ACCEL = $FFFF08;
  11852.   {$EXTERNALSYM DXVA_ENCRYPTPROTOCOLFUNCFLAG_ACCEL}
  11853.  
  11854. {
  11855. #define readDXVA_EncryptProtocolFuncFlag(ptr)        ((*(ptr)) >> 8)
  11856. #define readDXVA_EncryptProtocolFuncFlag_ACCEL(ptr)  (((*(ptr)) >> 11) & 1)
  11857. #define readDXVA_EncryptProtocolFuncFunc(ptr)        ((*(ptr)) & 0xFF)
  11858. #define writeDXVA_EncryptProtocolFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc))
  11859. #define setDXVA_EncryptProtocolFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8))
  11860. #define setDXVA_EncryptProtocolFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc));
  11861. }
  11862.  
  11863. type
  11864.   PDXVAEncryptProtocolHeader = ^TDXVAEncryptProtocolHeader;
  11865.   _DXVA_EncryptProtocolHeader = record
  11866.     dwFunction          : DXVA_EncryptProtocolFunc;
  11867.     ReservedBits        : array [0..2] of LongWord;
  11868.     guidEncryptProtocol : TGUID;
  11869.   end;
  11870.   {$EXTERNALSYM _DXVA_EncryptProtocolHeader}
  11871.   DXVA_EncryptProtocolHeader = _DXVA_EncryptProtocolHeader;
  11872.   {$EXTERNALSYM DXVA_EncryptProtocolHeader}
  11873.   LPDXVA_EncryptProtocolHeader = ^DXVA_EncryptProtocolHeader;
  11874.   {$EXTERNALSYM LPDXVA_EncryptProtocolHeader}
  11875.   TDXVAEncryptProtocolHeader = _DXVA_EncryptProtocolHeader;
  11876.  
  11877.   PDXVAConfigPictureDecode = ^TDXVAConfigPictureDecode;
  11878.   _DXVA_ConfigPictureDecode = record
  11879.     // Operation Indicated
  11880.     dwFunction: DXVA_ConfigQueryOrReplyFunc;
  11881.     // Alignment
  11882.     dwReservedBits : array[0..2] of DWORD;
  11883.     // Encryption GUIDs
  11884.     guidConfigBitstreamEncryption  : TGUID;
  11885.     guidConfigMBcontrolEncryption  : TGUID;
  11886.     guidConfigResidDiffEncryption  : TGUID;
  11887.     // Bitstream Processing Indicator
  11888.     bConfigBitstreamRaw            : BYTE;
  11889.     // Macroblock Control Config
  11890.     bConfigMBcontrolRasterOrder    : BYTE;
  11891.     // Host Resid Diff Config
  11892.     bConfigResidDiffHost           : BYTE;
  11893.     bConfigSpatialResid8           : BYTE;
  11894.     bConfigResid8Subtraction       : BYTE;
  11895.     bConfigSpatialHost8or9Clipping : BYTE;
  11896.     bConfigSpatialResidInterleaved : BYTE;
  11897.     bConfigIntraResidUnsigned      : BYTE;
  11898.     // Accelerator Resid Diff Config
  11899.     bConfigResidDiffAccelerator    : BYTE;
  11900.     bConfigHostInverseScan         : BYTE;
  11901.     bConfigSpecificIDCT            : BYTE;
  11902.     bConfig4GroupedCoefs           : BYTE;
  11903.   end;
  11904.   {$EXTERNALSYM _DXVA_ConfigPictureDecode}
  11905.   DXVA_ConfigPictureDecode = _DXVA_ConfigPictureDecode;
  11906.   {$EXTERNALSYM DXVA_ConfigPictureDecode}
  11907.   LPDXVA_ConfigPictureDecode = ^DXVA_ConfigPictureDecode;
  11908.   {$EXTERNALSYM LPDXVA_ConfigPictureDecode}
  11909.   TDXVAConfigPictureDecode = _DXVA_ConfigPictureDecode;
  11910.  
  11911.   // Picture Decoding Parameters
  11912.   PDXVAPictureParameters = ^TDXVAPictureParameters;
  11913.   _DXVA_PictureParameters = record
  11914.     wDecodedPictureIndex          : WORD;
  11915.     wDeblockedPictureIndex        : WORD;
  11916.     wForwardRefPictureIndex       : WORD;
  11917.     wBackwardRefPictureIndex      : WORD;
  11918.     wPicWidthInMBminus1           : WORD;
  11919.     wPicHeightInMBminus1          : WORD;
  11920.     bMacroblockWidthMinus1        : BYTE;
  11921.     bMacroblockHeightMinus1       : BYTE;
  11922.     bBlockWidthMinus1             : BYTE;
  11923.     bBlockHeightMinus1            : BYTE;
  11924.     bBPPminus1                    : BYTE;
  11925.     bPicStructure                 : BYTE;
  11926.     bSecondField                  : BYTE;
  11927.     bPicIntra                     : BYTE;
  11928.     bPicBackwardPrediction        : BYTE;
  11929.     bBidirectionalAveragingMode   : BYTE;
  11930.     bMVprecisionAndChromaRelation : BYTE;
  11931.     bChromaFormat                 : BYTE;
  11932.     bPicScanFixed                 : BYTE;
  11933.     bPicScanMethod                : BYTE;
  11934.     bPicReadbackRequests          : BYTE;
  11935.     bRcontrol                     : BYTE;
  11936.     bPicSpatialResid8             : BYTE;
  11937.     bPicOverflowBlocks            : BYTE;
  11938.     bPicExtrapolation             : BYTE;
  11939.     bPicDeblocked                 : BYTE;
  11940.     bPicDeblockConfined           : BYTE;
  11941.     bPic4MVallowed                : BYTE;
  11942.     bPicOBMC                      : BYTE;
  11943.     bPicBinPB                     : BYTE;
  11944.     bMV_RPS                       : BYTE;
  11945.     bReservedBits                 : BYTE;
  11946.     wBitstreamFcodes              : WORD;
  11947.     wBitstreamPCEelements         : WORD;
  11948.     bBitstreamConcealmentNeed     : BYTE;
  11949.     bBitstreamConcealmentMethod   : BYTE;
  11950.   end;
  11951.   {$EXTERNALSYM _DXVA_PictureParameters}
  11952.   DXVA_PictureParameters = _DXVA_PictureParameters;
  11953.   {$EXTERNALSYM DXVA_PictureParameters}
  11954.   LPDXVA_PictureParameters = ^DXVA_PictureParameters;
  11955.   {$EXTERNALSYM LPDXVA_PictureParameters}
  11956.   TDXVAPictureParameters = _DXVA_PictureParameters;
  11957.  
  11958.   // Picture Resampling
  11959.   PDXVAPicResample = ^TDXVAPicResample;
  11960.   _DXVA_PicResample = record
  11961.     wPicResampleSourcePicIndex  : WORD;
  11962.     wPicResampleDestPicIndex    : WORD;
  11963.     wPicResampleRcontrol        : WORD;
  11964.     bPicResampleExtrapWidth     : BYTE;
  11965.     bPicResampleExtrapHeight    : BYTE;
  11966.     dwPicResampleSourceWidth    : DWORD;
  11967.     dwPicResampleSourceHeight   : DWORD;
  11968.     dwPicResampleDestWidth      : DWORD;
  11969.     dwPicResampleDestHeight     : DWORD;
  11970.     dwPicResampleFullDestWidth  : DWORD;
  11971.     dwPicResampleFullDestHeight : DWORD;
  11972.   end;
  11973.   {$EXTERNALSYM _DXVA_PicResample}
  11974.   DXVA_PicResample = _DXVA_PicResample;
  11975.   {$EXTERNALSYM DXVA_PicResample}
  11976.   LPDXVA_PicResample = ^DXVA_PicResample;
  11977.   {$EXTERNALSYM LPDXVA_PicResample}
  11978.   TDXVAPicResample = _DXVA_PicResample;
  11979.  
  11980. const
  11981.   DXVA_CHROMA_FORMAT_420 = 1;
  11982.   {$EXTERNALSYM DXVA_CHROMA_FORMAT_420}
  11983.   DXVA_CHROMA_FORMAT_422 = 2;
  11984.   {$EXTERNALSYM DXVA_CHROMA_FORMAT_422}
  11985.   DXVA_CHROMA_FORMAT_444 = 3;
  11986.   {$EXTERNALSYM DXVA_CHROMA_FORMAT_444}
  11987.  
  11988.   DXVA_PICTURE_STRUCTURE_TOP_FIELD    = 1;
  11989.   {$EXTERNALSYM DXVA_PICTURE_STRUCTURE_TOP_FIELD}
  11990.   DXVA_PICTURE_STRUCTURE_BOTTOM_FIELD = 2;
  11991.   {$EXTERNALSYM DXVA_PICTURE_STRUCTURE_BOTTOM_FIELD}
  11992.   DXVA_PICTURE_STRUCTURE_FRAME        = 3;
  11993.   {$EXTERNALSYM DXVA_PICTURE_STRUCTURE_FRAME}
  11994.  
  11995.   DXVA_BIDIRECTIONAL_AVERAGING_MPEG2_ROUND = 0;
  11996.   {$EXTERNALSYM DXVA_BIDIRECTIONAL_AVERAGING_MPEG2_ROUND}
  11997.   DXVA_BIDIRECTIONAL_AVERAGING_H263_TRUNC  = 1;
  11998.   {$EXTERNALSYM DXVA_BIDIRECTIONAL_AVERAGING_H263_TRUNC}
  11999.  
  12000.   DXVA_MV_PRECISION_AND_CHROMA_RELATION_MPEG2 = 0;
  12001.   {$EXTERNALSYM DXVA_MV_PRECISION_AND_CHROMA_RELATION_MPEG2}
  12002.   DXVA_MV_PRECISION_AND_CHROMA_RELATION_H263  = 1;
  12003.   {$EXTERNALSYM DXVA_MV_PRECISION_AND_CHROMA_RELATION_H263}
  12004.   DXVA_MV_PRECISION_AND_CHROMA_RELATION_H261  = 2;
  12005.   {$EXTERNALSYM DXVA_MV_PRECISION_AND_CHROMA_RELATION_H261}
  12006.  
  12007.   DXVA_SCAN_METHOD_ZIG_ZAG              = 0;
  12008.   {$EXTERNALSYM DXVA_SCAN_METHOD_ZIG_ZAG}
  12009.   DXVA_SCAN_METHOD_ALTERNATE_VERTICAL   = 1;
  12010.   {$EXTERNALSYM DXVA_SCAN_METHOD_ALTERNATE_VERTICAL}
  12011.   DXVA_SCAN_METHOD_ALTERNATE_HORIZONTAL = 2;
  12012.   {$EXTERNALSYM DXVA_SCAN_METHOD_ALTERNATE_HORIZONTAL}
  12013.   DXVA_SCAN_METHOD_ARBITRARY            = 3;
  12014.   {$EXTERNALSYM DXVA_SCAN_METHOD_ARBITRARY}
  12015.  
  12016.   DXVA_BITSTREAM_CONCEALMENT_NEED_UNLIKELY = 0;
  12017.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_UNLIKELY}
  12018.   DXVA_BITSTREAM_CONCEALMENT_NEED_MILD     = 1;
  12019.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_MILD}
  12020.   DXVA_BITSTREAM_CONCEALMENT_NEED_LIKELY   = 2;
  12021.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_LIKELY}
  12022.   DXVA_BITSTREAM_CONCEALMENT_NEED_SEVERE   = 3;
  12023.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_SEVERE}
  12024.  
  12025.   DXVA_BITSTREAM_CONCEALMENT_METHOD_UNSPECIFIED = 0;
  12026.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_UNSPECIFIED}
  12027.   DXVA_BITSTREAM_CONCEALMENT_METHOD_INTRA       = 1;
  12028.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_INTRA}
  12029.   DXVA_BITSTREAM_CONCEALMENT_METHOD_FORWARD     = 2;
  12030.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_FORWARD}
  12031.   DXVA_BITSTREAM_CONCEALMENT_METHOD_BACKWARD    = 3;
  12032.   {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_BACKWARD}
  12033.  
  12034.  
  12035. Type
  12036.   // Buffer Description Data
  12037.   PDXVABufferDescription = ^TDXVABufferDescription;
  12038.   _DXVA_BufferDescription = record
  12039.     dwTypeIndex      : DWORD;
  12040.     dwBufferIndex    : DWORD;
  12041.     dwDataOffset     : DWORD;
  12042.     dwDataSize       : DWORD;
  12043.     dwFirstMBaddress : DWORD;
  12044.     dwNumMBsInBuffer : DWORD;
  12045.     dwWidth          : DWORD;
  12046.     dwHeight         : DWORD;
  12047.     dwStride         : DWORD;
  12048.     dwReservedBits   : DWORD;
  12049.   end;
  12050.   {$EXTERNALSYM _DXVA_BufferDescription}
  12051.   DXVA_BufferDescription = _DXVA_BufferDescription;
  12052.   {$EXTERNALSYM DXVA_BufferDescription}
  12053.   LPDXVA_BufferDescription = ^DXVA_BufferDescription;
  12054.   {$EXTERNALSYM LPDXVA_BufferDescription}
  12055.   TDXVABufferDescription = _DXVA_BufferDescription;
  12056.  
  12057.   // Off-Host IDCT Coefficient Data Structures
  12058.   PDXVATCoef4Group = ^TDXVATCoef4Group;
  12059.   _DXVA_TCoef4Group = record
  12060.     TCoefIDX   : array [0..3] of BYTE;
  12061.     TCoefValue : array [0..3] of smallint;
  12062.   end;
  12063.   {$EXTERNALSYM _DXVA_TCoef4Group}
  12064.   DXVA_TCoef4Group = _DXVA_TCoef4Group;
  12065.   {$EXTERNALSYM DXVA_TCoef4Group}
  12066.   LPDXVA_TCoef4Group = ^DXVA_TCoef4Group;
  12067.   {$EXTERNALSYM LPDXVA_TCoef4Group}
  12068.   TDXVATCoef4Group = _DXVA_TCoef4Group;
  12069.  
  12070.   PDXVATCoefSingle = ^TDXVATCoefSingle;
  12071.   _DXVA_TCoefSingle = record
  12072.     wIndexWithEOB : WORD;
  12073.     TCoefValue    : smallint;
  12074.   end;
  12075.   {$EXTERNALSYM _DXVA_TCoefSingle}
  12076.   DXVA_TCoefSingle = _DXVA_TCoefSingle;
  12077.   {$EXTERNALSYM DXVA_TCoefSingle}
  12078.   LPDXVA_TCoefSingle = ^DXVA_TCoefSingle;
  12079.   {$EXTERNALSYM LPDXVA_TCoefSingle}
  12080.   TDXVATCoefSingle = _DXVA_TCoefSingle;
  12081.  
  12082. // Macros for Reading EOB and Index Values
  12083. {
  12084. #define readDXVA_TCoefSingleIDX(ptr) ((ptr)->wIndexWithEOB >> 1)
  12085. #define readDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB & 1)
  12086. }
  12087. // Macro for Writing EOB and Index Values
  12088. {
  12089. #define writeDXVA_TCoefSingleIndexWithEOB(ptr, idx, eob) ((ptr)->wIndexWithEOB = ((idx) << 1) | (eob))
  12090. #define setDXVA_TCoefSingleIDX(ptr, idx) ((ptr)->wIndexWithEOB |= ((idx) << 1))
  12091. #define setDXVA_TCoefSingleEOB(ptr)      ((ptr)->wIndexWithEOB |= 1)
  12092. }
  12093.  
  12094. const
  12095.   // Spatial-Domain Residual Difference Blocks
  12096.   DXVA_USUAL_BLOCK_WIDTH  = 8;
  12097.   {$EXTERNALSYM DXVA_USUAL_BLOCK_WIDTH}
  12098.   DXVA_USUAL_BLOCK_HEIGHT = 8;
  12099.   {$EXTERNALSYM DXVA_USUAL_BLOCK_HEIGHT}
  12100.   DXVA_USUAL_BLOCK_SIZE   = (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT);
  12101.   {$EXTERNALSYM DXVA_USUAL_BLOCK_SIZE}
  12102.  
  12103. type
  12104.   DXVA_Sample16 = array[0..DXVA_USUAL_BLOCK_SIZE-1] of smallint;
  12105.   {$EXTERNALSYM DXVA_Sample16}
  12106.   DXVA_Sample8  = array[0..DXVA_USUAL_BLOCK_SIZE-1] of Shortint;
  12107.   {$EXTERNALSYM DXVA_Sample8}
  12108.  
  12109.   // Deblocking Filter Control Structure
  12110.   DXVA_DeblockingEdgeControl = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BYTE;
  12111.   {$EXTERNALSYM DXVA_DeblockingEdgeControl}
  12112.   LPDXVA_DeblockingEdgeControl= ^DXVA_DeblockingEdgeControl;
  12113.   {$EXTERNALSYM LPDXVA_DeblockingEdgeControl}
  12114.  
  12115. // Macros for Reading STRENGTH and FilterOn
  12116. {
  12117. #define readDXVA_EdgeFilterStrength(ptr) ((*(ptr)) >> 1)
  12118. #define readDXVA_EdgeFilterOn(ptr)       ((*(ptr)) & 1)
  12119. }
  12120. // Macro for Writing STRENGTH and FilterOn
  12121. {
  12122. #define writeDXVA_DeblockingEdgeControl(ptr, str, fon) ((*(ptr)) = ((str) << 1) | (fon))
  12123. #define setDXVA_EdgeFilterStrength(ptr, str)           ((*(ptr)) |= ((str) << 1))
  12124. #define setDXVA_EdgeFilterOn(ptr)                      ((*(ptr)) |= 1)
  12125. }
  12126.  
  12127.   // Macroblock Control Command Data Structures */
  12128.   PDXVAMVvalue = ^TDXVAMVvalue;
  12129.   _DXVA_MVvalue = record
  12130.     horz,vert : smallint;
  12131.    end;
  12132.   {$EXTERNALSYM _DXVA_MVvalue}
  12133.   DXVA_MVvalue = _DXVA_MVvalue;
  12134.   {$EXTERNALSYM DXVA_MVvalue}
  12135.   LPDXVA_MVvalue = ^DXVA_MVvalue;
  12136.   {$EXTERNALSYM LPDXVA_MVvalue}
  12137.   TDXVAMVvalue = _DXVA_MVvalue;
  12138.  
  12139.   // Inverse Quantization Matrices
  12140.   PDXVAQmatrixData = ^TDXVAQmatrixData;
  12141.   _DXVA_QmatrixData = record
  12142.     bNewQmatrix : array [0..3] of BYTE;
  12143.     // intra Y, inter Y, intra chroma, inter chroma
  12144.     Qmatrix : array [0..3,0..(DXVA_USUAL_BLOCK_WIDTH*DXVA_USUAL_BLOCK_HEIGHT)-1] of WORD;
  12145.   end;
  12146.   {$EXTERNALSYM _DXVA_QmatrixData}
  12147.   DXVA_QmatrixData = _DXVA_QmatrixData;
  12148.   {$EXTERNALSYM DXVA_QmatrixData}
  12149.   LPDXVA_QmatrixData = ^DXVA_QmatrixData;
  12150.   {$EXTERNALSYM LPDXVA_QmatrixData}
  12151.   TDXVAQmatrixData = _DXVA_QmatrixData;
  12152.  
  12153.   // Slice Control Buffer Data
  12154.   PDXVASliceInfo = ^TDXVASliceInfo;
  12155.   _DXVA_SliceInfo = record
  12156.     wHorizontalPosition : WORD;
  12157.     wVerticalPosition   : WORD;
  12158.     dwSliceBitsInBuffer : LongWord;
  12159.     dwSliceDataLocation : LongWord;
  12160.     bStartCodeBitOffset : BYTE;
  12161.     bReservedBits       : BYTE;
  12162.     wMBbitOffset        : WORD;
  12163.     wNumberMBsInSlice   : WORD;
  12164.     wQuantizerScaleCode : WORD;
  12165.     wBadSliceChopping   : WORD;
  12166.   end;
  12167.   {$EXTERNALSYM _DXVA_SliceInfo}
  12168.   DXVA_SliceInfo = _DXVA_SliceInfo;
  12169.   {$EXTERNALSYM DXVA_SliceInfo}
  12170.   LPDXVA_SliceInfo = ^DXVA_SliceInfo;
  12171.   {$EXTERNALSYM LPDXVA_SliceInfo}
  12172.   TDXVASliceInfo = _DXVA_SliceInfo;
  12173.  
  12174. const
  12175.   DXVA_NumMV_OBMC_off_BinPBwith4MV_off = 4;
  12176.   {$EXTERNALSYM DXVA_NumMV_OBMC_off_BinPBwith4MV_off}
  12177.   DXVA_NumMV_OBMC_off_BinPBwith4MV_on  = (4+1);
  12178.   {$EXTERNALSYM DXVA_NumMV_OBMC_off_BinPBwith4MV_on}
  12179.   DXVA_NumMV_OBMC_on__BinPB_off        = (10);
  12180.   {$EXTERNALSYM DXVA_NumMV_OBMC_on__BinPB_off}
  12181.   DXVA_NumMV_OBMC_on__BinPB_on         = (11); // not current standards
  12182.   {$EXTERNALSYM DXVA_NumMV_OBMC_on__BinPB_on}
  12183.  
  12184.   DXVA_NumBlocksPerMB_420 = (4+2+0);
  12185.   {$EXTERNALSYM DXVA_NumBlocksPerMB_420}
  12186.   DXVA_NumBlocksPerMB_422 = (4+2+2);
  12187.   {$EXTERNALSYM DXVA_NumBlocksPerMB_422}
  12188.   DXVA_NumBlocksPerMB_444 = (4+4+4);
  12189.   {$EXTERNALSYM DXVA_NumBlocksPerMB_444}
  12190.  
  12191. type
  12192.   // Basic form for I pictures
  12193.   // Host Residual Differences
  12194.   _DXVA_MBctrl_I_HostResidDiff_1 = record
  12195.     wMBaddress      : WORD;
  12196.     wMBtype         : WORD;
  12197.     dwMB_SNL        : LongWord;
  12198.     wPatternCode    : WORD;
  12199.     wPC_Overflow    : WORD;
  12200.     // zero if not overflow format
  12201.     dwReservedBits2 : LongWord;
  12202.   end;
  12203.   {$EXTERNALSYM _DXVA_MBctrl_I_HostResidDiff_1}
  12204.   DXVA_MBctrl_I_HostResidDiff_1 = _DXVA_MBctrl_I_HostResidDiff_1;
  12205.   {$EXTERNALSYM DXVA_MBctrl_I_HostResidDiff_1}
  12206.   TDXVAMBctrlIHostResidDiff1 = _DXVA_MBctrl_I_HostResidDiff_1;
  12207.  
  12208.   // Basic form for I pictures
  12209.   // Off-Host IDCT, 4:2:0 sampling
  12210.   _DXVA_MBctrl_I_OffHostIDCT_1 = record
  12211.     wMBaddress   : WORD;
  12212.     wMBtype      : WORD;
  12213.     dwMB_SNL     : LongWord;
  12214.     wPatternCode : WORD;
  12215.     bNumCoef     : array [0..DXVA_NumBlocksPerMB_420-1] of BYTE;
  12216.   end;
  12217.   {$EXTERNALSYM _DXVA_MBctrl_I_OffHostIDCT_1}
  12218.   DXVA_MBctrl_I_OffHostIDCT_1 = _DXVA_MBctrl_I_OffHostIDCT_1;
  12219.   {$EXTERNALSYM DXVA_MBctrl_I_OffHostIDCT_1}
  12220.   TDXVAMBctrlIOffHostIDCT1 = _DXVA_MBctrl_I_OffHostIDCT_1;
  12221.  
  12222.   // Basic form for P and B pictures
  12223.   // Should also be used for concealment MVs in MPEG-2 I pictures
  12224.   // Without OBMC, without BinPB and 4MV together, without MV RPS
  12225.   // Host Residual Differences
  12226.   _DXVA_MBctrl_P_HostResidDiff_1 = record
  12227.     wMBaddress   : WORD;
  12228.     wMBtype      : WORD;
  12229.     dwMB_SNL     : LongWord;
  12230.     wPatternCode : WORD;
  12231.     wPC_Overflow : WORD;
  12232.     // zero if not overflow format
  12233.     dwReservedBits2 : LongWord;
  12234.     MVector : array [0..DXVA_NumMV_OBMC_off_BinPBwith4MV_off-1] of TDXVAMVvalue;
  12235.   end;
  12236.   {$EXTERNALSYM _DXVA_MBctrl_P_HostResidDiff_1}
  12237.   DXVA_MBctrl_P_HostResidDiff_1 = _DXVA_MBctrl_P_HostResidDiff_1;
  12238.   {$EXTERNALSYM DXVA_MBctrl_P_HostResidDiff_1}
  12239.   TDXVAMBctrlPHostResidDiff1 = _DXVA_MBctrl_P_HostResidDiff_1;
  12240.  
  12241.   // Basic form for P and B pictures
  12242.   // Without OBMC, without BinPB and 4MV together, without MV RPS
  12243.   // Off-Host IDCT, 4:2:0 sampling
  12244.   _DXVA_MBctrl_P_OffHostIDCT_1 = record
  12245.     wMBaddress : WORD;
  12246.     wMBtype : WORD;
  12247.     dwMB_SNL : LongWord;
  12248.     wPatternCode : WORD;
  12249.     bNumCoef : array [0..DXVA_NumBlocksPerMB_420-1] of BYTE;
  12250.     MVector : array [0..DXVA_NumMV_OBMC_off_BinPBwith4MV_off-1] of TDXVAMVvalue;
  12251.   end;
  12252.   {$EXTERNALSYM _DXVA_MBctrl_P_OffHostIDCT_1}
  12253.   DXVA_MBctrl_P_OffHostIDCT_1 = _DXVA_MBctrl_P_OffHostIDCT_1;
  12254.   {$EXTERNALSYM DXVA_MBctrl_P_OffHostIDCT_1}
  12255.   TDXVAMBctrlPOffHostIDCT1 = _DXVA_MBctrl_P_OffHostIDCT_1;
  12256.  
  12257.   // How to load alpha blending graphic data
  12258.   PDXVAConfigAlphaLoad = ^TDXVAConfigAlphaLoad;
  12259.   _DXVA_ConfigAlphaLoad = record
  12260.     // Operation Indicated
  12261.     dwFunction: DXVA_ConfigQueryOrReplyFunc ;
  12262.     // Alignment
  12263.     dwReservedBits: array[0..2] of DWORD;
  12264.     bConfigDataType: BYTE;
  12265.   end;
  12266.   {$EXTERNALSYM _DXVA_ConfigAlphaLoad}
  12267.   DXVA_ConfigAlphaLoad = _DXVA_ConfigAlphaLoad;
  12268.   {$EXTERNALSYM DXVA_ConfigAlphaLoad}
  12269.   LPDXVA_ConfigAlphaLoad = ^DXVA_ConfigAlphaLoad;
  12270.   {$EXTERNALSYM LPDXVA_ConfigAlphaLoad}
  12271.   TDXVAConfigAlphaLoad = _DXVA_ConfigAlphaLoad;
  12272.  
  12273. const
  12274.   DXVA_CONFIG_DATA_TYPE_IA44 = 0;
  12275.   {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_IA44}
  12276.   DXVA_CONFIG_DATA_TYPE_AI44 = 1;
  12277.   {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_AI44}
  12278.   DXVA_CONFIG_DATA_TYPE_DPXD = 2;
  12279.   {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_DPXD}
  12280.   DXVA_CONFIG_DATA_TYPE_AYUV = 3;
  12281.   {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_AYUV}
  12282.  
  12283.  
  12284. // How to combine alpha blending graphic data
  12285. type
  12286.   PDXVAConfigAlphaCombine = ^TDXVAConfigAlphaCombine;
  12287.   _DXVA_ConfigAlphaCombine = record
  12288.     // Operation Indicated
  12289.     dwFunction: DXVA_ConfigQueryOrReplyFunc;
  12290.     // Alignment
  12291.     dwReservedBits: array[0..2] of DWORD;
  12292.     bConfigBlendType: BYTE;
  12293.     bConfigPictureResizing: BYTE;
  12294.     bConfigOnlyUsePicDestRectArea: BYTE;
  12295.     bConfigGraphicResizing: BYTE;
  12296.     bConfigWholePlaneAlpha: BYTE;
  12297.   end;
  12298.   {$EXTERNALSYM _DXVA_ConfigAlphaCombine}
  12299.   DXVA_ConfigAlphaCombine = _DXVA_ConfigAlphaCombine;
  12300.   {$EXTERNALSYM DXVA_ConfigAlphaCombine}
  12301.   LPDXVA_ConfigAlphaCombine = ^DXVA_ConfigAlphaCombine;
  12302.   {$EXTERNALSYM LPDXVA_ConfigAlphaCombine}
  12303.   TDXVAConfigAlphaCombine = _DXVA_ConfigAlphaCombine;
  12304.  
  12305. const
  12306.   DXVA_CONFIG_BLEND_TYPE_FRONT_BUFFER  = 0;
  12307.   {$EXTERNALSYM DXVA_CONFIG_BLEND_TYPE_FRONT_BUFFER}
  12308.   DXVA_CONFIG_BLEND_TYPE_BACK_HARDWARE = 1;
  12309.   {$EXTERNALSYM DXVA_CONFIG_BLEND_TYPE_BACK_HARDWARE}
  12310.  
  12311. // AYUV sample for 16-entry YUV palette or graphic surface
  12312. type
  12313.   PDXVAAYUVsample2 = ^TDXVAAYUVsample2;
  12314.   _DXVA_AYUVsample2 = record
  12315.     bCrValue      : BYTE;
  12316.     bCbValue      : BYTE;
  12317.     bY_Value      : BYTE;
  12318.     bSampleAlpha8 : BYTE;
  12319.   end;
  12320.   {$EXTERNALSYM _DXVA_AYUVsample2}
  12321.   DXVA_AYUVsample2 = _DXVA_AYUVsample2;
  12322.   {$EXTERNALSYM DXVA_AYUVsample2}
  12323.   LPDXVA_AYUVsample2 = ^DXVA_AYUVsample2;
  12324.   {$EXTERNALSYM LPDXVA_AYUVsample2}
  12325.   TDXVAAYUVsample2 = _DXVA_AYUVsample2;
  12326.  
  12327.   // Macros for IA44 alpha blending surface samples
  12328.   DXVA_AI44sample   = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BYTE;
  12329.   {$EXTERNALSYM DXVA_AI44sample}
  12330.   LPDXVA_AI44sample = ^DXVA_AI44sample;
  12331.   {$EXTERNALSYM LPDXVA_AI44sample}
  12332.  
  12333. {
  12334. #define readDXVA_AI44index(ptr)  ((*(ptr)) & 0x0F)
  12335. #define readDXVA_AI44alpha(ptr) (((*(ptr)) & 0xF0) >> 4)
  12336. #define writeDXVA_AI44(ptr, idx, alpha) ((*(ptr)) = (((alpha) << 4) | (idx)))
  12337. #define setDXVA_AI44index(ptr, idx)    ((*(ptr)) |= (idx))
  12338. #define setDXVA_AI44alpha(ptr, alpha)  ((*(ptr)) |= ((alpha) << 4))
  12339. }
  12340.  
  12341.   // Highlight data structure
  12342.   PDXVAHighlight = ^TDXVAHighlight;
  12343.   _DXVA_Highlight = record
  12344.     wHighlightActive  : WORD;
  12345.     wHighlightIndices : WORD;
  12346.     wHighlightAlphas  : WORD;
  12347.     HighlightRect     : TRect;
  12348.   end;
  12349.   {$EXTERNALSYM _DXVA_Highlight}
  12350.   DXVA_Highlight = _DXVA_Highlight;
  12351.   {$EXTERNALSYM DXVA_Highlight}
  12352.   LPDXVA_Highlight = ^DXVA_Highlight;
  12353.   {$EXTERNALSYM LPDXVA_Highlight}
  12354.   TDXVAHighlight = _DXVA_Highlight;
  12355.  
  12356.   DXVA_DPXD = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BYTE;
  12357.   {$EXTERNALSYM DXVA_DPXD}
  12358.   LPDXVA_DPXD = ^DXVA_DPXD;
  12359.   {$EXTERNALSYM LPDXVA_DPXD}
  12360.   DXVA_DCCMD = {$IFDEF TYPE_IDENTITY}type {$ENDIF} WORD;
  12361.   {$EXTERNALSYM DXVA_DCCMD}
  12362.   LPDXVA_DCCMD = ^DXVA_DCCMD;
  12363.   {$EXTERNALSYM LPDXVA_DCCMD}
  12364.  
  12365.   // Alpha blend combination
  12366.   PDXVABlendCombination = ^TDXVABlendCombination;
  12367.   _DXVA_BlendCombination = record
  12368.     wPictureSourceIndex      : WORD;
  12369.     wBlendedDestinationIndex : WORD;
  12370.     PictureSourceRect16thPel : TRECT;
  12371.     PictureDestinationRect   : TRECT;
  12372.     GraphicSourceRect        : TRECT;
  12373.     GraphicDestinationRect   : TRECT;
  12374.     wBlendDelay              : WORD;
  12375.     bBlendOn                 : BYTE;
  12376.     bWholePlaneAlpha         : BYTE;
  12377.     OutsideYUVcolor          : TDXVAAYUVsample2;
  12378.   end;
  12379.   {$EXTERNALSYM _DXVA_BlendCombination}
  12380.   DXVA_BlendCombination = _DXVA_BlendCombination;
  12381.   {$EXTERNALSYM DXVA_BlendCombination}
  12382.   LPDXVA_BlendCombination = ^DXVA_BlendCombination;
  12383.   {$EXTERNALSYM LPDXVA_BlendCombination}
  12384.   TDXVABlendCombination = _DXVA_BlendCombination;
  12385.  
  12386.   LPDXVA_MBctrl_I_HostResidDiff_1 = ^DXVA_MBctrl_I_HostResidDiff_1;
  12387.   {$EXTERNALSYM LPDXVA_MBctrl_I_HostResidDiff_1}
  12388.   LPDXVA_MBctrl_I_OffHostIDCT_1   = ^DXVA_MBctrl_I_OffHostIDCT_1;
  12389.   {$EXTERNALSYM LPDXVA_MBctrl_I_OffHostIDCT_1}
  12390.   LPDXVA_MBctrl_P_HostResidDiff_1 = ^DXVA_MBctrl_P_HostResidDiff_1;
  12391.   {$EXTERNALSYM LPDXVA_MBctrl_P_HostResidDiff_1}
  12392.   LPDXVA_MBctrl_P_OffHostIDCT_1   = ^DXVA_MBctrl_P_OffHostIDCT_1;
  12393.   {$EXTERNALSYM LPDXVA_MBctrl_P_OffHostIDCT_1}
  12394.  
  12395. //#pragma pack(pop)
  12396.  
  12397. //
  12398. // Other forms of pictures are constructed in the obvious way
  12399. // from the above by adjusting the number of residual difference
  12400. // blocks, the number of motion vectors per macroblock, etc.
  12401. //
  12402. {
  12403. #define readDXVA_MBskipsFollowing(ptr)       (((ptr)->dwMB_SNL & 0xFF000000) >> 24)
  12404. #define readDXVA_MBdataLocation(ptr)         (((ptr)->dwMB_SNL & 0x00FFFFFF))
  12405.  
  12406. #define writeDXVA_MB_SNL(ptr, skips, dloc)   ((ptr)->dwMB_SNL = (((skips) << 24) | (dloc)))
  12407. #define setDXVA_MBskipsFollowing(ptr, skips) ((ptr)->dwMB_SNL |= ((skips) << 24))
  12408. #define setDXVA_MBdataLocation(ptr, dloc)    ((ptr)->dwMB_SNL |= (dloc))
  12409.  
  12410. #define readDXVA_MvertFieldSel_3(ptr)    (((ptr)->wMBtype & 0x8000) >> 15)
  12411. #define readDXVA_MvertFieldSel_2(ptr)    (((ptr)->wMBtype & 0x4000) >> 14)
  12412. #define readDXVA_MvertFieldSel_1(ptr)    (((ptr)->wMBtype & 0x2000) >> 13)
  12413. #define readDXVA_MvertFieldSel_0(ptr)    (((ptr)->wMBtype & 0x1000) >> 12)
  12414. #define readDXVA_ReservedBits(ptr)       (((ptr)->wMBtype & 0x0800) >> 11)
  12415. #define readDXVA_HostResidDiff(ptr)      (((ptr)->wMBtype & 0x0400) >> 10)
  12416. #define readDXVA_MotionType(ptr)         (((ptr)->wMBtype & 0x0300) >>  8)
  12417. #define readDXVA_MBscanMethod(ptr)       (((ptr)->wMBtype & 0x00C0) >>  6)
  12418. #define readDXVA_FieldResidual(ptr)      (((ptr)->wMBtype & 0x0020) >>  5)
  12419. #define readDXVA_H261LoopFilter(ptr)     (((ptr)->wMBtype & 0x0010) >>  4)
  12420. #define readDXVA_Motion4MV(ptr)          (((ptr)->wMBtype & 0x0008) >>  3)
  12421. #define readDXVA_MotionBackward(ptr)     (((ptr)->wMBtype & 0x0004) >>  2)
  12422. #define readDXVA_MotionForward(ptr)      (((ptr)->wMBtype & 0x0002) >>  1)
  12423. #define readDXVA_IntraMacroblock(ptr)    (((ptr)->wMBtype & 0x0001))
  12424.  
  12425. #define setDXVA_MvertFieldSel_3(ptr)     ((ptr)->wMBtype |= 0x8000)
  12426. #define setDXVA_MvertFieldSel_2(ptr)     ((ptr)->wMBtype |= 0x4000)
  12427. #define setDXVA_MvertFieldSel_1(ptr)     ((ptr)->wMBtype |= 0x2000)
  12428. #define setDXVA_MvertFieldSel_0(ptr)     ((ptr)->wMBtype |= 0x1000)
  12429. #define setDXVA_ReservedBits(ptr)        ((ptr)->wMBtype |= 0x0800)
  12430. #define setDXVA_HostResidDiff(ptr)       ((ptr)->wMBtype |= 0x0400)
  12431. #define setDXVA_MotionType(ptr, value)   ((ptr)->wMBtype |= ((value) << 8))
  12432. #define setDXVA_MBscanMethod(ptr, value) ((ptr)->wMBtype |= ((value) << 6))
  12433. #define setDXVA_FieldResidual(ptr)       ((ptr)->wMBtype |= 0x0020)
  12434. #define setDXVA_H261LoopFilter(ptr)      ((ptr)->wMBtype |= 0x0010)
  12435. #define setDXVA_Motion4MV(ptr)           ((ptr)->wMBtype |= 0x0008)
  12436. #define setDXVA_MotionBackward(ptr)      ((ptr)->wMBtype |= 0x0004)
  12437. #define setDXVA_MotionForward(ptr)       ((ptr)->wMBtype |= 0x0002)
  12438. #define setDXVA_IntraMacroblock(ptr)     ((ptr)->wMBtype |= 0x0001)
  12439.  
  12440. #define readDXVA_Y___0coded(ptr)        (((ptr)->wPatternCode & 0x0800) >> 11)
  12441. #define readDXVA_Y___1coded(ptr)        (((ptr)->wPatternCode & 0x0400) >> 10)
  12442. #define readDXVA_Y___2coded(ptr)        (((ptr)->wPatternCode & 0x0200) >>  9)
  12443. #define readDXVA_Y___3coded(ptr)        (((ptr)->wPatternCode & 0x0100) >>  8)
  12444. #define readDXVA_Cb__4coded(ptr)        (((ptr)->wPatternCode & 0x0080) >>  7)
  12445. #define readDXVA_Cr__5coded(ptr)        (((ptr)->wPatternCode & 0x0040) >>  6)
  12446. #define readDXVA_Cb__6coded(ptr)        (((ptr)->wPatternCode & 0x0020) >>  5)
  12447. #define readDXVA_Cr__7coded(ptr)        (((ptr)->wPatternCode & 0x0010) >>  4)
  12448. #define readDXVA_Cb__8coded(ptr)        (((ptr)->wPatternCode & 0x0008) >>  3)
  12449. #define readDXVA_Cb__9coded(ptr)        (((ptr)->wPatternCode & 0x0004) >>  2)
  12450. #define readDXVA_Cr_10coded(ptr)        (((ptr)->wPatternCode & 0x0002) >>  1)
  12451. #define readDXVA_Cr_11coded(ptr)        (((ptr)->wPatternCode & 0x0001))
  12452.  
  12453. #define readDXVA_Y___0oflow(ptr)        (((ptr)->wPC_Overflow & 0x0800) >> 11)
  12454. #define readDXVA_Y___1oflow(ptr)        (((ptr)->wPC_Overflow & 0x0400) >> 10)
  12455. #define readDXVA_Y___2oflow(ptr)        (((ptr)->wPC_Overflow & 0x0200) >>  9)
  12456. #define readDXVA_Y___3oflow(ptr)        (((ptr)->wPC_Overflow & 0x0100) >>  8)
  12457. #define readDXVA_Cb__4oflow(ptr)        (((ptr)->wPC_Overflow & 0x0080) >>  7)
  12458. #define readDXVA_Cr__5oflow(ptr)        (((ptr)->wPC_Overflow & 0x0040) >>  6)
  12459. #define readDXVA_Cb__6oflow(ptr)        (((ptr)->wPC_Overflow & 0x0020) >>  5)
  12460. #define readDXVA_Cr__7oflow(ptr)        (((ptr)->wPC_Overflow & 0x0010) >>  4)
  12461. #define readDXVA_Cb__8oflow(ptr)        (((ptr)->wPC_Overflow & 0x0008) >>  3)
  12462. #define readDXVA_Cb__9oflow(ptr)        (((ptr)->wPC_Overflow & 0x0004) >>  2)
  12463. #define readDXVA_Cr_10oflow(ptr)        (((ptr)->wPC_Overflow & 0x0002) >>  1)
  12464. #define readDXVA_Cr_11oflow(ptr)        (((ptr)->wPC_Overflow & 0x0001))
  12465. }
  12466.  
  12467. // -------------------------------------------------------------------------
  12468. //
  12469. // The definitions that follow describe the video de-interlace interface
  12470. // between the VMR and the graphics device driver.  This interface is not
  12471. // accessable via the IAMVideoAccelerator interface.
  12472. //
  12473. // -------------------------------------------------------------------------
  12474. //
  12475. const
  12476.   DXVA_DeinterlaceBobDevice       : TGUID = '{335aa36e-7884-43a4-9c91-7f87faf3e37e}';
  12477.   {$EXTERNALSYM DXVA_DeinterlaceBobDevice}
  12478.   DXVA_DeinterlaceContainerDevice : TGUID = '{0e85cb93-3046-4ff0-aecc-d58cb5f035fd}';
  12479.   {$EXTERNALSYM DXVA_DeinterlaceContainerDevice}
  12480.  
  12481. // -------------------------------------------------------------------------
  12482. // data structures shared by User mode and Kernel mode.
  12483. // -------------------------------------------------------------------------
  12484. type
  12485.   _DXVA_SampleFormat = (
  12486.   {$IFNDEF COMPILER6_UP}
  12487.     DXVA_Sample_INVALID0,
  12488.     DXVA_SamplePreviousFrame,
  12489.     DXVA_SampleProgressiveFrame,
  12490.     DXVA_SampleFieldInterleavedEvenFirst,
  12491.     DXVA_SampleFieldInterleavedOddFirst,
  12492.     DXVA_SampleFieldSingleEven,
  12493.     DXVA_SampleFieldSingleOdd
  12494.   {$ELSE}
  12495.     DXVA_SamplePreviousFrame             = 1,
  12496.     DXVA_SampleProgressiveFrame          = 2,
  12497.     DXVA_SampleFieldInterleavedEvenFirst = 3,
  12498.     DXVA_SampleFieldInterleavedOddFirst  = 4,
  12499.     DXVA_SampleFieldSingleEven           = 5,
  12500.     DXVA_SampleFieldSingleOdd            = 6
  12501.   {$ENDIF}
  12502.   );
  12503.   {$EXTERNALSYM _DXVA_SampleFormat}
  12504.   DXVA_SampleFormat = _DXVA_SampleFormat;
  12505.   {$EXTERNALSYM DXVA_SampleFormat}
  12506.   TDXVASampleFormat = DXVA_SampleFormat;
  12507.  
  12508.   _DXVA_Frequency = record
  12509.     Numerator   : DWORD;
  12510.     Denominator : DWORD;
  12511.   end;
  12512.   {$EXTERNALSYM _DXVA_Frequency}
  12513.   DXVA_Frequency = _DXVA_Frequency;
  12514.   {$EXTERNALSYM DXVA_Frequency}
  12515.   TDXVAFrequency = _DXVA_Frequency;
  12516.  
  12517.   PDXVAVideoDesc = ^TDXVAVideoDesc;
  12518.   _DXVA_VideoDesc = record
  12519.     Size            : DWORD;
  12520.     SampleWidth     : DWORD;
  12521.     SampleHeight    : DWORD;
  12522.     SampleFormat    : TDXVASampleFormat;
  12523.     d3dFormat       : TD3DFORMAT;
  12524.     InputSampleFreq : TDXVAFrequency;
  12525.     OutputFrameFreq : TDXVAFrequency;
  12526.   end;
  12527.   {$EXTERNALSYM _DXVA_VideoDesc}
  12528.   DXVA_VideoDesc = _DXVA_VideoDesc;
  12529.   {$EXTERNALSYM DXVA_VideoDesc}
  12530.   LPDXVA_VideoDesc = ^DXVA_VideoDesc;
  12531.   {$EXTERNALSYM LPDXVA_VideoDesc}
  12532.   TDXVAVideoDesc = _DXVA_VideoDesc;
  12533.  
  12534.   DXVA_VideoProcessCaps = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12535.   {$EXTERNALSYM DXVA_VideoProcessCaps}
  12536. const
  12537.   DXVA_VideoProcess_None       = $0000;
  12538.   {$EXTERNALSYM DXVA_VideoProcess_None}
  12539.   DXVA_VideoProcess_YUV2RGB    = $0001;
  12540.   {$EXTERNALSYM DXVA_VideoProcess_YUV2RGB}
  12541.   DXVA_VideoProcess_StretchX   = $0002;
  12542.   {$EXTERNALSYM DXVA_VideoProcess_StretchX}
  12543.   DXVA_VideoProcess_StretchY   = $0004;
  12544.   {$EXTERNALSYM DXVA_VideoProcess_StretchY}
  12545.   DXVA_VideoProcess_AlphaBlend = $0008;
  12546.   {$EXTERNALSYM DXVA_VideoProcess_AlphaBlend}
  12547.   DXVA_VideoProcess_SubRects   = $0010;
  12548.   {$EXTERNALSYM DXVA_VideoProcess_SubRects}
  12549.  
  12550. type
  12551.   DXVA_DeinterlaceTech = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12552.   {$EXTERNALSYM DXVA_DeinterlaceTech}
  12553.   const
  12554.     // the algorithm is unknown or proprietary
  12555.     DXVA_DeinterlaceTech_Unknown                = $0000;
  12556.     {$EXTERNALSYM DXVA_DeinterlaceTech_Unknown}
  12557.  
  12558.     // the algorithm creates the missing lines by repeating
  12559.     // the line either above or below it - this method will look very jaggy and
  12560.     // isn't recommended
  12561.     DXVA_DeinterlaceTech_BOBLineReplicate       = $0001;
  12562.     {$EXTERNALSYM DXVA_DeinterlaceTech_BOBLineReplicate}
  12563.  
  12564.  
  12565.     // the algorithm creates the missing lines by vertically stretching each
  12566.     // video field by a factor of two.  Slight vertical adjustments are made to
  12567.     // ensure that the resulting image does not "bob" up and down.
  12568.     // The algorithm creates the missing lines by vertically stretching each
  12569.     // video field by a factor of two, for example by averaging two lines or
  12570.     // using a [-1, 9, 9, -1]/16 filter across four lines.
  12571.     // Slight vertical adjustments are made to ensure that the resulting image
  12572.     // does not "bob" up and down.
  12573.     DXVA_DeinterlaceTech_BOBVerticalStretch     = $0002;
  12574.     {$EXTERNALSYM DXVA_DeinterlaceTech_BOBVerticalStretch}
  12575.  
  12576.     // the pixels in the missing line are recreated by a median filtering operation
  12577.     DXVA_DeinterlaceTech_MedianFiltering        = $0004;
  12578.     {$EXTERNALSYM DXVA_DeinterlaceTech_MedianFiltering}
  12579.  
  12580.     // the pixels in the missing line are recreated by an edge filter.
  12581.     // In this process, spatial directional filters are applied to determine
  12582.     // the orientation of edges in the picture content, and missing
  12583.     // pixels are created by filtering along (rather than across) the
  12584.     // detected edges.
  12585.     DXVA_DeinterlaceTech_EdgeFiltering          = $0010;
  12586.     {$EXTERNALSYM DXVA_DeinterlaceTech_EdgeFiltering}
  12587.  
  12588.     // the pixels in the missing line are recreated by switching on a field by
  12589.     // field basis between using either spatial or temporal interpolation
  12590.     // depending on the amount of motion.
  12591.     DXVA_DeinterlaceTech_FieldAdaptive          = $0020;
  12592.     {$EXTERNALSYM DXVA_DeinterlaceTech_FieldAdaptive}
  12593.  
  12594.     // the pixels in the missing line are recreated by switching on a pixel by pixel
  12595.     // basis between using either spatial or temporal interpolation depending on
  12596.     // the amount of motion..
  12597.     DXVA_DeinterlaceTech_PixelAdaptive          = $0040;
  12598.     {$EXTERNALSYM DXVA_DeinterlaceTech_PixelAdaptive}
  12599.  
  12600.     // Motion Vector Steering  identifies objects within a sequence of video
  12601.     // fields.  The missing pixels are recreated after first aligning the
  12602.     // movement axes of the individual objects in the scene to make them
  12603.     // parallel with the time axis.
  12604.     DXVA_DeinterlaceTech_MotionVectorSteered    = $0080;
  12605.     {$EXTERNALSYM DXVA_DeinterlaceTech_MotionVectorSteered}
  12606.  
  12607. type
  12608.   PDXVAVideoSample = ^TDXVAVideoSample;
  12609.   _DXVA_VideoSample = record
  12610.    rtStart         : TReferenceTime;
  12611.    rtEnd           : TReferenceTime;
  12612.    SampleFormat    : TDXVASampleFormat;
  12613.    lpDDSSrcSurface : Pointer;
  12614.   end;
  12615.   {$EXTERNALSYM _DXVA_VideoSample}
  12616.   DXVA_VideoSample = _DXVA_VideoSample;
  12617.   {$EXTERNALSYM DXVA_VideoSample}
  12618.   LPDXVA_VideoSample = ^DXVA_VideoSample;
  12619.   {$EXTERNALSYM LPDXVA_VideoSample}
  12620.   TDXVAVideoSample = _DXVA_VideoSample;
  12621.  
  12622.   PDXVADeinterlaceCaps = ^TDXVADeinterlaceCaps;
  12623.   _DXVA_DeinterlaceCaps = record
  12624.      Size                    : DWORD;
  12625.      NumPreviousOutputFrames : DWORD;
  12626.      InputPool               : DWORD;
  12627.      NumForwardRefSamples    : DWORD;
  12628.      NumBackwardRefSamples   : DWORD;
  12629.      d3dOutputFormat         : TD3DFORMAT;
  12630.      VideoProcessingCaps     : DXVA_VideoProcessCaps;
  12631.      DeinterlaceTechnology   : DXVA_DeinterlaceTech;
  12632.   end;
  12633.   {$EXTERNALSYM _DXVA_DeinterlaceCaps}
  12634.   DXVA_DeinterlaceCaps = _DXVA_DeinterlaceCaps;
  12635.   {$EXTERNALSYM DXVA_DeinterlaceCaps}
  12636.   LPDXVA_DeinterlaceCaps = ^DXVA_DeinterlaceCaps;
  12637.   {$EXTERNALSYM LPDXVA_DeinterlaceCaps}
  12638.   TDXVADeinterlaceCaps = _DXVA_DeinterlaceCaps;
  12639.  
  12640.  
  12641. // -------------------------------------------------------------------------
  12642. // Data types used with RenderMoComp in kernel mode
  12643. // -------------------------------------------------------------------------
  12644.  
  12645. const
  12646.   // Function codes for RenderMoComp
  12647.   MAX_DEINTERLACE_SURFACES = 32;
  12648.   {$EXTERNALSYM MAX_DEINTERLACE_SURFACES}
  12649.  
  12650. type
  12651.   PDXVADeinterlaceBlt = ^TDXVADeinterlaceBlt;
  12652.   _DXVA_DeinterlaceBlt = record
  12653.     Size              : DWORD;
  12654.     Reserved          : DWORD;
  12655.     rtTarget          : TReferenceTime;
  12656.     DstRect           : TRECT;
  12657.     SrcRect           : TRECT;
  12658.     NumSourceSurfaces : DWORD;
  12659.     Alpha             : Single;
  12660.     Source: array[0..MAX_DEINTERLACE_SURFACES-1] of TDXVAVideoSample;
  12661.   end;
  12662.   {$EXTERNALSYM _DXVA_DeinterlaceBlt}
  12663.   DXVA_DeinterlaceBlt = _DXVA_DeinterlaceBlt;
  12664.   {$EXTERNALSYM DXVA_DeinterlaceBlt}
  12665.   TDXVADeinterlaceBlt = _DXVA_DeinterlaceBlt;
  12666.  
  12667. const
  12668.   DXVA_DeinterlaceBltFnCode = $01;
  12669.   {$EXTERNALSYM DXVA_DeinterlaceBltFnCode}
  12670.   // lpInput => DXVA_DeinterlaceBlt*
  12671.   // lpOuput => NULL /* not currently used */
  12672.  
  12673.   MAX_DEINTERLACE_DEVICE_GUIDS = 32;
  12674.   {$EXTERNALSYM MAX_DEINTERLACE_DEVICE_GUIDS}
  12675.  
  12676. type
  12677.   PDXVADeinterlaceQueryAvailableModes = ^TDXVADeinterlaceQueryAvailableModes;
  12678.   _DXVA_DeinterlaceQueryAvailableModes = record
  12679.     Size     : DWORD;
  12680.     NumGuids : DWORD;
  12681.     Guids: array[0..MAX_DEINTERLACE_DEVICE_GUIDS-1] of TGUID;
  12682.   end;
  12683.   {$EXTERNALSYM _DXVA_DeinterlaceQueryAvailableModes}
  12684.   DXVA_DeinterlaceQueryAvailableModes = _DXVA_DeinterlaceQueryAvailableModes;
  12685.   {$EXTERNALSYM DXVA_DeinterlaceQueryAvailableModes}
  12686.   TDXVADeinterlaceQueryAvailableModes = _DXVA_DeinterlaceQueryAvailableModes;
  12687.  
  12688. const
  12689.   TDXVA_DeinterlaceQueryAvailableModesFnCode = $01;
  12690.   {$EXTERNALSYM TDXVA_DeinterlaceQueryAvailableModesFnCode}
  12691.   // lpInput => DXVA_VideoDesc*
  12692.   // lpOuput => DXVA_DeinterlaceQueryAvailableModes*
  12693.  
  12694. type
  12695.   PDXVADeinterlaceQueryModeCaps = ^TDXVADeinterlaceQueryModeCaps;
  12696.   _DXVA_DeinterlaceQueryModeCaps = record
  12697.     Size      : DWORD;
  12698.     Guid      : TGUID;
  12699.     VideoDesc : TDXVAVideoDesc;
  12700.   end;
  12701.   {$EXTERNALSYM _DXVA_DeinterlaceQueryModeCaps}
  12702.   DXVA_DeinterlaceQueryModeCaps = _DXVA_DeinterlaceQueryModeCaps;
  12703.   {$EXTERNALSYM DXVA_DeinterlaceQueryModeCaps}
  12704.   TDXVADeinterlaceQueryModeCaps = _DXVA_DeinterlaceQueryModeCaps;
  12705.  
  12706. const
  12707.   DXVA_DeinterlaceQueryModeCapsFnCode = $02;
  12708.   {$EXTERNALSYM DXVA_DeinterlaceQueryModeCapsFnCode}
  12709.   // lpInput => DXVA_DeinterlaceQueryModeCaps*
  12710.   // lpOuput => DXVA_DeinterlaceCaps*
  12711.  
  12712. // -------------------------------------------------------------------------
  12713. //
  12714. // The definitions that follow describe the video ProcAmp interface
  12715. // between the VMR and the graphics device driver.  This interface is not
  12716. // accessable via the IAMVideoAccelerator interface.
  12717. //
  12718. // -------------------------------------------------------------------------
  12719. //
  12720. const
  12721.   DXVA_ProcAmpControlDevice : TGUID = '{9f200913-2ffd-4056-9f1e-e1b508f22dcf}';
  12722.   {$EXTERNALSYM DXVA_ProcAmpControlDevice}
  12723.  
  12724. type
  12725.   DXVA_ProcAmpControlProp = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12726.   {$EXTERNALSYM DXVA_ProcAmpControlProp}
  12727.   const
  12728.     DXVA_ProcAmp_None       = $0000;
  12729.     {$EXTERNALSYM DXVA_ProcAmp_None}
  12730.     DXVA_ProcAmp_Brightness = $0001;
  12731.     {$EXTERNALSYM DXVA_ProcAmp_Brightness}
  12732.     DXVA_ProcAmp_Contrast   = $0002;
  12733.     {$EXTERNALSYM DXVA_ProcAmp_Contrast}
  12734.     DXVA_ProcAmp_Hue        = $0004;
  12735.     {$EXTERNALSYM DXVA_ProcAmp_Hue}
  12736.     DXVA_ProcAmp_Saturation = $0008;
  12737.     {$EXTERNALSYM DXVA_ProcAmp_Saturation}
  12738.  
  12739. type
  12740.   PDXVAProcAmpControlCaps = ^TDXVAProcAmpControlCaps;
  12741.   _DXVA_ProcAmpControlCaps = record
  12742.     Size                : DWORD;
  12743.     InputPool           : DWORD;
  12744.     d3dOutputFormat     : TD3DFORMAT;
  12745.     ProcAmpControlProps : DWORD; // see DXVA_ProcAmpControlProp
  12746.     VideoProcessingCaps : DWORD; // see DXVA_VideoProcessCaps
  12747.   end;
  12748.   {$EXTERNALSYM _DXVA_ProcAmpControlCaps}
  12749.   DXVA_ProcAmpControlCaps = _DXVA_ProcAmpControlCaps;
  12750.   {$EXTERNALSYM DXVA_ProcAmpControlCaps}
  12751.   LPDXVA_ProcAmpControlCaps = ^DXVA_ProcAmpControlCaps;
  12752.   {$EXTERNALSYM LPDXVA_ProcAmpControlCaps}
  12753.   TDXVAProcAmpControlCaps = _DXVA_ProcAmpControlCaps;
  12754.  
  12755. const
  12756.   DXVA_ProcAmpControlQueryCapsFnCode = $03;
  12757.   {$EXTERNALSYM DXVA_ProcAmpControlQueryCapsFnCode}
  12758.   // lpInput => DXVA_VideoDesc*
  12759.   // lpOuput => DXVA_ProcAmpControlCaps*
  12760.  
  12761. type
  12762.   PDXVAProcAmpControlQueryRange = ^TDXVAProcAmpControlQueryRange;
  12763.   _DXVA_ProcAmpControlQueryRange = record
  12764.     Size               : DWORD;
  12765.     ProcAmpControlProp : DXVA_ProcAmpControlProp;
  12766.     VideoDesc          : TDXVAVideoDesc;
  12767.   end;
  12768.   {$EXTERNALSYM _DXVA_ProcAmpControlQueryRange}
  12769.   DXVA_ProcAmpControlQueryRange = _DXVA_ProcAmpControlQueryRange;
  12770.   {$EXTERNALSYM DXVA_ProcAmpControlQueryRange}
  12771.   LPDXVA_ProcAmpControlQueryRange = ^DXVA_ProcAmpControlQueryRange;
  12772.   {$EXTERNALSYM LPDXVA_ProcAmpControlQueryRange}
  12773.   TDXVAProcAmpControlQueryRange = _DXVA_ProcAmpControlQueryRange;
  12774.  
  12775.   PDXVAVideoPropertyRange = ^TDXVAVideoPropertyRange;
  12776.   _DXVA_VideoPropertyRange = record
  12777.     MinValue     : Single;
  12778.     MaxValue     : Single;
  12779.     DefaultValue : Single;
  12780.     StepSize     : Single;
  12781.   end;
  12782.   {$EXTERNALSYM _DXVA_VideoPropertyRange}
  12783.   DXVA_VideoPropertyRange = _DXVA_VideoPropertyRange;
  12784.   {$EXTERNALSYM DXVA_VideoPropertyRange}
  12785.   LPDXVA_VideoPropertyRange = ^DXVA_VideoPropertyRange;
  12786.   {$EXTERNALSYM LPDXVA_VideoPropertyRange}
  12787.   TDXVAVideoPropertyRange = _DXVA_VideoPropertyRange;
  12788.  
  12789. const
  12790.   DXVA_ProcAmpControlQueryRangeFnCode = $04;
  12791.   {$EXTERNALSYM DXVA_ProcAmpControlQueryRangeFnCode}
  12792.   // lpInput => DXVA_ProcAmpControlQueryRange*
  12793.   // lpOuput => DXVA_VideoPropertyRange*
  12794.  
  12795. type
  12796.   PDXVAProcAmpControlBlt = ^TDXVAProcAmpControlBlt;
  12797.   _DXVA_ProcAmpControlBlt = record
  12798.     Size       : DWORD;
  12799.     DstRect    : TRECT;
  12800.     SrcRect    : TRECT;
  12801.     Alpha      : Single;
  12802.     Brightness : Single;
  12803.     Contrast   : Single;
  12804.     Hue        : Single;
  12805.     Saturation : Single;
  12806.   end;
  12807.   {$EXTERNALSYM _DXVA_ProcAmpControlBlt}
  12808.   DXVA_ProcAmpControlBlt = _DXVA_ProcAmpControlBlt;
  12809.   {$EXTERNALSYM DXVA_ProcAmpControlBlt}
  12810.   TDXVAProcAmpControlBlt = _DXVA_ProcAmpControlBlt;
  12811.  
  12812. const
  12813.   DXVA_ProcAmpControlBltFnCode = $01;
  12814.   {$EXTERNALSYM DXVA_ProcAmpControlBltFnCode}
  12815.   // lpInput => DXVA_ProcAmpControlBlt*
  12816.   // lpOuput => NULL /* not currently used */
  12817.  
  12818. //------------------------------------------------------------------------------
  12819. // File: AMVA.h
  12820. // Desc: DirectShowMotionComp include file.
  12821. // Copyright (c) 1997 - 2000, Microsoft Corporation.  All rights reserved.
  12822. //------------------------------------------------------------------------------
  12823.  
  12824. const
  12825.   AMVA_TYPEINDEX_OUTPUTFRAME = $FFFFFFFF;
  12826.   {$EXTERNALSYM AMVA_TYPEINDEX_OUTPUTFRAME}
  12827.  
  12828.   //  Flags for QueryRenderStatus
  12829.   AMVA_QUERYRENDERSTATUSF_READ = $00000001;  // Query for read
  12830.   {$EXTERNALSYM AMVA_QUERYRENDERSTATUSF_READ}
  12831.                                            // set this bit to 0
  12832.                                            // if query for update
  12833. type
  12834.   PAMVAUncompBufferInfo = ^TAMVAUncompBufferInfo;
  12835.   _tag_AMVAUncompBufferInfo = record
  12836.     dwMinNumSurfaces    : DWORD                   ; // IN   min number of surfaces to be allocated
  12837.     dwMaxNumSurfaces    : DWORD                   ; // IN   max number of surfaces to be allocated
  12838.     ddUncompPixelFormat : TDDPixelFormat          ; // IN   pixel format of surfaces to be allocated
  12839.   end;
  12840.   {$EXTERNALSYM _tag_AMVAUncompBufferInfo}
  12841.   AMVAUncompBufferInfo = _tag_AMVAUncompBufferInfo;
  12842.   {$EXTERNALSYM AMVAUncompBufferInfo}
  12843.   LPAMVAUncompBufferInfo = ^AMVAUncompBufferInfo;
  12844.   {$EXTERNALSYM LPAMVAUncompBufferInfo}
  12845.   TAMVAUncompBufferInfo = _tag_AMVAUncompBufferInfo;
  12846.  
  12847.   PAMVAUncompDataInfo = ^TAMVAUncompDataInfo;
  12848.   _tag_AMVAUncompDataInfo = record
  12849.     dwUncompWidth       : DWORD               ; // [in]     width of uncompressed data
  12850.     dwUncompHeight      : DWORD               ; // [in]     height of uncompressed data
  12851.     ddUncompPixelFormat : TDDPixelFormat      ; // [in]     pixel-format of uncompressed data
  12852.   end;
  12853.   {$EXTERNALSYM _tag_AMVAUncompDataInfo}
  12854.   AMVAUncompDataInfo = _tag_AMVAUncompDataInfo;
  12855.   {$EXTERNALSYM AMVAUncompDataInfo}
  12856.   LPAMVAUncompDataInfo = ^AMVAUncompDataInfo;
  12857.   {$EXTERNALSYM LPAMVAUncompDataInfo}
  12858.   TAMVAUncompDataInfo = _tag_AMVAUncompDataInfo;
  12859.  
  12860.   PAMVAInternalMemInfo = ^TAMVAInternalMemInfo;
  12861.   _tag_AMVAInternalMemInfo = record
  12862.     dwScratchMemAlloc : DWORD ; // [out]    amount of scratch memory will the hal allocate for its private use
  12863.   end;
  12864.   {$EXTERNALSYM _tag_AMVAInternalMemInfo}
  12865.   AMVAInternalMemInfo = _tag_AMVAInternalMemInfo;
  12866.   {$EXTERNALSYM AMVAInternalMemInfo}
  12867.   LPAMVAInternalMemInfo = ^AMVAInternalMemInfo;
  12868.   {$EXTERNALSYM LPAMVAInternalMemInfo}
  12869.   TAMVAInternalMemInfo = _tag_AMVAInternalMemInfo;
  12870.  
  12871.   PAMVACompBufferInfo = ^TAMVACompBufferInfo;
  12872.   _tag_AMVACompBufferInfo = record
  12873.     dwNumCompBuffers  : DWORD         ; // [out]    number of buffers reqd for compressed data
  12874.     dwWidthToCreate   : DWORD         ; // [out]    Width of surface to create
  12875.     dwHeightToCreate  : DWORD         ; // [out]    Height of surface to create
  12876.     dwBytesToAllocate : DWORD         ; // [out]    Total number of bytes used by each surface
  12877.     ddCompCaps        : TDDSCAPS2     ; // [out]    caps to create surfaces to store compressed data
  12878.     ddPixelFormat     : TDDPixelFormat; // [out]    fourcc to create surfaces to store compressed data
  12879.   end;
  12880.   {$EXTERNALSYM _tag_AMVACompBufferInfo}
  12881.   AMVACompBufferInfo = _tag_AMVACompBufferInfo;
  12882.   {$EXTERNALSYM AMVACompBufferInfo}
  12883.   LPAMVACompBufferInfo = ^AMVACompBufferInfo;
  12884.   {$EXTERNALSYM LPAMVACompBufferInfo}
  12885.   TAMVACompBufferInfo = _tag_AMVACompBufferInfo;
  12886.  
  12887. // Note that you are NOT allowed to store any pointer in pMiscData
  12888.   PAMVABeginFrameInfo = ^TAMVABeginFrameInfo;
  12889.   _tag_AMVABeginFrameInfo = record
  12890.     dwDestSurfaceIndex : DWORD   ; // IN  destination buffer in which to decoding this frame
  12891.     pInputData         : pointer ; // IN  pointer to misc data
  12892.     dwSizeInputData    : DWORD   ; // IN  size of other misc data to begin frame
  12893.     pOutputData        : pointer ; // OUT pointer to data which the VGA is going to fill
  12894.     dwSizeOutputData   : DWORD   ; // IN  size of data which the VGA is going to fill
  12895.   end;
  12896.   {$EXTERNALSYM _tag_AMVABeginFrameInfo}
  12897.   AMVABeginFrameInfo = _tag_AMVABeginFrameInfo;
  12898.   {$EXTERNALSYM AMVABeginFrameInfo}
  12899.   LPAMVABeginFrameInfo = ^AMVABeginFrameInfo;
  12900.   {$EXTERNALSYM LPAMVABeginFrameInfo}
  12901.   TAMVABeginFrameInfo = _tag_AMVABeginFrameInfo;
  12902.  
  12903. // Note that you are NOT allowed to store any pointer in pMiscData
  12904.   PAMVAEndFrameInfo = ^TAMVAEndFrameInfo;
  12905.   _tag_AMVAEndFrameInfo = record
  12906.     dwSizeMiscData : DWORD  ; // [in]     size of other misc data to begin frame
  12907.     pMiscData      : pointer; // [in]     pointer to misc data
  12908.   end;
  12909.   {$EXTERNALSYM _tag_AMVAEndFrameInfo}
  12910.   AMVAEndFrameInfo = _tag_AMVAEndFrameInfo;
  12911.   {$EXTERNALSYM AMVAEndFrameInfo}
  12912.   LPAMVAEndFrameInfo = ^AMVAEndFrameInfo;
  12913.   {$EXTERNALSYM LPAMVAEndFrameInfo}
  12914.   TAMVAEndFrameInfo = _tag_AMVAEndFrameInfo;
  12915.  
  12916.   PAMVABufferInfo = ^TAMVABufferInfo;
  12917.   _tag_AMVABUFFERINFO = record
  12918.     dwTypeIndex   : DWORD; // [in]    Type of buffer
  12919.     dwBufferIndex : DWORD; // [in]    Buffer index
  12920.     dwDataOffset  : DWORD; // [in]    offset of relevant data from the beginning of buffer
  12921.     dwDataSize    : DWORD; // [in]    size of relevant data
  12922.   end;
  12923.   {$EXTERNALSYM _tag_AMVABUFFERINFO}
  12924.   AMVABUFFERINFO = _tag_AMVABUFFERINFO;
  12925.   {$EXTERNALSYM AMVABUFFERINFO}
  12926.   LPAMVABUFFERINFO = ^AMVABUFFERINFO;
  12927.   {$EXTERNALSYM LPAMVABUFFERINFO}
  12928.   TAMVABufferInfo = _tag_AMVABUFFERINFO;
  12929.   
  12930. //------------------------------------------------------------------------------
  12931. // File: videoacc.h
  12932. // Desc: DirectX Video Acceleration interfaces
  12933. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  12934. //------------------------------------------------------------------------------
  12935.  
  12936. const
  12937.   IID_IAMVideoAcceleratorNotify : TGUID = '{256A6A21-FBAD-11d1-82BF-00A0C9696C8F}';
  12938.   {$EXTERNALSYM IID_IAMVideoAcceleratorNotify}
  12939.   IID_IAMVideoAccelerator       : TGUID = '{256A6A22-FBAD-11d1-82BF-00A0C9696C8F}';
  12940.   {$EXTERNALSYM IID_IAMVideoAccelerator}
  12941.  
  12942. type
  12943.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoAcceleratorNotify> _di_IAMVideoAcceleratorNotify;'}
  12944.   {$EXTERNALSYM IAMVideoAcceleratorNotify}
  12945.   IAMVideoAcceleratorNotify = interface(IUnknown)
  12946.     ['{256A6A21-FBAD-11d1-82BF-00A0C9696C8F}']
  12947.     (*** IAMVideoAcceleratorNotify methods ***)
  12948.     function GetUncompSurfacesInfo(const pGuid: TGUID; var pUncompBufferInfo: PAMVAUncompBufferInfo): HResult; stdcall;
  12949.     function SetUncompSurfacesInfo(dwActualUncompSurfacesAllocated: DWORD): HResult; stdcall;
  12950.     function GetCreateVideoAcceleratorData(const pGuid: TGUID; out pdwSizeMiscData: PDWORD; out ppMiscData: pointer): HResult; stdcall;
  12951.     end;
  12952.  
  12953.   {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoAccelerator> _di_IAMVideoAccelerator;'}
  12954.   {$EXTERNALSYM IAMVideoAccelerator}
  12955.   IAMVideoAccelerator = interface(IUnknown)
  12956.     ['{256A6A22-FBAD-11d1-82BF-00A0C9696C8F}']
  12957.     (*** IAMVideoAccelerator methods ***)
  12958.     function GetVideoAcceleratorGUIDs(var pdwNumGuidsSupported: PDWORD; var pGuidsSupported: PGUID): HResult; stdcall;
  12959.     function GetUncompFormatsSupported(const pGuid: TGUID; var pdwNumFormatsSupported: PDWORD;
  12960.              var pFormatsSupported: PDDPixelFormat): HResult; stdcall;
  12961.     function GetInternalMemInfo(const pGuid: TGUID; const pamvaUncompDataInfo: TAMVAUncompDataInfo;
  12962.              var pamvaInternalMemInfo: PAMVAInternalMemInfo): HResult; stdcall;
  12963.     function GetCompBufferInfo(const pGuid: TGUID; const pamvaUncompDataInfo: TAMVAUncompDataInfo ;
  12964.              var pdwNumTypesCompBuffers: PDWORD; out pamvaCompBufferInfo: PAMVACompBufferInfo): HResult; stdcall;
  12965.     function GetInternalCompBufferInfo(var pdwNumTypesCompBuffers: PDWORD; out pamvaCompBufferInfo: PAMVACompBufferInfo): HResult; stdcall;
  12966.     function BeginFrame(const amvaBeginFrameInfo: TAMVABeginFrameInfo): HResult; stdcall;
  12967.     function EndFrame(const pEndFrameInfo: TAMVAEndFrameInfo): HResult; stdcall;
  12968.     function GetBuffer(dwTypeIndex, dwBufferIndex: DWORD; bReadOnly: BOOL; out ppBuffer; out lpStride: LONGINT): HResult; stdcall;
  12969.     function ReleaseBuffer(dwTypeIndex, dwBufferIndex: DWORD): HResult; stdcall;
  12970.     function Execute(dwFunction: DWORD; lpPrivateInputData : pointer; cbPrivateInputData: DWORD;
  12971.              lpPrivateOutputDat: pointer; cbPrivateOutputData, dwNumBuffers: DWORD;
  12972.              const pamvaBufferInfo: TAMVABUFFERINFO): HResult; stdcall;
  12973.     function QueryRenderStatus(dwTypeIndex, dwBufferIndex, dwFlags: DWORD): HResult; stdcall;
  12974.     function DisplayFrame(dwFlipToIndex: DWORD; pMediaSample: IMediaSample): HResult; stdcall;
  12975.     end;
  12976.  
  12977. //------------------------------------------------------------------------------
  12978. // File: BDATypes.h
  12979. //
  12980. // Desc: Typedefs and enums needed by both the WDM drivers and the user mode
  12981. //       COM interfaces.
  12982. //
  12983. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  12984. //------------------------------------------------------------------------------
  12985.  
  12986. // Utility Macros
  12987. const
  12988.   MIN_DIMENSION = 1;
  12989.   {$EXTERNALSYM MIN_DIMENSION}
  12990.   NATURAL       = 4;
  12991.   {$EXTERNALSYM NATURAL}
  12992.   CACHE_LINE    = 128;
  12993.   {$EXTERNALSYM CACHE_LINE}
  12994.   PAGE          = 4096;
  12995.   {$EXTERNALSYM PAGE}
  12996.   //#define ALIGN( pointer, size) (((ULONG)(pointer) + (ULONG)(size) - 1) & ~((ULONG)(size) - 1))
  12997.   //#define BDA_STRING_CONST(x)   {sizeof(L##x)-2, sizeof(L##x), L##x}
  12998.  
  12999. //===========================================================================
  13000. //
  13001. //  BDA Topology Structures
  13002. //
  13003. //===========================================================================
  13004. type
  13005.   PBDATemplateConnection = ^TBDATemplateConnection;
  13006.   _BDA_TEMPLATE_CONNECTION = record
  13007.     FromNodeType    : ULONG;
  13008.     FromNodePinType : ULONG;
  13009.     ToNodeType      : ULONG;
  13010.     ToNodePinType   : ULONG;
  13011.   end;
  13012.   {$EXTERNALSYM _BDA_TEMPLATE_CONNECTION}
  13013.   BDA_TEMPLATE_CONNECTION = _BDA_TEMPLATE_CONNECTION;
  13014.   {$EXTERNALSYM BDA_TEMPLATE_CONNECTION}
  13015.   PBDA_TEMPLATE_CONNECTION = ^BDA_TEMPLATE_CONNECTION;
  13016.   {$EXTERNALSYM PBDA_TEMPLATE_CONNECTION}
  13017.   TBDATemplateConnection = _BDA_TEMPLATE_CONNECTION;
  13018.  
  13019.   PBDATemplatePinJoint = ^TBDATemplatePinJoint;
  13020.   _BDA_TEMPLATE_PIN_JOINT = record
  13021.     uliTemplateConnection : ULONG;
  13022.     ulcInstancesMax       : ULONG;
  13023.   end;
  13024.   {$EXTERNALSYM _BDA_TEMPLATE_PIN_JOINT}
  13025.   BDA_TEMPLATE_PIN_JOINT = _BDA_TEMPLATE_PIN_JOINT;
  13026.   {$EXTERNALSYM BDA_TEMPLATE_PIN_JOINT}
  13027.   PBDA_TEMPLATE_PIN_JOINT = ^BDA_TEMPLATE_PIN_JOINT;
  13028.   {$EXTERNALSYM PBDA_TEMPLATE_PIN_JOINT}
  13029.   TBDATemplatePinJoint = _BDA_TEMPLATE_PIN_JOINT;
  13030.  
  13031. //===========================================================================
  13032. //  BDA Events
  13033. //===========================================================================
  13034. //  In-band Event IDs
  13035.   PBDAEventID = ^TBDAEventID;
  13036.   BDA_EVENT_ID = (
  13037.     BDA_EVENT_SIGNAL_LOSS,
  13038.     BDA_EVENT_SIGNAL_LOCK,
  13039.     BDA_EVENT_DATA_START,
  13040.     BDA_EVENT_DATA_STOP,
  13041.     BDA_EVENT_CHANNEL_ACQUIRED,
  13042.     BDA_EVENT_CHANNEL_LOST,
  13043.     BDA_EVENT_CHANNEL_SOURCE_CHANGED,
  13044.     BDA_EVENT_CHANNEL_ACTIVATED,
  13045.     BDA_EVENT_CHANNEL_DEACTIVATED,
  13046.     BDA_EVENT_SUBCHANNEL_ACQUIRED,
  13047.     BDA_EVENT_SUBCHANNEL_LOST,
  13048.     BDA_EVENT_SUBCHANNEL_SOURCE_CHANGED,
  13049.     BDA_EVENT_SUBCHANNEL_ACTIVATED,
  13050.     BDA_EVENT_SUBCHANNEL_DEACTIVATED,
  13051.     BDA_EVENT_ACCESS_GRANTED,
  13052.     BDA_EVENT_ACCESS_DENIED,
  13053.     BDA_EVENT_OFFER_EXTENDED,
  13054.     BDA_EVENT_PURCHASE_COMPLETED,
  13055.     BDA_EVENT_SMART_CARD_INSERTED,
  13056.     BDA_EVENT_SMART_CARD_REMOVED
  13057.   );
  13058.   {$EXTERNALSYM BDA_EVENT_ID}
  13059.   PBDA_EVENT_ID = ^BDA_EVENT_ID;
  13060.   {$EXTERNALSYM PBDA_EVENT_ID}
  13061.   TBDAEventID = BDA_EVENT_ID;
  13062.  
  13063. //===========================================================================
  13064. //
  13065. //  KSSTREAM_HEADER extensions for BDA
  13066. //
  13067. //===========================================================================
  13068.  
  13069.   PKSBDAFrameInfo = ^TKSBDAFrameInfo;
  13070.   tagKS_BDA_FRAME_INFO = record
  13071.     ExtendedHeaderSize : ULONG; // Size of this extended header
  13072.     dwFrameFlags       : DWORD;
  13073.     ulEvent            : ULONG;
  13074.     ulChannelNumber    : ULONG;
  13075.     ulSubchannelNumber : ULONG;
  13076.     ulReason           : ULONG;
  13077.   end;
  13078.   {$EXTERNALSYM tagKS_BDA_FRAME_INFO}
  13079.   KS_BDA_FRAME_INFO = tagKS_BDA_FRAME_INFO;
  13080.   {$EXTERNALSYM KS_BDA_FRAME_INFO}
  13081.   PKS_BDA_FRAME_INFO = ^KS_BDA_FRAME_INFO;
  13082.   {$EXTERNALSYM PKS_BDA_FRAME_INFO}
  13083.   TKSBDAFrameInfo = tagKS_BDA_FRAME_INFO;
  13084.  
  13085. //------------------------------------------------------------
  13086. //  BDA Network Ethernet Filter Property Set
  13087. // {71985F43-1CA1-11d3-9CC8-00C04F7971E0}
  13088.  
  13089.   PBDAEthernetAddress = ^TBDAEthernetAddress;
  13090.   _BDA_ETHERNET_ADDRESS = record
  13091.     rgbAddress : array[0..5] of BYTE;
  13092.   end;
  13093.   {$EXTERNALSYM _BDA_ETHERNET_ADDRESS}
  13094.   BDA_ETHERNET_ADDRESS = _BDA_ETHERNET_ADDRESS;
  13095.   {$EXTERNALSYM BDA_ETHERNET_ADDRESS}
  13096.   PBDA_ETHERNET_ADDRESS = ^BDA_ETHERNET_ADDRESS;
  13097.   {$EXTERNALSYM PBDA_ETHERNET_ADDRESS}
  13098.   TBDAEthernetAddress = _BDA_ETHERNET_ADDRESS;
  13099.  
  13100.   PBDAEthernetAddressList = ^TBDAEthernetAddressList;
  13101.   _BDA_ETHERNET_ADDRESS_LIST = record
  13102.     ulcAddresses : ULONG;
  13103.     rgAddressl : array[0..MIN_DIMENSION-1] of TBDAEthernetAddress;
  13104.   end;
  13105.   {$EXTERNALSYM _BDA_ETHERNET_ADDRESS_LIST}
  13106.   BDA_ETHERNET_ADDRESS_LIST = _BDA_ETHERNET_ADDRESS_LIST;
  13107.   {$EXTERNALSYM BDA_ETHERNET_ADDRESS_LIST}
  13108.   PBDA_ETHERNET_ADDRESS_LIST = ^BDA_ETHERNET_ADDRESS_LIST;
  13109.   {$EXTERNALSYM PBDA_ETHERNET_ADDRESS_LIST}
  13110.   TBDAEthernetAddressList = _BDA_ETHERNET_ADDRESS_LIST;
  13111.  
  13112.   PBDAMulticastMode = ^TBDAMulticastMode;
  13113.   BDA_MULTICAST_MODE = (
  13114.     BDA_PROMISCUOUS_MULTICAST,
  13115.     BDA_FILTERED_MULTICAST,
  13116.     BDA_NO_MULTICAST
  13117.   );
  13118.   {$EXTERNALSYM BDA_MULTICAST_MODE}
  13119.   PBDA_MULTICAST_MODE = ^BDA_MULTICAST_MODE;
  13120.   {$EXTERNALSYM PBDA_MULTICAST_MODE}
  13121.   TBDAMulticastMode = BDA_MULTICAST_MODE;
  13122.  
  13123. //------------------------------------------------------------
  13124. //  BDA Network IPv4 Filter Property Set
  13125. // {71985F44-1CA1-11d3-9CC8-00C04F7971E0}
  13126.  
  13127.   PBDAIPv4Address = ^TBDAIPv4Address;
  13128.   _BDA_IPv4_ADDRESS = record
  13129.     rgbAddress : array[0..3] of BYTE;
  13130.   end;
  13131.   {$EXTERNALSYM _BDA_IPv4_ADDRESS}
  13132.   BDA_IPv4_ADDRESS = _BDA_IPv4_ADDRESS;
  13133.   {$EXTERNALSYM BDA_IPv4_ADDRESS}
  13134.   PBDA_IPv4_ADDRESS = ^BDA_IPv4_ADDRESS;
  13135.   {$EXTERNALSYM PBDA_IPv4_ADDRESS}
  13136.   TBDAIPv4Address = _BDA_IPv4_ADDRESS;
  13137.  
  13138.   PBDAIPv4AddressList = ^TBDAIPv4AddressList;
  13139.   _BDA_IPv4_ADDRESS_LIST = record
  13140.     ulcAddresses : ULONG;
  13141.     rgAddressl   : array[0..MIN_DIMENSION-1] of TBDAIPv4Address;
  13142.   end;
  13143.   {$EXTERNALSYM _BDA_IPv4_ADDRESS_LIST}
  13144.   BDA_IPv4_ADDRESS_LIST = _BDA_IPv4_ADDRESS_LIST;
  13145.   {$EXTERNALSYM BDA_IPv4_ADDRESS_LIST}
  13146.   PBDA_IPv4_ADDRESS_LIST = ^BDA_IPv4_ADDRESS_LIST;
  13147.   {$EXTERNALSYM PBDA_IPv4_ADDRESS_LIST}
  13148.   TBDAIPv4AddressList = _BDA_IPv4_ADDRESS_LIST;
  13149.  
  13150. //------------------------------------------------------------
  13151. //  BDA Network IPv4 Filter Property Set
  13152. // {E1785A74-2A23-4fb3-9245-A8F88017EF33}
  13153.  
  13154.   PBDAIPv6Address = ^TBDAIPv6Address;
  13155.   _BDA_IPv6_ADDRESS = record
  13156.     rgbAddress : array[0..5] of BYTE;
  13157.   end;
  13158.   {$EXTERNALSYM _BDA_IPv6_ADDRESS}
  13159.   BDA_IPv6_ADDRESS = _BDA_IPv6_ADDRESS;
  13160.   {$EXTERNALSYM BDA_IPv6_ADDRESS}
  13161.   PBDA_IPv6_ADDRESS = ^BDA_IPv6_ADDRESS;
  13162.   {$EXTERNALSYM PBDA_IPv6_ADDRESS}
  13163.   TBDAIPv6Address = _BDA_IPv6_ADDRESS;
  13164.  
  13165.   PBDAIPv6AddressList = ^TBDAIPv6AddressList;
  13166.   _BDA_IPv6_ADDRESS_LIST = record
  13167.     ulcAddresses : ULONG;
  13168.     rgAddressl   : array [0..MIN_DIMENSION-1] of TBDAIPv6Address;
  13169.   end;
  13170.   {$EXTERNALSYM _BDA_IPv6_ADDRESS_LIST}
  13171.   BDA_IPv6_ADDRESS_LIST = _BDA_IPv6_ADDRESS_LIST;
  13172.   {$EXTERNALSYM BDA_IPv6_ADDRESS_LIST}
  13173.   PBDA_IPv6_ADDRESS_LIST = ^BDA_IPv6_ADDRESS_LIST;
  13174.   {$EXTERNALSYM PBDA_IPv6_ADDRESS_LIST}
  13175.   TBDAIPv6AddressList = _BDA_IPv6_ADDRESS_LIST;
  13176.  
  13177. //------------------------------------------------------------
  13178. //  BDA Signal Property Set
  13179. //  {D2F1644B-B409-11d2-BC69-00A0C9EE9E16}
  13180.  
  13181.   PBDASignalState = ^TBDASignalState;
  13182.   BDA_SIGNAL_STATE = (
  13183.     BDA_SIGNAL_UNAVAILABLE,
  13184.     BDA_SIGNAL_INACTIVE,
  13185.     BDA_SIGNAL_ACTIVE
  13186.   );
  13187.   {$EXTERNALSYM BDA_SIGNAL_STATE}
  13188.   PBDA_SIGNAL_STATE = ^BDA_SIGNAL_STATE;
  13189.   {$EXTERNALSYM PBDA_SIGNAL_STATE}
  13190.   TBDASignalState = BDA_SIGNAL_STATE;
  13191.  
  13192. //------------------------------------------------------------
  13193. //  BDA Change Sync Method Set
  13194. // {FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}
  13195.  
  13196.   PBDAChangeState = ^TBDAChangeState;
  13197.   BDA_CHANGE_STATE = (
  13198.     BDA_CHANGES_COMPLETE,
  13199.     BDA_CHANGES_PENDING
  13200.   );
  13201.   {$EXTERNALSYM BDA_CHANGE_STATE}
  13202.   PBDA_CHANGE_STATE = ^BDA_CHANGE_STATE;
  13203.   TBDAChangeState = BDA_CHANGE_STATE;
  13204.  
  13205. //------------------------------------------------------------
  13206. //  BDA Device Configuration Method Set
  13207. // {71985F45-1CA1-11d3-9CC8-00C04F7971E0}
  13208.  
  13209. //------------------------------------------------------------
  13210. //  BDA Topology Property Set
  13211. // {A14EE835-0A23-11d3-9CC7-00C04F7971E0}
  13212.   PBDANodeDescriptor = ^TBDANodeDescriptor;
  13213.   _BDANODE_DESCRIPTOR = record
  13214.     ulBdaNodeType : ULONG;  // The node type as it is used
  13215.                             // in the BDA template topology
  13216.     guidFunction  : TGUID;  // GUID from BdaMedia.h describing
  13217.                             // the node's function (e.g.
  13218.                             // KSNODE_BDA_RF_TUNER)
  13219.     guidName      : TGUID;  // GUID that can be use to look up
  13220.                             // a displayable name for the node.
  13221.   end;
  13222.   {$EXTERNALSYM _BDANODE_DESCRIPTOR}
  13223.   BDANODE_DESCRIPTOR = _BDANODE_DESCRIPTOR;
  13224.   {$EXTERNALSYM BDANODE_DESCRIPTOR}
  13225.   PBDANODE_DESCRIPTOR = ^BDANODE_DESCRIPTOR;
  13226.   {$EXTERNALSYM PBDANODE_DESCRIPTOR}
  13227.   TBDANodeDescriptor = _BDANODE_DESCRIPTOR;
  13228.  
  13229. //------------------------------------------------------------
  13230. //  BDA Void Transform Property Set
  13231. // {71985F46-1CA1-11d3-9CC8-00C04F7971E0}
  13232.  
  13233. //------------------------------------------------------------
  13234. //  BDA Null Transform Property Set
  13235. // {DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}
  13236.  
  13237. //------------------------------------------------------------
  13238. //  BDA Frequency Filter Property Set
  13239. // {71985F47-1CA1-11d3-9CC8-00C04F7971E0}
  13240.  
  13241. //------------------------------------------------------------
  13242. //  BDA Autodemodulate Property Set
  13243. // {DDF15B12-BD25-11d2-9CA0-00C04F7971E0}
  13244.  
  13245. //------------------------------------------------------------
  13246. //  BDA Table Section Property Set
  13247. // {516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}
  13248.  
  13249.   PBDATableSection = ^TBDATableSection;
  13250.   _BDA_TABLE_SECTION = record
  13251.     ulPrimarySectionId   : ULONG;
  13252.     ulSecondarySectionId : ULONG;
  13253.     ulcbSectionLength    : ULONG;
  13254.     argbSectionData      : array[0..MIN_DIMENSION-1] of ULONG;
  13255.   end;
  13256.   {$EXTERNALSYM _BDA_TABLE_SECTION}
  13257.   BDA_TABLE_SECTION = _BDA_TABLE_SECTION;
  13258.   {$EXTERNALSYM BDA_TABLE_SECTION}
  13259.   PBDA_TABLE_SECTION = ^BDA_TABLE_SECTION;
  13260.   {$EXTERNALSYM PBDA_TABLE_SECTION}
  13261.   TBDATableSection = _BDA_TABLE_SECTION;
  13262.  
  13263. //------------------------------------------------------------
  13264. //  BDA PID Filter Property Set
  13265. // {D0A67D65-08DF-4fec-8533-E5B550410B85}
  13266.  
  13267. //---------------------------------------------------------------------
  13268. // From IEnumPIDMap interface
  13269. //---------------------------------------------------------------------
  13270.  
  13271.   MEDIA_SAMPLE_CONTENT = (
  13272.     MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  13273.     MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  13274.     MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  13275.     MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  13276.   );
  13277.   {$EXTERNALSYM MEDIA_SAMPLE_CONTENT}
  13278.   TMediaSampleContent = MEDIA_SAMPLE_CONTENT;
  13279.  
  13280.   PID_MAP = record
  13281.     ulPID              : ULONG;
  13282.     MediaSampleContent : TMediaSampleContent;
  13283.   end;
  13284.   {$EXTERNALSYM PID_MAP}
  13285.   TPIDMap = PID_MAP;
  13286.  
  13287.  
  13288.   PBDAPIDMap = ^TBDAPIDMap;
  13289.   _BDA_PID_MAP = record
  13290.     MediaSampleContent : TMediaSampleContent;
  13291.     ulcPIDs            : ULONG;
  13292.     aulPIDs            : array[0..MIN_DIMENSION-1] of ULONG;
  13293.   end;
  13294.   {$EXTERNALSYM _BDA_PID_MAP}
  13295.   BDA_PID_MAP = _BDA_PID_MAP;
  13296.   {$EXTERNALSYM BDA_PID_MAP}
  13297.   PBDA_PID_MAP = ^BDA_PID_MAP;
  13298.   TBDAPIDMap = _BDA_PID_MAP;
  13299.  
  13300.   PBDAPIDUnmap = ^TBDAPIDUnmap;
  13301.   _BDA_PID_UNMAP = record
  13302.     ulcPIDs : ULONG;
  13303.     aulPIDs : array[0..MIN_DIMENSION-1] of ULONG;
  13304.   end;
  13305.   {$EXTERNALSYM _BDA_PID_UNMAP}
  13306.   BDA_PID_UNMAP = _BDA_PID_UNMAP;
  13307.   {$EXTERNALSYM BDA_PID_UNMAP}
  13308.   PBDA_PID_UNMAP = ^BDA_PID_UNMAP;
  13309.   {$EXTERNALSYM PBDA_PID_UNMAP}
  13310.   TBDAPIDUnmap = _BDA_PID_UNMAP;
  13311.  
  13312. //------------------------------------------------------------
  13313. //  BDA CA Property Set
  13314. // {B0693766-5278-4ec6-B9E1-3CE40560EF5A}
  13315.  
  13316.   PBDACAModuleUI = ^TBDACAModuleUI;
  13317.   _BDA_CA_MODULE_UI = record
  13318.     ulFormat : ULONG;
  13319.     ulbcDesc : ULONG;
  13320.     ulDesc   : array[0..MIN_DIMENSION-1] of ULONG;
  13321.   end;
  13322.   {$EXTERNALSYM _BDA_CA_MODULE_UI}
  13323.   BDA_CA_MODULE_UI = _BDA_CA_MODULE_UI;
  13324.   {$EXTERNALSYM BDA_CA_MODULE_UI}
  13325.   PBDA_CA_MODULE_UI = ^BDA_CA_MODULE_UI;
  13326.   {$EXTERNALSYM PBDA_CA_MODULE_UI}
  13327.   TBDACAModuleUI = _BDA_CA_MODULE_UI;
  13328.  
  13329.   PBDAProgramPIDList = ^TBDAProgramPIDList;
  13330.   _BDA_PROGRAM_PID_LIST = record
  13331.     ulProgramNumber : ULONG;
  13332.     ulcPIDs         : ULONG;
  13333.     ulPID           : array[0..MIN_DIMENSION-1] of ULONG;
  13334.   end;
  13335.   {$EXTERNALSYM _BDA_PROGRAM_PID_LIST}
  13336.   BDA_PROGRAM_PID_LIST = _BDA_PROGRAM_PID_LIST;
  13337.   {$EXTERNALSYM BDA_PROGRAM_PID_LIST}
  13338.   PBDA_PROGRAM_PID_LIST = ^BDA_PROGRAM_PID_LIST;
  13339.   {$EXTERNALSYM PBDA_PROGRAM_PID_LIST}
  13340.   TBDAProgramPIDList = _BDA_PROGRAM_PID_LIST;
  13341.  
  13342. //------------------------------------------------------------
  13343. //  BDA CA Event Set
  13344. // {488C4CCC-B768-4129-8EB1-B00A071F9068}
  13345.  
  13346. //=============================================================
  13347. //
  13348. //
  13349. //  BDA Tuning Model enumerations
  13350. //
  13351. //
  13352. //=============================================================
  13353.  
  13354. // system type for particular DVB Tuning Space instance
  13355.   DVBSystemType = (
  13356.     DVB_Cable,
  13357.     DVB_Terrestrial,
  13358.     DVB_Satellite
  13359.   );
  13360.   {$EXTERNALSYM DVBSystemType}
  13361.   TDVBSystemType = DVBSystemType;
  13362.   
  13363. //------------------------------------------------------------
  13364. //  BDA Channel Tune Request
  13365.  
  13366. const
  13367.   BDA_UNDEFINED_CHANNEL = -1;
  13368.   {$EXTERNALSYM BDA_UNDEFINED_CHANNEL}
  13369.  
  13370. //------------------------------------------------------------
  13371. //  BDA Component(substream)
  13372. type
  13373.   ComponentCategory = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13374.   {$EXTERNALSYM ComponentCategory}
  13375.   const
  13376.     CategoryNotSet = -1;
  13377.     {$EXTERNALSYM CategoryNotSet}
  13378.     CategoryOther  = 0;
  13379.     {$EXTERNALSYM CategoryOther}
  13380.     CategoryVideo  = 1;
  13381.     {$EXTERNALSYM CategoryVideo}
  13382.     CategoryAudio  = 2;
  13383.     {$EXTERNALSYM CategoryAudio}
  13384.     CategoryText   = 3;
  13385.     {$EXTERNALSYM CategoryText}
  13386.     CategoryData   = 4;
  13387.     {$EXTERNALSYM CategoryData}
  13388.  
  13389. // Component Status
  13390. type
  13391.   ComponentStatus = (
  13392.     StatusActive,
  13393.     StatusInactive,
  13394.     StatusUnavailable
  13395.   );
  13396.   {$EXTERNALSYM ComponentStatus}
  13397.   TComponentStatus = ComponentStatus;
  13398.  
  13399. //------------------------------------------------------------
  13400. //
  13401. //  BDA MPEG2 Component Type
  13402. //
  13403. // from the MPEG2 specification
  13404.   MPEG2StreamType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13405.   {$EXTERNALSYM MPEG2StreamType}
  13406.   const
  13407.     BDA_UNITIALIZED_MPEG2STREAMTYPE = -1;
  13408.     {$EXTERNALSYM BDA_UNITIALIZED_MPEG2STREAMTYPE}
  13409.     Reserved1                       = $0;
  13410.     {$NODEFINE Reserved1}
  13411.     ISO_IEC_11172_2_VIDEO           = Reserved1 + 1;
  13412.     {$EXTERNALSYM ISO_IEC_11172_2_VIDEO}
  13413.     ISO_IEC_13818_2_VIDEO           = ISO_IEC_11172_2_VIDEO + 1;
  13414.     {$EXTERNALSYM ISO_IEC_13818_2_VIDEO}
  13415.     ISO_IEC_11172_3_AUDIO           = ISO_IEC_13818_2_VIDEO + 1;
  13416.     {$EXTERNALSYM ISO_IEC_11172_3_AUDIO}
  13417.     ISO_IEC_13818_3_AUDIO           = ISO_IEC_11172_3_AUDIO + 1;
  13418.     {$EXTERNALSYM ISO_IEC_13818_3_AUDIO}
  13419.     ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1;
  13420.     {$EXTERNALSYM ISO_IEC_13818_1_PRIVATE_SECTION}
  13421.     ISO_IEC_13818_1_PES             = ISO_IEC_13818_1_PRIVATE_SECTION + 1;
  13422.     {$EXTERNALSYM ISO_IEC_13818_1_PES}
  13423.     ISO_IEC_13522_MHEG              = ISO_IEC_13818_1_PES + 1;
  13424.     {$EXTERNALSYM ISO_IEC_13522_MHEG}
  13425.     ANNEX_A_DSM_CC                  = ISO_IEC_13522_MHEG + 1;
  13426.     {$EXTERNALSYM ANNEX_A_DSM_CC}
  13427.     ITU_T_REC_H_222_1               = ANNEX_A_DSM_CC + 1;
  13428.     {$EXTERNALSYM ITU_T_REC_H_222_1}
  13429.     ISO_IEC_13818_6_TYPE_A          = ITU_T_REC_H_222_1 + 1;
  13430.     {$EXTERNALSYM ISO_IEC_13818_6_TYPE_A}
  13431.     ISO_IEC_13818_6_TYPE_B          = ISO_IEC_13818_6_TYPE_A + 1;
  13432.     {$EXTERNALSYM ISO_IEC_13818_6_TYPE_B}
  13433.     ISO_IEC_13818_6_TYPE_C          = ISO_IEC_13818_6_TYPE_B + 1;
  13434.     {$EXTERNALSYM ISO_IEC_13818_6_TYPE_C}
  13435.     ISO_IEC_13818_6_TYPE_D          = ISO_IEC_13818_6_TYPE_C + 1;
  13436.     {$EXTERNALSYM ISO_IEC_13818_6_TYPE_D}
  13437.     ISO_IEC_13818_1_AUXILIARY       = ISO_IEC_13818_6_TYPE_D + 1;
  13438.     {$EXTERNALSYM ISO_IEC_13818_1_AUXILIARY}
  13439.     ISO_IEC_13818_1_RESERVED        = ISO_IEC_13818_1_AUXILIARY + 1;
  13440.     {$EXTERNALSYM ISO_IEC_13818_1_RESERVED}
  13441.     USER_PRIVATE                    = ISO_IEC_13818_1_RESERVED + 1;
  13442.     {$EXTERNALSYM USER_PRIVATE}
  13443.  
  13444. //------------------------------------------------------------
  13445. //
  13446. //  mpeg-2 transport stride format block; associated with media
  13447. //   types MEDIATYPE_Stream/MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE;
  13448. //   *all* format blocks associated with above media type *must*
  13449. //   start with the MPEG2_TRANSPORT_STRIDE structure
  13450. //
  13451. type
  13452.   PMPEG2TransportStride = ^TMPEG2TransportStride;
  13453.   _MPEG2_TRANSPORT_STRIDE = record
  13454.     dwOffset       : DWORD;
  13455.     dwPacketLength : DWORD;
  13456.     dwStride       : DWORD;
  13457.   end;
  13458.   {$EXTERNALSYM _MPEG2_TRANSPORT_STRIDE}
  13459.   MPEG2_TRANSPORT_STRIDE = _MPEG2_TRANSPORT_STRIDE;
  13460.   {$EXTERNALSYM MPEG2_TRANSPORT_STRIDE}
  13461.   PMPEG2_TRANSPORT_STRIDE = ^MPEG2_TRANSPORT_STRIDE;
  13462.   {$EXTERNALSYM PMPEG2_TRANSPORT_STRIDE}
  13463.   TMPEG2TransportStride = _MPEG2_TRANSPORT_STRIDE;
  13464.  
  13465. //------------------------------------------------------------
  13466. //
  13467. //  BDA ATSC Component Type
  13468. //
  13469. //
  13470. // ATSC made AC3 Audio a descriptor instead of
  13471. // defining a user private stream type.
  13472. //enum ATSCComponentTypeFlags {
  13473.     // bit flags for various component type properties
  13474. const
  13475.   ATSCCT_AC3 = $00000001;
  13476.   {$EXTERNALSYM ATSCCT_AC3}
  13477.  
  13478. //------------------------------------------------------------
  13479. //  BDA Locators
  13480.  
  13481. type
  13482.   BinaryConvolutionCodeRate = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13483.   {$EXTERNALSYM BinaryConvolutionCodeRate}
  13484.   const
  13485.     BDA_BCC_RATE_NOT_SET     = -1;
  13486.     {$EXTERNALSYM BDA_BCC_RATE_NOT_SET}
  13487.     BDA_BCC_RATE_NOT_DEFINED = 0;
  13488.     {$EXTERNALSYM BDA_BCC_RATE_NOT_DEFINED}
  13489.     BDA_BCC_RATE_1_2         = 1;  // 1/2
  13490.     {$EXTERNALSYM BDA_BCC_RATE_1_2}
  13491.     BDA_BCC_RATE_2_3         = 2;  // 2/3
  13492.     {$EXTERNALSYM BDA_BCC_RATE_2_3}
  13493.     BDA_BCC_RATE_3_4         = 3;  // 3/4
  13494.     {$EXTERNALSYM BDA_BCC_RATE_3_4}
  13495.     BDA_BCC_RATE_3_5         = 4;
  13496.     {$EXTERNALSYM BDA_BCC_RATE_3_5}
  13497.     BDA_BCC_RATE_4_5         = 5;
  13498.     {$EXTERNALSYM BDA_BCC_RATE_4_5}
  13499.     BDA_BCC_RATE_5_6         = 6;  // 5/6
  13500.     {$EXTERNALSYM BDA_BCC_RATE_5_6}
  13501.     BDA_BCC_RATE_5_11        = 7;
  13502.     {$EXTERNALSYM BDA_BCC_RATE_5_11}
  13503.     BDA_BCC_RATE_7_8         = 8;  // 7/8
  13504.     {$EXTERNALSYM BDA_BCC_RATE_7_8}
  13505.     BDA_BCC_RATE_MAX         = 9;
  13506.     {$EXTERNALSYM BDA_BCC_RATE_MAX}
  13507.  
  13508. type
  13509.   FECMethod = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13510.   {$EXTERNALSYM FECMethod}
  13511.   const
  13512.     BDA_FEC_METHOD_NOT_SET     = -1;
  13513.     {$EXTERNALSYM BDA_FEC_METHOD_NOT_SET}
  13514.     BDA_FEC_METHOD_NOT_DEFINED = 0;
  13515.     {$EXTERNALSYM BDA_FEC_METHOD_NOT_DEFINED}
  13516.     BDA_FEC_VITERBI            = 1; // FEC is a Viterbi Binary Convolution.
  13517.     {$EXTERNALSYM BDA_FEC_VITERBI}
  13518.     BDA_FEC_RS_204_188         = 2; // The FEC is Reed-Solomon 204/188 (outer FEC)
  13519.     {$EXTERNALSYM BDA_FEC_RS_204_188}
  13520.     BDA_FEC_MAX                = 3;
  13521.     {$EXTERNALSYM BDA_FEC_MAX}
  13522.  
  13523. type
  13524.   ModulationType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13525.   {$EXTERNALSYM ModulationType}
  13526.   const
  13527.     BDA_MOD_NOT_SET          = -1;
  13528.     {$EXTERNALSYM BDA_MOD_NOT_SET}
  13529.     BDA_MOD_NOT_DEFINED      = 0;
  13530.     {$EXTERNALSYM BDA_MOD_NOT_DEFINED}
  13531.     BDA_MOD_16QAM            = 1;
  13532.     {$EXTERNALSYM BDA_MOD_16QAM}
  13533.     BDA_MOD_32QAM            = 2;
  13534.     {$EXTERNALSYM BDA_MOD_32QAM}
  13535.     BDA_MOD_64QAM            = 3;
  13536.     {$EXTERNALSYM BDA_MOD_64QAM}
  13537.     BDA_MOD_80QAM            = 4;
  13538.     {$EXTERNALSYM BDA_MOD_80QAM}
  13539.     BDA_MOD_96QAM            = 5;
  13540.     {$EXTERNALSYM BDA_MOD_96QAM}
  13541.     BDA_MOD_112QAM           = 6;
  13542.     {$EXTERNALSYM BDA_MOD_112QAM}
  13543.     BDA_MOD_128QAM           = 7;
  13544.     {$EXTERNALSYM BDA_MOD_128QAM}
  13545.     BDA_MOD_160QAM           = 8;
  13546.     {$EXTERNALSYM BDA_MOD_160QAM}
  13547.     BDA_MOD_192QAM           = 9;
  13548.     {$EXTERNALSYM BDA_MOD_192QAM}
  13549.     BDA_MOD_224QAM           = 10;
  13550.     {$EXTERNALSYM BDA_MOD_224QAM}
  13551.     BDA_MOD_256QAM           = 11;
  13552.     {$EXTERNALSYM BDA_MOD_256QAM}
  13553.     BDA_MOD_320QAM           = 12;
  13554.     {$EXTERNALSYM BDA_MOD_320QAM}
  13555.     BDA_MOD_384QAM           = 13;
  13556.     {$EXTERNALSYM BDA_MOD_384QAM}
  13557.     BDA_MOD_448QAM           = 14;
  13558.     {$EXTERNALSYM BDA_MOD_448QAM}
  13559.     BDA_MOD_512QAM           = 15;
  13560.     {$EXTERNALSYM BDA_MOD_512QAM}
  13561.     BDA_MOD_640QAM           = 16;
  13562.     {$EXTERNALSYM BDA_MOD_640QAM}
  13563.     BDA_MOD_768QAM           = 17;
  13564.     {$EXTERNALSYM BDA_MOD_768QAM}
  13565.     BDA_MOD_896QAM           = 18;
  13566.     {$EXTERNALSYM BDA_MOD_896QAM}
  13567.     BDA_MOD_1024QAM          = 19;
  13568.     {$EXTERNALSYM BDA_MOD_1024QAM}
  13569.     BDA_MOD_QPSK             = 20;
  13570.     {$EXTERNALSYM BDA_MOD_QPSK}
  13571.     BDA_MOD_BPSK             = 21;
  13572.     {$EXTERNALSYM BDA_MOD_BPSK}
  13573.     BDA_MOD_OQPSK            = 22;
  13574.     {$EXTERNALSYM BDA_MOD_OQPSK}
  13575.     BDA_MOD_8VSB             = 23;
  13576.     {$EXTERNALSYM BDA_MOD_8VSB}
  13577.     BDA_MOD_16VSB            = 24;
  13578.     {$EXTERNALSYM BDA_MOD_16VSB}
  13579.     BDA_MOD_ANALOG_AMPLITUDE = 25; // std am
  13580.     {$EXTERNALSYM BDA_MOD_ANALOG_AMPLITUDE}
  13581.     BDA_MOD_ANALOG_FREQUENCY = 26; // std fm
  13582.     {$EXTERNALSYM BDA_MOD_ANALOG_FREQUENCY}
  13583.     BDA_MOD_MAX              = 27;
  13584.     {$EXTERNALSYM BDA_MOD_MAX}
  13585.  
  13586. Type
  13587.   SpectralInversion = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13588.   {$EXTERNALSYM SpectralInversion}
  13589.   const
  13590.     BDA_SPECTRAL_INVERSION_NOT_SET     = -1;
  13591.     {$EXTERNALSYM BDA_SPECTRAL_INVERSION_NOT_SET}
  13592.     BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0;
  13593.     {$EXTERNALSYM BDA_SPECTRAL_INVERSION_NOT_DEFINED}
  13594.     BDA_SPECTRAL_INVERSION_AUTOMATIC   = 1;
  13595.     {$EXTERNALSYM BDA_SPECTRAL_INVERSION_AUTOMATIC}
  13596.     BDA_SPECTRAL_INVERSION_NORMAL      = 2;
  13597.     {$EXTERNALSYM BDA_SPECTRAL_INVERSION_NORMAL}
  13598.     BDA_SPECTRAL_INVERSION_INVERTED    = 3;
  13599.     {$EXTERNALSYM BDA_SPECTRAL_INVERSION_INVERTED}
  13600.     BDA_SPECTRAL_INVERSION_MAX         = 4;
  13601.     {$EXTERNALSYM BDA_SPECTRAL_INVERSION_MAX}
  13602.  
  13603. Type
  13604.   Polarisation = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13605.   {$EXTERNALSYM Polarisation}
  13606.   const
  13607.     BDA_POLARISATION_NOT_SET     = -1;
  13608.     {$EXTERNALSYM BDA_POLARISATION_NOT_SET}
  13609.     BDA_POLARISATION_NOT_DEFINED = 0;
  13610.     {$EXTERNALSYM BDA_POLARISATION_NOT_DEFINED}
  13611.     BDA_POLARISATION_LINEAR_H    = 1; // Linear horizontal polarisation
  13612.     {$EXTERNALSYM BDA_POLARISATION_LINEAR_H}
  13613.     BDA_POLARISATION_LINEAR_V    = 2; // Linear vertical polarisation
  13614.     {$EXTERNALSYM BDA_POLARISATION_LINEAR_V}
  13615.     BDA_POLARISATION_CIRCULAR_L  = 3; // Circular left polarisation
  13616.     {$EXTERNALSYM BDA_POLARISATION_CIRCULAR_L}
  13617.     BDA_POLARISATION_CIRCULAR_R  = 4; // Circular right polarisation
  13618.     {$EXTERNALSYM BDA_POLARISATION_CIRCULAR_R}
  13619.     BDA_POLARISATION_MAX         = 5;
  13620.     {$EXTERNALSYM BDA_POLARISATION_MAX}
  13621.  
  13622. type
  13623.   GuardInterval = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13624.   {$EXTERNALSYM GuardInterval}
  13625.   const
  13626.     BDA_GUARD_NOT_SET     = -1;
  13627.     {$EXTERNALSYM BDA_GUARD_NOT_SET}
  13628.     BDA_GUARD_NOT_DEFINED = 0;
  13629.     {$EXTERNALSYM BDA_GUARD_NOT_DEFINED}
  13630.     BDA_GUARD_1_32        = 1; // Guard interval is 1/32
  13631.     {$EXTERNALSYM BDA_GUARD_1_32}
  13632.     BDA_GUARD_1_16        = 2; // Guard interval is 1/16
  13633.     {$EXTERNALSYM BDA_GUARD_1_16}
  13634.     BDA_GUARD_1_8         = 3; // Guard interval is 1/8
  13635.     {$EXTERNALSYM BDA_GUARD_1_8}
  13636.     BDA_GUARD_1_4         = 4; // Guard interval is 1/4
  13637.     {$EXTERNALSYM BDA_GUARD_1_4}
  13638.     BDA_GUARD_MAX         = 5;
  13639.     {$EXTERNALSYM BDA_GUARD_MAX}
  13640.  
  13641. type
  13642.   HierarchyAlpha = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13643.   {$EXTERNALSYM HierarchyAlpha}
  13644.   const
  13645.     BDA_HALPHA_NOT_SET     = -1;
  13646.     {$EXTERNALSYM BDA_HALPHA_NOT_SET}
  13647.     BDA_HALPHA_NOT_DEFINED = 0;
  13648.     {$EXTERNALSYM BDA_HALPHA_NOT_DEFINED}
  13649.     BDA_HALPHA_1           = 1; // Hierarchy alpha is 1.
  13650.     {$EXTERNALSYM BDA_HALPHA_1}
  13651.     BDA_HALPHA_2           = 2; // Hierarchy alpha is 2.
  13652.     {$EXTERNALSYM BDA_HALPHA_2}
  13653.     BDA_HALPHA_4           = 3; // Hierarchy alpha is 4.
  13654.     {$EXTERNALSYM BDA_HALPHA_4}
  13655.     BDA_HALPHA_MAX         = 4;
  13656.     {$EXTERNALSYM BDA_HALPHA_MAX}
  13657.  
  13658. type
  13659.   TransmissionMode = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13660.   {$EXTERNALSYM TransmissionMode}
  13661.   const
  13662.     BDA_XMIT_MODE_NOT_SET     = -1;
  13663.     {$EXTERNALSYM BDA_XMIT_MODE_NOT_SET}
  13664.     BDA_XMIT_MODE_NOT_DEFINED = 0;
  13665.     {$EXTERNALSYM BDA_XMIT_MODE_NOT_DEFINED}
  13666.     BDA_XMIT_MODE_2K          = 1; // Transmission uses 1705 carriers (use a 2K FFT)
  13667.     {$EXTERNALSYM BDA_XMIT_MODE_2K}
  13668.     BDA_XMIT_MODE_8K          = 2; // Transmission uses 6817 carriers (use an 8K FFT)
  13669.     {$EXTERNALSYM BDA_XMIT_MODE_8K}
  13670.     BDA_XMIT_MODE_MAX         = 3;
  13671.     {$EXTERNALSYM BDA_XMIT_MODE_MAX}
  13672.  
  13673.  
  13674. //  Settings for Tuner Frequency
  13675. //
  13676.  
  13677.   BDA_FREQUENCY_NOT_SET      = -1;
  13678.   {$EXTERNALSYM BDA_FREQUENCY_NOT_SET}
  13679.   BDA_FREQUENCY_NOT_DEFINED  = 0;
  13680.   {$EXTERNALSYM BDA_FREQUENCY_NOT_DEFINED}
  13681.  
  13682. //  Settings for Tuner Range
  13683. //
  13684. //  Tuner range refers to the setting of LNB High/Low as well as the
  13685. //  selection of a satellite on a multiple satellite switch.
  13686. //
  13687.   BDA_RANGE_NOT_SET      = -1;
  13688.   {$EXTERNALSYM BDA_RANGE_NOT_SET}
  13689.   BDA_RANGE_NOT_DEFINED  = 0;
  13690.   {$EXTERNALSYM BDA_RANGE_NOT_DEFINED}
  13691.  
  13692. //  Settings for Tuner Channel Bandwidth
  13693. //
  13694.   BDA_CHAN_BANDWITH_NOT_SET      = -1;
  13695.   {$EXTERNALSYM BDA_CHAN_BANDWITH_NOT_SET}
  13696.   BDA_CHAN_BANDWITH_NOT_DEFINED  = 0;
  13697.   {$EXTERNALSYM BDA_CHAN_BANDWITH_NOT_DEFINED}
  13698.  
  13699. //  Settings for Tuner Frequency Multiplier
  13700. //
  13701.   BDA_FREQUENCY_MULTIPLIER_NOT_SET       = -1;
  13702.   {$EXTERNALSYM BDA_FREQUENCY_MULTIPLIER_NOT_SET}
  13703.   BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED   = 0;
  13704.   {$EXTERNALSYM BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED}
  13705.  
  13706. //------------------------------------------------------------------------------
  13707. // File: Regbag.h
  13708. // Desc: part of Tuner library
  13709. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  13710. //------------------------------------------------------------------------------
  13711.  
  13712. const
  13713.   IID_ICreatePropBagOnRegKey : TGUID = '{8A674B48-1F63-11d3-B64C-00C04F79498E}';
  13714.   {$EXTERNALSYM IID_ICreatePropBagOnRegKey}
  13715.  
  13716. type
  13717.   {$HPPEMIT 'typedef System::DelphiInterface<ICreatePropBagOnRegKey> _di_ICreatePropBagOnRegKey;'}
  13718.   {$EXTERNALSYM ICreatePropBagOnRegKey}
  13719.   ICreatePropBagOnRegKey = interface(IUnknown)
  13720.     ['{8A674B48-1F63-11d3-B64C-00C04F79498E}']
  13721.     (*** ICreatePropBagOnRegKey methods ***)
  13722.     function Create(hkey: HKEY; subkey: POleStr; ulOptions, samDesired: DWORD;
  13723.              const iid: TGUID; out ppBag): HResult; stdcall;
  13724.     end;
  13725.  
  13726. //------------------------------------------------------------------------------
  13727. // File: Tuner.h
  13728. // Desc: Tuner library
  13729. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  13730. //------------------------------------------------------------------------------
  13731.  
  13732. const
  13733.   IID_ITuningSpaces            : TGUID = '{901284E4-33FE-4b69-8D63-634A596F3756}';
  13734.   {$EXTERNALSYM IID_ITuningSpaces}
  13735.   IID_ITuningSpaceContainer    : TGUID = '{5B692E84-E2F1-11d2-9493-00C04F72D980}';
  13736.   {$EXTERNALSYM IID_ITuningSpaceContainer}
  13737.   IID_ITuningSpace             : TGUID = '{061C6E30-E622-11d2-9493-00C04F72D980}';
  13738.   {$EXTERNALSYM IID_ITuningSpace}
  13739.   IID_IEnumTuningSpaces        : TGUID = '{8B8EB248-FC2B-11d2-9D8C-00C04F72D980}';
  13740.   {$EXTERNALSYM IID_IEnumTuningSpaces}
  13741.   IID_IDVBTuningSpace          : TGUID = '{ADA0B268-3B19-4e5b-ACC4-49F852BE13BA}';
  13742.   {$EXTERNALSYM IID_IDVBTuningSpace}
  13743.   IID_IAnalogTVTuningSpace     : TGUID = '{2A6E293C-2595-11d3-B64C-00C04F79498E}';
  13744.   {$EXTERNALSYM IID_IAnalogTVTuningSpace}
  13745.   IID_IATSCTuningSpace         : TGUID = '{0369B4E2-45B6-11d3-B650-00C04F79498E}';
  13746.   {$EXTERNALSYM IID_IATSCTuningSpace}
  13747.   IID_IAnalogRadioTuningSpace  : TGUID = '{2A6E293B-2595-11d3-B64C-00C04F79498E}';
  13748.   {$EXTERNALSYM IID_IAnalogRadioTuningSpace}
  13749.   IID_ITuneRequest             : TGUID = '{07DDC146-FC3D-11d2-9D8C-00C04F72D980}';
  13750.   {$EXTERNALSYM IID_ITuneRequest}
  13751.   IID_IChannelTuneRequest      : TGUID = '{0369B4E0-45B6-11d3-B650-00C04F79498E}';
  13752.   {$EXTERNALSYM IID_IChannelTuneRequest}
  13753.   IID_IATSCChannelTuneRequest  : TGUID = '{0369B4E1-45B6-11d3-B650-00C04F79498E}';
  13754.   {$EXTERNALSYM IID_IATSCChannelTuneRequest}
  13755.   IID_IDVBTuneRequest          : TGUID = '{0D6F567E-A636-42bb-83BA-CE4C1704AFA2}';
  13756.   {$EXTERNALSYM IID_IDVBTuneRequest}
  13757.   IID_ITuner                   : TGUID = '{28C52640-018A-11d3-9D8E-00C04F72D980}';
  13758.   {$EXTERNALSYM IID_ITuner}
  13759.   IID_IScanningTuner           : TGUID = '{1DFD0A5C-0284-11d3-9D8E-00C04F72D980}';
  13760.   {$EXTERNALSYM IID_IScanningTuner}
  13761.   IID_ITunerEvents             : TGUID = '{68481420-0280-11d3-9D8E-00C04F72D980}';
  13762.   {$EXTERNALSYM IID_ITunerEvents}
  13763.   IID_ISignalEvents            : TGUID = '{85E2439E-0E23-11d3-9D8E-00C04F72D980}';
  13764.   {$EXTERNALSYM IID_ISignalEvents}
  13765.   IID_IComponentType           : TGUID = '{6A340DC0-0311-11d3-9D8E-00C04F72D980}';
  13766.   {$EXTERNALSYM IID_IComponentType}
  13767.   IID_ILanguageComponentType   : TGUID = '{B874C8BA-0FA2-11d3-9D8E-00C04F72D980}';
  13768.   {$EXTERNALSYM IID_ILanguageComponentType}
  13769.   IID_IMPEG2ComponentType      : TGUID = '{2C073D84-B51C-48c9-AA9F-68971E1F6E38}';
  13770.   {$EXTERNALSYM IID_IMPEG2ComponentType}
  13771.   IID_IATSCComponentType       : TGUID = '{FC189E4D-7BD4-4125-B3B3-3A76A332CC96}';
  13772.   {$EXTERNALSYM IID_IATSCComponentType}
  13773.   IID_IEnumComponentTypes      : TGUID = '{8A674B4A-1F63-11d3-B64C-00C04F79498E}';
  13774.   {$EXTERNALSYM IID_IEnumComponentTypes}
  13775.   IID_IComponentTypes          : TGUID = '{0DC13D4A-0313-11d3-9D8E-00C04F72D980}';
  13776.   {$EXTERNALSYM IID_IComponentTypes}
  13777.   IID_IComponent               : TGUID = '{1A5576FC-0E19-11d3-9D8E-00C04F72D980}';
  13778.   {$EXTERNALSYM IID_IComponent}
  13779.   IID_IMPEG2Component          : TGUID = '{1493E353-1EB6-473c-802D-8E6B8EC9D2A9}';
  13780.   {$EXTERNALSYM IID_IMPEG2Component}
  13781.   IID_IEnumComponents          : TGUID = '{2A6E2939-2595-11d3-B64C-00C04F79498E}';
  13782.   {$EXTERNALSYM IID_IEnumComponents}
  13783.   IID_IComponents              : TGUID = '{FCD01846-0E19-11d3-9D8E-00C04F72D980}';
  13784.   {$EXTERNALSYM IID_IComponents}
  13785.   IID_ILocator                 : TGUID = '{286D7F89-760C-4F89-80C4-66841D2507AA}';
  13786.   {$EXTERNALSYM IID_ILocator}
  13787.   IID_IATSCLocator             : TGUID = '{BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF}';
  13788.   {$EXTERNALSYM IID_IATSCLocator}
  13789.   IID_IDVBTLocator             : TGUID = '{8664DA16-DDA2-42ac-926A-C18F9127C302}';
  13790.   {$EXTERNALSYM IID_IDVBTLocator}
  13791.   IID_IDVBSLocator             : TGUID = '{3D7C353C-0D04-45f1-A742-F97CC1188DC8}';
  13792.   {$EXTERNALSYM IID_IDVBSLocator}
  13793.   IID_IDVBCLocator             : TGUID = '{6E42F36E-1DD2-43c4-9F78-69D25AE39034}';
  13794.   {$EXTERNALSYM IID_IDVBCLocator}
  13795.  
  13796.   IID_IDVBTuningSpace2         : TGUID = '{843188B4-CE62-43db-966B-8145A094E040}';
  13797.   {$EXTERNALSYM IID_IDVBTuningSpace2}
  13798.   IID_IDVBSTuningSpace         : TGUID = '{CDF7BE60-D954-42fd-A972-78971958E470}';
  13799.   {$EXTERNALSYM IID_IDVBSTuningSpace}
  13800.   IID_IMPEG2TuneRequest        : TGUID = '{EB7D987F-8A01-42AD-B8AE-574DEEE44D1A}';
  13801.   {$EXTERNALSYM IID_IMPEG2TuneRequest}
  13802.   IID_IMPEG2TuneRequestFactory : TGUID = '{14E11ABD-EE37-4893-9EA1-6964DE933E39}';
  13803.   {$EXTERNALSYM IID_IMPEG2TuneRequestFactory}
  13804.   IID_IMPEG2TuneRequestSupport : TGUID = '{1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF}';
  13805.   {$EXTERNALSYM IID_IMPEG2TuneRequestSupport}
  13806.   IID_IBroadcastEvent          : TGUID = '{3B21263F-26E8-489d-AAC4-924F7EFD9511}';
  13807.   {$EXTERNALSYM IID_IBroadcastEvent}
  13808.  
  13809.   IID_IAuxInTuningSpace        : TGUID = '{E48244B8-7E17-4f76-A763-5090FF1E2F30}'; // DX9
  13810.   {$EXTERNALSYM IID_IAuxInTuningSpace}
  13811.  
  13812.   CLSID_SystemTuningSpaces     : TGUID = '{D02AAC50-027E-11d3-9D8E-00C04F72D980}';
  13813.   {$EXTERNALSYM CLSID_SystemTuningSpaces}
  13814.   CLSID_TuningSpace            : TGUID = '{5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB}';
  13815.   {$EXTERNALSYM CLSID_TuningSpace}
  13816.   CLSID_ATSCTuningSpace        : TGUID = '{A2E30750-6C3D-11d3-B653-00C04F79498E}';
  13817.   {$EXTERNALSYM CLSID_ATSCTuningSpace}
  13818.   CLSID_AnalogRadioTuningSpace : TGUID = '{8A674B4C-1F63-11d3-B64C-00C04F79498E}';
  13819.   {$EXTERNALSYM CLSID_AnalogRadioTuningSpace}
  13820.   CLSID_AnalogTVTuningSpace    : TGUID = '{8A674B4D-1F63-11d3-B64C-00C04F79498E}';
  13821.   {$EXTERNALSYM CLSID_AnalogTVTuningSpace}
  13822.   CLSID_DVBTuningSpace         : TGUID = '{C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7}';
  13823.   {$EXTERNALSYM CLSID_DVBTuningSpace}
  13824.   CLSID_ComponentTypes         : TGUID = '{A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980}';
  13825.   {$EXTERNALSYM CLSID_ComponentTypes}
  13826.   CLSID_ComponentType          : TGUID = '{823535A0-0318-11d3-9D8E-00C04F72D980}';
  13827.   {$EXTERNALSYM CLSID_ComponentType}
  13828.   CLSID_LanguageComponentType  : TGUID = '{1BE49F30-0E1B-11d3-9D8E-00C04F72D980}';
  13829.   {$EXTERNALSYM CLSID_LanguageComponentType}
  13830.   CLSID_MPEG2ComponentType     : TGUID = '{418008F3-CF67-4668-9628-10DC52BE1D08}';
  13831.   {$EXTERNALSYM CLSID_MPEG2ComponentType}
  13832.   CLSID_ATSCComponentType      : TGUID = '{A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE}';
  13833.   {$EXTERNALSYM CLSID_ATSCComponentType}
  13834.   CLSID_Components             : TGUID = '{809B6661-94C4-49e6-B6EC-3F0F862215AA}';
  13835.   {$EXTERNALSYM CLSID_Components}
  13836.   CLSID_Component              : TGUID = '{59DC47A8-116C-11d3-9D8E-00C04F72D980}';
  13837.   {$EXTERNALSYM CLSID_Component}
  13838.   CLSID_MPEG2Component         : TGUID = '{055CB2D7-2969-45cd-914B-76890722F112}';
  13839.   {$EXTERNALSYM CLSID_MPEG2Component}
  13840.   CLSID_TuneRequest            : TGUID = '{B46E0D38-AB35-4a06-A137-70576B01B39F}';
  13841.   {$EXTERNALSYM CLSID_TuneRequest}
  13842.   CLSID_ChannelTuneRequest     : TGUID = '{0369B4E5-45B6-11d3-B650-00C04F79498E}';
  13843.   {$EXTERNALSYM CLSID_ChannelTuneRequest}
  13844.   CLSID_ATSCChannelTuneRequest : TGUID = '{0369B4E6-45B6-11d3-B650-00C04F79498E}';
  13845.   {$EXTERNALSYM CLSID_ATSCChannelTuneRequest}
  13846.   CLSID_Locator                : TGUID = '{0888C883-AC4F-4943-B516-2C38D9B34562}';
  13847.   {$EXTERNALSYM CLSID_Locator}
  13848.   CLSID_ATSCLocator            : TGUID = '{8872FF1B-98FA-4d7a-8D93-C9F1055F85BB}';
  13849.   {$EXTERNALSYM CLSID_ATSCLocator}
  13850.   CLSID_DVBTLocator            : TGUID = '{9CD64701-BDF3-4d14-8E03-F12983D86664}';
  13851.   {$EXTERNALSYM CLSID_DVBTLocator}
  13852.   CLSID_DVBSLocator            : TGUID = '{1DF7D126-4050-47f0-A7CF-4C4CA9241333}';
  13853.   {$EXTERNALSYM CLSID_DVBSLocator}
  13854.   CLSID_DVBCLocator            : TGUID = '{C531D9FD-9685-4028-8B68-6E1232079F1E}';
  13855.   {$EXTERNALSYM CLSID_DVBCLocator}
  13856.   CLSID_DVBTuneRequest         : TGUID = '{15D6504A-5494-499c-886C-973C9E53B9F1}';
  13857.   {$EXTERNALSYM CLSID_DVBTuneRequest}
  13858.   CLSID_CreatePropBagOnRegKey  : TGUID = '{8A674B49-1F63-11d3-B64C-00C04F79498E}';
  13859.   {$EXTERNALSYM CLSID_CreatePropBagOnRegKey}
  13860.  
  13861.   CLSID_DVBSTuningSpace        : TGUID = '{B64016F3-C9A2-4066-96F0-BD9563314726}';
  13862.   {$EXTERNALSYM CLSID_DVBSTuningSpace}
  13863.   CLSID_MPEG2TuneRequest       : TGUID = '{0955AC62-BF2E-4CBA-A2B9-A63F772D46CF}';
  13864.   {$EXTERNALSYM CLSID_MPEG2TuneRequest}
  13865.   CLSID_BroadcastEventService  : TGUID = '{0B3FFB92-0919-4934-9D5B-619C719D0202}';
  13866.   {$EXTERNALSYM CLSID_BroadcastEventService}
  13867.   CLSID_MPEG2TuneRequestFactory: TGUID = '{2C63E4EB-4CEA-41B8-919C-E947EA19A77C}';
  13868.   {$EXTERNALSYM CLSID_MPEG2TuneRequestFactory}
  13869.  
  13870.   CLSID_AuxInTuningSpace       : TGUID = '{F9769A06-7ACA-4e39-9CFB-97BB35F0E77E}';
  13871.   {$EXTERNALSYM CLSID_AuxInTuningSpace}
  13872.  
  13873.   DISPID_TUNER_TS_UNIQUENAME                        = 1;
  13874.   {$EXTERNALSYM DISPID_TUNER_TS_UNIQUENAME}
  13875.   DISPID_TUNER_TS_FRIENDLYNAME                      = 2;
  13876.   {$EXTERNALSYM DISPID_TUNER_TS_FRIENDLYNAME}
  13877.   DISPID_TUNER_TS_CLSID                              = 3;
  13878.   {$EXTERNALSYM DISPID_TUNER_TS_CLSID}
  13879.   DISPID_TUNER_TS_NETWORKTYPE                        = 4;
  13880.   {$EXTERNALSYM DISPID_TUNER_TS_NETWORKTYPE}
  13881.   DISPID_TUNER_TS__NETWORKTYPE                      = 5;
  13882.   {$EXTERNALSYM DISPID_TUNER_TS__NETWORKTYPE}
  13883.   DISPID_TUNER_TS_CREATETUNEREQUEST                  = 6;
  13884.   {$EXTERNALSYM DISPID_TUNER_TS_CREATETUNEREQUEST}
  13885.   DISPID_TUNER_TS_ENUMCATEGORYGUIDS                  = 7;
  13886.   {$EXTERNALSYM DISPID_TUNER_TS_ENUMCATEGORYGUIDS}
  13887.   DISPID_TUNER_TS_ENUMDEVICEMONIKERS                = 8;
  13888.   {$EXTERNALSYM DISPID_TUNER_TS_ENUMDEVICEMONIKERS}
  13889.   DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES    = 9;
  13890.   {$EXTERNALSYM DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES}
  13891.   DISPID_TUNER_TS_FREQMAP                            = 10;
  13892.   {$EXTERNALSYM DISPID_TUNER_TS_FREQMAP}
  13893.   DISPID_TUNER_TS_DEFLOCATOR                        = 11;
  13894.   {$EXTERNALSYM DISPID_TUNER_TS_DEFLOCATOR}
  13895.   DISPID_TUNER_TS_CLONE                              = 12;
  13896.   {$EXTERNALSYM DISPID_TUNER_TS_CLONE}
  13897.  
  13898.   // DISPIDs for ITuneRequest interface
  13899.   DISPID_TUNER_TR_TUNINGSPACE                        = 1;
  13900.   {$EXTERNALSYM DISPID_TUNER_TR_TUNINGSPACE}
  13901.   DISPID_TUNER_TR_COMPONENTS                        = 2;
  13902.   {$EXTERNALSYM DISPID_TUNER_TR_COMPONENTS}
  13903.   DISPID_TUNER_TR_CLONE                              = 3;
  13904.   {$EXTERNALSYM DISPID_TUNER_TR_CLONE}
  13905.   DISPID_TUNER_TR_LOCATOR                            = 4;
  13906.   {$EXTERNALSYM DISPID_TUNER_TR_LOCATOR}
  13907.  
  13908.   // DISPID for IComponentType interface
  13909.   DISPID_TUNER_CT_CATEGORY                          = 1;
  13910.   {$EXTERNALSYM DISPID_TUNER_CT_CATEGORY}
  13911.   DISPID_TUNER_CT_MEDIAMAJORTYPE                    = 2;
  13912.   {$EXTERNALSYM DISPID_TUNER_CT_MEDIAMAJORTYPE}
  13913.   DISPID_TUNER_CT__MEDIAMAJORTYPE                    = 3;
  13914.   {$EXTERNALSYM DISPID_TUNER_CT__MEDIAMAJORTYPE}
  13915.   DISPID_TUNER_CT_MEDIASUBTYPE                      = 4;
  13916.   {$EXTERNALSYM DISPID_TUNER_CT_MEDIASUBTYPE}
  13917.   DISPID_TUNER_CT__MEDIASUBTYPE                      = 5;
  13918.   {$EXTERNALSYM DISPID_TUNER_CT__MEDIASUBTYPE}
  13919.   DISPID_TUNER_CT_MEDIAFORMATTYPE                    = 6;
  13920.   {$EXTERNALSYM DISPID_TUNER_CT_MEDIAFORMATTYPE}
  13921.   DISPID_TUNER_CT__MEDIAFORMATTYPE                  = 7;
  13922.   {$EXTERNALSYM DISPID_TUNER_CT__MEDIAFORMATTYPE}
  13923.   DISPID_TUNER_CT_MEDIATYPE                          = 8;
  13924.   {$EXTERNALSYM DISPID_TUNER_CT_MEDIATYPE}
  13925.   DISPID_TUNER_CT_CLONE                              = 9;
  13926.   {$EXTERNALSYM DISPID_TUNER_CT_CLONE}
  13927.  
  13928.   // DISPID for ILanguageComponentType interface
  13929.   DISPID_TUNER_LCT_LANGID                            = 100;
  13930.   {$EXTERNALSYM DISPID_TUNER_LCT_LANGID}
  13931.  
  13932.   // DISPID for IMPEG2ComponentType interface
  13933.   DISPID_TUNER_MP2CT_TYPE                            = 200;
  13934.   {$EXTERNALSYM DISPID_TUNER_MP2CT_TYPE}
  13935.  
  13936.   // DISPID for IATSCComponentType interface
  13937.   DISPID_TUNER_ATSCCT_FLAGS                    = 300;
  13938.   {$EXTERNALSYM DISPID_TUNER_ATSCCT_FLAGS}
  13939.  
  13940.   // DISPID for ILocator interface
  13941.   DISPID_TUNER_L_CARRFREQ           = 1;
  13942.   {$EXTERNALSYM DISPID_TUNER_L_CARRFREQ}
  13943.   DISPID_TUNER_L_INNERFECMETHOD     = 2;
  13944.   {$EXTERNALSYM DISPID_TUNER_L_INNERFECMETHOD}
  13945.   DISPID_TUNER_L_INNERFECRATE       = 3;
  13946.   {$EXTERNALSYM DISPID_TUNER_L_INNERFECRATE}
  13947.   DISPID_TUNER_L_OUTERFECMETHOD     = 4;
  13948.   {$EXTERNALSYM DISPID_TUNER_L_OUTERFECMETHOD}
  13949.   DISPID_TUNER_L_OUTERFECRATE       = 5;
  13950.   {$EXTERNALSYM DISPID_TUNER_L_OUTERFECRATE}
  13951.   DISPID_TUNER_L_MOD               = 6;
  13952.   {$EXTERNALSYM DISPID_TUNER_L_MOD}
  13953.   DISPID_TUNER_L_SYMRATE           = 7;
  13954.   {$EXTERNALSYM DISPID_TUNER_L_SYMRATE}
  13955.   DISPID_TUNER_L_CLONE             = 8;
  13956.   {$EXTERNALSYM DISPID_TUNER_L_CLONE}
  13957.  
  13958.   // DISPID for IATSCLocator interface
  13959.   DISPID_TUNER_L_ATSC_PHYS_CHANNEL         = 201;
  13960.   {$EXTERNALSYM DISPID_TUNER_L_ATSC_PHYS_CHANNEL}
  13961.   DISPID_TUNER_L_ATSC_TSID                 = 202;
  13962.   {$EXTERNALSYM DISPID_TUNER_L_ATSC_TSID}
  13963.  
  13964.   // DISPID for IDVBTLocator interface
  13965.   DISPID_TUNER_L_DVBT_BANDWIDTH             = 301;
  13966.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_BANDWIDTH}
  13967.   DISPID_TUNER_L_DVBT_LPINNERFECMETHOD     = 302;
  13968.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_LPINNERFECMETHOD}
  13969.   DISPID_TUNER_L_DVBT_LPINNERFECRATE       = 303;
  13970.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_LPINNERFECRATE}
  13971.   DISPID_TUNER_L_DVBT_GUARDINTERVAL         = 304;
  13972.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_GUARDINTERVAL}
  13973.   DISPID_TUNER_L_DVBT_HALPHA               = 305;
  13974.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_HALPHA}
  13975.   DISPID_TUNER_L_DVBT_TRANSMISSIONMODE     = 306;
  13976.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_TRANSMISSIONMODE}
  13977.   DISPID_TUNER_L_DVBT_INUSE                 = 307;
  13978.   {$EXTERNALSYM DISPID_TUNER_L_DVBT_INUSE}
  13979.  
  13980.   // DISPID for IDVBSLocator interface
  13981.   DISPID_TUNER_L_DVBS_POLARISATION         = 401;
  13982.   {$EXTERNALSYM DISPID_TUNER_L_DVBS_POLARISATION}
  13983.   DISPID_TUNER_L_DVBS_WEST                 = 402;
  13984.   {$EXTERNALSYM DISPID_TUNER_L_DVBS_WEST}
  13985.   DISPID_TUNER_L_DVBS_ORBITAL               = 403;
  13986.   {$EXTERNALSYM DISPID_TUNER_L_DVBS_ORBITAL}
  13987.   DISPID_TUNER_L_DVBS_AZIMUTH               = 404;
  13988.   {$EXTERNALSYM DISPID_TUNER_L_DVBS_AZIMUTH}
  13989.   DISPID_TUNER_L_DVBS_ELEVATION             = 405;
  13990.   {$EXTERNALSYM DISPID_TUNER_L_DVBS_ELEVATION}
  13991.  
  13992.   // DISPID for IDVBCLocator interface
  13993.  
  13994.   // DISPIDs for IComponent interface
  13995.   DISPID_TUNER_C_TYPE                       = 1;
  13996.   {$EXTERNALSYM DISPID_TUNER_C_TYPE}
  13997.   DISPID_TUNER_C_STATUS                     = 2;
  13998.   {$EXTERNALSYM DISPID_TUNER_C_STATUS}
  13999.   DISPID_TUNER_C_LANGID                     = 3;
  14000.   {$EXTERNALSYM DISPID_TUNER_C_LANGID}
  14001.   DISPID_TUNER_C_DESCRIPTION               = 4;
  14002.   {$EXTERNALSYM DISPID_TUNER_C_DESCRIPTION}
  14003.   DISPID_TUNER_C_CLONE                     = 5;
  14004.   {$EXTERNALSYM DISPID_TUNER_C_CLONE}
  14005.  
  14006.   // DISPIDs for IMPEG2Component interface
  14007.   DISPID_TUNER_C_MP2_PID                   = 101;
  14008.   {$EXTERNALSYM DISPID_TUNER_C_MP2_PID}
  14009.   DISPID_TUNER_C_MP2_PCRPID                 = 102;
  14010.   {$EXTERNALSYM DISPID_TUNER_C_MP2_PCRPID}
  14011.   DISPID_TUNER_C_MP2_PROGNO                 = 103;
  14012.   {$EXTERNALSYM DISPID_TUNER_C_MP2_PROGNO}
  14013.   DISPID_TUNER_TS_DVB_SYSTEMTYPE           = 101;
  14014.   {$EXTERNALSYM DISPID_TUNER_TS_DVB_SYSTEMTYPE}
  14015.  
  14016.   // DISPIDs for IDVBTuningSpace2 interface
  14017.   DISPID_TUNER_TS_DVB2_NETWORK_ID               = 102;
  14018.   {$EXTERNALSYM DISPID_TUNER_TS_DVB2_NETWORK_ID}
  14019.   // DISPIDs for IDVBSTuningSpace interface
  14020.   DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ             = 1001;
  14021.   {$EXTERNALSYM DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ}
  14022.   DISPID_TUNER_TS_DVBS_HI_OSC_FREQ              = 1002;
  14023.   {$EXTERNALSYM DISPID_TUNER_TS_DVBS_HI_OSC_FREQ}
  14024.   DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ          = 1003;
  14025.   {$EXTERNALSYM DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ}
  14026.   DISPID_TUNER_TS_DVBS_INPUT_RANGE              = 1004;
  14027.   {$EXTERNALSYM DISPID_TUNER_TS_DVBS_INPUT_RANGE}
  14028.   DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION       = 1005;
  14029.   {$EXTERNALSYM DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION}
  14030.  
  14031.   // DISPIDs for IAnalogRadioTuningSpace interface
  14032.   DISPID_TUNER_TS_AR_MINFREQUENCY                  = 101;
  14033.   {$EXTERNALSYM DISPID_TUNER_TS_AR_MINFREQUENCY}
  14034.   DISPID_TUNER_TS_AR_MAXFREQUENCY                  = 102;
  14035.   {$EXTERNALSYM DISPID_TUNER_TS_AR_MAXFREQUENCY}
  14036.   DISPID_TUNER_TS_AR_STEP                          = 103;
  14037.   {$EXTERNALSYM DISPID_TUNER_TS_AR_STEP}
  14038.  
  14039.   // DISPIDs for IAnalogTVTuningSpace interface
  14040.   DISPID_TUNER_TS_ATV_MINCHANNEL                  = 101;
  14041.   {$EXTERNALSYM DISPID_TUNER_TS_ATV_MINCHANNEL}
  14042.   DISPID_TUNER_TS_ATV_MAXCHANNEL                  = 102;
  14043.   {$EXTERNALSYM DISPID_TUNER_TS_ATV_MAXCHANNEL}
  14044.   DISPID_TUNER_TS_ATV_INPUTTYPE                    = 103;
  14045.   {$EXTERNALSYM DISPID_TUNER_TS_ATV_INPUTTYPE}
  14046.   DISPID_TUNER_TS_ATV_COUNTRYCODE                  = 104;
  14047.   {$EXTERNALSYM DISPID_TUNER_TS_ATV_COUNTRYCODE}
  14048.  
  14049.   // DISPIDs for IATSCTuningSpace interface
  14050.   DISPID_TUNER_TS_ATSC_MINMINORCHANNEL            = 201;
  14051.   {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MINMINORCHANNEL}
  14052.   DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL            = 202;
  14053.   {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL}
  14054.   DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL              = 203;
  14055.   {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL}
  14056.   DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL              = 204;
  14057.   {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL}
  14058.  
  14059.   // DISPID for IAnalogTVAudioComponent interface
  14060.   DISPID_CHTUNER_ATVAC_CHANNEL                    = 101;
  14061.   {$EXTERNALSYM DISPID_CHTUNER_ATVAC_CHANNEL}
  14062.  
  14063.   // DISPIDs for IAnalogTVDataComponent interface
  14064.   DISPID_CHTUNER_ATVDC_SYSTEM                      = 101;
  14065.   {$EXTERNALSYM DISPID_CHTUNER_ATVDC_SYSTEM}
  14066.   DISPID_CHTUNER_ATVDC_CONTENT                    = 102;
  14067.   {$EXTERNALSYM DISPID_CHTUNER_ATVDC_CONTENT}
  14068.  
  14069.   // DISPID for IChannelTuneRequest interface
  14070.   DISPID_CHTUNER_CTR_CHANNEL                      = 101;
  14071.   {$EXTERNALSYM DISPID_CHTUNER_CTR_CHANNEL}
  14072.  
  14073.   // DISPID IATSCChannelTuneRequest
  14074.   DISPID_CHTUNER_ACTR_MINOR_CHANNEL                = 201;
  14075.   {$EXTERNALSYM DISPID_CHTUNER_ACTR_MINOR_CHANNEL}
  14076.  
  14077.   // DISPIDs for IDVBComponent interface
  14078.   DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID            = 101;
  14079.   {$EXTERNALSYM DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID}
  14080.   DISPID_DVBTUNER_DVBC_PID                         = 102;
  14081.   {$EXTERNALSYM DISPID_DVBTUNER_DVBC_PID}
  14082.   DISPID_DVBTUNER_DVBC_TAG                        = 103;
  14083.   {$EXTERNALSYM DISPID_DVBTUNER_DVBC_TAG}
  14084.   DISPID_DVBTUNER_DVBC_COMPONENTTYPE              = 104;
  14085.   {$EXTERNALSYM DISPID_DVBTUNER_DVBC_COMPONENTTYPE}
  14086.  
  14087.   // DISPIDs for IDVBTuneRequest interface
  14088.   DISPID_DVBTUNER_ONID                            = 101;
  14089.   {$EXTERNALSYM DISPID_DVBTUNER_ONID}
  14090.   DISPID_DVBTUNER_TSID                            = 102;
  14091.   {$EXTERNALSYM DISPID_DVBTUNER_TSID}
  14092.   DISPID_DVBTUNER_SID                              = 103;
  14093.   {$EXTERNALSYM DISPID_DVBTUNER_SID}
  14094.  
  14095.   // DISPIDs for IMPEG2TuneRequest interface
  14096.   DISPID_MP2TUNER_TSID                          = 101;
  14097.   {$EXTERNALSYM DISPID_MP2TUNER_TSID}
  14098.   DISPID_MP2TUNER_PROGNO                        = 102;
  14099.   {$EXTERNALSYM DISPID_MP2TUNER_PROGNO}
  14100.  
  14101.   // DISPIDs for IMPEG2TuneRequestFactory interface
  14102.   DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST      = 1;
  14103.   {$EXTERNALSYM DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST}
  14104.  
  14105. type
  14106.   ITuningSpace = interface;
  14107.   IEnumTuningSpaces = interface;
  14108.  
  14109.   {$HPPEMIT 'typedef System::DelphiInterface<ITuningSpaces> _di_ITuningSpaces;'}
  14110.   {$EXTERNALSYM ITuningSpaces}
  14111.   ITuningSpaces = interface(IDispatch)
  14112.     ['{901284E4-33FE-4b69-8D63-634A596F3756}']
  14113.     (*** ITuningSpaces methods ***)
  14114.     function get_Count(out Count: longint): HResult; stdcall;
  14115.     function get__NewEnum(out NewEnum: IEnumVARIANT): HResult; stdcall;
  14116.     function get_Item(varIndex: OLEVARIANT; out TuningSpace: ITuningSpace): HResult; stdcall;
  14117.     function get_EnumTuningSpaces(out NewEnum: IEnumTuningSpaces): HResult; stdcall;
  14118.   end;
  14119.  
  14120.   {$HPPEMIT 'typedef System::DelphiInterface<ITuningSpaceContainer> _di_ITuningSpaceContainer;'}
  14121.   {$EXTERNALSYM ITuningSpaceContainer}
  14122.   ITuningSpaceContainer = interface(IDispatch)
  14123.     ['{5B692E84-E2F1-11d2-9493-00C04F72D980}']
  14124.     (*** ITuningSpaceContainer methods ***)
  14125.     function get_Count(out Count: longint): HResult; stdcall;
  14126.     function get__NewEnum(out NewEnum: IEnumVARIANT): HResult; stdcall;
  14127.     function get_Item(varIndex: OLEVARIANT; out TuningSpace: ITuningSpace): HResult; stdcall;
  14128.     function put_Item(varIndex: OLEVARIANT; TuningSpace: ITuningSpace): HResult; stdcall;
  14129.     function TuningSpacesForCLSID(SpaceCLSID: widestring; out NewColl: ITuningSpaces): HResult; stdcall;
  14130.     function _TuningSpacesForCLSID(const SpaceCLSID: TGUID; out NewColl: ITuningSpaces): HResult; stdcall;
  14131.     function TuningSpacesForName(Name: WideString; out NewColl: ITuningSpaces): HResult; stdcall;
  14132.     function FindID(TuningSpace: ITuningSpace; out ID: longint): HResult; stdcall;
  14133.     function Add(TuningSpace: ITuningSpace; out NewIndex: OLEVARIANT): HResult; stdcall;
  14134.     function get_EnumTuningSpaces(out ppEnum: IEnumTuningSpaces): HResult; stdcall;
  14135.     function Remove(Index: OLEVARIANT): HResult; stdcall;
  14136.     function get_MaxCount(out MaxCount: longint): HResult; stdcall;
  14137.     function put_MaxCount(MaxCount: longint): HResult; stdcall;
  14138.    end;
  14139.  
  14140.   ITuneRequest = interface;
  14141.   IComponentTypes = interface;
  14142.   ILocator = interface;
  14143.  
  14144.   {$HPPEMIT 'typedef System::DelphiInterface<ITuningSpace> _di_ITuningSpace;'}
  14145.   {$EXTERNALSYM ITuningSpace}
  14146.   ITuningSpace = interface(IDispatch)
  14147.     ['{061C6E30-E622-11d2-9493-00C04F72D980}']
  14148.     (*** ITuningSpace methods ***)
  14149.     function get_UniqueName(out Name: WideString): HResult; stdcall;
  14150.     function put_UniqueName(Name: WideString): HResult; stdcall;
  14151.     function get_FriendlyName(out Name: WideString): HResult; stdcall;
  14152.     function put_FriendlyName: HResult; stdcall;
  14153.     function get_CLSID(out SpaceCLSID: WideString): HResult; stdcall;
  14154.     function get_NetworkType(out NetworkTypeGuid: WideString): HResult; stdcall;
  14155.     function put_NetworkType(NetworkTypeGuid: WideString): HResult; stdcall;
  14156.     function get__NetworkType(out NetworkTypeGuid: WideString): HResult; stdcall;
  14157.     function put__NetworkType(const NetworkTypeGuid: WideString): HResult; stdcall;
  14158.     // this method creates the "best" kind of tune request for this tuning space.
  14159.     // the tuning space may support other kinds of tune requests created via
  14160.     // other factory mechanisms(for example, see mpeg2tunerequestfactory).  but,
  14161.     // this method is the preferred way to get a tune request as it always returns
  14162.     // the optimal type of tune request for this space.
  14163.     function CreateTuneRequest(out TuneRequest: ITuneRequest): HResult; stdcall;
  14164.     function EnumCategoryGUIDs(out ppEnum: IEnumGUID): HResult; stdcall;
  14165.     function EnumDeviceMonikers(out ppEnum: IEnumMoniker): HResult; stdcall;
  14166.     function get_DefaultPreferredComponentTypes(out ComponentTypes: IComponentTypes): HResult; stdcall;
  14167.     function put_DefaultPreferredComponentTypes(NewComponentTypes: IComponentTypes): HResult; stdcall;
  14168.     function get_FrequencyMapping(out pMapping: WideString): HResult; stdcall;
  14169.     function put_FrequencyMapping(Mapping: WideString): HResult; stdcall;
  14170.     function get_DefaultLocator(out LocatorVal: ILocator): HResult; stdcall;
  14171.     function put_DefaultLocator(LocatorVal: ILocator): HResult; stdcall;
  14172.     function Clone(out NewTS: ITuningSpace): HResult; stdcall;
  14173.    end;
  14174.  
  14175.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumTuningSpaces> _di_IEnumTuningSpaces;'}
  14176.   {$EXTERNALSYM IEnumTuningSpaces}
  14177.   IEnumTuningSpaces = interface(IUnknown)
  14178.     ['{8B8EB248-FC2B-11d2-9D8C-00C04F72D980}']
  14179.     (*** IEnumTuningSpaces methods ***)
  14180.     function Next(celt: ULONG; out rgelt: ITuningSpace; out pceltFetched: ULONG): HResult; stdcall;
  14181.     function Skip(celt: ULONG): HResult; stdcall;
  14182.     function Reset: HResult; stdcall;
  14183.     function Clone(out ppEnum: IEnumTuningSpaces): HResult; stdcall;
  14184.    end;
  14185.  
  14186.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBTuningSpace> _di_IDVBTuningSpace;'}
  14187.   {$EXTERNALSYM IDVBTuningSpace}
  14188.   IDVBTuningSpace = interface(ITuningSpace)
  14189.     ['{ADA0B268-3B19-4e5b-ACC4-49F852BE13BA}']
  14190.     (*** IDVBTuningSpace methods ***)
  14191.     function get_SystemType(out SysType: TDVBSystemType): HResult; stdcall;
  14192.     function put_SystemType(SysType: TDVBSystemType): HResult; stdcall;
  14193.    end;
  14194.  
  14195.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBTuningSpace2> _di_IDVBTuningSpace2;'}
  14196.   {$EXTERNALSYM IDVBTuningSpace2}
  14197.   IDVBTuningSpace2 = interface(IDVBTuningSpace)
  14198.     ['{843188B4-CE62-43db-966B-8145A094E040}']
  14199.     (*** IDVBTuningSpace2 methods ***)
  14200.     function get_NetworkID(out NetworkID: longint): HResult; stdcall;
  14201.     function put_NetworkID(NetworkID: longint): HResult; stdcall;
  14202.   end;
  14203.  
  14204.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBSTuningSpace> _di_IDVBSTuningSpace;'}
  14205.   {$EXTERNALSYM IDVBSTuningSpace}
  14206.   IDVBSTuningSpace = interface(IDVBTuningSpace2)
  14207.     ['{CDF7BE60-D954-42FD-A972-78971958E470}']
  14208.     (*** IDVBSTuningSpace methods ***)
  14209.     function  get_LowOscillator(out LowOscillator: longint): HResult; stdcall;
  14210.     function  put_LowOscillator(LowOscillator: longint): HResult; stdcall;
  14211.     function  get_HighOscillator(out HighOscillator: longint): HResult; stdcall;
  14212.     function  put_HighOscillator(HighOscillator: longint): HResult; stdcall;
  14213.     function  get_LNBSwitch(out LNBSwitch: longint): HResult; stdcall;
  14214.     function  put_LNBSwitch(LNBSwitch: longint): HResult; stdcall;
  14215.     function  get_InputRange(out InputRange: WideString): HResult; stdcall;
  14216.     function  put_InputRange(const InputRange: WideString): HResult; stdcall;
  14217.     function  get_SpectralInversion(out SpectralInversionVal: SpectralInversion): HResult; stdcall;
  14218.     function  put_SpectralInversion(SpectralInversionVal: SpectralInversion): HResult; stdcall;
  14219.   end;
  14220.  
  14221.   {$HPPEMIT 'typedef System::DelphiInterface<IAuxInTuningSpace> _di_IAuxInTuningSpace;'}
  14222.   {$EXTERNALSYM IAuxInTuningSpace}
  14223.   IAuxInTuningSpace = interface(ITuningSpace)
  14224.     ['{E48244B8-7E17-4f76-A763-5090FF1E2F30}']
  14225.     (*** IAuxInTuningSpace methods ***)
  14226.   end;
  14227.  
  14228.   {$HPPEMIT 'typedef System::DelphiInterface<IAnalogTVTuningSpace> _di_IAnalogTVTuningSpace;'}
  14229.   {$EXTERNALSYM IAnalogTVTuningSpace}
  14230.   IAnalogTVTuningSpace = interface(ITuningSpace)
  14231.     ['{2A6E293C-2595-11d3-B64C-00C04F79498E}']
  14232.     (*** IAnalogTVTuningSpace methods ***)
  14233.     function get_MinChannel(out MinChannelVal: longint): HResult; stdcall;
  14234.     function put_MinChannel(NewMinChannelVal: longint): HResult; stdcall;
  14235.     function get_MaxChannel(out MaxChannelVal: longint): HResult; stdcall;
  14236.     function put_MaxChannel(NewMaxChannelVal: longint): HResult; stdcall;
  14237.     function get_InputType(out InputTypeVal: TTunerInputType): HResult; stdcall;
  14238.     function put_InputType(NewInputTypeVal: TTunerInputType): HResult; stdcall;
  14239.     function get_CountryCode(out CountryCodeVal: longint): HResult; stdcall;
  14240.     function put_CountryCode(NewCountryCodeVal: longint): HResult; stdcall;
  14241.    end;
  14242.  
  14243.   {$HPPEMIT 'typedef System::DelphiInterface<IATSCTuningSpace> _di_IATSCTuningSpace;'}
  14244.   {$EXTERNALSYM IATSCTuningSpace}
  14245.   IATSCTuningSpace = interface(IAnalogTVTuningSpace)
  14246.     ['{0369B4E2-45B6-11d3-B650-00C04F79498E}']
  14247.     (*** IATSCTuningSpace methods ***)
  14248.     function get_MinMinorChannel(out MinMinorChannelVal: longint): HResult; stdcall;
  14249.     function put_MinMinorChannel(NewMinMinorChannelVal: longint): HResult; stdcall;
  14250.     function get_MaxMinorChannel(out MaxMinorChannelVal: longint): HResult; stdcall;
  14251.     function put_MaxMinorChannel(NewMaxMinorChannelVal: longint): HResult; stdcall;
  14252.     function get_MinPhysicalChannel(out MinPhysicalChannelVal: longint): HResult; stdcall;
  14253.     function put_MinPhysicalChannel(NewMinPhysicalChannelVal: longint): HResult; stdcall;
  14254.     function get_MaxPhysicalChannel(out MaxPhysicalChannelVal: longint): HResult; stdcall;
  14255.     function put_MaxPhysicalChannel(NewMaxPhysicalChannelVal: longint): HResult; stdcall;
  14256.    end;
  14257.  
  14258.   {$HPPEMIT 'typedef System::DelphiInterface<IAnalogRadioTuningSpace> _di_IAnalogRadioTuningSpace;'}
  14259.   {$EXTERNALSYM IAnalogRadioTuningSpace}
  14260.   IAnalogRadioTuningSpace = interface(ITuningSpace)
  14261.     ['{2A6E293B-2595-11d3-B64C-00C04F79498E}']
  14262.     (*** IAnalogRadioTuningSpace methods ***)
  14263.     function get_MinFrequency(out MinFrequencyVal: longint): HResult; stdcall;
  14264.     function put_MinFrequency(NewMinFrequencyVal: longint): HResult; stdcall;
  14265.     function get_MaxFrequency(out MaxFrequencyVal: longint): HResult; stdcall;
  14266.     function put_MaxFrequency(NewMaxFrequencyVal: longint): HResult; stdcall;
  14267.     function get_Step(out StepVal: longint): HResult; stdcall;
  14268.     function put_Step(NewStepVal: longint): HResult; stdcall;
  14269.    end;
  14270.  
  14271.   IComponents = interface;
  14272.  
  14273.   //////////////////////////////////////////////////////////////////////////////////////
  14274.   // Tune Request Interfaces
  14275.   //////////////////////////////////////////////////////////////////////////////////////
  14276.   // tune requests(of any kind) can only be obtained from tune request factories such as
  14277.   // ITuningSpace::CreateTuneRequest.  one reason for this is that we always want to be
  14278.   // certain that a tune request is bound to the right tuning space.  this means we don't
  14279.   // have to perform consistency checks all over the place.
  14280.  
  14281.   {$HPPEMIT 'typedef System::DelphiInterface<ITuneRequest> _di_ITuneRequest;'}
  14282.   {$EXTERNALSYM ITuneRequest}
  14283.   ITuneRequest = interface(IDispatch)
  14284.     ['{07DDC146-FC3D-11d2-9D8C-00C04F72D980}']
  14285.     (*** ITuneRequest methods ***)
  14286.     function get_TuningSpace(out TuningSpace: ITuningSpace): HResult; stdcall;
  14287.     function get_Components(out Components: IComponents): HResult; stdcall;
  14288.     function Clone(out NewTuneRequest: ITuneRequest): HResult; stdcall;
  14289.     function get_Locator(out Locator: ILocator): HResult; stdcall;
  14290.     function put_Locator(Locator: ILocator): HResult; stdcall;
  14291.    end;
  14292.  
  14293.   {$HPPEMIT 'typedef System::DelphiInterface<IChannelTuneRequest> _di_IChannelTuneRequest;'}
  14294.   {$EXTERNALSYM IChannelTuneRequest}
  14295.   IChannelTuneRequest = interface(ITuneRequest)
  14296.     ['{0369B4E0-45B6-11d3-B650-00C04F79498E}']
  14297.     (*** IChannelTuneRequest methods ***)
  14298.     function get_Channel(out Channel: longint): HResult; stdcall;
  14299.     function put_Channel(Channel: longint): HResult; stdcall;
  14300.    end;
  14301.  
  14302.   {$HPPEMIT 'typedef System::DelphiInterface<IATSCChannelTuneRequest> _di_IATSCChannelTuneRequest;'}
  14303.   {$EXTERNALSYM IATSCChannelTuneRequest}
  14304.   IATSCChannelTuneRequest = interface(IChannelTuneRequest)
  14305.     ['{0369B4E1-45B6-11d3-B650-00C04F79498E}']
  14306.     (*** IATSCChannelTuneRequest methods ***)
  14307.     function get_MinorChannel(out MinorChannel: longint): HResult; stdcall;
  14308.     function put_MinorChannel(MinorChannel: longint): HResult; stdcall;
  14309.    end;
  14310.  
  14311.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBTuneRequest> _di_IDVBTuneRequest;'}
  14312.   {$EXTERNALSYM IDVBTuneRequest}
  14313.   IDVBTuneRequest = interface(ITuneRequest)
  14314.     ['{0D6F567E-A636-42bb-83BA-CE4C1704AFA2}']
  14315.     (*** IDVBTuneRequest methods ***)
  14316.     function get_ONID(out ONID: longint): HResult; stdcall;
  14317.     function put_ONID(ONID: longint): HResult; stdcall;
  14318.     function get_TSID(out TSID: longint): HResult; stdcall;
  14319.     function put_TSID(TSID: longint): HResult; stdcall;
  14320.     function get_SID(out SID: longint): HResult; stdcall;
  14321.     function put_SID(SID: longint): HResult; stdcall;
  14322.    end;
  14323.  
  14324.   {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2TuneRequest> _di_IMPEG2TuneRequest;'}
  14325.   {$EXTERNALSYM IMPEG2TuneRequest}
  14326.   IMPEG2TuneRequest = interface(ITuneRequest)
  14327.     ['{EB7D987F-8A01-42AD-B8AE-574DEEE44D1A}']
  14328.     (*** IMPEG2TuneRequest methods ***)
  14329.     function get_TSID: HResult; stdcall;
  14330.     function put_TSID(TSID: longint): HResult; stdcall;
  14331.     function get_ProgNo: HResult; stdcall;
  14332.     function put_ProgNo(ProgNo: longint): HResult; stdcall;
  14333.   end;
  14334.  
  14335.   {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2TuneRequestFactory> _di_IMPEG2TuneRequestFactory;'}
  14336.   {$EXTERNALSYM IMPEG2TuneRequestFactory}
  14337.   IMPEG2TuneRequestFactory = interface(IDispatch)
  14338.     ['{14E11ABD-EE37-4893-9EA1-6964DE933E39}']
  14339.     (*** IMPEG2TuneRequestFactory methods ***)
  14340.     function CreateTuneRequest(TuningSpace: ITuningSpace;
  14341.       out TuneRequest: IMPEG2TuneRequest): HResult; stdcall;
  14342.   end;
  14343.  
  14344.   {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2TuneRequestSupport> _di_IMPEG2TuneRequestSupport;'}
  14345.   {$EXTERNALSYM IMPEG2TuneRequestSupport}
  14346.   IMPEG2TuneRequestSupport = interface(IUnknown)
  14347.     ['{1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF}']
  14348.     (*** IMPEG2TuneRequestSupport methods ***)
  14349.   end;
  14350.  
  14351.   {$HPPEMIT 'typedef System::DelphiInterface<ITuner> _di_ITuner;'}
  14352.   {$EXTERNALSYM ITuner}
  14353.   ITuner = interface(IUnknown)
  14354.     ['{28C52640-018A-11d3-9D8E-00C04F72D980}']
  14355.     (*** ITuner methods ***)
  14356.     function get_TuningSpace(out TuningSpace: ITuningSpace): HResult; stdcall;
  14357.     function put_TuningSpace(TuningSpace: ITuningSpace): HResult; stdcall;
  14358.     function EnumTuningSpaces(out ppEnum: IEnumTuningSpaces): HResult; stdcall;
  14359.     function get_TuneRequest(out TuneRequest: ITuneRequest): HResult; stdcall;
  14360.     function put_TuneRequest(TuneRequest: ITuneRequest): HResult; stdcall;
  14361.     function Validate(TuneRequest: ITuneRequest): HResult; stdcall;
  14362.     function get_PreferredComponentTypes(out ComponentTypes: IComponentTypes): HResult; stdcall;
  14363.     function put_PreferredComponentTypes(ComponentTypes: IComponentTypes): HResult; stdcall;
  14364.     function get_SignalStrength(out Strength: longint): HResult; stdcall;
  14365.     function TriggerSignalEvents(Interval: longint): HResult; stdcall;
  14366.    end;
  14367.  
  14368.   {$HPPEMIT 'typedef System::DelphiInterface<IScanningTuner> _di_IScanningTuner;'}
  14369.   {$EXTERNALSYM IScanningTuner}
  14370.   IScanningTuner = interface(ITuner)
  14371.     ['{1DFD0A5C-0284-11d3-9D8E-00C04F72D980}']
  14372.     (*** IScanningTuner methods ***)
  14373.     function SeekUp: HResult; stdcall;
  14374.     function SeekDown: HResult; stdcall;
  14375.     function ScanUp(MillisecondsPause: longint): HResult; stdcall;
  14376.     function ScanDown(MillisecondsPause: longint): HResult; stdcall;
  14377.     function AutoProgram: HResult; stdcall;
  14378.    end;
  14379.  
  14380.   {$HPPEMIT 'typedef System::DelphiInterface<IComponentType> _di_IComponentType;'}
  14381.   {$EXTERNALSYM IComponentType}
  14382.   IComponentType = interface(IDispatch)
  14383.     ['{6A340DC0-0311-11d3-9D8E-00C04F72D980}']
  14384.     (*** IComponentType methods ***)
  14385.     function get_Category(out Category: ComponentCategory): HResult; stdcall;
  14386.     function put_Category(Category: ComponentCategory): HResult; stdcall;
  14387.     function get_MediaMajorType(out MediaMajorType: WideString): HResult; stdcall;
  14388.     function put_MediaMajorType(MediaMajorType: WideString): HResult; stdcall;
  14389.     function get__MediaMajorType(out MediaMajorTypeGuid: TGUID): HResult; stdcall;
  14390.     function put__MediaMajorType(const MediaMajorTypeGuid: TGUID): HResult; stdcall;
  14391.     function get_MediaSubType(out MediaSubType: WideString): HResult; stdcall;
  14392.     function put_MediaSubType(MediaSubType: WideString): HResult; stdcall;
  14393.     function get__MediaSubType(out MediaSubTypeGuid: TGUID): HResult; stdcall;
  14394.     function put__MediaSubType(const MediaSubTypeGuid: TGUID): HResult; stdcall;
  14395.     function get_MediaFormatType(out MediaFormatType: WideString): HResult; stdcall;
  14396.     function put_MediaFormatType(MediaFormatType: WideString): HResult; stdcall;
  14397.     function get__MediaFormatType(out MediaFormatTypeGuid: TGUID): HResult; stdcall;
  14398.     function put__MediaFormatType(const MediaFormatTypeGuid: TGUID): HResult; stdcall;
  14399.     function get_MediaType(out MediaType: TAMMediaType): HResult; stdcall;
  14400.     function put_MediaType(MediaType: TAMMediaType): HResult; stdcall;
  14401.     function Clone(out NewCT: IComponentType): HResult; stdcall;
  14402.    end;
  14403.  
  14404.   {$HPPEMIT 'typedef System::DelphiInterface<ILanguageComponentType> _di_ILanguageComponentType;'}
  14405.   {$EXTERNALSYM ILanguageComponentType}
  14406.   ILanguageComponentType = interface(IComponentType)
  14407.     ['{B874C8BA-0FA2-11d3-9D8E-00C04F72D980}']
  14408.     (*** ILanguageComponentType methods ***)
  14409.     function get_LangID(out LangID: longint): HResult; stdcall;
  14410.     function put_LangID(LangID: longint): HResult; stdcall;
  14411.    end;
  14412.  
  14413.   {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2ComponentType> _di_IMPEG2ComponentType;'}
  14414.   {$EXTERNALSYM IMPEG2ComponentType}
  14415.   IMPEG2ComponentType = interface(ILanguageComponentType)
  14416.     ['{2C073D84-B51C-48c9-AA9F-68971E1F6E38}']
  14417.     (*** IMPEG2ComponentType methods ***)
  14418.     function get_StreamType(out MP2StreamType: MPEG2StreamType): HResult; stdcall;
  14419.     function put_StreamType(MP2StreamType: MPEG2StreamType): HResult; stdcall;
  14420.    end;
  14421.  
  14422.   {$HPPEMIT 'typedef System::DelphiInterface<IATSCComponentType> _di_IATSCComponentType;'}
  14423.   {$EXTERNALSYM IATSCComponentType}
  14424.   IATSCComponentType = interface(IMPEG2ComponentType)
  14425.     ['{FC189E4D-7BD4-4125-B3B3-3A76A332CC96}']
  14426.     (*** IATSCComponentType methods ***)
  14427.     function get_Flags(out Flags: longint): HResult; stdcall;
  14428.     function put_Flags(Flags: longint): HResult; stdcall;
  14429.    end;
  14430.  
  14431.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumComponentTypes> _di_IEnumComponentTypes;'}
  14432.   {$EXTERNALSYM IEnumComponentTypes}
  14433.   IEnumComponentTypes = interface(IUnknown)
  14434.     ['{8A674B4A-1F63-11d3-B64C-00C04F79498E}']
  14435.     (*** IEnumComponentTypes methods ***)
  14436.     function Next(celt: ULONG; out rgelt: IComponentType; out pceltFetched: ULONG): HResult; stdcall;
  14437.     function Skip(celt: ULONG): HResult; stdcall;
  14438.     function Reset: HResult; stdcall;
  14439.     function Clone(out ppEnum: IEnumComponentTypes): HResult; stdcall;
  14440.    end;
  14441.  
  14442.   {$HPPEMIT 'typedef System::DelphiInterface<IComponentTypes> _di_IComponentTypes;'}
  14443.   {$EXTERNALSYM IComponentTypes}
  14444.   IComponentTypes = interface(IDispatch)
  14445.     ['{0DC13D4A-0313-11d3-9D8E-00C04F72D980}']
  14446.     (*** IComponentTypes methods ***)
  14447.     function get_Count(out Count: longint): HResult; stdcall;
  14448.     function get__NewEnum(out ppNewEnum: IEnumVARIANT): HResult; stdcall;
  14449.     function EnumComponentTypes(out ppNewEnum: IEnumComponentTypes): HResult; stdcall;
  14450.     function get_Item(Index: OLEVARIANT; out ComponentType: IComponentType): HResult; stdcall;
  14451.     function put_Item(Index: OLEVARIANT; ComponentType: IComponentType): HResult; stdcall;
  14452.     function Add(ComponentType: IComponentType; out NewIndex: OLEVARIANT): HResult; stdcall;
  14453.     function Remove(Index: OLEVARIANT): HResult; stdcall;
  14454.     function Clone(out NewList: IComponentTypes): HResult; stdcall;
  14455.    end;
  14456.  
  14457.   {$HPPEMIT 'typedef System::DelphiInterface<IComponent> _di_IComponent;'}
  14458.   {$EXTERNALSYM IComponent}
  14459.   IComponent = interface(IDispatch)
  14460.     ['{1A5576FC-0E19-11d3-9D8E-00C04F72D980}']
  14461.     (*** IComponent methods ***)
  14462.     function get_Type(out CT: IComponentType): HResult; stdcall;
  14463.     function put_Type(CT: IComponentType): HResult; stdcall;
  14464.     function get_DescLangID(out LangID: longint): HResult; stdcall;
  14465.     function put_DescLangID(LangID: longint): HResult; stdcall;
  14466.     function get_Status(out Status: TComponentStatus): HResult; stdcall;
  14467.     function put_Status(Status: TComponentStatus): HResult; stdcall;
  14468.     function get_Description(out Description: WideString): HResult; stdcall;
  14469.     function put_Description(Description: WideString): HResult; stdcall;
  14470.     function Clone(out NewComponent: IComponent): HResult; stdcall;
  14471.    end;
  14472.  
  14473.   {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2Component> _di_IMPEG2Component;'}
  14474.   {$EXTERNALSYM IMPEG2Component}
  14475.   IMPEG2Component = interface(IComponent)
  14476.     ['{1493E353-1EB6-473c-802D-8E6B8EC9D2A9}']
  14477.     (*** IMPEG2Component methods ***)
  14478.     function get_PID(out PID: longint): HResult; stdcall;
  14479.     function put_PID(PID: longint): HResult; stdcall;
  14480.     function get_PCRPID(out PCRPID: longint): HResult; stdcall;
  14481.     function put_PCRPID(PCRPID: longint): HResult; stdcall;
  14482.     function get_ProgramNumber(out ProgramNumber: longint): HResult; stdcall;
  14483.     function put_ProgramNumber(ProgramNumber: longint): HResult; stdcall;
  14484.    end;
  14485.  
  14486.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumComponents> _di_IEnumComponents;'}
  14487.   {$EXTERNALSYM IEnumComponents}
  14488.   IEnumComponents = interface(IUnknown)
  14489.     ['{2A6E2939-2595-11d3-B64C-00C04F79498E}']
  14490.     (*** IEnumComponents methods ***)
  14491.     function Next(celt: ULONG; out rgelt: IComponent; out pceltFetched: ULONG): HResult; stdcall;
  14492.     function Skip(celt: ULONG): HResult; stdcall;
  14493.     function Reset: HResult; stdcall;
  14494.     function Clone(out ppEnum: IEnumComponents): HResult; stdcall;
  14495.    end;
  14496.  
  14497.   {$HPPEMIT 'typedef System::DelphiInterface<IComponents> _di_IComponents;'}
  14498.   {$EXTERNALSYM IComponents}
  14499.   IComponents = interface(IDispatch)
  14500.     ['{FCD01846-0E19-11d3-9D8E-00C04F72D980}']
  14501.     (*** IComponents methods ***)
  14502.     function get_Count(out Count: longint): HResult; stdcall;
  14503.     function get__NewEnum(out ppNewEnum: IEnumVARIANT): HResult; stdcall;
  14504.     function EnumComponents(out ppNewEnum: IEnumComponents): HResult; stdcall;
  14505.     function get_Item(Index: OLEVARIANT; out ppComponent: IComponent): HResult; stdcall;
  14506.     function Add(Component: IComponent; out NewIndex: OLEVARIANT): HResult; stdcall;
  14507.     function Remove(Index: OLEVARIANT): HResult; stdcall;
  14508.     function Clone(out NewList: IComponents): HResult; stdcall;
  14509.    end;
  14510.  
  14511.   {$HPPEMIT 'typedef System::DelphiInterface<ILocator> _di_ILocator;'}
  14512.   {$EXTERNALSYM ILocator}
  14513.   ILocator = interface(IDispatch)
  14514.     ['{286D7F89-760C-4F89-80C4-66841D2507AA}']
  14515.     (*** ILocator methods ***)
  14516.     function get_CarrierFrequency(out Frequency: longint): HResult; stdcall;
  14517.     function put_CarrierFrequency(Frequency: longint): HResult; stdcall;
  14518.     function get_InnerFEC(out FEC: FECMethod): HResult; stdcall;
  14519.     function put_InnerFEC(FEC: FECMethod): HResult; stdcall;
  14520.     function get_InnerFECRate(out FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  14521.     function put_InnerFECRate(FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  14522.     function get_OuterFEC(out FEC: FECMethod): HResult; stdcall;
  14523.     function put_OuterFEC(FEC: FECMethod): HResult; stdcall;
  14524.     function get_OuterFECRate(out FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  14525.     function put_OuterFECRate(FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  14526.     function get_Modulation(out Modulation: ModulationType): HResult; stdcall;
  14527.     function put_Modulation(Modulation: ModulationType): HResult; stdcall;
  14528.     function get_SymbolRate(out Rate: longint): HResult; stdcall;
  14529.     function put_SymbolRate(Rate: longint): HResult; stdcall;
  14530.     function Clone(out NewLocator: ILocator): HResult; stdcall;
  14531.    end;
  14532.  
  14533.   {$HPPEMIT 'typedef System::DelphiInterface<IATSCLocator> _di_IATSCLocator;'}
  14534.   {$EXTERNALSYM IATSCLocator}
  14535.   IATSCLocator = interface(ILocator)
  14536.     ['{BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF}']
  14537.     (*** IATSCLocator methods ***)
  14538.     function get_PhysicalChannel(out PhysicalChannel: longint): HResult; stdcall;
  14539.     function put_PhysicalChannel(PhysicalChannel: longint): HResult; stdcall;
  14540.     function get_TSID(out TSID: longint): HResult; stdcall;
  14541.     function put_TSID(TSID: longint): HResult; stdcall;
  14542.    end;
  14543.  
  14544.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBTLocator> _di_IDVBTLocator;'}
  14545.   {$EXTERNALSYM IDVBTLocator}
  14546.   IDVBTLocator = interface(ILocator)
  14547.     ['{8664DA16-DDA2-42ac-926A-C18F9127C302}']
  14548.     (*** IDVBTLocator methods ***)
  14549.     function get_Bandwidth(out BandWidthVal: longint): HResult; stdcall;
  14550.     function put_Bandwidth(BandwidthVal: longint): HResult; stdcall;
  14551.     function get_LPInnerFEC(out FEC: FECMethod): HResult; stdcall;
  14552.     function put_LPInnerFEC(FEC: FECMethod): HResult; stdcall;
  14553.     function get_LPInnerFECRate(out FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  14554.     function put_LPInnerFECRate(FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  14555.     function get_HAlpha(out Alpha: HierarchyAlpha): HResult; stdcall;
  14556.     function put_HAlpha(Alpha: HierarchyAlpha): HResult; stdcall;
  14557.     function get_Guard(out GI: GuardInterval): HResult; stdcall;
  14558.     function put_Guard(GI: GuardInterval): HResult; stdcall;
  14559.     function get_Mode(out mode: TransmissionMode): HResult; stdcall;
  14560.     function put_Mode(mode: TransmissionMode): HResult; stdcall;
  14561.     function get_OtherFrequencyInUse(out OtherFrequencyInUseVal: WordBool): HResult; stdcall;
  14562.     function put_OtherFrequencyInUse(OtherFrequencyInUseVal: WordBool): HResult; stdcall;
  14563.    end;
  14564.  
  14565.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBSLocator> _di_IDVBSLocator;'}
  14566.   {$EXTERNALSYM IDVBSLocator}
  14567.   IDVBSLocator = interface(ILocator)
  14568.     ['{3D7C353C-0D04-45f1-A742-F97CC1188DC8}']
  14569.     (*** IDVBSLocator methods ***)
  14570.     function get_SignalPolarisation(out PolarisationVal: Polarisation): HResult; stdcall;
  14571.     function put_SignalPolarisation(PolarisationVal: Polarisation): HResult; stdcall;
  14572.     function get_WestPosition(out WestLongitude: WordBool): HResult; stdcall;
  14573.     function put_WestPosition(WestLongitude: WordBool): HResult; stdcall;
  14574.     function get_OrbitalPosition(out longitude: longint): HResult; stdcall;
  14575.     function put_OrbitalPosition(longitude: longint): HResult; stdcall;
  14576.     function get_Azimuth(out Azimuth: longint): HResult; stdcall;
  14577.     function put_Azimuth(Azimuth: longint): HResult; stdcall;
  14578.     function get_Elevation(out Elevation: longint): HResult; stdcall;
  14579.     function put_Elevation(Elevation: longint): HResult; stdcall;
  14580.    end;
  14581.  
  14582.   {$HPPEMIT 'typedef System::DelphiInterface<IDVBCLocator> _di_IDVBCLocator;'}
  14583.   {$EXTERNALSYM IDVBCLocator}
  14584.   IDVBCLocator = interface(ILocator)
  14585.     ['{6E42F36E-1DD2-43c4-9F78-69D25AE39034}']
  14586.     (*** IDVBCLocator methods ***)
  14587.   end;
  14588.  
  14589.   {$HPPEMIT 'typedef System::DelphiInterface<IBroadcastEvent> _di_IBroadcastEvent;'}
  14590.   {$EXTERNALSYM IBroadcastEvent}
  14591.   IBroadcastEvent = interface(IUnknown)
  14592.     ['{3B21263F-26E8-489d-AAC4-924F7EFD9511}']
  14593.     (*** IBroadcastEvent methods ***)
  14594.     function Fire(const EventID: TGUID ): HResult; stdcall;
  14595.   end;
  14596.  
  14597. //------------------------------------------------------------------------------
  14598. // File: DXTrans.h
  14599. // Desc: DirectX Transform library
  14600. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  14601. //------------------------------------------------------------------------------
  14602.  
  14603. const
  14604.   LIBID_DXTRANSLib         : TGUID = '{54314D1D-35FE-11D1-81A1-0000F87557DB}';
  14605.   {$EXTERNALSYM LIBID_DXTRANSLib}
  14606.  
  14607.   IID_IDXBaseObject        : TGUID = '{17B59B2B-9CC8-11D1-9053-00C04FD9189D}';
  14608.   {$EXTERNALSYM IID_IDXBaseObject}
  14609.   IID_IDXTransformFactory  : TGUID = '{6A950B2B-A971-11D1-81C8-0000F87557DB}';
  14610.   {$EXTERNALSYM IID_IDXTransformFactory}
  14611.   IID_IDXTransform         : TGUID = '{30A5FB78-E11F-11D1-9064-00C04FD9189D}';
  14612.   {$EXTERNALSYM IID_IDXTransform}
  14613.   IID_IDXSurfacePick       : TGUID = '{30A5FB79-E11F-11d1-9064-00C04FD9189D}';
  14614.   {$EXTERNALSYM IID_IDXSurfacePick}
  14615.   IID_IDXTBindHost         : TGUID = '{D26BCE55-E9DC-11d1-9066-00C04FD9189D}';
  14616.   {$EXTERNALSYM IID_IDXTBindHost}
  14617.   IID_IDXTaskManager       : TGUID = '{254DBBC1-F922-11D0-883A-3C8B00C10000}';
  14618.   {$EXTERNALSYM IID_IDXTaskManager}
  14619.   IID_IDXSurfaceFactory    : TGUID = '{144946F5-C4D4-11D1-81D1-0000F87557DB}';
  14620.   {$EXTERNALSYM IID_IDXSurfaceFactory}
  14621.   IID_IDXSurfaceModifier   : TGUID = '{9EA3B637-C37D-11D1-905E-00C04FD9189D}';
  14622.   {$EXTERNALSYM IID_IDXSurfaceModifier}
  14623.   IID_IDXSurface           : TGUID = '{B39FD73F-E139-11D1-9065-00C04FD9189D}';
  14624.   {$EXTERNALSYM IID_IDXSurface}
  14625.   IID_IDXSurfaceInit       : TGUID = '{9EA3B639-C37D-11d1-905E-00C04FD9189D}';
  14626.   {$EXTERNALSYM IID_IDXSurfaceInit}
  14627.   IID_IDXARGBSurfaceInit   : TGUID = '{9EA3B63A-C37D-11d1-905E-00C04FD9189D}';
  14628.   {$EXTERNALSYM IID_IDXARGBSurfaceInit}
  14629.   IID_IDXARGBReadPtr       : TGUID = '{EAAAC2D6-C290-11d1-905D-00C04FD9189D}';
  14630.   {$EXTERNALSYM IID_IDXARGBReadPtr}
  14631.   IID_IDXARGBReadWritePtr  : TGUID = '{EAAAC2D7-C290-11d1-905D-00C04FD9189D}';
  14632.   {$EXTERNALSYM IID_IDXARGBReadWritePtr}
  14633.   IID_IDXDCLock            : TGUID = '{0F619456-CF39-11D1-905E-00C04FD9189D}';
  14634.   {$EXTERNALSYM IID_IDXDCLock}
  14635.   IID_IDXTScaleOutput      : TGUID = '{B2024B50-EE77-11D1-9066-00C04FD9189D}';
  14636.   {$EXTERNALSYM IID_IDXTScaleOutput}
  14637.   IID_IDXGradient          : TGUID = '{B2024B51-EE77-11D1-9066-00C04FD9189D}';
  14638.   {$EXTERNALSYM IID_IDXGradient}
  14639.   IID_IDXTScale            : TGUID = '{B39FD742-E139-11D1-9065-00C04FD9189D}';
  14640.   {$EXTERNALSYM IID_IDXTScale}
  14641.   IID_IDXEffect            : TGUID = '{E31FB81B-1335-11d1-8189-0000F87557DB}';
  14642.   {$EXTERNALSYM IID_IDXEffect}
  14643.   IID_IDXLookupTable       : TGUID = '{01BAFC7F-9E63-11D1-9053-00C04FD9189D}';
  14644.   {$EXTERNALSYM IID_IDXLookupTable}
  14645.   IID_IDXRawSurface        : TGUID = '{09756C8A-D96A-11d1-9062-00C04FD9189D}';
  14646.   {$EXTERNALSYM IID_IDXRawSurface}
  14647.   IID_IHTMLDXTransform     : TGUID = '{30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5}';
  14648.   {$EXTERNALSYM IID_IHTMLDXTransform}
  14649.  
  14650.   CLSID_DXTransformFactory : TGUID = '{D1FE6762-FC48-11D0-883A-3C8B00C10000}';
  14651.   {$EXTERNALSYM CLSID_DXTransformFactory}
  14652.   CLSID_DXTaskManager      : TGUID = '{4CB26C03-FF93-11D0-817E-0000F87557DB}';
  14653.   {$EXTERNALSYM CLSID_DXTaskManager}
  14654.   CLSID_DXTScale           : TGUID = '{555278E2-05DB-11D1-883A-3C8B00C10000}';
  14655.   {$EXTERNALSYM CLSID_DXTScale}
  14656.   CLSID_DXSurface          : TGUID = '{0E890F83-5F79-11D1-9043-00C04FD9189D}';
  14657.   {$EXTERNALSYM CLSID_DXSurface}
  14658.   CLSID_DXSurfaceModifier  : TGUID = '{3E669F1D-9C23-11D1-9053-00C04FD9189D}';
  14659.   {$EXTERNALSYM CLSID_DXSurfaceModifier}
  14660.   CLSID_DXGradient         : TGUID = '{C6365470-F667-11D1-9067-00C04FD9189D}';
  14661.   {$EXTERNALSYM CLSID_DXGradient}
  14662.  
  14663.  
  14664. //
  14665. //  Pixel format definitions
  14666. //
  14667.   DDPF_RGB1     : TGUID = '{e436eb78-524f-11ce-9f53-0020af0ba770}';
  14668.   {$EXTERNALSYM DDPF_RGB1}
  14669.   DDPF_RGB2     : TGUID = '{BBF7D3F3-143F-11d1-B50A-0000F8756A10}';
  14670.   {$EXTERNALSYM DDPF_RGB2}
  14671.   DDPF_RGB4     : TGUID = '{e436eb79-524f-11ce-9f53-0020af0ba770}';
  14672.   {$EXTERNALSYM DDPF_RGB4}
  14673.   DDPF_RGB8     : TGUID = '{e436eb7a-524f-11ce-9f53-0020af0ba770}';
  14674.   {$EXTERNALSYM DDPF_RGB8}
  14675.   DDPF_RGB332   : TGUID = '{BBF7D3F6-143F-11d1-B50A-0000F8756A10}';
  14676.   {$EXTERNALSYM DDPF_RGB332}
  14677.   DDPF_ARGB4444 : TGUID = '{BBF7D3F7-143F-11d1-B50A-0000F8756A10}';
  14678.   {$EXTERNALSYM DDPF_ARGB4444}
  14679.   DDPF_RGB565   : TGUID = '{e436eb7b-524f-11ce-9f53-0020af0ba770}';
  14680.   {$EXTERNALSYM DDPF_RGB565}
  14681.   DDPF_BGR565   : TGUID = '{BBF7D3F9-143F-11d1-B50A-0000F8756A10}';
  14682.   {$EXTERNALSYM DDPF_BGR565}
  14683.   DDPF_RGB555   : TGUID = '{e436eb7c-524f-11ce-9f53-0020af0ba770}';
  14684.   {$EXTERNALSYM DDPF_RGB555}
  14685.   DDPF_ARGB1555 : TGUID = '{BBF7D3FB-143F-11d1-B50A-0000F8756A10}';
  14686.   {$EXTERNALSYM DDPF_ARGB1555}
  14687.   DDPF_RGB24    : TGUID = '{e436eb7d-524f-11ce-9f53-0020af0ba770}';
  14688.   {$EXTERNALSYM DDPF_RGB24}
  14689.   DDPF_BGR24    : TGUID = '{BBF7D3FD-143F-11d1-B50A-0000F8756A10}';
  14690.   {$EXTERNALSYM DDPF_BGR24}
  14691.   DDPF_RGB32    : TGUID = '{e436eb7e-524f-11ce-9f53-0020af0ba770}';
  14692.   {$EXTERNALSYM DDPF_RGB32}
  14693.   DDPF_BGR32    : TGUID = '{BBF7D3FF-143F-11d1-B50A-0000F8756A10}';
  14694.   {$EXTERNALSYM DDPF_BGR32}
  14695.   DDPF_ABGR32   : TGUID = '{BBF7D401-143F-11d1-B50A-0000F8756A10}';
  14696.   {$EXTERNALSYM DDPF_ABGR32}
  14697.   DDPF_ARGB32   : TGUID = '{773c9ac0-3274-11d0-B724-00aa006c1A01}';
  14698.   {$EXTERNALSYM DDPF_ARGB32}
  14699.   DDPF_PMARGB32 : TGUID = '{BBF7D403-143F-11d1-B50A-0000F8756A10}';
  14700.   {$EXTERNALSYM DDPF_PMARGB32}
  14701.   DDPF_A1       : TGUID = '{7846F94E-3915-11d1-99AA-0000F8756A10}';
  14702.   {$EXTERNALSYM DDPF_A1}
  14703.   DDPF_A2       : TGUID = '{7846F94F-3915-11d1-99AA-0000F8756A10}';
  14704.   {$EXTERNALSYM DDPF_A2}
  14705.   DDPF_A4       : TGUID = '{7846F950-3915-11d1-99AA-0000F8756A10}';
  14706.   {$EXTERNALSYM DDPF_A4}
  14707.   DDPF_A8       : TGUID = '{7846F951-3915-11d1-99AA-0000F8756A10}';
  14708.   {$EXTERNALSYM DDPF_A8}
  14709.   DDPF_Z8       : TGUID = '{7846F952-3915-11d1-99AA-0000F8756A10}';
  14710.   {$EXTERNALSYM DDPF_Z8}
  14711.   DDPF_Z16      : TGUID = '{7846F953-3915-11d1-99AA-0000F8756A10}';
  14712.   {$EXTERNALSYM DDPF_Z16}
  14713.   DDPF_Z24      : TGUID = '{7846F954-3915-11d1-99AA-0000F8756A10}';
  14714.   {$EXTERNALSYM DDPF_Z24}
  14715.   DDPF_Z32      : TGUID = '{7846F955-3915-11d1-99AA-0000F8756A10}';
  14716.   {$EXTERNALSYM DDPF_Z32}
  14717. //
  14718. //  Component categories
  14719. //
  14720.   CATID_DXImageTransform     : TGUID = '{C501EDBE-9E70-11d1-9053-00C04FD9189D}';
  14721.   {$EXTERNALSYM CATID_DXImageTransform}
  14722.   CATID_DX3DTransform        : TGUID = '{C501EDBF-9E70-11d1-9053-00C04FD9189D}';
  14723.   {$EXTERNALSYM CATID_DX3DTransform}
  14724.   CATID_DXAuthoringTransform : TGUID = '{ACAC94FC-E5CF-11d1-9066-00C04FD9189D}';
  14725.   {$EXTERNALSYM CATID_DXAuthoringTransform}
  14726.   CATID_DXSurface            : TGUID = '{52BA7097-B52C-11d1-81CB-0000F87557DB}';
  14727.   {$EXTERNALSYM CATID_DXSurface}
  14728.  
  14729. //
  14730. //  Service IDs.
  14731. //
  14732.   SID_SDirectDraw         : TGUID = (D1:$618f8ad4;D2:$8b7a;D3:$11d0;D4:($8f,$cc,$0,$c0,$4f,$d9,$18,$9d));
  14733.   {$EXTERNALSYM SID_SDirectDraw}
  14734.   SID_SDirect3DRM         : TGUID = (D1:$2bc49361;D2:$8327;D3:$11cf;D4:($ac,$4a,$0,$0,$c0,$38,$25,$a1));
  14735.   {$EXTERNALSYM SID_SDirect3DRM}
  14736.   SID_SDXTaskManager      : TGUID = '{4CB26C03-FF93-11D0-817E-0000F87557DB}';
  14737.   {$EXTERNALSYM SID_SDXTaskManager}
  14738.   SID_SDXSurfaceFactory   : TGUID = '{144946F5-C4D4-11D1-81D1-0000F87557DB}';
  14739.   {$EXTERNALSYM SID_SDXSurfaceFactory}
  14740.   SID_SDXTransformFactory : TGUID = '{6A950B2B-A971-11D1-81C8-0000F87557DB}';
  14741.   {$EXTERNALSYM SID_SDXTransformFactory}
  14742.  
  14743. type
  14744.   {$HPPEMIT 'typedef System::DelphiInterface<IDXBaseObject> _di_IDXBaseObject;'}
  14745.   {$EXTERNALSYM IDXBaseObject}
  14746.   IDXBaseObject = interface(IUnknown)
  14747.     ['{17B59B2B-9CC8-11D1-9053-00C04FD9189D}']
  14748.     (*** IDXBaseObject methods ***)
  14749.     function  GetGenerationId(out pID: ULONG): HResult; stdcall;
  14750.     function  IncrementGenerationId(bRefresh: BOOL): HResult; stdcall;
  14751.     function  GetObjectSize(out pcbSize: ULONG): HResult; stdcall;
  14752.   end;
  14753.  
  14754.   DXBNDID = (
  14755.     DXB_X,
  14756.     DXB_Y,
  14757.     DXB_Z,
  14758.     DXB_T
  14759.   );
  14760.   {$EXTERNALSYM DXBNDID}
  14761.   TDXBNDID = DXBNDID;
  14762.  
  14763.   DXBNDTYPE = (
  14764.     DXBT_DISCRETE,
  14765.     DXBT_DISCRETE64,
  14766.     DXBT_CONTINUOUS,
  14767.     DXBT_CONTINUOUS64
  14768.   );
  14769.   {$EXTERNALSYM DXBNDTYPE}
  14770.   TDXBNDType = DXBNDTYPE;
  14771.  
  14772.   DXDBND = record
  14773.     Min: longint;
  14774.     Max: longint;
  14775.   end;
  14776.   {$EXTERNALSYM DXDBND}
  14777.   TDXDBND = DXDBND;
  14778.  
  14779.   DXDBNDS = array[0..3] of TDXDBND;
  14780.   {$EXTERNALSYM DXDBNDS}
  14781.  
  14782.   DXDBND64 = record
  14783.     Min: int64;
  14784.     Max: int64;
  14785.   end;
  14786.   {$EXTERNALSYM DXDBND64}
  14787.   TDXDBND64 = DXDBND64;
  14788.  
  14789.   DXDBNDS64 = array [0..3] of TDXDBND64;
  14790.   {$EXTERNALSYM DXDBNDS64}
  14791.  
  14792.   DXCBND = record
  14793.   {$EXTERNALSYM DXCBND}
  14794.     Min: single;
  14795.     Max: single;
  14796.   end;
  14797.   TDXCBND = DXCBND;
  14798.  
  14799.   DXCBNDS = array[0..3] of TDXCBND;
  14800.   {$EXTERNALSYM DXCBNDS}
  14801.  
  14802.   DXCBND64 = record
  14803.     Min: double;
  14804.     Max: double;
  14805.   end;
  14806.   {$EXTERNALSYM DXCBND64}
  14807.   TDXCBND64 = DXCBND64;
  14808.  
  14809.   DXCBNDS64 = array[0..3] of TDXCBND64;
  14810.   {$EXTERNALSYM DXCBNDS64}
  14811.  
  14812.   DXBNDS = record
  14813.   {$EXTERNALSYM DXBNDS}
  14814.     eType: TDXBNDTYPE;
  14815.     case Integer of
  14816.       0: (D:  array[0..3] of TDXDBND);
  14817.       1: (LD: array[0..3] of TDXDBND64);
  14818.       2: (C:  array[0..3] of TDXCBND);
  14819.       3: (LC: array[0..3] of TDXCBND64);
  14820.   end;
  14821.   TDXBNDS = DXBNDS;
  14822.  
  14823.   DXDVEC = array[0..3] of longint;
  14824.   {$EXTERNALSYM DXDVEC}
  14825.  
  14826.   DXDVEC64 = array[0..3] of int64;
  14827.   {$EXTERNALSYM DXDVEC64}
  14828.  
  14829.   DXCVEC = array[0..3] of single;
  14830.   {$EXTERNALSYM DXCVEC}
  14831.  
  14832.   DXCVEC64 = array[0..3] of double;
  14833.   {$EXTERNALSYM DXCVEC64}
  14834.  
  14835.   DXVEC = record
  14836.     eType: TDXBNDTYPE;
  14837.     case Integer of
  14838.       0: (D:  array[0..3] of Longint);
  14839.       1: (LD: array[0..3] of Int64);
  14840.       2: (C:  array[0..3] of Single);
  14841.       3: (LC: array[0..3] of Double);
  14842.   end;
  14843.   {$EXTERNALSYM DXVEC}
  14844.   TDXVEC = DXVEC;
  14845.  
  14846.   {$HPPEMIT 'typedef System::DelphiInterface<IDXTransform> _di_IDXTransform;'}
  14847.   {$EXTERNALSYM IDXTransform}
  14848.   IDXTransform = interface(IDXBaseObject)
  14849.     ['{30A5FB78-E11F-11D1-9064-00C04FD9189D}']
  14850.     (*** IDXTransform methods ***)
  14851.     function Setup(punkInputs: IUnknown; ulNumInputs: ULONG; punkOutputs: IUnknown;
  14852.                ulNumOutputs: ULONG; dwFlags: DWORD): HResult; stdcall;
  14853.     function Execute(const pRequestID: TGUID; var pClipBnds: TDXBNDS; var pPlacement: TDXVEC): HResult; stdcall;
  14854.     function MapBoundsIn2Out(var pInBounds: TDXBNDS; ulNumInBnds: ULONG; ulOutIndex: ULONG;
  14855.                out pOutBounds: TDXBNDS): HResult; stdcall;
  14856.     function MapBoundsOut2In(ulOutIndex: ULONG; var pOutBounds: TDXBNDS; ulInIndex: ULONG;
  14857.                out pInBounds: TDXBNDS): HResult; stdcall;
  14858.     function SetMiscFlags(dwMiscFlags: DWORD): HResult; stdcall;
  14859.     function GetMiscFlags(out pdwMiscFlags: DWORD): HResult; stdcall;
  14860.     function GetInOutInfo(bIsOutput: BOOL; ulIndex: ULONG; out pdwFlags: DWORD;
  14861.                out pIDs: TGUID; var pcIDs: ULONG; out ppUnkCurrentObject: IUnknown): HResult; stdcall;
  14862.     function SetQuality(fQuality: Single): HResult; stdcall;
  14863.     function GetQuality(out fQuality: Single): HResult; stdcall;
  14864.   end;
  14865.  
  14866.   {$HPPEMIT 'typedef System::DelphiInterface<IDXTransformFactory> _di_IDXTransformFactory;'}
  14867.   {$EXTERNALSYM IDXTransformFactory}
  14868.   IDXTransformFactory = interface(IServiceProvider)
  14869.     ['{6A950B2B-A971-11D1-81C8-0000F87557DB}']
  14870.     (*** IDXTransformFactory methods ***)
  14871.     function SetService(const guidService: TGUID; pUnkService: IUnknown;
  14872.                bWeakReference: BOOL): HResult; stdcall;
  14873.     function CreateTransform(punkInputs: IUnknown; ulNumInputs: ULONG;
  14874.                punkOutputs: IUnknown; ulNumOutputs: ULONG;
  14875.                pInitProps: IPropertyBag; pErrLog: IErrorLog;
  14876.                const TransCLSID: TGUID; const TransIID: TGUID; out ppTransform: Pointer): HResult; stdcall;
  14877.     function InitializeTransform(pTransform: IDXTransform; punkInputs: IUnknown;
  14878.                ulNumInputs: ULONG; punkOutputs: IUnknown;
  14879.                ulNumOutputs: ULONG; pInitProps: IPropertyBag;
  14880.                pErrLog: IErrorLog): HResult; stdcall;
  14881.   end;
  14882.  
  14883.  
  14884.   DXTMISCFLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14885.   {$EXTERNALSYM DXTMISCFLAGS}
  14886.   const
  14887.     DXTMF_BLEND_WITH_OUTPUT     = 1 shl 0;
  14888.     {$EXTERNALSYM DXTMF_BLEND_WITH_OUTPUT}
  14889.     DXTMF_DITHER_OUTPUT         = 1 shl 1;
  14890.     {$EXTERNALSYM DXTMF_DITHER_OUTPUT}
  14891.     DXTMF_OPTION_MASK           = $ffff;
  14892.     {$EXTERNALSYM DXTMF_OPTION_MASK}
  14893.     DXTMF_VALID_OPTIONS         = DXTMF_BLEND_WITH_OUTPUT or DXTMF_DITHER_OUTPUT;
  14894.     {$EXTERNALSYM DXTMF_VALID_OPTIONS}
  14895.     DXTMF_BLEND_SUPPORTED       = 1 shl 16;
  14896.     {$EXTERNALSYM DXTMF_BLEND_SUPPORTED}
  14897.     DXTMF_DITHER_SUPPORTED     = 1 shl 17;
  14898.     {$EXTERNALSYM DXTMF_DITHER_SUPPORTED}
  14899.     DXTMF_INPLACE_OPERATION     = 1 shl 24;
  14900.     {$EXTERNALSYM DXTMF_INPLACE_OPERATION}
  14901.     DXTMF_BOUNDS_SUPPORTED     = 1 shl 25;
  14902.     {$EXTERNALSYM DXTMF_BOUNDS_SUPPORTED}
  14903.     DXTMF_PLACEMENT_SUPPORTED= 1 shl 26;
  14904.     {$EXTERNALSYM DXTMF_PLACEMENT_SUPPORTED}
  14905.     DXTMF_QUALITY_SUPPORTED  = 1 shl 27;
  14906.     {$EXTERNALSYM DXTMF_QUALITY_SUPPORTED}
  14907.     DXTMF_OPAQUE_RESULT         = 1 shl 28;
  14908.     {$EXTERNALSYM DXTMF_OPAQUE_RESULT}
  14909.  
  14910. type
  14911.   DXINOUTINFOFLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14912.   {$EXTERNALSYM DXINOUTINFOFLAGS}
  14913.   const
  14914.     DXINOUTF_OPTIONAL    = 1 shl 0;
  14915.     {$EXTERNALSYM DXINOUTF_OPTIONAL}
  14916.  
  14917. type
  14918.   {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfacePick> _di_IDXSurfacePick;'}
  14919.   {$EXTERNALSYM IDXSurfacePick}
  14920.   IDXSurfacePick = interface(IUnknown)
  14921.     ['{30A5FB79-E11F-11d1-9064-00C04FD9189D}']
  14922.     (*** IDXSurfacePick methods ***)
  14923.     function PointPick(var pPoint: TDXVEC; out pulInputSurfaceIndex: ULONG;
  14924.                out pInputPoint: TDXVEC): HResult; stdcall;
  14925.   end;
  14926.  
  14927.   {$HPPEMIT 'typedef System::DelphiInterface<IDXTBindHost> _di_IDXTBindHost;'}
  14928.   {$EXTERNALSYM IDXTBindHost}
  14929.   IDXTBindHost = interface(IUnknown)
  14930.     ['{D26BCE55-E9DC-11d1-9066-00C04FD9189D}']
  14931.     (*** IDXTBindHost methods ***)
  14932.     function SetBindHost(pBindHost: IBindHost): HResult; stdcall;
  14933.   end;
  14934.  
  14935.   DXTASKPROC = procedure(var pTaskData: pointer; var pbContinueProcessing: BOOL); stdcall;
  14936.   {$EXTERNALSYM DXTASKPROC}
  14937.   PFNDXTASKPROC = ^DXTASKPROC;
  14938.   {$EXTERNALSYM PFNDXTASKPROC}
  14939.  
  14940.   DXAPCPROC = procedure(dwData: DWORD);stdcall;
  14941.   {$EXTERNALSYM DXAPCPROC}
  14942.   PFNDXAPCPROC = ^DXAPCPROC;
  14943.   {$EXTERNALSYM PFNDXAPCPROC}
  14944.  
  14945.   DXTMTASKINFO = record
  14946.     pfnTaskProc: PFNDXTASKPROC;
  14947.     pTaskData: Pointer;
  14948.     pfnCompletionAPC: PFNDXAPCPROC;
  14949.     dwCompletionData: DWORD;
  14950.     pRequestID: PGUID;
  14951.   end;
  14952.   {$EXTERNALSYM DXTMTASKINFO}
  14953.   TDXTMTaskInfo = DXTMTASKINFO;
  14954.  
  14955.   {$HPPEMIT 'typedef System::DelphiInterface<IDXTaskManager> _di_IDXTaskManager;'}
  14956.   {$EXTERNALSYM IDXTaskManager}
  14957.   IDXTaskManager = interface(IUnknown)
  14958.     ['{254DBBC1-F922-11D0-883A-3C8B00C10000}']
  14959.     (*** IDXTaskManager methods ***)
  14960.     function  QueryNumProcessors(out pulNumProc: ULONG): HResult; stdcall;
  14961.     function  SetThreadPoolSize(ulNumThreads: ULONG): HResult; stdcall;
  14962.     function  GetThreadPoolSize(out pulNumThreads: ULONG): HResult; stdcall;
  14963.     function  SetConcurrencyLimit(ulNumThreads: ULONG): HResult; stdcall;
  14964.     function  GetConcurrencyLimit(out pulNumThreads: ULONG): HResult; stdcall;
  14965.     function  ScheduleTasks(var TaskInfo: TDXTMTASKINFO; Events: PHANDLE;
  14966.                             out TaskIDs: DWORD; ulNumTasks: ULONG; ulWaitPeriod: ULONG): HResult; stdcall;
  14967.     function  TerminateTasks(var TaskIDs: DWORD; ulCount: ULONG; ulTimeOut: ULONG): HResult; stdcall;
  14968.     function  TerminateRequest(const RequestID: TGUID; ulTimeOut: ULONG): HResult; stdcall;
  14969.   end;
  14970.  
  14971.   DXBASESAMPLE = record
  14972.     Blue  : Byte;
  14973.     Green : Byte;
  14974.     Red   : Byte;
  14975.     Alpha : Byte;
  14976.   end;
  14977.   {$EXTERNALSYM DXBASESAMPLE}
  14978.   TDXBaseSample = DXBASESAMPLE;
  14979.  
  14980.   DXSAMPLE = record
  14981.     Blue  : Byte;
  14982.     Green : Byte;
  14983.     Red   : Byte;
  14984.     Alpha : Byte;
  14985.   end;
  14986.   {$EXTERNALSYM DXSAMPLE}
  14987.   TDXSample = DXSAMPLE;
  14988.  
  14989.   DXPMSAMPLE = record
  14990.     Blue  : Byte;
  14991.     Green : Byte;
  14992.     Red   : Byte;
  14993.     Alpha : Byte;
  14994.   end;
  14995.   {$EXTERNALSYM DXPMSAMPLE}
  14996.   TDXPMSample = DXPMSAMPLE;
  14997.  
  14998.   DXRUNTYPE = (
  14999.     DXRUNTYPE_CLEAR,
  15000.     DXRUNTYPE_OPAQUE,
  15001.     DXRUNTYPE_TRANS,
  15002.     DXRUNTYPE_UNKNOWN
  15003.   );
  15004.   {$EXTERNALSYM DXRUNTYPE}
  15005.   TDXRunType = DXRUNTYPE;
  15006.  
  15007. const
  15008.   DX_MAX_RUN_INFO_COUNT    = 128;
  15009.   {$EXTERNALSYM DX_MAX_RUN_INFO_COUNT}
  15010.  
  15011. type
  15012. // 2  : Type  ;   // Type
  15013. // 30 : Count ;  // Number of samples in run
  15014.   PDXRunInfo = ^TDXRunInfo;
  15015.   DXRUNINFO = record
  15016.     Bitfields : ULONG;
  15017.   end;
  15018.   {$EXTERNALSYM DXRUNINFO}
  15019.   TDXRunInfo = DXRUNINFO;
  15020.  
  15021.   DXSFCREATE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15022.   {$EXTERNALSYM DXSFCREATE}
  15023.   const
  15024.     DXSF_FORMAT_IS_CLSID    = 1 shl 0;
  15025.     {$EXTERNALSYM DXSF_FORMAT_IS_CLSID}
  15026.     DXSF_NO_LAZY_DDRAW_LOCK = 1 shl 1;
  15027.     {$EXTERNALSYM DXSF_NO_LAZY_DDRAW_LOCK}
  15028.  
  15029. type
  15030.   DXBLTOPTIONS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15031.   {$EXTERNALSYM DXBLTOPTIONS}
  15032.   const
  15033.     DXBOF_DO_OVER    = 1 shl 0;
  15034.     {$EXTERNALSYM DXBOF_DO_OVER}
  15035.     DXBOF_DITHER    = 1 shl 1;
  15036.     {$EXTERNALSYM DXBOF_DITHER}
  15037.  
  15038. type
  15039.   DXSAMPLEFORMATENUM = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15040.   {$EXTERNALSYM DXSAMPLEFORMATENUM}
  15041.   const
  15042.     DXPF_FLAGSMASK    = $FFFF0000;
  15043.     {$EXTERNALSYM DXPF_FLAGSMASK}
  15044.     DXPF_NONPREMULT   = $00010000;
  15045.     {$EXTERNALSYM DXPF_NONPREMULT}
  15046.     DXPF_TRANSPARENCY = $00020000;
  15047.     {$EXTERNALSYM DXPF_TRANSPARENCY}
  15048.     DXPF_TRANSLUCENCY = $00040000;
  15049.     {$EXTERNALSYM DXPF_TRANSLUCENCY}
  15050.     DXPF_2BITERROR    = $00200000;
  15051.     {$EXTERNALSYM DXPF_2BITERROR}
  15052.     DXPF_3BITERROR    = $00300000;
  15053.     {$EXTERNALSYM DXPF_3BITERROR}
  15054.     DXPF_4BITERROR    = $00400000;
  15055.     {$EXTERNALSYM DXPF_4BITERROR}
  15056.     DXPF_5BITERROR    = $00500000;
  15057.     {$EXTERNALSYM DXPF_5BITERROR}
  15058.     DXPF_ERRORMASK    = $00700000;
  15059.     {$EXTERNALSYM DXPF_ERRORMASK}
  15060.     DXPF_NONSTANDARD  = $00000000;
  15061.     {$EXTERNALSYM DXPF_NONSTANDARD}
  15062.     DXPF_PMARGB32     = $00060001;
  15063.     {$EXTERNALSYM DXPF_PMARGB32}
  15064.     DXPF_ARGB32       = $00070002;
  15065.     {$EXTERNALSYM DXPF_ARGB32}
  15066.     DXPF_ARGB4444     = $00470003;
  15067.     {$EXTERNALSYM DXPF_ARGB4444}
  15068.     DXPF_A8           = $00060004;
  15069.     {$EXTERNALSYM DXPF_A8}
  15070.     DXPF_RGB32        = $00000005;
  15071.     {$EXTERNALSYM DXPF_RGB32}
  15072.     DXPF_RGB24        = $00000006;
  15073.     {$EXTERNALSYM DXPF_RGB24}
  15074.     DXPF_RGB565       = $00300007;
  15075.     {$EXTERNALSYM DXPF_RGB565}
  15076.     DXPF_RGB555       = $00300008;
  15077.     {$EXTERNALSYM DXPF_RGB555}
  15078.     DXPF_RGB8         = $00500009;
  15079.     {$EXTERNALSYM DXPF_RGB8}
  15080.     DXPF_ARGB1555     = $0032000A;
  15081.     {$EXTERNALSYM DXPF_ARGB1555}
  15082.     DXPF_RGB32_CK     = $00020005;
  15083.     {$EXTERNALSYM DXPF_RGB32_CK}
  15084.     DXPF_RGB24_CK     = $00020006;
  15085.     {$EXTERNALSYM DXPF_RGB24_CK}
  15086.     DXPF_RGB555_CK    = $00320008;
  15087.     {$EXTERNALSYM DXPF_RGB555_CK}
  15088.     DXPF_RGB565_CK    = $00320007;
  15089.     {$EXTERNALSYM DXPF_RGB565_CK}
  15090.     DXPF_RGB8_CK      = $00520009;
  15091.     {$EXTERNALSYM DXPF_RGB8_CK}
  15092.  
  15093. type
  15094.   DXLOCKSURF = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15095.   {$EXTERNALSYM DXLOCKSURF}
  15096.   const
  15097.     DXLOCKF_READ               = 0;
  15098.     {$EXTERNALSYM DXLOCKF_READ}
  15099.     DXLOCKF_READWRITE       = 1 shl 0;
  15100.     {$EXTERNALSYM DXLOCKF_READWRITE}
  15101.     DXLOCKF_EXISTINGINFOONLY = 1 shl 1;
  15102.     {$EXTERNALSYM DXLOCKF_EXISTINGINFOONLY}
  15103.     DXLOCKF_WANTRUNINFO       = 1 shl 2;
  15104.     {$EXTERNALSYM DXLOCKF_WANTRUNINFO}
  15105.     DXLOCKF_NONPREMULT       = 1 shl 16;
  15106.     {$EXTERNALSYM DXLOCKF_NONPREMULT}
  15107.     DXLOCKF_VALIDFLAGS       = (DXLOCKF_READWRITE or DXLOCKF_EXISTINGINFOONLY or DXLOCKF_WANTRUNINFO or DXLOCKF_NONPREMULT);
  15108.     {$EXTERNALSYM DXLOCKF_VALIDFLAGS}
  15109.  
  15110. Type
  15111.   DXSURFSTATUS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15112.   {$EXTERNALSYM DXSURFSTATUS}
  15113.   const
  15114.     DXSURF_TRANSIENT  = 1 shl 0;
  15115.     {$EXTERNALSYM DXSURF_TRANSIENT}
  15116.     DXSURF_READONLY   = 1 shl 1;
  15117.     {$EXTERNALSYM DXSURF_READONLY}
  15118.     DXSURF_VALIDFLAGS = (DXSURF_TRANSIENT or DXSURF_READONLY);
  15119.     {$EXTERNALSYM DXSURF_VALIDFLAGS}
  15120.  
  15121. type
  15122.   {$HPPEMIT 'typedef System::DelphiInterface<IDXDCLock> _di_IDXDCLock;'}
  15123.   {$EXTERNALSYM IDXDCLock}
  15124.   IDXDCLock = interface(IUnknown)
  15125.     ['{0F619456-CF39-11D1-905E-00C04FD9189D}']
  15126.     (*** IDXDCLock methods ***)
  15127.     function  GetDC: HDC; stdcall;
  15128.   end;
  15129.  
  15130.   {$HPPEMIT 'typedef System::DelphiInterface<IDXSurface> _di_IDXSurface;'}
  15131.   {$EXTERNALSYM IDXSurface}
  15132.   IDXSurface = interface(IDXBaseObject)
  15133.     ['{B39FD73F-E139-11D1-9065-00C04FD9189D}']
  15134.     (*** IDXSurface methods ***)
  15135.     function GetPixelFormat(out pFormatID: TGUID; out pSampleFormatEnum: DXSAMPLEFORMATENUM): HResult; stdcall;
  15136.     function GetBounds(out pBounds: TDXBNDS): HResult; stdcall;
  15137.     function GetStatusFlags(out pdwStatusFlags: DWORD): HResult; stdcall;
  15138.     function SetStatusFlags(dwStatusFlags: DWORD): HResult; stdcall;
  15139.     function LockSurface(var pBounds: TDXBNDS; ulTimeOut: ULONG; dwFlags: DWORD;
  15140.              const riid: TGUID; out ppPointer: Pointer; out pulGenerationId: ULONG): HResult; stdcall;
  15141.     function GetDirectDrawSurface(const riid: TGUID; out ppSurface: Pointer): HResult; stdcall;
  15142.     function GetColorKey(var pColorKey: TDXSAMPLE): HResult; stdcall;
  15143.     function SetColorKey(ColorKey: TDXSAMPLE): HResult; stdcall;
  15144.     function LockSurfaceDC(var pBounds: TDXBNDS; ulTimeOut: ULONG; dwFlags: DWORD;
  15145.                             out ppDCLock: IDXDCLock): HResult; stdcall;
  15146.     function SetAppData(dwAppData: DWORD): HResult; stdcall;
  15147.     function GetAppData(var pdwAppData: DWORD): HResult; stdcall;
  15148.   end;
  15149.  
  15150.   {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfaceFactory> _di_IDXSurfaceFactory;'}
  15151.   {$EXTERNALSYM IDXSurfaceFactory}
  15152.   IDXSurfaceFactory = interface(IUnknown)
  15153.     ['{144946F5-C4D4-11D1-81D1-0000F87557DB}']
  15154.     (*** IDXSurfaceFactory methods ***)
  15155.     function CreateSurface(pDirectDraw: IUnknown; var pDDSurfaceDesc: PDDSurfaceDesc;
  15156.                const pFormatID: TGUID; var pBounds: TDXBNDS; dwFlags: DWORD;
  15157.                punkOuter: IUnknown; const riid: TGUID; out ppDXSurface: Pointer): HResult; stdcall;
  15158.     function CreateFromDDSurface(pDDrawSurface: IUnknown; const pFormatID: TGUID;
  15159.                dwFlags: DWORD; punkOuter: IUnknown; const riid: TGUID;
  15160.                out ppDXSurface: Pointer): HResult; stdcall;
  15161.     function LoadImage(pszFileName: PWideChar; pDirectDraw: IUnknown;
  15162.                pDDSurfaceDesc: PDDSURFACEDESC; const pFormatID: TGUID; const riid: TGUID;
  15163.                out ppDXSurface: Pointer): HResult; stdcall;
  15164.     function LoadImageFromStream(pStream: IStream; pDirectDraw: IUnknown;
  15165.                pDDSurfaceDesc: PDDSURFACEDESC; const pFormatID: TGUID;
  15166.                const riid: TGUID; out ppDXSurface: Pointer): HResult; stdcall;
  15167.     function CopySurfaceToNewFormat(pSrc: IDXSurface; pDirectDraw: IUnknown;
  15168.                pDDSurfaceDesc: PDDSURFACEDESC; const pDestFormatID: TGUID;
  15169.                out ppNewSurface: IDXSurface): HResult; stdcall;
  15170.     function CreateD3DRMTexture(pSrc: IDXSurface; pDirectDraw: IUnknown;
  15171.                pD3DRM3: IUnknown; const riid: TGUID; out ppTexture3: Pointer): HResult; stdcall;
  15172.     function BitBlt(pDest: IDXSurface; var pPlacement: TDXVEC; pSrc: IDXSurface;
  15173.                var pClipBounds: TDXBNDS; dwFlags: DWORD): HResult; stdcall;
  15174.   end;
  15175.  
  15176.   //convenient type declaration for IDXLookupTable
  15177.   LUT = array[0..255] of Byte;
  15178.   {$EXTERNALSYM LUT}
  15179.  
  15180.   {$HPPEMIT 'typedef System::DelphiInterface<IDXLookupTable> _di_IDXLookupTable;'}
  15181.   {$EXTERNALSYM IDXLookupTable}
  15182.   IDXLookupTable = interface(IDXBaseObject)
  15183.     ['{01BAFC7F-9E63-11D1-9053-00C04FD9189D}']
  15184.     (*** IDXLookupTable methods ***)
  15185.     function  GetTables(RedLUT: LUT; GreenLUT: LUT; BlueLUT: LUT; AlphaLUT: LUT): HResult; stdcall;
  15186.     function  IsChannelIdentity(out pSampleBools: TDXBASESAMPLE): HResult; stdcall;
  15187.     function  GetIndexValues(Index: ULONG; out pSample: TDXBASESAMPLE): HResult; stdcall;
  15188.     function  ApplyTables(var pSamples: TDXSAMPLE; cSamples: ULONG): HResult; stdcall;
  15189.   end;
  15190.  
  15191.   DXSURFMODCOMPOP = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15192.   {$EXTERNALSYM DXSURFMODCOMPOP}
  15193.   const
  15194.     DXSURFMOD_COMP_OVER        = 0;
  15195.     {$EXTERNALSYM DXSURFMOD_COMP_OVER}
  15196.     DXSURFMOD_COMP_ALPHA_MASK = 1;
  15197.     {$EXTERNALSYM DXSURFMOD_COMP_ALPHA_MASK}
  15198.     DXSURFMOD_COMP_MAX_VALID  = 1;
  15199.     {$EXTERNALSYM DXSURFMOD_COMP_MAX_VALID}
  15200.  
  15201. type
  15202.   {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfaceModifier> _di_IDXSurfaceModifier;'}
  15203.   {$EXTERNALSYM IDXSurfaceModifier}
  15204.   IDXSurfaceModifier = interface(IUnknown)
  15205.     ['{9EA3B637-C37D-11D1-905E-00C04FD9189D}']
  15206.     (*** IDXSurfaceModifier methods ***)
  15207.     function  SetFillColor(Color: TDXSAMPLE): HResult; stdcall;
  15208.     function  GetFillColor(out pColor: TDXSAMPLE): HResult; stdcall;
  15209.     function  SetBounds(var pBounds: TDXBNDS): HResult; stdcall;
  15210.     function  SetBackground(pSurface: IDXSurface): HResult; stdcall;
  15211.     function  GetBackground(out ppSurface: IDXSurface): HResult; stdcall;
  15212.     function  SetCompositeOperation(CompOp: DXSURFMODCOMPOP): HResult; stdcall;
  15213.     function  GetCompositeOperation(out pCompOp: DXSURFMODCOMPOP): HResult; stdcall;
  15214.     function  SetForeground(pSurface: IDXSurface; bTile: BOOL; var pOrigin: TPOINT): HResult; stdcall;
  15215.     function  GetForeground(out ppSurface: IDXSurface; out pbTile: BOOL; out pOrigin: TPOINT): HResult; stdcall;
  15216.     function  SetOpacity(Opacity: Single): HResult; stdcall;
  15217.     function  GetOpacity(out pOpacity: Single): HResult; stdcall;
  15218.     function  SetLookup(pLookupTable: IDXLookupTable): HResult; stdcall;
  15219.     function  GetLookup(out ppLookupTable: IDXLookupTable): HResult; stdcall;
  15220.   end;
  15221.  
  15222.   {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfaceInit> _di_IDXSurfaceInit;'}
  15223.   {$EXTERNALSYM IDXSurfaceInit}
  15224.   IDXSurfaceInit = interface(IUnknown)
  15225.     ['{9EA3B639-C37D-11d1-905E-00C04FD9189D}']
  15226.     (*** IDXSurfaceInit methods ***)
  15227.     function InitSurface(pDirectDraw: IUnknown; var pDDSurfaceDesc: TDDSURFACEDESC;
  15228.                const pFormatID: TGUID; var pBounds: TDXBNDS; dwFlags: DWORD): HResult; stdcall;
  15229.   end;
  15230.  
  15231.   DXRAWSURFACEINFO = record
  15232.     pFirstByte   : PBYTE;
  15233.     lPitch       : LongInt;
  15234.     Width        : ULONG;
  15235.     Height       : ULONG;
  15236.     pPixelFormat : PGUID;
  15237.     hdc          : HDC;
  15238.     dwColorKey   : DWORD;
  15239.     pPalette     : ^TDXBASESAMPLE;
  15240.   end;
  15241.   {$EXTERNALSYM DXRAWSURFACEINFO}
  15242.   TDXRawSurfaceInfo = DXRAWSURFACEINFO;
  15243.  
  15244.   {$HPPEMIT 'typedef System::DelphiInterface<IDXRawSurface> _di_IDXRawSurface;'}
  15245.   {$EXTERNALSYM IDXRawSurface}
  15246.   IDXRawSurface = interface(IUnknown)
  15247.     ['{09756C8A-D96A-11d1-9062-00C04FD9189D}']
  15248.     (*** IDXRawSurface methods ***)
  15249.     function GetSurfaceInfo(var pSurfaceInfo: TDXRawSurfaceInfo): HResult; stdcall;
  15250.   end;
  15251.  
  15252.   {$HPPEMIT 'typedef System::DelphiInterface<IDXARGBSurfaceInit> _di_IDXARGBSurfaceInit;'}
  15253.   {$EXTERNALSYM IDXARGBSurfaceInit}
  15254.   IDXARGBSurfaceInit = interface(IDXSurfaceInit)
  15255.     ['{9EA3B63A-C37D-11d1-905E-00C04FD9189D}']
  15256.     (*** IDXARGBSurfaceInit methods ***)
  15257.     function InitFromDDSurface(pDDrawSurface: IUnknown; const pFormatID: TGUID;
  15258.                dwFlags: DWORD): HResult; stdcall;
  15259.     function InitFromRawSurface(pRawSurface: IDXRawSurface): HResult; stdcall;
  15260.   end;
  15261.  
  15262.   DXNATIVETYPEINFO = record
  15263.     pCurrentData : ^BYTE;
  15264.     pFirstByte   : ^PBYTE;
  15265.     lPitch       : LongInt;
  15266.     dwColorKey   : DWORD;
  15267.   end;
  15268.   {$EXTERNALSYM DXNATIVETYPEINFO}
  15269.   TDXNativeTypeInfo = DXNATIVETYPEINFO;
  15270.  
  15271.   DXPACKEDRECTDESC = record
  15272.     pSamples    : ^TDXBASESAMPLE;
  15273.     bPremult    : BOOL;
  15274.     rect        : TRECT;
  15275.     lRowPadding : LongInt;
  15276.   end;
  15277.   {$EXTERNALSYM DXPACKEDRECTDESC}
  15278.   TDXPackedRectDesc = DXPACKEDRECTDESC;
  15279.  
  15280.   DXOVERSAMPLEDESC = record
  15281.     p     : TPOINT;
  15282.     Color : TDXPMSAMPLE;
  15283.   end;
  15284.   {$EXTERNALSYM DXOVERSAMPLEDESC}
  15285.   TDXOverSampleDesc = DXOVERSAMPLEDESC;
  15286.  
  15287.   {$HPPEMIT 'typedef System::DelphiInterface<IDXARGBReadPtr> _di_IDXARGBReadPtr;'}
  15288.   {$EXTERNALSYM IDXARGBReadPtr}
  15289.   IDXARGBReadPtr = interface(IUnknown)
  15290.     ['{EAAAC2D6-C290-11d1-905D-00C04FD9189D}']
  15291.     (*** IDXARGBReadPtr methods ***)
  15292.     function GetSurface(const riid: TGUID; out ppSurface: pointer): HResult; stdcall;
  15293.     function GetNativeType(out pInfo: TDXNativeTypeInfo): DXSAMPLEFORMATENUM; stdcall;
  15294.     procedure Move(cSamples: LongInt); stdcall;
  15295.     procedure MoveToRow(y: ULONG); stdcall;
  15296.     procedure MoveToXY(x, y: ULONG); stdcall;
  15297.     function MoveAndGetRunInfo(Row: ULONG; out ppInfo: PDXRUNINFO): ULONG; stdcall;
  15298.     function Unpack(var pSamples: TDXSAMPLE; cSamples: ULONG; bMove: BOOL): TDXSAMPLE; stdcall;
  15299.     function UnpackPremult(var pSamples: TDXPMSAMPLE; cSamples: ULONG; bMove: BOOL): TDXPMSAMPLE; stdcall;
  15300.     procedure UnpackRect(var pRectDesc: TDXPackedRectDesc); stdcall;
  15301.   end;
  15302.  
  15303.   {$HPPEMIT 'typedef System::DelphiInterface<IDXARGBReadWritePtr> _di_IDXARGBReadWritePtr;'}
  15304.   {$EXTERNALSYM IDXARGBReadWritePtr}
  15305.   IDXARGBReadWritePtr = interface(IDXARGBReadPtr)
  15306.     ['{EAAAC2D7-C290-11d1-905D-00C04FD9189D}']
  15307.     (*** IDXARGBReadWritePtr methods ***)
  15308.     procedure PackAndMove(var pSamples: TDXSAMPLE; cSamples: ULONG); stdcall;
  15309.     procedure PackPremultAndMove(var pSamples: TDXPMSAMPLE; cSamples: ULONG); stdcall;
  15310.     procedure PackRect(var pRectDesc: TDXPackedRectDesc); stdcall;
  15311.     procedure CopyAndMoveBoth(var pScratchBuffer: TDXBASESAMPLE; pSrc: IDXARGBReadPtr;
  15312.                 cSamples: ULONG; bIsOpaque: BOOL); stdcall;
  15313.     procedure CopyRect(var pScratchBuffer: TDXBASESAMPLE; var pDestRect: TRECT;
  15314.                 pSrc: IDXARGBReadPtr; var pSrcOrigin: TPOINT; bIsOpaque: BOOL); stdcall;
  15315.     procedure FillAndMove(var pScratchBuffer: TDXBASESAMPLE; SampVal: TDXPMSAMPLE;
  15316.                 cSamples: ULONG; bDoOver: BOOL); stdcall;
  15317.     procedure FillRect(var pRect: TRECT; SampVal: TDXPMSAMPLE; bDoOver: BOOL); stdcall;
  15318.     procedure OverSample(var pOverDesc: TDXOverSampleDesc); stdcall;
  15319.     procedure OverArrayAndMove(var pScratchBuffer: TDXBASESAMPLE; var pSrc: TDXPMSAMPLE;
  15320.                 cSamples: ULONG); stdcall;
  15321.   end;
  15322.  
  15323.   {$HPPEMIT 'typedef System::DelphiInterface<IDXTScaleOutput> _di_IDXTScaleOutput;'}
  15324.   {$EXTERNALSYM IDXTScaleOutput}
  15325.   IDXTScaleOutput = interface(IUnknown)
  15326.     ['{B2024B50-EE77-11D1-9066-00C04FD9189D}']
  15327.     (*** IDXTScaleOutput methods ***)
  15328.     function  SetOutputSize(const OutSize: SIZE; bMaintainAspect: BOOL): HResult; stdcall;
  15329.   end;
  15330.  
  15331.   {$HPPEMIT 'typedef System::DelphiInterface<IDXGradient> _di_IDXGradient;'}
  15332.   {$EXTERNALSYM IDXGradient}
  15333.   IDXGradient = interface(IDXTScaleOutput)
  15334.     ['{B2024B51-EE77-11D1-9066-00C04FD9189D}']
  15335.     (*** IDXGradient methods ***)
  15336.     function SetGradient(StartColor: TDXSAMPLE; EndColor: TDXSAMPLE; bHorizontal: BOOL): HResult; stdcall;
  15337.     function GetOutputSize(out pOutSize: SIZE): HResult; stdcall;
  15338.   end;
  15339.  
  15340.   Scales = array[0..1] of Single;
  15341.   {$EXTERNALSYM Scales}
  15342.  
  15343.   {$HPPEMIT 'typedef System::DelphiInterface<IDXTScale> _di_IDXTScale;'}
  15344.   {$EXTERNALSYM IDXTScale}
  15345.   IDXTScale = interface(IUnknown)
  15346.     ['{B39FD742-E139-11D1-9065-00C04FD9189D}']
  15347.     (*** IDXTScale methods ***)
  15348.     function SetScales(var Scales: Scales): HResult; stdcall;
  15349.     function GetScales(out Scales: Scales): HResult; stdcall;
  15350.     function ScaleFitToSize(var pClipBounds: TDXBNDS; FitToSize: SIZE; bMaintainAspect: BOOL): HResult; stdcall;
  15351.   end;
  15352.  
  15353.   DISPIDDXEFFECT = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15354.   {$EXTERNALSYM DISPIDDXEFFECT}
  15355.   const
  15356.     DISPID_DXECAPABILITIES = 10000;
  15357.     {$EXTERNALSYM DISPID_DXECAPABILITIES}
  15358.     DISPID_DXEPROGRESS     = DISPID_DXECAPABILITIES + 1;
  15359.     {$EXTERNALSYM DISPID_DXEPROGRESS}
  15360.     DISPID_DXESTEP         = DISPID_DXEPROGRESS + 1;
  15361.     {$EXTERNALSYM DISPID_DXESTEP}
  15362.     DISPID_DXEDURATION     = DISPID_DXESTEP + 1;
  15363.     {$EXTERNALSYM DISPID_DXEDURATION}
  15364.     DISPID_DXE_NEXT_ID     = DISPID_DXEDURATION + 1;
  15365.     {$EXTERNALSYM DISPID_DXE_NEXT_ID}
  15366.  
  15367. type
  15368.   DXEFFECTTYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  15369.   {$EXTERNALSYM DXEFFECTTYPE}
  15370.   const
  15371.     DXTET_PERIODIC = 1 shl 0;
  15372.     {$EXTERNALSYM DXTET_PERIODIC}
  15373.     DXTET_MORPH     = 1 shl 1;
  15374.     {$EXTERNALSYM DXTET_MORPH}
  15375.  
  15376. type
  15377.   {$HPPEMIT 'typedef System::DelphiInterface<IDXEffect> _di_IDXEffect;'}
  15378.   {$EXTERNALSYM IDXEffect}
  15379.   IDXEffect = interface(IDispatch)
  15380.     ['{E31FB81B-1335-11d1-8189-0000F87557DB}']
  15381.     (*** IDXEffect methods ***)
  15382.     function get_Capabilities(out pVal: LongInt): HResult; stdcall;
  15383.     function get_Progress(out pVal: Single): HResult; stdcall;
  15384.     function put_Progress(newVal: Single): HResult; stdcall;
  15385.     function get_StepResolution(out pVal: Single): HResult; stdcall;
  15386.     function get_Duration(out pVal: Single): HResult; stdcall;
  15387.     function put_Duration(newVal: Single): HResult; stdcall;
  15388.   end;
  15389.  
  15390.   {$HPPEMIT 'typedef System::DelphiInterface<IHTMLDXTransform> _di_IHTMLDXTransform;'}
  15391.   {$EXTERNALSYM IHTMLDXTransform}
  15392.   IHTMLDXTransform = interface(IUnknown)
  15393.     ['{30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5}']
  15394.     (*** IHTMLDXTransform methods ***)
  15395.     function SetHostUrl(bstrHostUrl: WideString): HResult; stdcall;
  15396.   end;
  15397.  
  15398. //------------------------------------------------------------------------------
  15399. // File: QEdit.h
  15400. // Desc: Dexter library (DES)
  15401. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  15402. //------------------------------------------------------------------------------
  15403.  
  15404. const
  15405.   LIBID_DexterLib: TGUID = '{78530B68-61F9-11D2-8CAD-00A024580902}';
  15406.   {$EXTERNALSYM LIBID_DexterLib}
  15407.  
  15408.   IID_IPropertySetter         : TGUID = '{AE9472BD-B0C3-11D2-8D24-00A0C9441E20}';
  15409.   {$EXTERNALSYM IID_IPropertySetter}
  15410.   IID_IDxtCompositor          : TGUID = '{BB44391E-6ABD-422F-9E2E-385C9DFF51FC}';
  15411.   {$EXTERNALSYM IID_IDxtCompositor}
  15412.   IID_IDxtAlphaSetter         : TGUID = '{4EE9EAD9-DA4D-43D0-9383-06B90C08B12B}';
  15413.   {$EXTERNALSYM IID_IDxtAlphaSetter}
  15414.   IID_IDxtJpeg                : TGUID = '{DE75D011-7A65-11D2-8CEA-00A0C9441E20}';
  15415.   {$EXTERNALSYM IID_IDxtJpeg}
  15416.   IID_IDxtKey                 : TGUID = '{3255DE56-38FB-4901-B980-94B438010D7B}';
  15417.   {$EXTERNALSYM IID_IDxtKey}
  15418.   IID_IMediaLocator           : TGUID = '{288581E0-66CE-11D2-918F-00C0DF10D434}';
  15419.   {$EXTERNALSYM IID_IMediaLocator}
  15420.   IID_IMediaDet               : TGUID = '{65BD0710-24D2-4FF7-9324-ED2E5D3ABAFA}';
  15421.   {$EXTERNALSYM IID_IMediaDet}
  15422.   IID_IGrfCache               : TGUID = '{AE9472BE-B0C3-11D2-8D24-00A0C9441E20}';
  15423.   {$EXTERNALSYM IID_IGrfCache}
  15424.   IID_IRenderEngine           : TGUID = '{6BEE3A81-66C9-11D2-918F-00C0DF10D434}';
  15425.   {$EXTERNALSYM IID_IRenderEngine}
  15426.   IID_IRenderEngine2          : TGUID = '{6BEE3A82-66C9-11d2-918F-00C0DF10D434}';
  15427.   {$EXTERNALSYM IID_IRenderEngine2}
  15428.   IID_IFindCompressorCB       : TGUID = '{F03FA8DE-879A-4D59-9B2C-26BB1CF83461}';
  15429.   {$EXTERNALSYM IID_IFindCompressorCB}
  15430.   IID_ISmartRenderEngine      : TGUID = '{F03FA8CE-879A-4D59-9B2C-26BB1CF83461}';
  15431.   {$EXTERNALSYM IID_ISmartRenderEngine}
  15432.   IID_IAMTimelineObj          : TGUID = '{78530B77-61F9-11D2-8CAD-00A024580902}';
  15433.   {$EXTERNALSYM IID_IAMTimelineObj}
  15434.   IID_IAMTimelineEffectable   : TGUID = '{EAE58537-622E-11D2-8CAD-00A024580902}';
  15435.   {$EXTERNALSYM IID_IAMTimelineEffectable}
  15436.   IID_IAMTimelineEffect       : TGUID = '{BCE0C264-622D-11D2-8CAD-00A024580902}';
  15437.   {$EXTERNALSYM IID_IAMTimelineEffect}
  15438.   IID_IAMTimelineTransable    : TGUID = '{378FA386-622E-11D2-8CAD-00A024580902}';
  15439.   {$EXTERNALSYM IID_IAMTimelineTransable}
  15440.   IID_IAMTimelineSplittable   : TGUID = '{A0F840A0-D590-11D2-8D55-00A0C9441E20}';
  15441.   {$EXTERNALSYM IID_IAMTimelineSplittable}
  15442.   IID_IAMTimelineTrans        : TGUID = '{BCE0C265-622D-11D2-8CAD-00A024580902}';
  15443.   {$EXTERNALSYM IID_IAMTimelineTrans}
  15444.   IID_IAMTimelineSrc          : TGUID = '{78530B79-61F9-11D2-8CAD-00A024580902}';
  15445.   {$EXTERNALSYM IID_IAMTimelineSrc}
  15446.   IID_IAMTimelineTrack        : TGUID = '{EAE58538-622E-11D2-8CAD-00A024580902}';
  15447.   {$EXTERNALSYM IID_IAMTimelineTrack}
  15448.   IID_IAMTimelineVirtualTrack : TGUID = '{A8ED5F80-C2C7-11D2-8D39-00A0C9441E20}';
  15449.   {$EXTERNALSYM IID_IAMTimelineVirtualTrack}
  15450.   IID_IAMTimelineComp         : TGUID = '{EAE58536-622E-11D2-8CAD-00A024580902}';
  15451.   {$EXTERNALSYM IID_IAMTimelineComp}
  15452.   IID_IAMTimelineGroup        : TGUID = '{9EED4F00-B8A6-11D2-8023-00C0DF10D434}';
  15453.   {$EXTERNALSYM IID_IAMTimelineGroup}
  15454.   IID_IAMTimeline             : TGUID = '{78530B74-61F9-11D2-8CAD-00A024580902}';
  15455.   {$EXTERNALSYM IID_IAMTimeline}
  15456.   IID_IXml2Dex                : TGUID = '{18C628ED-962A-11D2-8D08-00A0C9441E20}';
  15457.   {$EXTERNALSYM IID_IXml2Dex}
  15458.   IID_IAMErrorLog             : TGUID = '{E43E73A2-0EFA-11D3-9601-00A0C9441E20}';
  15459.   {$EXTERNALSYM IID_IAMErrorLog}
  15460.   IID_IAMSetErrorLog          : TGUID = '{963566DA-BE21-4EAF-88E9-35704F8F52A1}';
  15461.   {$EXTERNALSYM IID_IAMSetErrorLog}
  15462.   IID_ISampleGrabberCB        : TGUID = '{0579154A-2B53-4994-B0D0-E773148EFF85}';
  15463.   {$EXTERNALSYM IID_ISampleGrabberCB}
  15464.   IID_ISampleGrabber          : TGUID = '{6B652FFF-11FE-4FCE-92AD-0266B5D7C78F}';
  15465.   {$EXTERNALSYM IID_ISampleGrabber}
  15466.   IID_IResize                 : TGUID = '{4ada63a0-72d5-11d2-952a-0060081840bc}';
  15467.   {$EXTERNALSYM IID_IResize}
  15468.  
  15469.   CLSID_AMTimeline            : TGUID = '{78530B75-61F9-11D2-8CAD-00A024580902}';
  15470.   {$EXTERNALSYM CLSID_AMTimeline}
  15471.   CLSID_AMTimelineObj         : TGUID = '{78530B78-61F9-11D2-8CAD-00A024580902}';
  15472.   {$EXTERNALSYM CLSID_AMTimelineObj}
  15473.   CLSID_AMTimelineSrc         : TGUID = '{78530B7A-61F9-11D2-8CAD-00A024580902}';
  15474.   {$EXTERNALSYM CLSID_AMTimelineSrc}
  15475.   CLSID_AMTimelineTrack       : TGUID = '{8F6C3C50-897B-11D2-8CFB-00A0C9441E20}';
  15476.   {$EXTERNALSYM CLSID_AMTimelineTrack}
  15477.   CLSID_AMTimelineComp        : TGUID = '{74D2EC80-6233-11D2-8CAD-00A024580902}';
  15478.   {$EXTERNALSYM CLSID_AMTimelineComp}
  15479.   CLSID_AMTimelineGroup       : TGUID = '{F6D371E1-B8A6-11D2-8023-00C0DF10D434}';
  15480.   {$EXTERNALSYM CLSID_AMTimelineGroup}
  15481.   CLSID_AMTimelineTrans       : TGUID = '{74D2EC81-6233-11D2-8CAD-00A024580902}';
  15482.   {$EXTERNALSYM CLSID_AMTimelineTrans}
  15483.   CLSID_AMTimelineEffect      : TGUID = '{74D2EC82-6233-11D2-8CAD-00A024580902}';
  15484.   {$EXTERNALSYM CLSID_AMTimelineEffect}
  15485.   CLSID_RenderEngine          : TGUID = '{64D8A8E0-80A2-11D2-8CF3-00A0C9441E20}';
  15486.   {$EXTERNALSYM CLSID_RenderEngine}
  15487.   CLSID_SmartRenderEngine     : TGUID = '{498B0949-BBE9-4072-98BE-6CCAEB79DC6F}';
  15488.   {$EXTERNALSYM CLSID_SmartRenderEngine}
  15489.   CLSID_AudMixer              : TGUID = '{036A9790-C153-11D2-9EF7-006008039E37}';
  15490.   {$EXTERNALSYM CLSID_AudMixer}
  15491.   CLSID_Xml2Dex               : TGUID = '{18C628EE-962A-11D2-8D08-00A0C9441E20}';
  15492.   {$EXTERNALSYM CLSID_Xml2Dex}
  15493.   CLSID_MediaLocator          : TGUID = '{CC1101F2-79DC-11D2-8CE6-00A0C9441E20}';
  15494.   {$EXTERNALSYM CLSID_MediaLocator}
  15495.   CLSID_PropertySetter        : TGUID = '{ADF95821-DED7-11D2-ACBE-0080C75E246E}';
  15496.   {$EXTERNALSYM CLSID_PropertySetter}
  15497.   CLSID_MediaDet              : TGUID = '{65BD0711-24D2-4FF7-9324-ED2E5D3ABAFA}';
  15498.   {$EXTERNALSYM CLSID_MediaDet}
  15499.   CLSID_SampleGrabber         : TGUID = '{C1F400A0-3F08-11D3-9F0B-006008039E37}';
  15500.   {$EXTERNALSYM CLSID_SampleGrabber}
  15501.   CLSID_NullRenderer          : TGUID = '{C1F400A4-3F08-11D3-9F0B-006008039E37}';
  15502.   {$EXTERNALSYM CLSID_NullRenderer}
  15503.   CLSID_DxtCompositor         : TGUID = '{BB44391D-6ABD-422F-9E2E-385C9DFF51FC}';
  15504.   {$EXTERNALSYM CLSID_DxtCompositor}
  15505.   CLSID_DxtAlphaSetter        : TGUID = '{506D89AE-909A-44F7-9444-ABD575896E35}';
  15506.   {$EXTERNALSYM CLSID_DxtAlphaSetter}
  15507.   CLSID_DxtJpeg               : TGUID = '{DE75D012-7A65-11D2-8CEA-00A0C9441E20}';
  15508.   {$EXTERNALSYM CLSID_DxtJpeg}
  15509.   CLSID_ColorSource           : TGUID = '{0CFDD070-581A-11D2-9EE6-006008039E37}';
  15510.   {$EXTERNALSYM CLSID_ColorSource}
  15511.   CLSID_DxtKey                : TGUID = '{C5B19592-145E-11D3-9F04-006008039E37}';
  15512.   {$EXTERNALSYM CLSID_DxtKey}
  15513.  
  15514. type
  15515.   // used by DEXTER_VALUE's dwInterp var
  15516.   DEXTERF = (
  15517.     DEXTERF_JUMP,
  15518.     DEXTERF_INTERPOLATE
  15519.   );
  15520.   {$EXTERNALSYM DEXTERF}
  15521.   TDexterF = DEXTERF;
  15522.  
  15523.   // used to set values on the property setter
  15524.   PDexterParam = ^TDexterParam;
  15525.   DEXTER_PARAM = record
  15526.     Name    : WideString ;
  15527.     dispID  : longint;
  15528.     nValues : longint;
  15529.   end;
  15530.   {$EXTERNALSYM DEXTER_PARAM}
  15531.   TDexterParam = DEXTER_PARAM;
  15532.  
  15533.   // used to set values on the property setter
  15534.   PDexterValue = ^TDexterValue;
  15535.   DEXTER_VALUE = record
  15536.     v        : OLEVARIANT ;
  15537.     rt       : TReferenceTime ;
  15538.     dwInterp : DWORD ;
  15539.   end;
  15540.   {$EXTERNALSYM DEXTER_VALUE}
  15541.   TDexterValue = DEXTER_VALUE;
  15542.  
  15543. const
  15544.   // used by bMethod directly below
  15545.   DEXTER_AUDIO_JUMP            = 0;
  15546.   {$EXTERNALSYM DEXTER_AUDIO_JUMP}
  15547.   DEXTER_AUDIO_INTERPOLATE    = DEXTER_AUDIO_JUMP + 1;
  15548.   {$EXTERNALSYM DEXTER_AUDIO_INTERPOLATE}
  15549.  
  15550. type
  15551.   // used to set volumes on the mixer and mixer pins
  15552.   DEXTER_AUDIO_VOLUMEENVELOPE = record
  15553.     rtEnd   : TReferenceTime ;
  15554.     dLevel  : double ;
  15555.     bMethod : BOOL ;
  15556.   end;
  15557.   {$EXTERNALSYM DEXTER_AUDIO_VOLUMEENVELOPE}
  15558.   TDexterAudioVolumeEnvelope = DEXTER_AUDIO_VOLUMEENVELOPE;
  15559.  
  15560. const
  15561.   // used in IAMTimeline::Get(Set)InsertMode
  15562.   TIMELINE_INSERT_MODE_INSERT    = 1;
  15563.   {$EXTERNALSYM TIMELINE_INSERT_MODE_INSERT}
  15564.   TIMELINE_INSERT_MODE_OVERLAY    = 2;
  15565.   {$EXTERNALSYM TIMELINE_INSERT_MODE_OVERLAY}
  15566.  
  15567.   // define what main 'things' can be put into the timeline tree.
  15568.   // these values are used quite a bit with timeline access
  15569.   // (bitmap mask flags)
  15570. // TIMELINE_MAJOR_TYPE
  15571.   TIMELINE_MAJOR_TYPE_COMPOSITE    = 1;
  15572.   {$EXTERNALSYM TIMELINE_MAJOR_TYPE_COMPOSITE}
  15573.     TIMELINE_MAJOR_TYPE_TRACK    = 2;
  15574.   {$EXTERNALSYM TIMELINE_MAJOR_TYPE_TRACK}
  15575.     TIMELINE_MAJOR_TYPE_SOURCE    = 4;
  15576.   {$EXTERNALSYM TIMELINE_MAJOR_TYPE_SOURCE}
  15577.     TIMELINE_MAJOR_TYPE_TRANSITION    = 8;
  15578.   {$EXTERNALSYM TIMELINE_MAJOR_TYPE_TRANSITION}
  15579.     TIMELINE_MAJOR_TYPE_EFFECT    = 16;
  15580.   {$EXTERNALSYM TIMELINE_MAJOR_TYPE_EFFECT}
  15581.     TIMELINE_MAJOR_TYPE_GROUP    = 128;
  15582.   {$EXTERNALSYM TIMELINE_MAJOR_TYPE_GROUP}
  15583.  
  15584. // used in various IAMTimelineXXX "search" functions. Look in this
  15585. // file for "SearchDirection" to see where it's used. I didn't want
  15586. // to use an enum as an interface param type, so I used a long. Probably
  15587. // silly of me.
  15588. // DEXTERF_TRACK_SEARCH_FLAGS
  15589.   DEXTERF_BOUNDING    = -1;
  15590.   {$EXTERNALSYM DEXTERF_BOUNDING}
  15591.     DEXTERF_EXACTLY_AT    = 0;
  15592.   {$EXTERNALSYM DEXTERF_EXACTLY_AT}
  15593.     DEXTERF_FORWARDS    = 1;
  15594.   {$EXTERNALSYM DEXTERF_FORWARDS}
  15595.  
  15596. type
  15597.   // right now, the media type in the group contains enough information about
  15598.   // how we want to recompress. This might not be enough information in the
  15599.   // future, so we define a structure we can get and set to the group.
  15600.   _SCompFmt0 = record
  15601.     nFormatId : longint ;
  15602.     MediaType : TAMMediaType ;
  15603.   end;
  15604.   {$EXTERNALSYM _SCompFmt0}
  15605.   SCompFmt0 = _SCompFmt0;
  15606.   {$EXTERNALSYM SCompFmt0}
  15607.   TSCompFmt0 = _SCompFmt0;
  15608.  
  15609. const
  15610.   // used in IAMTimelineSrc::Get(Set)StretchMode
  15611.   RESIZEF_STRETCH                            = 0;
  15612.   {$EXTERNALSYM RESIZEF_STRETCH}
  15613.     RESIZEF_CROP                              = RESIZEF_STRETCH + 1;
  15614.   {$EXTERNALSYM RESIZEF_CROP}
  15615.     RESIZEF_PRESERVEASPECTRATIO                = RESIZEF_CROP + 1;
  15616.   {$EXTERNALSYM RESIZEF_PRESERVEASPECTRATIO}
  15617.     RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX    = RESIZEF_PRESERVEASPECTRATIO + 1;
  15618.   {$EXTERNALSYM RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX}
  15619.  
  15620.   // used in IRenderEngine::SetDynamicReconnectLevel
  15621.   // (bitmap mask flags)
  15622.   CONNECTF_DYNAMIC_NONE     = 0;
  15623.   {$EXTERNALSYM CONNECTF_DYNAMIC_NONE}
  15624.     CONNECTF_DYNAMIC_SOURCES = $1;
  15625.   {$EXTERNALSYM CONNECTF_DYNAMIC_SOURCES}
  15626.     CONNECTF_DYNAMIC_EFFECTS = $2;
  15627.   {$EXTERNALSYM CONNECTF_DYNAMIC_EFFECTS}
  15628.  
  15629.   // used in
  15630.   // IMediaLocator::FindMediaFile
  15631.   // IRenderEngine::SetSourceNameValidation
  15632.   // IAMTimeline::ValidateSourceNames
  15633.   // (bitmap mask flags)
  15634.   SFN_VALIDATEF_CHECK       = $1;
  15635.   {$EXTERNALSYM SFN_VALIDATEF_CHECK}
  15636.     SFN_VALIDATEF_POPUP          = $2;
  15637.   {$EXTERNALSYM SFN_VALIDATEF_POPUP}
  15638.     SFN_VALIDATEF_TELLME        = $4;
  15639.   {$EXTERNALSYM SFN_VALIDATEF_TELLME}
  15640.     SFN_VALIDATEF_REPLACE        = $8;
  15641.   {$EXTERNALSYM SFN_VALIDATEF_REPLACE}
  15642.     SFN_VALIDATEF_USELOCAL    = $10;
  15643.   {$EXTERNALSYM SFN_VALIDATEF_USELOCAL}
  15644.     SFN_VALIDATEF_NOFIND        = $20;
  15645.   {$EXTERNALSYM SFN_VALIDATEF_NOFIND}
  15646.     SFN_VALIDATEF_IGNOREMUTED = $40;
  15647.   {$EXTERNALSYM SFN_VALIDATEF_IGNOREMUTED}
  15648.     SFN_VALIDATEF_END    = SFN_VALIDATEF_IGNOREMUTED + 1;
  15649.   {$EXTERNALSYM SFN_VALIDATEF_END}
  15650.  
  15651.   // key transitions types
  15652.   DXTKEY_RGB     = 0;
  15653.   {$EXTERNALSYM DXTKEY_RGB}
  15654.     DXTKEY_NONRED     = DXTKEY_RGB + 1;
  15655.   {$EXTERNALSYM DXTKEY_NONRED}
  15656.     DXTKEY_LUMINANCE = DXTKEY_NONRED + 1;
  15657.   {$EXTERNALSYM DXTKEY_LUMINANCE}
  15658.     DXTKEY_ALPHA     = DXTKEY_LUMINANCE + 1;
  15659.   {$EXTERNALSYM DXTKEY_ALPHA}
  15660.     DXTKEY_HUE     = DXTKEY_ALPHA + 1;
  15661.   {$EXTERNALSYM DXTKEY_HUE}
  15662.  
  15663. type
  15664.   ////////////////////////////////////////////////////////////////
  15665.   ////////////////////////////////////////////////////////////////
  15666.   // New Property setting Interfaces
  15667.   ////////////////////////////////////////////////////////////////
  15668.   ////////////////////////////////////////////////////////////////
  15669.  
  15670.   {$HPPEMIT 'typedef System::DelphiInterface<IPropertySetter> _di_IPropertySetter;'}
  15671.   {$EXTERNALSYM IPropertySetter}
  15672.   IPropertySetter = interface(IUnknown)
  15673.     ['{AE9472BD-B0C3-11D2-8D24-00A0C9441E20}']
  15674.     (*** IPropertySetter methods ***)
  15675.     // for loading and saving through XML
  15676.     function LoadXML(pxml: IUnknown): HResult; stdcall;
  15677.     // !!! doesn't work HResult LoadXML([in] IXMLElement * pxml);
  15678.     function PrintXML(out pszXML: pchar; cbXML: integer; out pcbPrinted: pinteger; indent: integer): HResult; stdcall;
  15679.     // for cloning a portion of the props when splitting the object
  15680.     function CloneProps(out ppSetter: IPropertySetter; rtStart, rtStop: TReferenceTime): HResult; stdcall;
  15681.     // for loading and saving programmatically
  15682.     // caller must call this in pre-sorted order, this time must be > all
  15683.     // previous times
  15684.     function AddProp(Param: TDexterParam; var paValue: TDexterParam): HResult; stdcall;
  15685.     function GetProps(out pcParams: longint; out paParam: PDexterParam; out paValue: PDexterValue): HResult; stdcall;
  15686.     // after calling GetProps, you must call FreeProps to free resources
  15687.     function FreeProps(cParams: longint; var paParam: TDexterParam; var paValue: TDexterValue): HResult; stdcall;
  15688.     // to empty to property setter, so you can start over again
  15689.     function ClearProps: HResult; stdcall;
  15690.     // for persisting
  15691.     function SaveToBlob(out pcSize: longint; out ppb: pbyte): HResult; stdcall;
  15692.     //
  15693.     function LoadFromBlob(cSize: longint; var pb: Byte): HResult; stdcall;
  15694.     // to program the object that supports IDispatch with the props
  15695.     // call with rtNow == -1 to set Static Props when your object instantiates
  15696.     // errors will be logged, if a log is provided
  15697.     function SetProps(pTarget: IUnknown; rtNow: TReferenceTime): HResult; stdcall;
  15698.     // unicode version
  15699.     function PrintXMLW({out}pszXML: PWideChar; cchXML: integer; out pcchPrinted: integer; indent: integer): HResult; stdcall;
  15700.   end;
  15701.  
  15702.   {$HPPEMIT 'typedef System::DelphiInterface<IDxtCompositor> _di_IDxtCompositor;'}
  15703.   {$EXTERNALSYM IDxtCompositor}
  15704.   IDxtCompositor = interface(IDXEffect)
  15705.     ['{BB44391E-6ABD-422F-9E2E-385C9DFF51FC}']
  15706.     (*** IDxtCompositor methods ***)
  15707.     function get_OffsetX(out pVal: longint): HResult; stdcall;
  15708.     function put_OffsetX(newVal: longint): HResult; stdcall;
  15709.     function get_OffsetY(out pVal: longint): HResult; stdcall;
  15710.     function put_OffsetY(newVal: longint): HResult; stdcall;
  15711.     function get_Width(out pVal: longint): HResult; stdcall;
  15712.     function put_Width(newVal: longint): HResult; stdcall;
  15713.     function get_Height(out pVal: longint): HResult; stdcall;
  15714.     function put_Height(newVal: longint): HResult; stdcall;
  15715.     function get_SrcOffsetX(out pVal: longint): HResult; stdcall;
  15716.     function put_SrcOffsetX(newVal: longint): HResult; stdcall;
  15717.     function get_SrcOffsetY(out pVal: longint): HResult; stdcall;
  15718.     function put_SrcOffsetY(newVal: longint): HResult; stdcall;
  15719.     function get_SrcWidth(out pVal: longint): HResult; stdcall;
  15720.     function put_SrcWidth(newVal: longint): HResult; stdcall;
  15721.     function get_SrcHeight(out pVal: longint): HResult; stdcall;
  15722.     function put_SrcHeight(newVal: longint): HResult; stdcall;
  15723.   end;
  15724.  
  15725.   {$HPPEMIT 'typedef System::DelphiInterface<IDxtAlphaSetter> _di_IDxtAlphaSetter;'}
  15726.   {$EXTERNALSYM IDxtAlphaSetter}
  15727.   IDxtAlphaSetter = interface(IDXEffect)
  15728.     ['{4EE9EAD9-DA4D-43D0-9383-06B90C08B12B}']
  15729.     (*** IDxtAlphaSetter methods ***)
  15730.     function get_Alpha(out pVal: longint): HResult; stdcall;
  15731.     function put_Alpha(newVal: longint): HResult; stdcall;
  15732.     function get_AlphaRamp(out pVal: Double): HResult; stdcall;
  15733.     function put_AlphaRamp(newVal: Double): HResult; stdcall;
  15734.   end;
  15735.  
  15736.   {$HPPEMIT 'typedef System::DelphiInterface<IDxtJpeg> _di_IDxtJpeg;'}
  15737.   {$EXTERNALSYM IDxtJpeg}
  15738.   IDxtJpeg = interface(IDXEffect)
  15739.     ['{DE75D011-7A65-11D2-8CEA-00A0C9441E20}']
  15740.     (*** IDxtJpeg methods ***)
  15741.     function get_MaskNum(out pVal: longint): HResult; stdcall;
  15742.     function put_MaskNum(newVal: longint): HResult; stdcall;
  15743.     function get_MaskName(out pVal: WideString): HResult; stdcall;
  15744.     function put_MaskName(newVal: WideString): HResult; stdcall;
  15745.     function get_ScaleX(out pVal: Double): HResult; stdcall;
  15746.     function put_ScaleX(newVal: Double): HResult; stdcall;
  15747.     function get_ScaleY(out pVal: Double): HResult; stdcall;
  15748.     function put_ScaleY(newVal: Double): HResult; stdcall;
  15749.     function get_OffsetX(out pVal: longint): HResult; stdcall;
  15750.     function put_OffsetX(newVal: longint): HResult; stdcall;
  15751.     function get_OffsetY(out pVal: longint): HResult; stdcall;
  15752.     function put_OffsetY(newVal: longint): HResult; stdcall;
  15753.     function get_ReplicateX(out pVal: longint): HResult; stdcall;
  15754.     function put_ReplicateX(newVal: longint): HResult; stdcall;
  15755.     function get_ReplicateY(out pVal: longint): HResult; stdcall;
  15756.     function put_ReplicateY(newVal: longint): HResult; stdcall;
  15757.     function get_BorderColor(out pVal: longint): HResult; stdcall;
  15758.     function put_BorderColor(newVal: longint): HResult; stdcall;
  15759.     function get_BorderWidth(out pVal: longint): HResult; stdcall;
  15760.     function put_BorderWidth(newVal: longint): HResult; stdcall;
  15761.     function get_BorderSoftness(out pVal: longint): HResult; stdcall;
  15762.     function put_BorderSoftness(newVal: longint): HResult; stdcall;
  15763.     function ApplyChanges: HResult; stdcall;
  15764.     function LoadDefSettings: HResult; stdcall;
  15765.   end;
  15766.  
  15767.   {$HPPEMIT 'typedef System::DelphiInterface<IDxtKey> _di_IDxtKey;'}
  15768.   {$EXTERNALSYM IDxtKey}
  15769.   IDxtKey = interface(IDXEffect)
  15770.     ['{3255DE56-38FB-4901-B980-94B438010D7B}']
  15771.     (*** IDxtKey methods ***)
  15772.     function get_KeyType(out pVal: integer): HResult; stdcall;
  15773.     function put_KeyType(newVal: integer): HResult; stdcall;
  15774.     function get_Hue(out pVal: integer): HResult; stdcall;
  15775.     function put_Hue(newVal: integer): HResult; stdcall;
  15776.     function get_Luminance(out pVal: integer): HResult; stdcall;
  15777.     function put_Luminance(newVal: integer): HResult; stdcall;
  15778.     function get_RGB(out pVal: DWORD): HResult; stdcall;
  15779.     function put_RGB(newVal: DWORD): HResult; stdcall;
  15780.     function get_Similarity(out pVal: integer): HResult; stdcall;
  15781.     function put_Similarity(newVal: integer): HResult; stdcall;
  15782.     function get_Invert(out pVal: BOOL): HResult; stdcall;
  15783.     function put_Invert(newVal: BOOL): HResult; stdcall;
  15784.   end;
  15785.  
  15786.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15787.     // This little COM interface will look 'around' for the closest
  15788.     // path match for a given file. If the file already exists, then
  15789.     // this interface should hardly do anything. If it's not found,
  15790.     // it will go look for it and if successful, return S_FALSE. If it
  15791.     // cannot find the file, it will call the hook, if set and return
  15792.     // it's return code. if the hook is not set, it is in a type of
  15793.     // error condition. The Dexter-provided MediaLocator will bring up
  15794.     // a dialog box asking you to browse for your file. Other COM
  15795.     // objects may do something else.
  15796.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15797.  
  15798.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaLocator> _di_IMediaLocator;'}
  15799.   {$EXTERNALSYM IMediaLocator}
  15800.   IMediaLocator = interface(IUnknown)
  15801.     ['{288581E0-66CE-11D2-918F-00C0DF10D434}']
  15802.     (*** IMediaLocator methods ***)
  15803.     function FindMediaFile(Input: TBSTR; FilterString: TBSTR;
  15804.                out pOutput: TBSTR; Flags: longint): HResult; stdcall;
  15805.     function AddFoundLocation(DirectoryName: TBSTR): HResult; stdcall;
  15806.   end;
  15807.  
  15808.   ISampleGrabber = interface;
  15809.  
  15810.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15811.     // This object provides caching of duration and stream type
  15812.     // information for files that would produce a directshow source
  15813.     // filter. It takes too long to figure this out in DShow right
  15814.     // now, so this is one way around it. The way it works is that
  15815.     // you first fill out the Filename property, then call and
  15816.     // ask how many streams it has, or, set the CurrentStream prop
  15817.     // and then ask for the per-stream properties, StreamType or
  15818.     // StreamLength. They both reference the CurrentStream prop that
  15819.     // you set. I also allowed you (for convenience) to just give
  15820.     // it a IUnknown Filter that represents an IBaseFilter source
  15821.     // filter that is NOT currently in a graph. It will use that
  15822.     // instead. When using this, though, you will not get cached
  15823.     // values. The cached values are stored in the system's ini file
  15824.     // called DCBC2A70-70D8-4459-BFFA-E0D61DEA3FDF.INI. Nice, huh? :-)
  15825.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15826.  
  15827.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaDet> _di_IMediaDet;'}
  15828.   {$EXTERNALSYM IMediaDet}
  15829.   IMediaDet = interface(IUnknown)
  15830.     ['{65BD0710-24D2-4FF7-9324-ED2E5D3ABAFA}']
  15831.     (*** IMediaDet methods ***)
  15832.     function get_Filter(out pVal: IUnknown): HResult; stdcall;
  15833.     function put_Filter(newVal: IUnknown): HResult; stdcall;
  15834.     function get_OutputStreams(out pVal: longint): HResult; stdcall;
  15835.     function get_CurrentStream(out pVal: longint): HResult; stdcall;
  15836.     function put_CurrentStream(newVal: longint): HResult; stdcall;
  15837.     function get_StreamType(out pVal: TGUID): HResult; stdcall;
  15838.     function get_StreamTypeB(out pVal: WideString): HResult; stdcall;
  15839.     function get_StreamLength(out pVal: Double): HResult; stdcall;
  15840.     function get_Filename(out pVal: WideString): HResult; stdcall;
  15841.     function put_Filename(pVal: WideString): HResult; stdcall;
  15842.     function GetBitmapBits(streamTime: Double; pBufferSize: Plongint; pBuffer: PByte;
  15843.              Width: longint; Height: longint): HResult; stdcall;
  15844.     function WriteBitmapBits(streamTime: Double; Width: longint; Height: longint;
  15845.              Filename: WideString): HResult; stdcall;
  15846.     function get_StreamMediaType(out pVal: TAMMediaType): HResult; stdcall;
  15847.     function GetSampleGrabber(out ppVal: ISampleGrabber): HResult; stdcall;
  15848.     function get_FrameRate(out pVal: Double): HResult; stdcall;
  15849.     function EnterBitmapGrabMode(SeekTime: Double): HResult; stdcall;
  15850.   end;
  15851.  
  15852.   // useless interface, don't use it!
  15853.  
  15854.   {$HPPEMIT 'typedef System::DelphiInterface<IGrfCache> _di_IGrfCache;'}
  15855.   {$EXTERNALSYM IGrfCache}
  15856.   IGrfCache = interface(IDispatch)
  15857.     ['{AE9472BE-B0C3-11D2-8D24-00A0C9441E20}']
  15858.     (*** IGrfCache methods ***)
  15859.     function AddFilter(ChainedCache: IGrfCache; Id: Int64; const pFilter: IBaseFilter;
  15860.              pName: PWideChar): HResult; stdcall;
  15861.     function ConnectPins(ChainedCache: IGrfCache; PinID1: Int64; const pPin1: IPin;
  15862.              PinID2: Int64; const pPin2: IPin): HResult; stdcall;
  15863.     function SetGraph(const pGraph: IGraphBuilder): HResult; stdcall;
  15864.     function DoConnectionsNow: HResult; stdcall;
  15865.   end;
  15866.  
  15867.   IAMTimeline = interface;
  15868.  
  15869.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15870.     // The RenderEngin builds a graph from the timeline and gives
  15871.     // you some simple positional commands.
  15872.     // explained methods:
  15873.     // SetTimelineObject - tell the render engine who to parse
  15874.     // ConnectEverything - build up a graph based on the timeline
  15875.     // ScrapIt - throw away graph and everything
  15876.     // GetFilterGraph - get the graph that's built up, if any
  15877.     // SetFilterGraph - allows you to preset the graph that's built up.
  15878.     //      cannot call this if there already is a graph.
  15879.  
  15880.     // !!! the following methods are unused/not implemented
  15881.  
  15882.     // SetInterestRange - discard COM objects and memory outside of this
  15883.     //      range, if possible. Used for scrubbing on a long timeline and
  15884.     //      freeing up resources
  15885.     // SetRenderRange - pretend like a portion of the timeline IS the timeline
  15886.     //      and don't connect anything in the graph outside of that range.
  15887.     // Commit - allocate what's necessary and get prepared to run
  15888.     // Decommit - free anything possible
  15889.     // GetCaps - find out some info about the render engine
  15890.     // DoSmartRecompression - connect compressed sources if
  15891.     //      possible
  15892.     // in the graph, this will RenderPin( ) on every switcher
  15893.     //      rendering pin.
  15894.     // SetSourceNameValidation - allows you to set some flags which
  15895.     // determine how source files are found, if they need to be found.
  15896.     //      FilterString is a list of extensions to find for the media
  15897.     //      files (see OPENFILENAME filters)
  15898.     //      pOverride is a media locator you would like to use instead
  15899.     //      of the built in one
  15900.     //      The flags are defined in the struct immediately below.
  15901.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15902.  
  15903.   {$HPPEMIT 'typedef System::DelphiInterface<IRenderEngine> _di_IRenderEngine;'}
  15904.   {$EXTERNALSYM IRenderEngine}
  15905.   IRenderEngine = interface(IUnknown)
  15906.     ['{6BEE3A81-66C9-11D2-918F-00C0DF10D434}']
  15907.     (*** IRenderEngine methods ***)
  15908.     function SetTimelineObject(pTimeline: IAMTimeline): HResult; stdcall;
  15909.     function GetTimelineObject(out ppTimeline: IAMTimeline): HResult; stdcall;
  15910.     function GetFilterGraph(out ppFG: IGraphBuilder): HResult; stdcall;
  15911.     function SetFilterGraph(pFG: IGraphBuilder): HResult; stdcall;
  15912.     function SetInterestRange(Start, Stop: TReferenceTime): HResult; stdcall;
  15913.     function SetInterestRange2(Start, Stop: Double): HResult; stdcall;
  15914.     function SetRenderRange(Start, Stop: TReferenceTime): HResult; stdcall;
  15915.     function SetRenderRange2(Start, Stop: Double): HResult; stdcall;
  15916.     function GetGroupOutputPin(Group: longint; out ppRenderPin: IPin): HResult; stdcall;
  15917.     function ScrapIt: HResult; stdcall;
  15918.     function RenderOutputPins: HResult; stdcall;
  15919.     function GetVendorString(out pVendorID: WideString): HResult; stdcall;
  15920.     function ConnectFrontEnd: HResult; stdcall;
  15921.     function SetSourceConnectCallback(pCallback: IGrfCache): HResult; stdcall;
  15922.     function SetDynamicReconnectLevel(Level: longint): HResult; stdcall;
  15923.     function DoSmartRecompression: HResult; stdcall;
  15924.     function UseInSmartRecompressionGraph: HResult; stdcall;
  15925.     function SetSourceNameValidation(const FilterString: WideString;
  15926.              pOverride: IMediaLocator; Flags: longint): HResult; stdcall;
  15927.     function Commit: HResult; stdcall;
  15928.     function Decommit: HResult; stdcall;
  15929.     function GetCaps(Index: longint; var pReturn: longint): HResult; stdcall;
  15930.   end;
  15931.  
  15932.   {$HPPEMIT 'typedef System::DelphiInterface<IRenderEngine2> _di_IRenderEngine2;'}
  15933.   {$EXTERNALSYM IRenderEngine2}
  15934.   IRenderEngine2 = interface(IUnknown)
  15935.     ['{6BEE3A82-66C9-11d2-918F-00C0DF10D434}']
  15936.     (*** IRenderEngine2 methods ***)
  15937.     function SetResizerGUID(const ResizerGuid: TGUID): HResult;
  15938.   end;
  15939.  
  15940.   // used for the smart render engine when it needs to find a compressor
  15941.   {$HPPEMIT 'typedef System::DelphiInterface<IFindCompressorCB> _di_IFindCompressorCB;'}
  15942.   {$EXTERNALSYM IFindCompressorCB}
  15943.   IFindCompressorCB = interface(IUnknown)
  15944.     ['{F03FA8DE-879A-4D59-9B2C-26BB1CF83461}']
  15945.     (*** IFindCompressorCB methods ***)
  15946.     function GetCompressor(var pType: TAMMediaType; var pCompType: TAMMediaType;
  15947.                             out ppFilter: IBaseFilter): HResult; stdcall;
  15948.   end;
  15949.  
  15950.   {$HPPEMIT 'typedef System::DelphiInterface<ISmartRenderEngine> _di_ISmartRenderEngine;'}
  15951.   {$EXTERNALSYM ISmartRenderEngine}
  15952.   ISmartRenderEngine = interface(IUnknown)
  15953.     ['{F03FA8CE-879A-4D59-9B2C-26BB1CF83461}']
  15954.     (*** ISmartRenderEngine methods ***)
  15955.     function SetGroupCompressor(Group: longint; pCompressor: IBaseFilter): HResult; stdcall;
  15956.     function GetGroupCompressor(Group: longint; var pCompressor: IBaseFilter): HResult; stdcall;
  15957.     function SetFindCompressorCB(pCallback: IFindCompressorCB): HResult; stdcall;
  15958.   end;
  15959.  
  15960.   IAMTimelineGroup = interface;
  15961.   
  15962. ////////////////////////////////////////////////////////////////
  15963. ////////////////////////////////////////////////////////////////
  15964. // TIMELINE TIMELINE TIMELINE TIMELINE TIMELINE TIMELINE
  15965. ////////////////////////////////////////////////////////////////
  15966. ////////////////////////////////////////////////////////////////
  15967.  
  15968.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15969.     // Every object on the timeline supports at least this interface.
  15970.     // explained methods:
  15971.     // Get/SetStartStop - the timeline times at which this object is
  15972.     //      active. Groups and Tracks have start times of zero.
  15973.     // FixTimes - used by the render engine. Rounds the input times
  15974.     //      to the nearest FPS of the parent Group, for use in setting
  15975.     //      up the big switch.
  15976.     // GetSubObject - get the sub-object which is associated with this
  15977.     //      timeline object. Each timeline object can carry around a
  15978.     //      pointer to 'something else'. For our Render Engine, this is
  15979.     //      a pointer to a filter that gets put into a graph. 
  15980.     // NOTE: Getting the subobject will FORCE it to load if it's possible
  15981.     //      to force this. If you don't want it to do this, don't call
  15982.     //      this function.
  15983.     // SetSubObject - see GetSubObject
  15984.     // SetSubObjectGUID - instead of giving the node a pointer, you can
  15985.     //      instead give it a GUID and see if this works instead. The
  15986.     //      sub-object will attempt to be instantiated when 'necessary'
  15987.     //      which is really when it's asked for with GetSubObject./
  15988.     //      !!! a better way to do this perhaps?
  15989.     // GetSubObjectLoaded - ask if the sub-object pointer is set
  15990.     // Get/SetTimelineType - return the major type which is stored here,
  15991.     //      used by the API user and the render engine.
  15992.     // Get/SetTimelineSubType - see above
  15993.     // Get/SetUserID - get and set a number, any number
  15994.     // GetGenID - every created object has a unique number to it. Used
  15995.     //      by the render engine.
  15996.     // Get/SetUserName - a storable name, for users of the API
  15997.     // Get/SetPropertySetter - the object that will set properties for this
  15998.     //      object (it will support IPropertySetter and it is created by 
  15999.     //      CPropertySetter)
  16000.     // Get/SetUserData - gets the persistant data used by the user of
  16001.     //      the API.
  16002.     // Get/SetMuted - set whether this object should be active or not.
  16003.     //      Setting a parent of other objects off also turns off the
  16004.     //      sub-objects.
  16005.     // Get/SetLocked - set whether you can edit this object or not.
  16006.     //      Note: the timeline doesn't enforce this, it just stores
  16007.     //      a value for convenience.
  16008.     // Get/SetDirtyRange -
  16009.     // RemoveAll - remove this object, and if in the tree already, all it's
  16010.     //        sub objects, including children
  16011.     // Remove - remove this object, and if in the tree already, all it's
  16012.     //        sub objects, but not kids
  16013.     // GetTimelineNoRef - called internally by the timeline.
  16014.     // GetGroupIBelongTo - called internally by the timeline.
  16015.     // GetEmbedDepth - find out how many tracks we are a part of
  16016.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16017.  
  16018.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineObj> _di_IAMTimelineObj;'}
  16019.   {$EXTERNALSYM IAMTimelineObj}
  16020.   IAMTimelineObj = interface(IUnknown)
  16021.     ['{78530B77-61F9-11D2-8CAD-00A024580902}']
  16022.     (*** IAMTimelineObj methods ***)
  16023.     function GetStartStop(var pStart, pStop: TReferenceTime): HResult; stdcall;
  16024.     function GetStartStop2(var pStart, pStop: TREFTIME): HResult; stdcall;
  16025.     function FixTimes(var pStart, pStop: TReferenceTime): HResult; stdcall;
  16026.     function FixTimes2(var pStart, pStop: TREFTIME): HResult; stdcall;
  16027.     function SetStartStop(Start, Stop: TReferenceTime): HResult; stdcall;
  16028.     function SetStartStop2(Start, Stop: TREFTIME): HResult; stdcall;
  16029.     function GetPropertySetter(out pVal: IPropertySetter): HResult; stdcall;
  16030.     function SetPropertySetter(newVal: IPropertySetter): HResult; stdcall;
  16031.     function GetSubObject(out pVal: IUnknown): HResult; stdcall;
  16032.     function SetSubObject(newVal: IUnknown): HResult; stdcall;
  16033.     function SetSubObjectGUID(newVal: TGUID): HResult; stdcall;
  16034.     function SetSubObjectGUIDB(const newVal: WideString): HResult; stdcall;
  16035.     function GetSubObjectGUID(var pVal: TGUID): HResult; stdcall;
  16036.     function GetSubObjectGUIDB(out pVal: WideString): HResult; stdcall;
  16037.     function GetSubObjectLoaded(var pVal: BOOL): HResult; stdcall;
  16038.     function GetTimelineType(var pVal: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  16039.     function SetTimelineType(newVal: integer): HResult; stdcall;   // TIMELINE_MAJOR_TYPE
  16040.     function GetUserID(var pVal: longint): HResult; stdcall;
  16041.     function SetUserID(newVal: longint): HResult; stdcall;
  16042.     function GetGenID(var pVal: longint): HResult; stdcall;
  16043.     function GetUserName(out pVal: WideString): HResult; stdcall;
  16044.     function SetUserName(const newVal: WideString): HResult; stdcall;
  16045.     function GetUserData(var pData: PByte; var pSize: Integer): HResult; stdcall;
  16046.     function SetUserData(var pData: Byte; Size: Integer): HResult; stdcall;
  16047.     function GetMuted(var pVal: BOOL): HResult; stdcall;
  16048.     function SetMuted(newVal: BOOL): HResult; stdcall;
  16049.     function GetLocked(var pVal: BOOL): HResult; stdcall;
  16050.     function SetLocked(newVal: BOOL): HResult; stdcall;
  16051.     function GetDirtyRange(var pStart, pStop: TReferenceTime): HResult; stdcall;
  16052.     function GetDirtyRange2(var pStart, pStop: TREFTIME): HResult; stdcall;
  16053.     function SetDirtyRange(Start, Stop: TReferenceTime): HResult; stdcall;
  16054.     function SetDirtyRange2(Start, Stop: TREFTIME): HResult; stdcall;
  16055.     function ClearDirty: HResult; stdcall;
  16056.     function Remove: HResult; stdcall;
  16057.     function RemoveAll: HResult; stdcall;
  16058.     function GetTimelineNoRef(var ppResult: IAMTimeline): HResult; stdcall;
  16059.     function GetGroupIBelongTo(out ppGroup: IAMTimelineGroup): HResult; stdcall;
  16060.     function GetEmbedDepth(var pVal: longint): HResult; stdcall;
  16061.   end;
  16062.  
  16063.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16064.     // Any object on the timeline that can have an effect put on it 
  16065.     // implements this interface. This includes sources, tracks, and
  16066.     // compositions.
  16067.     // explained methods:
  16068.     // EffectInsBefore - insert an effect at the given priority onto
  16069.     //      this object. The effect's times will be clipped within
  16070.     //      this object's bounds. Use -1 to specify 'at the end' for priority.
  16071.     //      You cannot have two effects at the same priority.
  16072.     // EffectSwapPriorities - swaparoo two effects. Makes undo easier to
  16073.     //      implement.
  16074.     // EffectGetCount - get how many effects are applied to this object.
  16075.     // GetEffect - get the nth effect applied to this object
  16076.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16077.  
  16078.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineEffectable> _di_IAMTimelineEffectable;'}
  16079.   {$EXTERNALSYM IAMTimelineEffectable}
  16080.   IAMTimelineEffectable = interface(IUnknown)
  16081.     ['{EAE58537-622E-11D2-8CAD-00A024580902}']
  16082.     (*** IAMTimelineEffectable methods ***)
  16083.     function EffectInsBefore(pFX: IAMTimelineObj; priority: longint): HResult; stdcall;
  16084.     function EffectSwapPriorities(PriorityA, PriorityB: longint): HResult; stdcall;
  16085.     function EffectGetCount(var pCount: longint): HResult; stdcall;
  16086.     function GetEffect(out ppFx: IAMTimelineObj; Which: longint): HResult; stdcall;
  16087.   end;
  16088.  
  16089.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16090.     // Any effect on the timeline will support at least this interface.
  16091.     // NOTE: The Start/Stop times on this object are RELATIVE to their
  16092.     // parent's, as are all start/stop times.
  16093.     // explained methods:
  16094.     // EffectGetPriority - finds out this effect's priority related to the others.
  16095.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16096.  
  16097.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineEffect> _di_IAMTimelineEffect;'}
  16098.   {$EXTERNALSYM IAMTimelineEffect}
  16099.   IAMTimelineEffect = interface(IUnknown)
  16100.     ['{BCE0C264-622D-11D2-8CAD-00A024580902}']
  16101.     (*** IAMTimelineEffect methods ***)
  16102.     function EffectGetPriority(var pVal: longint): HResult; stdcall;
  16103.   end;
  16104.  
  16105.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16106.     // Any object on the timeline that can have a transition put on it
  16107.     // implements this interface
  16108.     // explained methods:
  16109.     // TransAdd - add a transition on this object. Multiple trans's on 
  16110.     //      the same object cannot overlap in time. Transitions' times
  16111.     //      must lie within the bounds of their parent.
  16112.     // TransGetCount - get how many transitions are applied to this
  16113.     //      object.
  16114.     // GetNextTrans - given a time, get the next transition that happens
  16115.     //      on this object after that time. On exit, the input time is
  16116.     //      set to the start time of the transition.
  16117.     // GetTransAtTime - find a transition forwards or backwards from
  16118.     //        a given spot. See DEXTERF_TRACK_SEARCH_FLAGS enum.
  16119.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16120.   
  16121.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineTransable> _di_IAMTimelineTransable;'}
  16122.   {$EXTERNALSYM IAMTimelineTransable}
  16123.   IAMTimelineTransable = interface(IUnknown)
  16124.     ['{378FA386-622E-11D2-8CAD-00A024580902}']
  16125.     (*** IAMTimelineTransable methods ***)
  16126.     function TransAdd(pTrans: IAMTimelineObj): HResult; stdcall;
  16127.     function TransGetCount(var pCount: longint): HResult; stdcall;
  16128.     function GetNextTrans(out ppTrans: IAMTimelineObj; var pInOut: TReferenceTime): HResult; stdcall;
  16129.     function GetNextTrans2(out ppTrans: IAMTimelineObj; var pInOut: TREFTIME): HResult; stdcall;
  16130.     function GetTransAtTime(out ppObj: IAMTimelineObj; Time: TReferenceTime; SearchDirection: longint): HResult; stdcall;
  16131.     function GetTransAtTime2(out ppObj: IAMTimelineObj; Time: TREFTIME; SearchDirection: longint): HResult; stdcall;
  16132.   end;
  16133.  
  16134.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16135.     // Any object on the timeline that can be split into two will
  16136.     // implement this interface. Namely, source, effects, and transitions
  16137.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16138.  
  16139.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineSplittable> _di_IAMTimelineSplittable;'}
  16140.   {$EXTERNALSYM IAMTimelineSplittable}
  16141.   IAMTimelineSplittable = interface(IUnknown)
  16142.     ['{A0F840A0-D590-11D2-8D55-00A0C9441E20}']
  16143.     (*** IAMTimelineSplittable methods ***)
  16144.     function SplitAt(Time: TReferenceTime): HResult; stdcall;
  16145.     function SplitAt2(Time: TREFTIME): HResult; stdcall;
  16146.   end;
  16147.  
  16148.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16149.     // Any trans on the timeline will support at least this interface.
  16150.     // NOTE: The Start/Stop times on this object are RELATIVE to their
  16151.     // parent's, as are all start/stop times.
  16152.     // explained methods:
  16153.     // GetCutPoint - get where this transition should cut from A to B
  16154.     //      if the transition were not applied.
  16155.     // GetA2B - get if this transition is to go from A->B or B->A.
  16156.     // GetBackwards - get if this transition should run backwards.
  16157.     // GetCutsOnly - force no transition, force doing a cut
  16158.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16159.  
  16160.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineTrans> _di_IAMTimelineTrans;'}
  16161.   {$EXTERNALSYM IAMTimelineTrans}
  16162.   IAMTimelineTrans = interface(IUnknown)
  16163.     ['{BCE0C265-622D-11D2-8CAD-00A024580902}']
  16164.     (*** IAMTimelineTrans methods ***)
  16165.     function GetCutPoint(var pTLTime: TReferenceTime): HResult; stdcall;
  16166.     function GetCutPoint2(var pTLTime: TREFTIME): HResult; stdcall;
  16167.     function SetCutPoint(TLTime: TReferenceTime): HResult; stdcall;
  16168.     function SetCutPoint2(TLTime: TREFTIME): HResult; stdcall;
  16169.     function GetSwapInputs(var pVal: BOOL): HResult; stdcall;
  16170.     function SetSwapInputs(pVal: BOOL): HResult; stdcall;
  16171.     function GetCutsOnly(var pVal: BOOL): HResult; stdcall;
  16172.     function SetCutsOnly(pVal: BOOL): HResult; stdcall;
  16173.   end;
  16174.  
  16175.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16176.     // Sources represent any source media object on the timeline.
  16177.     // They extend an IAMTimelineObj to include media start and stop
  16178.     // times, a media name (which could represent darned near anything),
  16179.     // and a StreamNumber, which defines which stream out of a potential
  16180.     // many this stream represents from a source clip.
  16181.     // explained methods:
  16182.     // ModifyStopTime - like calling SetStartStop, but this method just
  16183.     //      adjusts the tail end of the clip.
  16184.     // FixMediaTimes - called by the render engine to round times to
  16185.     //      this source clip's parent group's FPS.
  16186.     // SpliceWithNext - if the next clip after this is the same source
  16187.     //      and this's stop time matches next's start time, the two
  16188.     //      will be joined.
  16189.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16190.  
  16191.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineSrc> _di_IAMTimelineSrc;'}
  16192.   {$EXTERNALSYM IAMTimelineSrc}
  16193.   IAMTimelineSrc = interface(IUnknown)
  16194.     ['{78530B79-61F9-11D2-8CAD-00A024580902}']
  16195.     (*** IAMTimelineSrc methods ***)
  16196.     function GetMediaTimes(var pStart, pStop: TReferenceTime): HResult; stdcall;
  16197.     function GetMediaTimes2(var pStart, pStop: TREFTIME): HResult; stdcall;
  16198.     function ModifyStopTime(Stop: TReferenceTime): HResult; stdcall;
  16199.     function ModifyStopTime2(Stop: TREFTIME): HResult; stdcall;
  16200.     function FixMediaTimes(var pStart, pStop: TReferenceTime): HResult; stdcall;
  16201.     function FixMediaTimes2(var pStart, pStop: TREFTIME): HResult; stdcall;
  16202.     function SetMediaTimes(Start, Stop: TReferenceTime): HResult; stdcall;
  16203.     function SetMediaTimes2(Start, Stop: TREFTIME): HResult; stdcall;
  16204.     function SetMediaLength(Length: TReferenceTime): HResult; stdcall;
  16205.     function SetMediaLength2(Length: TREFTIME): HResult; stdcall;
  16206.     function GetMediaLength(var pLength: TReferenceTime): HResult; stdcall;
  16207.     function GetMediaLength2(var pLength: TREFTIME): HResult; stdcall;
  16208.     function GetMediaName(out pVal: WideString): HResult; stdcall;
  16209.     function SetMediaName(const newVal: WideString): HResult; stdcall;
  16210.     function SpliceWithNext(pNext: IAMTimelineObj): HResult; stdcall;
  16211.     function GetStreamNumber(var pVal: longint): HResult; stdcall;
  16212.     function SetStreamNumber(Val: longint): HResult; stdcall;
  16213.     function IsNormalRate(var pVal: BOOL): HResult; stdcall;
  16214.     // If a source can't figure out its frames per second, this number
  16215.     // will be used (eg: Dib sequences).  AVI, MPEG, etc. will not need this
  16216.     // Use 0 fps to prevent a filename like "ski4.jpg" from using a dib seq
  16217.     function GetDefaultFPS(var pFPS: Double): HResult; stdcall;
  16218.     function SetDefaultFPS(FPS: Double): HResult; stdcall;
  16219.     // !!! This is video specific.. new interface?
  16220.     // what kind of stretching? Stretch, crop, or preserve aspect ratio?
  16221.     function GetStretchMode(var pnStretchMode: integer): HResult; stdcall;
  16222.     function SetStretchMode(nStretchMode: integer): HResult; stdcall;
  16223.   end;
  16224.  
  16225.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16226.     // Tracks are things that can contain media in them. You can add
  16227.     // and remove sources, effects, and transitions from them. Sources
  16228.     // are added according to the current insert mode of the timeline.
  16229.     // If in OVERLAY mode, moving or adding a source to a time that's
  16230.     // already occupied by another source will wipe out any overlapping
  16231.     // portion of the underlying source. In InsertMode, everything at
  16232.     // the insert point is moved down in time to make room for the
  16233.     // new source.
  16234.     // explained methods:
  16235.     // SrcAdd - add the source to this track. The source's start/stop
  16236.     //      times must be set up first.
  16237.     // GetNextSrc - pass a time in at which you wish to find a source
  16238.     //      and it will return the first source which occurs after the 
  16239.     //      given time.
  16240.     // MoveEverythingBy - bump a bunch of objects a certain direction
  16241.     //      on the track by a given time.
  16242.     // GetSourcesCount - how many sources are on this track?
  16243.     // AreYouBlank - do you contain anything at all?
  16244.     // GetSrcAtTime - find a source at a given time. SearchDirection
  16245.     //      is which way to search. -1 = backwards, 1 = forwards
  16246.     // MakeSpace - !!! what does this do, anyhow?
  16247.     // RemoveSlice - !!! what does this do, anyhow?
  16248.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16249.  
  16250.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineTrack> _di_IAMTimelineTrack;'}
  16251.   {$EXTERNALSYM IAMTimelineTrack}
  16252.   IAMTimelineTrack = interface(IUnknown)
  16253.     ['{EAE58538-622E-11D2-8CAD-00A024580902}']
  16254.     (*** IAMTimelineTrack methods ***)
  16255.     function SrcAdd(pSource: IAMTimelineObj): HResult; stdcall;
  16256.     function GetNextSrc(out ppSrc: IAMTimelineObj; var pInOut: TReferenceTime): HResult; stdcall;
  16257.     function GetNextSrc2(out ppSrc: IAMTimelineObj; var pInOut: TREFTIME): HResult; stdcall;
  16258.     function MoveEverythingBy(Start, MoveBy: TReferenceTime): HResult; stdcall;
  16259.     function MoveEverythingBy2(Start, MoveBy: TREFTIME): HResult; stdcall;
  16260.     function GetSourcesCount(var pVal: longint): HResult; stdcall;
  16261.     function AreYouBlank(var pVal: longint): HResult; stdcall;
  16262.     function GetSrcAtTime(out ppSrc: IAMTimelineObj; Time: TReferenceTime; SearchDirection: longint): HResult; stdcall;
  16263.     function GetSrcAtTime2(out ppSrc: IAMTimelineObj; Time: TREFTIME; SearchDirection: longint): HResult; stdcall;
  16264.     function InsertSpace(rtStart, rtEnd: TReferenceTime): HResult; stdcall;
  16265.     function InsertSpace2(rtStart, rtEnd: TREFTIME): HResult; stdcall;
  16266.     function ZeroBetween(rtStart, rtEnd: TReferenceTime): HResult; stdcall;
  16267.     function ZeroBetween2(rtStart, rtEnd: TREFTIME): HResult; stdcall;
  16268.     function GetNextSrcEx(pLast: IAMTimelineObj; out ppNext: IAMTimelineObj): HResult; stdcall;
  16269.   end;
  16270.  
  16271.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16272.     // This virtual track interface is shared by both the compositions
  16273.     // and tracks (and groups). 
  16274.     // explained methods:
  16275.     // TrackGetPriority - used by rendering objects which need to know this.
  16276.     // SetTrackDirty - !!! not sure if this is useful.
  16277.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16278.  
  16279.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineVirtualTrack> _di_IAMTimelineVirtualTrack;'}
  16280.   {$EXTERNALSYM IAMTimelineVirtualTrack}
  16281.   IAMTimelineVirtualTrack = interface(IUnknown)
  16282.     ['{A8ED5F80-C2C7-11D2-8D39-00A0C9441E20}']
  16283.     (*** IAMTimelineVirtualTrack methods ***)
  16284.     function TrackGetPriority(var pPriority: longint): HResult; stdcall;
  16285.     function SetTrackDirty: HResult; stdcall;
  16286.   end;
  16287.  
  16288.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16289.     // Compositions are like tracks in the sense that they also
  16290.     // implement IAMVirtualTrack and you can put transitions and effects
  16291.     // on them, but they really are the SUM of those tracks that they
  16292.     // contain. They are "embedded" compositions. They should only contain
  16293.     // media of one particular type (like all video or all audio), but 
  16294.     // this is not enforced. You can add a composition to another
  16295.     // composition with VTrackInsBefore, just like you can add a track.
  16296.     // The very top composition to which all other comps and tracks belong
  16297.     // is a Group, which supports I-AMTimelineGroup as well as I-AMTimelineComp.
  16298.     // explained methods:
  16299.     // VTrackInsBefore - does NOT mean VideoTrack. Means Virtual Track.
  16300.     //      Adds a virtual track to a composition at a given priority.
  16301.     //      use -1 to mean "at the end"
  16302.     // VTrackSwapPriorities - switch two vtracks around.
  16303.     // VTrackGetCount - get how many vtracks this comp contains.
  16304.     // GetVTrack - you get the idea
  16305.     // GetCountOfType - Get the total number of these objects this comp
  16306.     //      and all it's vtracks (recursively) contains. !!! this may be dead.
  16307.     // GetRecursiveLayerOfType - given a number, returns a given track. This
  16308.     //      is done recursively. You need to pass in a pointer to the number,
  16309.     //        and it will be modified upon exit to an unknown value. DO NOT
  16310.     //      CALL THE VERSION WITH THE POINTER!
  16311.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16312.  
  16313.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineComp> _di_IAMTimelineComp;'}
  16314.   {$EXTERNALSYM IAMTimelineComp}
  16315.   IAMTimelineComp = interface(IUnknown)
  16316.     ['{EAE58536-622E-11D2-8CAD-00A024580902}']
  16317.     (*** IAMTimelineComp methods ***)
  16318.     function VTrackInsBefore(pVirtualTrack: IAMTimelineObj; priority: longint): HResult; stdcall;
  16319.     function VTrackSwapPriorities(VirtualTrackA, VirtualTrackB: longint): HResult; stdcall;
  16320.     function VTrackGetCount(var pVal: longint): HResult; stdcall;
  16321.     function GetVTrack(out ppVirtualTrack: IAMTimelineObj; Which: longint): HResult; stdcall;
  16322.     function GetCountOfType(var pVal, pValWithComps: longint; majortype: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  16323.     function GetRecursiveLayerOfType(out ppVirtualTrack: IAMTimelineObj; WhichLayer: longint;
  16324.              Type_: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  16325.     function GetRecursiveLayerOfTypeI(out ppVirtualTrack: IAMTimelineObj;
  16326.              var pWhichLayer: longint; Type_: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  16327.     function GetNextVTrack(pVirtualTrack: IAMTimelineObj; out ppNextVirtualTrack: IAMTimelineObj): HResult; stdcall;
  16328.   end;
  16329.  
  16330.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16331.     // Groups represent the topmost composition in a timeline. Every
  16332.     // group should contain media of only one major type (like all video).
  16333.     // The timeline can contain multiple groups, see it's interface for
  16334.     // this. Each group has a particular "media type" that you can get/set
  16335.     // which help identify it. Each group has an associated FPS which
  16336.     // is used by the render engine in setting up the big switch. All
  16337.     // cuts on the timeline will happen rounded to this nearest FPS for
  16338.     // this particular group. Each group has a priority which enables
  16339.     // writing out multiple-stream files with 1 or more streams of the
  16340.     // same type. (Like a 2 video stream AVI file).
  16341.     // explained methods:
  16342.     // SetTimeline - this is called internally when the group is added.
  16343.     //      Do not call this.
  16344.     // GetTimeline - get the timeline this group belongs to.
  16345.     // GetPriority - get this group's priority
  16346.     // Get/SetOutputFPS - explained above
  16347.     // SetMediaTypeForVB - method for VB. Pass in 0 for video, 1 for audio
  16348.     // SetRecompFormatFromSource - set the recompress format based on the
  16349.     //  source that's loaded or set in the IAMTimelineSrc
  16350.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16351.  
  16352.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineGroup> _di_IAMTimelineGroup;'}
  16353.   {$EXTERNALSYM IAMTimelineGroup}
  16354.   IAMTimelineGroup = interface(IUnknown)
  16355.     ['{9EED4F00-B8A6-11D2-8023-00C0DF10D434}']
  16356.     (*** IAMTimelineGroup methods ***)
  16357.     function SetTimeline(pTimeline: IAMTimeline): HResult; stdcall;
  16358.     function GetTimeline(out ppTimeline: IAMTimeline): HResult; stdcall;
  16359.     function GetPriority(var pPriority: longint): HResult; stdcall;
  16360.     function GetMediaType(out value: TAMMediaType): HResult; stdcall;
  16361.     function SetMediaType(value: PAMMediaType): HResult; stdcall;
  16362.     function SetOutputFPS(FPS: Double): HResult; stdcall;
  16363.     function GetOutputFPS(var pFPS: Double): HResult; stdcall;
  16364.     function SetGroupName(const pGroupName: WideString): HResult; stdcall;
  16365.     function GetGroupName(out pGroupName: WideString): HResult; stdcall;
  16366.     function SetPreviewMode(fPreview: BOOL): HResult; stdcall;
  16367.     function GetPreviewMode(var pfPreview: BOOL): HResult; stdcall;
  16368.     function SetMediaTypeForVB(Val: longint): HResult; stdcall;
  16369.     function GetOutputBuffering(out pnBuffer: integer): HResult; stdcall;
  16370.     function SetOutputBuffering(nBuffer: integer): HResult; stdcall;
  16371.     function SetSmartRecompressFormat(var pFormat: longint): HResult; stdcall;
  16372.     function GetSmartRecompressFormat(ppFormat: Plongint): HResult; stdcall;
  16373.     function IsSmartRecompressFormatSet(var pVal: BOOL): HResult; stdcall;
  16374.     function IsRecompressFormatDirty(var pVal: BOOL): HResult; stdcall;
  16375.     function ClearRecompressFormatDirty: HResult; stdcall;
  16376.     function SetRecompFormatFromSource(pSource: IAMTimelineSrc): HResult; stdcall;
  16377.   end;
  16378.  
  16379.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16380.     // The main timeline. This is the base object you use to set
  16381.     // properties of the timeline as a whole, and to create blank
  16382.     // objects for use within the timeline. You cannot create the
  16383.     // objects using COM methods, you must go through the timeline to
  16384.     // create this. That's because certain information is set before
  16385.     // handing the object back to you. Every object created by the
  16386.     // timeline will support at LEAST IAMTimelineObj. For any timeline,
  16387.     // it can have one or more "groups" that it knows about. Each group
  16388.     // has the capability to hold a complete sub-tree containing media
  16389.     // that is all of one type. This logical seperation is used for the
  16390.     // rendering engine, but is not strictly enforced.
  16391.     // explained methods:
  16392.     // CreateEmptyNode - pass in a mid type and it will pass back
  16393.     //      an object of the type you requested.
  16394.     // AddGroup - add a created group to the tree
  16395.     // RemGroupFromList - make sure timeline no longer knows about this group.
  16396.     //        does NOT do anything to the group itself. Normally the user
  16397.     //        does not want to call this, it's called from the Group's Remove( ) method.
  16398.     // GetGroup - get a certain group
  16399.     // GetGroupCount - get how many groups
  16400.     // ClearAllGroups - clear everything
  16401.     // GetInsertMode - ask what the insert mode is, overlay or insert
  16402.     // SetInsertMode - set whether to insert or overlay
  16403.     // EnableTransitions - turn transitions on or off as a whole
  16404.     // EnableEffects - same deal.
  16405.     // SetIntererstRange - discard sub-objects outside of a given
  16406.     //      time range, to save memory/resources
  16407.     // Get/SetDefaultFPS - set the 'default' FPS for this timeline,
  16408.     //      the RenderEngine reads this information for setting itself up
  16409.     //      by default.
  16410.     // GetCountOfType - ask for how many of a given thing are in a given
  16411.     //      group. !!! this may be a useless function.
  16412.     // !!! not implemented
  16413.     // IsDirty - asks if anything in the timeline needs to be redrawn
  16414.     // GetDirtyRange - same deal
  16415.     // ValidateSourceNames - make sure the filenames in the sources
  16416.     //      really exist. Use the same enum flags as the render engine
  16417.     //      uses for SetSourceNameValidation. Source's filenames will be
  16418.     //      changed to those of the found ones in the timeline.
  16419.     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16420.  
  16421.   {$HPPEMIT 'typedef System::DelphiInterface<IAMTimeline> _di_IAMTimeline;'}
  16422.   {$EXTERNALSYM IAMTimeline}
  16423.   IAMTimeline = interface(IUnknown)
  16424.     ['{78530B74-61F9-11D2-8CAD-00A024580902}']
  16425.     (*** IAMTimeline methods ***)
  16426.     function CreateEmptyNode(out ppObj: IAMTimelineObj; Type_: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  16427.     function AddGroup(pGroup: IAMTimelineObj): HResult; stdcall;
  16428.     function RemGroupFromList(pGroup: IAMTimelineObj): HResult; stdcall;
  16429.     function GetGroup(out ppGroup: IAMTimelineObj; WhichGroup: longint): HResult; stdcall;
  16430.     function GetGroupCount(var pCount: longint): HResult; stdcall;
  16431.     function ClearAllGroups: HResult; stdcall;
  16432.     function GetInsertMode(var pMode: longint): HResult; stdcall;
  16433.     function SetInsertMode(Mode: longint): HResult; stdcall;
  16434.     function EnableTransitions(fEnabled: BOOL): HResult; stdcall;
  16435.     function TransitionsEnabled(var pfEnabled: BOOL): HResult; stdcall;
  16436.     function EnableEffects(fEnabled: BOOL): HResult; stdcall;
  16437.     function EffectsEnabled(var pfEnabled: BOOL): HResult; stdcall;
  16438.     function SetInterestRange(Start, Stop: TReferenceTime): HResult; stdcall;
  16439.     function GetDuration(var pDuration: TReferenceTime): HResult; stdcall;
  16440.     function GetDuration2(var pDuration: Double): HResult; stdcall;
  16441.     function SetDefaultFPS(FPS: Double): HResult; stdcall;
  16442.     function GetDefaultFPS(var pFPS: Double): HResult; stdcall;
  16443.     function IsDirty(var pDirty: BOOL): HResult; stdcall;
  16444.     function GetDirtyRange(var pStart, pStop: TReferenceTime): HResult; stdcall;
  16445.     function GetCountOfType(Group: longint; var pVal, pValWithComps: longint;
  16446.              majortype: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  16447.     function ValidateSourceNames(ValidateFlags: longint; pOverride: IMediaLocator;
  16448.              NotifyEventHandle: integer): HResult; stdcall;
  16449.     function SetDefaultTransition(const pGuid: TGUID): HResult; stdcall;
  16450.     function GetDefaultTransition(var pGuid: TGUID): HResult; stdcall;
  16451.     function SetDefaultEffect(const pGuid: TGUID): HResult; stdcall;
  16452.     function GetDefaultEffect(var pGuid: TGUID): HResult; stdcall;
  16453.     function SetDefaultTransitionB(const pGuid: WideString): HResult; stdcall;
  16454.     function GetDefaultTransitionB(out pGuid: WideString): HResult; stdcall;
  16455.     function SetDefaultEffectB(const pGuid: WideString): HResult; stdcall;
  16456.     function GetDefaultEffectB(out pGuid: WideString): HResult; stdcall;
  16457.   end;
  16458.  
  16459. ////////////////////////////////////////////////////////////////
  16460. ////////////////////////////////////////////////////////////////
  16461. // XML STUFF --- XML STUFF --- XML STUFF --- XML STUFF --- XML
  16462. ////////////////////////////////////////////////////////////////
  16463. ////////////////////////////////////////////////////////////////
  16464.  
  16465. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  16466. // Xml2Dex - converts back and forth between XML and a dexter project
  16467. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  16468.   
  16469.   {$HPPEMIT 'typedef System::DelphiInterface<IXml2Dex> _di_IXml2Dex;'}
  16470.   {$EXTERNALSYM IXml2Dex}
  16471.   IXml2Dex = interface(IDispatch)
  16472.     ['{18C628ED-962A-11D2-8D08-00A0C9441E20}']
  16473.     (*** IXml2Dex methods ***)
  16474.     function CreateGraphFromFile(out ppGraph: IUnknown; pTimeline: IUnknown;
  16475.              const Filename: WideString): HResult; stdcall;
  16476.     function WriteGrfFile(pGraph: IUnknown; const Filename: WideString): HResult; stdcall;
  16477.     function WriteXMLFile(pTimeline: IUnknown; const Filename: WideString): HResult; stdcall;
  16478.     function ReadXMLFile(pTimeline: IUnknown; const XMLName: WideString): HResult; stdcall;
  16479.     function Delete(pTimeline: IUnknown; dStart, dEnd: Double): HResult; stdcall;
  16480.     function WriteXMLPart(pTimeline: IUnknown; dStart, dEnd: Double;
  16481.              const Filename: WideString): HResult; stdcall;
  16482.     function PasteXMLFile(pTimeline: IUnknown; dStart: Double; const Filename: WideString): HResult; stdcall;
  16483.     function CopyXML(pTimeline: IUnknown; dStart, dEnd: Double): HResult; stdcall;
  16484.     function PasteXML(pTimeline: IUnknown; dStart: Double): HResult; stdcall;
  16485.     function Reset: HResult; stdcall;
  16486.     function ReadXML(pTimeline: IUnknown; pxml: IUnknown): HResult; stdcall;
  16487.     function WriteXML(pTimeline: IUnknown; var pbstrXML: WideString): HResult; stdcall;
  16488.   end;
  16489.  
  16490. ////////////////////////////////////////////////////////////////
  16491. ////////////////////////////////////////////////////////////////
  16492. // USEFUL HELPER INTERFACES
  16493. ////////////////////////////////////////////////////////////////
  16494. ////////////////////////////////////////////////////////////////
  16495.  
  16496. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  16497. // IAMErrorLog - an interface that receives error information from
  16498. // a timeline or a render engine.
  16499. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  16500.  
  16501.   {$HPPEMIT 'typedef System::DelphiInterface<IAMErrorLog> _di_IAMErrorLog;'}
  16502.   {$EXTERNALSYM IAMErrorLog}
  16503.   IAMErrorLog = interface(IUnknown)
  16504.     ['{E43E73A2-0EFA-11D3-9601-00A0C9441E20}']
  16505.     (*** IAMErrorLog methods ***)
  16506.     function LogError(Severity: longint; const pErrorString: WideString; ErrorCode: longint;
  16507.                        HResult: longint; var pExtraInfo: OleVariant): HResult; stdcall;
  16508.   end;
  16509.  
  16510.   {$HPPEMIT 'typedef System::DelphiInterface<IAMSetErrorLog> _di_IAMSetErrorLog;'}
  16511.   {$EXTERNALSYM IAMSetErrorLog}
  16512.   IAMSetErrorLog = interface(IUnknown)
  16513.     ['{963566DA-BE21-4EAF-88E9-35704F8F52A1}']
  16514.     (*** IAMSetErrorLog methods ***)
  16515.     function get_ErrorLog(out pVal: IAMErrorLog): HResult; stdcall;
  16516.     function put_ErrorLog(pVal: IAMErrorLog): HResult; stdcall;
  16517.   end;
  16518.  
  16519.   {$HPPEMIT 'typedef System::DelphiInterface<ISampleGrabberCB> _di_ISampleGrabberCB;'}
  16520.   {$EXTERNALSYM ISampleGrabberCB}
  16521.   ISampleGrabberCB = interface(IUnknown)
  16522.     ['{0579154A-2B53-4994-B0D0-E773148EFF85}']
  16523.     (*** ISampleGrabberCB methods ***)
  16524.     function  SampleCB(SampleTime: Double; pSample: IMediaSample): HResult; stdcall;
  16525.     function  BufferCB(SampleTime: Double; pBuffer: PByte; BufferLen: longint): HResult; stdcall;
  16526.   end;
  16527.   
  16528.   {$HPPEMIT 'typedef System::DelphiInterface<ISampleGrabber> _di_ISampleGrabber;'}
  16529.   {$EXTERNALSYM ISampleGrabber}
  16530.   ISampleGrabber = interface(IUnknown)
  16531.     ['{6B652FFF-11FE-4FCE-92AD-0266B5D7C78F}']
  16532.     (*** ISampleGrabber methods ***)
  16533.     // set this to have the filter immediate stop after
  16534.     // garnishing a sample
  16535.     function SetOneShot(OneShot: BOOL): HResult; stdcall;
  16536.     // set what media type we connect to. It can be partially
  16537.     // specified by setting only the major type, OR the major and
  16538.     // subtype, OR major, subtype, and the formattype.
  16539.     function SetMediaType(var pType: TAMMediaType): HResult; stdcall;
  16540.     // after something's connected to this filter, find out
  16541.     // what it is
  16542.     function GetConnectedMediaType(out pType: TAMMediaType): HResult; stdcall;
  16543.     // call this to buffer incoming samples, so the next two methods will work
  16544.     // If this is not called, the next two methods will return
  16545.     // E_INVALIDARG
  16546.     function SetBufferSamples(BufferThem: BOOL): HResult; stdcall;
  16547.     // pass in NULL for pBuffer to get out the buffer size you need to
  16548.     // allocate. This will NOT return a pointer to a compressed dib
  16549.     // any longer! It will return the IMediaSample's GetPointer buffer.
  16550.     function GetCurrentBuffer(var pBufferSize: longint; pBuffer: Pointer): HResult; stdcall;
  16551.     // return the currently buffered sample
  16552.     function GetCurrentSample(out ppSample: IMediaSample): HResult; stdcall;
  16553.     // if this callback is set, then it will be called for
  16554.     // every sample passing through the filter. Do not take a long time
  16555.     // in the callback for smooth playback (obviously!)
  16556.     function SetCallback(pCallback: ISampleGrabberCB; WhichMethodToCallback: longint): HResult; stdcall;
  16557.   end;
  16558.  
  16559.   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16560.   // resize the input video to an output size, for uniformity within DES.
  16561.   // DES will set the output media type and probably also put_Size. By setting
  16562.   // the output media type, DES is stating the resizer must produce only that
  16563.   // media type on the output pin, unless it is succeeded by a put_Size call.
  16564.   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  16565.  
  16566.   {$HPPEMIT 'typedef System::DelphiInterface<IResize> _di_IResize;'}
  16567.   {$EXTERNALSYM IResize}
  16568.   IResize = interface(IUnknown)
  16569.     ['{4ada63a0-72d5-11d2-952a-0060081840bc}']
  16570.     (*** IResize methods ***)
  16571.     function get_Size(out piHeight, piWidth: Integer; out pFlag: LongInt): HResult; stdcall;
  16572.     function get_InputSize(out piHeight, piWidth: Integer): HResult; stdcall;
  16573.     function put_Size(Height, Width: Integer; Flag: LongInt): HResult; stdcall;
  16574.     function get_MediaType(out pmt: TAMMediaType): HResult; stdcall;
  16575.     function put_MediaType(pmt: PAMMediaType): HResult; stdcall;
  16576.   end;
  16577.  
  16578. const
  16579.   E_NOTINTREE               = HResult($80040400);
  16580.   {$EXTERNALSYM E_NOTINTREE}
  16581.   E_RENDER_ENGINE_IS_BROKEN = HResult($80040401);
  16582.   {$EXTERNALSYM E_RENDER_ENGINE_IS_BROKEN}
  16583.   E_MUST_INIT_RENDERER      = HResult($80040402);
  16584.   {$EXTERNALSYM E_MUST_INIT_RENDERER}
  16585.   E_NOTDETERMINED           = HResult($80040403);
  16586.   {$EXTERNALSYM E_NOTDETERMINED}
  16587.   E_NO_TIMELINE             = HResult($80040404);
  16588.   {$EXTERNALSYM E_NO_TIMELINE}
  16589.   S_WARN_OUTPUTRESET        = 40404;
  16590.   {$EXTERNALSYM S_WARN_OUTPUTRESET}
  16591.  
  16592. // These codes are given to the app in IAMErrorLog to help identify what went wrong
  16593.  
  16594. // Filename doesn't exist, or DShow doesn't recognize the filetype
  16595. // EXTRA - filename
  16596.   DEX_IDS_BAD_SOURCE_NAME   = 1400;
  16597.   {$EXTERNALSYM DEX_IDS_BAD_SOURCE_NAME}
  16598.  
  16599. // Filename doesn't exist or contains unknown data
  16600. // EXTRA - filename (maybe no codec?)
  16601.   DEX_IDS_BAD_SOURCE_NAME2  = 1401;
  16602.   {$EXTERNALSYM DEX_IDS_BAD_SOURCE_NAME2}
  16603.  
  16604. // filename was required, but wasn't given
  16605.   DEX_IDS_MISSING_SOURCE_NAME   = 1402;
  16606.   {$EXTERNALSYM DEX_IDS_MISSING_SOURCE_NAME}
  16607.  
  16608. // cannot parse data provided by this source
  16609. // !!! what source?
  16610.   DEX_IDS_UNKNOWN_SOURCE   = 1403;
  16611.   {$EXTERNALSYM DEX_IDS_UNKNOWN_SOURCE}
  16612.  
  16613. // unexpected error - some DShow component not installed correctly
  16614.   DEX_IDS_INSTALL_PROBLEM   = 1404;
  16615.   {$EXTERNALSYM DEX_IDS_INSTALL_PROBLEM}
  16616.  
  16617. // Source filter does not accept filenames
  16618. // !!! What source?
  16619.   DEX_IDS_NO_SOURCE_NAMES   = 1405;
  16620.   {$EXTERNALSYM DEX_IDS_NO_SOURCE_NAMES}
  16621.  
  16622. // The group's mediatype is not supported
  16623. // EXTRA - gives you an integer group number
  16624.   DEX_IDS_BAD_MEDIATYPE   = 1406;
  16625.   {$EXTERNALSYM DEX_IDS_BAD_MEDIATYPE}
  16626.  
  16627. // Invalid stream number for a source
  16628. // EXTRA - gives the stream number !!! should identify which source!
  16629.   DEX_IDS_STREAM_NUMBER   = 1407;
  16630.   {$EXTERNALSYM DEX_IDS_STREAM_NUMBER}
  16631.  
  16632. // You ran out of memory
  16633.   DEX_IDS_OUTOFMEMORY       = 1408;
  16634.   {$EXTERNALSYM DEX_IDS_OUTOFMEMORY}
  16635.  
  16636. // One bitmap in a sequence was not the same type as the others
  16637. // EXTRA - gives the bitmap name
  16638.   DEX_IDS_DIBSEQ_NOTALLSAME   = 1409;
  16639.   {$EXTERNALSYM DEX_IDS_DIBSEQ_NOTALLSAME}
  16640.  
  16641. // Clip's mediatimes are invalid, or DibSeq too short, or a previous error caused this
  16642. // !!! Needs to give the clip name
  16643.   DEX_IDS_CLIPTOOSHORT       = 1410;
  16644.   {$EXTERNALSYM DEX_IDS_CLIPTOOSHORT}
  16645.  
  16646. // Clsid of FX/Transition is not a DirectX Transform
  16647. // EXTRA - gives the CLSID
  16648.   DEX_IDS_INVALID_DXT       = 1411;
  16649.   {$EXTERNALSYM DEX_IDS_INVALID_DXT}
  16650.  
  16651. // Default FX/Transition Clsid is not a DirectX Transform"
  16652. // EXTRA - gives the CLSID
  16653.   DEX_IDS_INVALID_DEFAULT_DXT   = 1412;
  16654.   {$EXTERNALSYM DEX_IDS_INVALID_DEFAULT_DXT}
  16655.  
  16656. // Your version of DX doesn't support 3D transforms"
  16657. // EXTRA - gives the CLSID of the 3D transform you tried to use
  16658.   DEX_IDS_NO_3D       = 1413;
  16659.   {$EXTERNALSYM DEX_IDS_NO_3D}
  16660.  
  16661. // This DirectX Transform is not the right kind, or is broken
  16662. // EXTRA - gives the CLSID of the broken transform
  16663.   DEX_IDS_BROKEN_DXT       = 1414;
  16664.   {$EXTERNALSYM DEX_IDS_BROKEN_DXT}
  16665.  
  16666. // No such property exists on an object
  16667. // EXTRA - gives the name of the property (if given as a string)
  16668.   DEX_IDS_NO_SUCH_PROPERTY   = 1415;
  16669.   {$EXTERNALSYM DEX_IDS_NO_SUCH_PROPERTY}
  16670.  
  16671. // Illegal value for a property
  16672. // EXTRA - gives the VARIANT value that was illegal
  16673.   DEX_IDS_ILLEGAL_PROPERTY_VAL   = 1416;
  16674.   {$EXTERNALSYM DEX_IDS_ILLEGAL_PROPERTY_VAL}
  16675.  
  16676. // Syntax error in XML file at line:
  16677. // EXTRA - gives I4 line number, if available
  16678.   DEX_IDS_INVALID_XML       = 1417;
  16679.   {$EXTERNALSYM DEX_IDS_INVALID_XML}
  16680.  
  16681. // Can't find filter specified in XML by Category and Instance
  16682. // EXTRA - gives friendly name (instance)
  16683.   DEX_IDS_CANT_FIND_FILTER   = 1418;
  16684.   {$EXTERNALSYM DEX_IDS_CANT_FIND_FILTER}
  16685.  
  16686. // Disk error writing XML file
  16687.   DEX_IDS_DISK_WRITE_ERROR   = 1419;
  16688.   {$EXTERNALSYM DEX_IDS_DISK_WRITE_ERROR}
  16689.  
  16690. // Clsid not a valid DShow audio effect filter
  16691. // EXTRA - gives the CLSID
  16692.   DEX_IDS_INVALID_AUDIO_FX   = 1420;
  16693.   {$EXTERNALSYM DEX_IDS_INVALID_AUDIO_FX}
  16694.  
  16695. // Cannot find compressor for smart recompression type
  16696.   DEX_IDS_CANT_FIND_COMPRESSOR = 1421;
  16697.   {$EXTERNALSYM DEX_IDS_CANT_FIND_COMPRESSOR}
  16698.  
  16699.  
  16700.  
  16701. // !!! Here go problems hooking up sources or finding codecs
  16702.  
  16703.  
  16704. // THE FOLLOWING SHOULD NEVER HAPPEN - please call me if they do
  16705.  
  16706. // Unexpected error in parsing the timeline
  16707.   DEX_IDS_TIMELINE_PARSE   = 1426;
  16708.   {$EXTERNALSYM DEX_IDS_TIMELINE_PARSE}
  16709. // Unexpected error building the filtergraph
  16710.   DEX_IDS_GRAPH_ERROR      = 1427;
  16711.   {$EXTERNALSYM DEX_IDS_GRAPH_ERROR}
  16712. // Unexpected error with the internal grid
  16713.   DEX_IDS_GRID_ERROR       = 1428;
  16714.   {$EXTERNALSYM DEX_IDS_GRID_ERROR}
  16715. // Unexpected error getting an interface
  16716.   DEX_IDS_INTERFACE_ERROR  = 1429;
  16717.   {$EXTERNALSYM DEX_IDS_INTERFACE_ERROR}
  16718.  
  16719. // these are the enumeration categories for effects
  16720. //
  16721.   CLSID_VideoEffects1Category : TGUID = '{CC7BFB42-F175-11d1-A392-00E0291F3959}';
  16722.   {$EXTERNALSYM CLSID_VideoEffects1Category}
  16723.   CLSID_VideoEffects2Category : TGUID = '{CC7BFB43-F175-11d1-A392-00E0291F3959}';
  16724.   {$EXTERNALSYM CLSID_VideoEffects2Category}
  16725.   CLSID_AudioEffects1Category : TGUID = '{cc7bfb44-f175-11d1-a392-00e0291f3959}';
  16726.   {$EXTERNALSYM CLSID_AudioEffects1Category}
  16727.   CLSID_AudioEffects2Category : TGUID = '{cc7bfb45-f175-11d1-a392-00e0291f3959}';
  16728.   {$EXTERNALSYM CLSID_AudioEffects2Category}
  16729.  
  16730. {**************************************************************************}
  16731. {* Module Name: mpeguids.h                                                *}
  16732. {* This file was inadvertently left out of the DirectX by Microsoft       *}
  16733. {* Universal ID's for the mpeg decoder property pages.                    *}
  16734. {*                                                                        *}
  16735. {* Copyright (c) 1995 - 1997  Microsoft Corporation.  All Rights Reserved.*}
  16736. {**************************************************************************}
  16737.  
  16738.   IID_IMpegVideoDecoder             : TGUID = '{EB1BB270-F71F-11CE-8E85-02608C9BABA2}';
  16739.   CLSID_MpegAudioDecodePropertyPage : TGUID = '{CC785860-B2CA-11ce-8D2B-0000E202599C}';
  16740.   CLSID_MpegVideoDecodePropertyPage : TGUID = '{E5B4EAA0-B2CA-11ce-8D2B-0000E202599C}';
  16741.   CLSID_MMMpeg1VideoCodec           : TGUID = '{eafd3a00-a2c7-11d0-b0ac-006097707a2c}';
  16742.   VIDEO_DECODER_CLSID               : TGUID = '{eafd3a00-a2c7-11d0-b0ac-006097707a2c}';
  16743.   CLSID_MMMpeg1AudioCodec           : TGUID = '{2cd28f20-a2c8-11d0-b0ac-006097707a2c}';
  16744.   AUDIO_DECODER_CLSID               : TGUID = '{2cd28f20-a2c8-11d0-b0ac-006097707a2c}';
  16745.  
  16746. type
  16747. // Structure to describe the caps of the mpeg video decoder.
  16748.   MPEGVideoDecoderCaps = record
  16749.     VideoMaxBitRate: DWORD
  16750.   end;
  16751.   TMPEGVideoDecoderCaps = MPEGVideoDecoderCaps;
  16752.  
  16753. // --------------------------------------------------------------------------------------
  16754. // Structure to hold the contents of an Mpeg 1 sequence header.                        //
  16755. // This structure come from mpgvideo.h in DXMedia SDK!!                                //
  16756. // --------------------------------------------------------------------------------------
  16757.   SeqHdrInfo = record                                                           //
  16758.     Width           : LongInt;               //  Native Width in pixels                //
  16759.     Height          : LongInt;               //  Native Height in pixels               //
  16760.     vbv             : LongInt;               //  vbv                                   //
  16761.     PictureTime     : TReferenceTime;        //  Time per picture in 100ns units       //
  16762.     TimePerFrame    : LongInt;               //  Time per picture in MPEG units        //
  16763.     BitRate         : LongInt;               //  Bits per second                       //
  16764.     XPelsPerMeter   : LongInt;               //  Pel aspect ratio                      //
  16765.     YPelsPerMeter   : LongInt;               //  Pel aspect ratio                      //
  16766.     StartTimeCode   : DWORD;                 //  First GOP time code (or -1)           //
  16767.     ActualHeaderLen : LongInt;               //  Length of valid bytes in raw seq hdr  //
  16768.     RawHeader       : array[0..139] of Byte; //  The real sequence header              //
  16769.   end;                                                                                 //
  16770.   TSeqHdrInfo = SeqHdrInfo;
  16771.  
  16772. // --------------------------------------------------------------------------------------
  16773.  
  16774. // IMpegVideoDecoder not documented...
  16775.   IMpegVideoDecoder = interface(IUnknown)
  16776.     ['{EB1BB270-F71F-11CE-8E85-02608C9BABA2}']
  16777.     (*** IMpegVideoDecoder methods ***)
  16778.     procedure get_CurrentDecoderOption(out pOptions: DWORD); stdcall;
  16779.     procedure set_CurrentDecoderOption(Options: DWORD); stdcall;
  16780.     procedure get_DefaultDecoderOption(out pOptions: DWORD); stdcall;
  16781.     procedure set_DefaultDecoderOption(Options: DWORD); stdcall;
  16782.     procedure get_QualityMsgProcessing(out pfIgnore: BOOL); stdcall;
  16783.     procedure set_QualityMsgProcessing(fIgnore: BOOL); stdcall;
  16784.     procedure get_GreyScaleOutput(out pfGrey: BOOL); stdcall;
  16785.     procedure set_GreyScaleOutput(fGrey: BOOL); stdcall;
  16786.     procedure get_SequenceHeader(out pSeqHdrInfo: TSeqHdrInfo); stdcall;
  16787.     procedure get_OutputFormat(out pOutputFormat: DWORD); stdcall;
  16788.     procedure get_FrameStatistics(out pIFramesDecoded, pPFramesDecoded, stdcall;
  16789.       pBFramesDecoded, pIFramesSkipped, pPFramesSkipped, pBFramesSkipped: DWORD);
  16790.     procedure ResetFrameStatistics; stdcall;
  16791.     procedure get_DecoderPaletteInfo(lpdwFirstEntry, lpdwLastEntry: PDWORD); stdcall;
  16792.     procedure get_DecoderPaletteEntries(dwStartEntry, dwNumEntries: DWORD;
  16793.       lppe: PPALETTEENTRY); stdcall;
  16794.     procedure get_EncryptionKey(out dwEncrptionKey: DWORD); stdcall;
  16795.     procedure put_EncryptionKey(dwEncrptionKey: DWORD); stdcall;
  16796.     procedure get_DecoderCaps(out pCaps: TMPEGVideoDecoderCaps); stdcall;
  16797.   end;
  16798.  
  16799. //------------------------------------------------------------------------------
  16800. // File: DShowASF.h
  16801. //
  16802. // Copyright (c) 1992-2000, Microsoft Corporation. All rights reserved.
  16803. //------------------------------------------------------------------------------
  16804.  
  16805. const
  16806.   IID_IConfigAsfWriter : TGUID = (D1:$45086030;D2:$F7E4;D3:$486a;D4:($B5,$04,$82,$6B,$B5,$79,$2A,$3B));
  16807.   {$EXTERNALSYM IID_IConfigAsfWriter}
  16808.  // IID_IWMProfile       : TGUID = (D1:$96406bdb;D2:$2b2b;D3:$11d3;D4:($b3,$6b,$00,$c0,$4f,$61,$08,$ff));
  16809.  
  16810. type
  16811. // Interface to control the ASF writer
  16812.   {$HPPEMIT 'typedef System::DelphiInterface<IConfigAsfWriter> _di_IConfigAsfWriter;'}
  16813.   {$EXTERNALSYM IConfigAsfWriter}
  16814.   IConfigAsfWriter = interface(IUnknown)
  16815.     ['{45086030-F7E4-486a-B504-826BB5792A3B}']
  16816.     (*** IConfigAsfWriter methods ***)
  16817.     // The user is expected to enumerate profiles using the wmsdk IWMProfileManager
  16818.     // method and then pass the desired profile index to the ASF Writer filter via this
  16819.     // method. The filter will then try to configure itself for the selected profile.
  16820.     //
  16821.     // NOTE: These 2 XXXProfileId methods are now obsolete because they assume
  16822.     //       version 4.0 WMSDK profiles. To configure the filter for later profile
  16823.     //       versions using a profile index, use the XXXProfile methods which take
  16824.     //       the IWMProfile* directly.
  16825.     function ConfigureFilterUsingProfileId(dwProfileId: DWORD): HResult; stdcall;
  16826.     function GetCurrentProfileId(out pdwProfileId: DWORD): HResult; stdcall;
  16827.     // configure using a pre-defined wmsdk profile guid
  16828.     function ConfigureFilterUsingProfileGuid(const guidProfile: TGUID): HResult; stdcall;
  16829.     function GetCurrentProfileGuid(out pProfileGuid: TGUID): HResult; stdcall;
  16830.     // Use these methods when a custom profile setup is preferred
  16831.     function ConfigureFilterUsingProfile(pProfile: IUnKnown): HResult; stdcall;  // IWMProfile in Window Media Format SDK
  16832.     function GetCurrentProfile(out ppProfile: IUnKnown): HResult; stdcall;       // IWMProfile in Window Media Format SDK
  16833.     // allow app to control whether or not to index file
  16834.     function SetIndexMode(bIndexFile: BOOL): HResult; stdcall;
  16835.     function GetIndexMode(out pbIndexFile: BOOL): HResult; stdcall;
  16836.   end;
  16837.  
  16838. //------------------------------------------------------------------------------
  16839. // File: AMParse.h
  16840. //
  16841. // Desc: Interface to the parser to get current time.  This is useful for
  16842. //       multifile playback.
  16843. //
  16844. // Copyright (c) 1996 - 2000, Microsoft Corporation.  All rights reserved.
  16845. //------------------------------------------------------------------------------
  16846.  
  16847. const
  16848.   IID_IAMParse : TGUID = (D1:$c47a3420;D2:$005c;D3:$11d2;D4:($90,$38,$00,$a0,$c9,$69,$72,$98));
  16849. {$EXTERNALSYM IID_IAMParse}
  16850.  
  16851. type
  16852. //  Parser interface - supported by MPEG-2 splitter filter
  16853.   {$HPPEMIT 'typedef System::DelphiInterface<IAMParse> _di_IAMParse;'}
  16854.   {$EXTERNALSYM IAMParse}
  16855.   IAMParse = interface(IUnknown)
  16856.     ['{c47a3420-005c-11d2-9038-00a0c9697298}']
  16857.     (*** IAMParse methods ***)
  16858.     function GetParseTime(out prtCurrent: TReferenceTime): HResult; stdcall;
  16859.     function SetParseTime(rtCurrent: TReferenceTime): HResult; stdcall;
  16860.     function Flush: HResult; stdcall;
  16861.   end;
  16862.  
  16863. //------------------------------------------------------------------------------
  16864. // File: AudEvCod.h
  16865. //
  16866. // Desc: List of Audio device error event codes and the expected params.
  16867. //
  16868. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  16869. //------------------------------------------------------------------------------
  16870.  
  16871. const
  16872.   EC_SND_DEVICE_ERROR_BASE = $0200;
  16873.   {$EXTERNALSYM EC_SND_DEVICE_ERROR_BASE}
  16874.  
  16875. type
  16876.   _tagSND_DEVICE_ERROR = (
  16877.   {$IFNDEF COMPILER6_UP}
  16878.     SNDDEV_ERROR_INVALID_0,
  16879.     SNDDEV_ERROR_Open,
  16880.   {$ELSE}
  16881.     SNDDEV_ERROR_Open = 1,
  16882.   {$ENDIF}
  16883.     SNDDEV_ERROR_Close,
  16884.     SNDDEV_ERROR_GetCaps,
  16885.     SNDDEV_ERROR_PrepareHeader,
  16886.     SNDDEV_ERROR_UnprepareHeader,
  16887.     SNDDEV_ERROR_Reset,
  16888.     SNDDEV_ERROR_Restart,
  16889.     SNDDEV_ERROR_GetPosition,
  16890.     SNDDEV_ERROR_Write,
  16891.     SNDDEV_ERROR_Pause,
  16892.     SNDDEV_ERROR_Stop,
  16893.     SNDDEV_ERROR_Start,
  16894.     SNDDEV_ERROR_AddBuffer,
  16895.     SNDDEV_ERROR_Query
  16896.   );
  16897.   {$EXTERNALSYM _tagSND_DEVICE_ERROR}
  16898.   SNDDEV_ERR = _tagSND_DEVICE_ERROR;
  16899.   {$EXTERNALSYM SNDDEV_ERR}
  16900.   TSndDevErr = SNDDEV_ERR;
  16901.  
  16902. // Sound device error event codes
  16903. // ==============================
  16904. //
  16905. // All audio device error events are always passed on to the application, and are
  16906. // never processed by the filter graph
  16907.  
  16908. const
  16909.   EC_SNDDEV_IN_ERROR  = EC_SND_DEVICE_ERROR_BASE + $00;
  16910.   {$EXTERNALSYM EC_SNDDEV_IN_ERROR}
  16911.   EC_SNDDEV_OUT_ERROR = EC_SND_DEVICE_ERROR_BASE + $01;
  16912.   {$EXTERNALSYM EC_SNDDEV_OUT_ERROR}
  16913. // Parameters: ( DWORD, DWORD)
  16914. // lParam1 is an enum SND_DEVICE_ERROR which notifies the app how the device was
  16915. // being accessed when the failure occurred.
  16916. //
  16917. // lParam2 is the error returned from the sound device call.
  16918.  
  16919. //------------------------------------------------------------------------------
  16920. // File: ATSMedia.h
  16921. //
  16922. // Desc: Broadcast Driver Architecture Media Definitions for ATSC
  16923. //
  16924. // Copyright (c) 1996 - 2000, Microsoft Corporation.  All rights reserved.
  16925. //------------------------------------------------------------------------------
  16926.  
  16927. //===========================================================================
  16928. //
  16929. //  ATSC Network Type
  16930. //
  16931. //===========================================================================
  16932.  
  16933. const
  16934.   BDANETWORKTYPE_ATSC : TGUID = '{71985F51-1CA1-11d3-9CC8-00C04F7971E0}';
  16935.   {$EXTERNALSYM BDANETWORKTYPE_ATSC}
  16936.  
  16937. //------------------------------------------------------------------------------
  16938. // File: MediaErr.h
  16939. //
  16940. // Desc: Shell error codes
  16941. //
  16942. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  16943. //------------------------------------------------------------------------------
  16944. const
  16945.   DMO_E_INVALIDSTREAMINDEX = HResult($80040201);
  16946.   {$EXTERNALSYM DMO_E_INVALIDSTREAMINDEX}
  16947.   DMO_E_INVALIDTYPE        = HResult($80040202);
  16948.   {$EXTERNALSYM DMO_E_INVALIDTYPE}
  16949.   DMO_E_TYPE_NOT_SET       = HResult($80040203);
  16950.   {$EXTERNALSYM DMO_E_TYPE_NOT_SET}
  16951.   DMO_E_NOTACCEPTING       = HResult($80040204);
  16952.   {$EXTERNALSYM DMO_E_NOTACCEPTING}
  16953.   DMO_E_TYPE_NOT_ACCEPTED  = HResult($80040205);
  16954.   {$EXTERNALSYM DMO_E_TYPE_NOT_ACCEPTED}
  16955.   DMO_E_NO_MORE_ITEMS      = HResult($80040206);
  16956.   {$EXTERNALSYM DMO_E_NO_MORE_ITEMS}
  16957.  
  16958. //------------------------------------------------------------------------------
  16959. // File: MedParam.h
  16960. // Desc: Definition of the IMediaParams and associated interfaces. These
  16961. //       interfaces are designed to allow communication of curve-following
  16962. //       behaviors for parameters of objects which require dynamic changes
  16963. //       to their parameters at run time. All changes are specified by
  16964. //       timestamp and curve type to ensure the parameters can be set
  16965. //       at sufficient accuracy with predictable behavior on subsequent
  16966. //       playback of the same curves.
  16967. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  16968. //------------------------------------------------------------------------------
  16969.  
  16970. const
  16971.   IID_IMediaParamInfo : TGUID = '{6d6cbb60-a223-44aa-842f-a2f06750be6d}';
  16972.   {$EXTERNALSYM IID_IMediaParamInfo}
  16973.   IID_IMediaParams    : TGUID = '{6d6cbb61-a223-44aa-842f-a2f06750be6e}';
  16974.   {$EXTERNALSYM IID_IMediaParams}
  16975.  
  16976.   GUID_TIME_REFERENCE : TGUID = (D1:$93ad712b;D2:$daa0;D3:$4ffe;D4:($bc,$81,$b0,$ce,$50,$f ,$cd,$d9));
  16977.   {$EXTERNALSYM GUID_TIME_REFERENCE}
  16978.   GUID_TIME_MUSIC     : TGUID = (D1:$574c49d ;D2:$5b04;D3:$4b15;D4:($a5,$42,$ae,$28,$20,$30,$11,$7b));
  16979.   {$EXTERNALSYM GUID_TIME_MUSIC}
  16980.   GUID_TIME_SAMPLES   : TGUID = (D1:$a8593d05;D2:$c43 ;D3:$4984;D4:($9a,$63,$97,$af,$9e,$2 ,$c4,$c0));
  16981.   {$EXTERNALSYM GUID_TIME_SAMPLES}
  16982.  
  16983. type
  16984.   MP_DATA = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Single;
  16985.   {$EXTERNALSYM MP_DATA}
  16986.   MPData = MP_DATA;
  16987.   
  16988.   _MP_Type = (
  16989.     MPT_INT,
  16990.     MPT_FLOAT,
  16991.     MPT_BOOL,
  16992.     MPT_ENUM,
  16993.     MPT_MAX
  16994.   );
  16995.   {$EXTERNALSYM _MP_Type}
  16996.   MP_TYPE = _MP_Type;
  16997.   {$EXTERNALSYM MP_TYPE}
  16998.   TMPTYPE = MP_TYPE;
  16999.  
  17000. const
  17001.   MPBOOL_TRUE  = 1;
  17002.   {$EXTERNALSYM MPBOOL_TRUE}
  17003.   MPBOOL_FALSE = 0;
  17004.   {$EXTERNALSYM MPBOOL_FALSE}
  17005.  
  17006. type
  17007.   MP_CURVE_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  17008.   {$EXTERNALSYM MP_CURVE_TYPE}
  17009.   MPCurveType = MP_CURVE_TYPE;
  17010.   const
  17011.     MP_CURVE_JUMP         = $1;
  17012.     {$EXTERNALSYM MP_CURVE_JUMP}
  17013.     MP_CURVE_LINEAR    = $2;
  17014.     {$EXTERNALSYM MP_CURVE_LINEAR}
  17015.     MP_CURVE_SQUARE    = $4;
  17016.     {$EXTERNALSYM MP_CURVE_SQUARE}
  17017.     MP_CURVE_INVSQUARE = $8;
  17018.     {$EXTERNALSYM MP_CURVE_INVSQUARE}
  17019.     MP_CURVE_SINE         = $10;
  17020.     {$EXTERNALSYM MP_CURVE_SINE}
  17021.  
  17022. type
  17023.   MP_CAPS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  17024.   {$EXTERNALSYM MP_CAPS}
  17025.   MPCaps = MP_CAPS;
  17026.   const
  17027.     MP_CAPS_CURVE_JUMP      = MP_CURVE_JUMP;
  17028.     {$EXTERNALSYM MP_CAPS_CURVE_JUMP}
  17029.     MP_CAPS_CURVE_LINEAR      = MP_CURVE_LINEAR;
  17030.     {$EXTERNALSYM MP_CAPS_CURVE_LINEAR}
  17031.     MP_CAPS_CURVE_SQUARE      = MP_CURVE_SQUARE;
  17032.     {$EXTERNALSYM MP_CAPS_CURVE_SQUARE}
  17033.     MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE;
  17034.     {$EXTERNALSYM MP_CAPS_CURVE_INVSQUARE}
  17035.     MP_CAPS_CURVE_SINE        = MP_CURVE_SINE;
  17036.     {$EXTERNALSYM MP_CAPS_CURVE_SINE}
  17037.  
  17038. type
  17039.   _MP_PARAMINFO = record
  17040.     mpType          : TMPType;
  17041.     mopCaps         : MPCaps;
  17042.     mpdMinValue     : MPData;
  17043.     mpdMaxValue     : MPData;
  17044.     mpdNeutralValue : MPData;
  17045.     szUnitText      : array[0..31] of WCHAR;
  17046.     szLabel         : array[0..31] of WCHAR;
  17047.   end;
  17048.   {$EXTERNALSYM _MP_PARAMINFO}
  17049.   MP_PARAMINFO = _MP_PARAMINFO;
  17050.   {$EXTERNALSYM MP_PARAMINFO}
  17051.   TMPParamInfo = _MP_PARAMINFO;
  17052.  
  17053. const
  17054.   DWORD_ALLPARAMS = -1;
  17055.   {$EXTERNALSYM DWORD_ALLPARAMS}
  17056.  
  17057. type
  17058.   MP_TIMEDATA = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  17059.   {$EXTERNALSYM MP_TIMEDATA}
  17060.   MPTimeData = MP_TIMEDATA;
  17061.  
  17062.   MP_FLAGS    = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  17063.   {$EXTERNALSYM MP_FLAGS}
  17064.   MPFlags = MP_FLAGS;
  17065.  
  17066. const
  17067.   MPF_ENVLP_STANDARD         = $0;
  17068.   {$EXTERNALSYM MPF_ENVLP_STANDARD}
  17069.   MPF_ENVLP_BEGIN_CURRENTVAL = $1;
  17070.   {$EXTERNALSYM MPF_ENVLP_BEGIN_CURRENTVAL}
  17071.   MPF_ENVLP_BEGIN_NEUTRALVAL = $2;
  17072.   {$EXTERNALSYM MPF_ENVLP_BEGIN_NEUTRALVAL}
  17073.  
  17074. type
  17075.   _MP_ENVELOPE_SEGMENT = record
  17076.     rtStart  : TReferenceTime;
  17077.     rtEnd    : TReferenceTime;
  17078.     valStart : MPData;
  17079.     valEnd   : MPData;
  17080.     iCurve   : MPCURVETYPE;
  17081.     flags    : MPFlags;
  17082.   end;
  17083.   {$EXTERNALSYM _MP_ENVELOPE_SEGMENT}
  17084.   MP_ENVELOPE_SEGMENT = _MP_ENVELOPE_SEGMENT;
  17085.   {$EXTERNALSYM MP_ENVELOPE_SEGMENT}
  17086.   TMPEnvelopeSegment = _MP_ENVELOPE_SEGMENT;
  17087.   
  17088.  
  17089. const
  17090.   MPF_PUNCHIN_REFTIME =    $0;
  17091.   {$EXTERNALSYM MPF_PUNCHIN_REFTIME}
  17092.   MPF_PUNCHIN_NOW     =    $1;
  17093.   {$EXTERNALSYM MPF_PUNCHIN_NOW}
  17094.   MPF_PUNCHIN_STOPPED =    $2;
  17095.   {$EXTERNALSYM MPF_PUNCHIN_STOPPED}
  17096.  
  17097. type
  17098.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaParamInfo> _di_IMediaParamInfo;'}
  17099.   {$EXTERNALSYM IMediaParamInfo}
  17100.   IMediaParamInfo = interface(IUnknown)
  17101.     ['{6d6cbb60-a223-44aa-842f-a2f06750be6d}']
  17102.     (*** IMediaParamInfo methods ***)
  17103.     function GetParamCount(out pdwParams: DWORD): HResult; stdcall;
  17104.     function GetParamInfo(dwParamIndex: DWORD; out pInfo: TMPPARAMINFO): HResult; stdcall;
  17105.     function GetParamText(dwParamIndex: DWORD; out ppwchText: PWideChar): HResult; stdcall;
  17106.     function GetNumTimeFormats(out pdwNumTimeFormats: DWORD): HResult; stdcall;
  17107.     function GetSupportedTimeFormat(dwFormatIndex: DWORD; out pguidTimeFormat: TGUID): HResult; stdcall;
  17108.     function GetCurrentTimeFormat(out pguidTimeFormat: TGUID; out pTimeData: MPTimeData): HResult; stdcall;
  17109.   end;
  17110.  
  17111.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaParams> _di_IMediaParams;'}
  17112.   {$EXTERNALSYM IMediaParams}
  17113.   IMediaParams = interface(IUnknown)
  17114.     ['{6d6cbb61-a223-44aa-842f-a2f06750be6e}']
  17115.     (*** IMediaParams methods ***)
  17116.     function GetParam(dwParamIndex: DWORD; out pValue: MPData): HResult; stdcall;
  17117.     function SetParam(dwParamIndex: DWORD; value: MPData): HResult; stdcall;
  17118.     function AddEnvelope(dwParamIndex, cSegments: DWORD; var pEnvelopeSegments: TMPENVELOPESEGMENT): HResult; stdcall;
  17119.     function FlushEnvelope(dwParamIndex: DWORD; refTimeStart, refTimeEnd: TReferenceTime): HResult; stdcall;
  17120.     function SetTimeFormat(const guidTimeFormat: TGUID; mpTimeData: MPTimeData): HResult; stdcall;
  17121.   end;
  17122.  
  17123. //------------------------------------------------------------------------------
  17124. // File: mediaobj.h
  17125. // Desc: Define the interfaces for DirectX Media Objects.
  17126. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  17127. //------------------------------------------------------------------------------
  17128.  
  17129. const
  17130.   IID_IMediaBuffer                 : TGUID = '{59eff8b9-938c-4a26-82f2-95cb84cdc837}';
  17131.   {$EXTERNALSYM IID_IMediaBuffer}
  17132.   IID_IMediaObject                 : TGUID = '{d8ad0f58-5494-4102-97c5-ec798e59bcf4}';
  17133.   {$EXTERNALSYM IID_IMediaObject}
  17134.   IID_IEnumDMO                     : TGUID = '{2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f}';
  17135.   {$EXTERNALSYM IID_IEnumDMO}
  17136.   IID_IMediaObjectInPlace          : TGUID = '{651b9ad0-0fc7-4aa9-9538-d89931010741}';
  17137.   {$EXTERNALSYM IID_IMediaObjectInPlace}
  17138.   IID_IDMOQualityControl           : TGUID = '{65abea96-cf36-453f-af8a-705e98f16260}';
  17139.   {$EXTERNALSYM IID_IDMOQualityControl}
  17140.   IID_IDMOVideoOutputOptimizations : TGUID = '{be8f4f4e-5b16-4d29-b350-7f6b5d9298ac}';
  17141.   {$EXTERNALSYM IID_IDMOVideoOutputOptimizations}
  17142.  
  17143. type
  17144. //  DMO_MEDIA_TYPE structure
  17145.   DMO_MEDIA_TYPE = AM_MEDIA_TYPE;
  17146.   {$EXTERNALSYM DMO_MEDIA_TYPE}
  17147.   PDMOMediaType = ^TDMOMediaType;
  17148.   TDMOMediaType = DMO_MEDIA_TYPE;
  17149.  
  17150. const
  17151. // Per-buffer flags that apply to input buffers
  17152.   DMO_INPUT_DATA_BUFFERF_SYNCPOINT  = $1;
  17153.   {$EXTERNALSYM DMO_INPUT_DATA_BUFFERF_SYNCPOINT}
  17154.   DMO_INPUT_DATA_BUFFERF_TIME        = $2;
  17155.   {$EXTERNALSYM DMO_INPUT_DATA_BUFFERF_TIME}
  17156.   DMO_INPUT_DATA_BUFFERF_TIMELENGTH = $4;
  17157.   {$EXTERNALSYM DMO_INPUT_DATA_BUFFERF_TIMELENGTH}
  17158.  
  17159. // Per-buffer flags that apply to output buffers.
  17160.   DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT      = $1;
  17161.   {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT}
  17162.   DMO_OUTPUT_DATA_BUFFERF_TIME          = $2;
  17163.   {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_TIME}
  17164.   DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH    = $4;
  17165.   {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH}
  17166.   // This flag means the object could have generated more data for this
  17167.   // output stream, even with no additional input from any input stream,
  17168.   // but the output buffer did not have sufficient room.
  17169.   DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE    = $1000000;
  17170.   {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE}
  17171.  
  17172. // Flags returned by GetInputStatus()
  17173.   // ACCEPT_DATA indicates that the input stream is ready to accept
  17174.   // new data via ProcessInput().
  17175.   DMO_INPUT_STATUSF_ACCEPT_DATA    = $1;
  17176.   {$EXTERNALSYM DMO_INPUT_STATUSF_ACCEPT_DATA}
  17177.  
  17178. // Flags returned by GetInputStreamInfo()
  17179.   DMO_INPUT_STREAMF_WHOLE_SAMPLES         = $1;
  17180.   {$EXTERNALSYM DMO_INPUT_STREAMF_WHOLE_SAMPLES}
  17181.   DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = $2;
  17182.   {$EXTERNALSYM DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER}
  17183.   DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE         = $4;
  17184.   {$EXTERNALSYM DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE}
  17185.   DMO_INPUT_STREAMF_HOLDS_BUFFERS         = $8;
  17186.   {$EXTERNALSYM DMO_INPUT_STREAMF_HOLDS_BUFFERS}
  17187.  
  17188. // Flags returned by GetOutputStreamInfo()
  17189.   DMO_OUTPUT_STREAMF_WHOLE_SAMPLES              = $1;
  17190.   {$EXTERNALSYM DMO_OUTPUT_STREAMF_WHOLE_SAMPLES}
  17191.   DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = $2;
  17192.   {$EXTERNALSYM DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER}
  17193.   DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE          = $4;
  17194.   {$EXTERNALSYM DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE}
  17195.   DMO_OUTPUT_STREAMF_DISCARDABLE                = $8;
  17196.   {$EXTERNALSYM DMO_OUTPUT_STREAMF_DISCARDABLE}
  17197.   DMO_OUTPUT_STREAMF_OPTIONAL                    = $10;
  17198.   {$EXTERNALSYM DMO_OUTPUT_STREAMF_OPTIONAL}
  17199.  
  17200. //  SetType flags
  17201.   DMO_SET_TYPEF_TEST_ONLY = $1;
  17202.   {$EXTERNALSYM DMO_SET_TYPEF_TEST_ONLY}
  17203.   DMO_SET_TYPEF_CLEAR      = $2;
  17204.   {$EXTERNALSYM DMO_SET_TYPEF_CLEAR}
  17205.  
  17206. //  Process Output Flags
  17207.   DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = $1;
  17208.   {$EXTERNALSYM DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER}
  17209.  
  17210. type
  17211. // Buffer wrapper interface
  17212.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaBuffer> _di_IMediaBuffer;'}
  17213.   {$EXTERNALSYM IMediaBuffer}
  17214.   IMediaBuffer = interface(IUnknown)
  17215.     ['{59eff8b9-938c-4a26-82f2-95cb84cdc837}']
  17216.     (*** IMediaBuffer methods ***)
  17217.     function SetLength(cbLength: DWORD): HResult; stdcall;
  17218.     function GetMaxLength(out pcbMaxLength: DWORD): HResult; stdcall;
  17219.     function GetBufferAndLength(ppBuffer: Pointer; // not filled if NULL
  17220.                                 pcbLength: PDWORD  // not filled if NULL
  17221.                                 ): HResult; stdcall;
  17222.   end;
  17223.  
  17224.  
  17225. // Output buffer info structure: one of these must be passed in for each
  17226. // output stream with every ProcessOutput() call
  17227. // All [out] fields should be
  17228. // assumed undefined if ProcessOutput() failed
  17229.   PDMOOutputDataBuffer = ^TDMOOutputDataBuffer;
  17230.   _DMO_OUTPUT_DATA_BUFFER = record
  17231.     pBuffer      : IMediaBuffer;    // [in] can be NULL
  17232.     // ProcessOutput() must set any appropriate flags and zero out the rest.
  17233.     dwStatus     : DWORD;           // [out] DMO_OUTPUT_DATA_BUFFERF_XXX (INCOMPLETE, etc.)
  17234.     // Each of these is valid if the corresponding flag is set in dwStatus
  17235.     rtTimestamp  : TReferenceTime; // [out]
  17236.     rtTimelength : TReferenceTime; // [out]
  17237.   end;
  17238.   {$EXTERNALSYM _DMO_OUTPUT_DATA_BUFFER}
  17239.   DMO_OUTPUT_DATA_BUFFER = _DMO_OUTPUT_DATA_BUFFER;
  17240.   {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFER}
  17241.   TDMOOutputDataBuffer = _DMO_OUTPUT_DATA_BUFFER;
  17242.  
  17243.   PDMO_OUTPUT_DATA_BUFFER = ^_DMO_OUTPUT_DATA_BUFFER;
  17244.   {$EXTERNALSYM PDMO_OUTPUT_DATA_BUFFER}
  17245.  
  17246.   PDMOOutputDataBufferArray = ^TDMOOutputDataBufferArray;
  17247.   TDMOOutputDataBufferArray = array [0..0] of TDMOOutputDataBuffer;
  17248.  
  17249.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaObject> _di_IMediaObject;'}
  17250.   {$EXTERNALSYM IMediaObject}
  17251.   IMediaObject = interface(IUnknown)
  17252.     ['{d8ad0f58-5494-4102-97c5-ec798e59bcf4}']
  17253.     (*** IMediaObject methods ***)
  17254.     function GetStreamCount(out pcInputStreams, pcOutputStreams: DWORD): HResult; stdcall;
  17255.     function GetInputStreamInfo(dwInputStreamIndex: DWORD; out pdwFlags: DWORD): HResult; stdcall;
  17256.     function GetOutputStreamInfo(dwOutputStreamIndex: DWORD; out pdwFlags: DWORD): HResult; stdcall;
  17257.     function GetInputType(dwInputStreamIndex, dwTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  17258.     function GetOutputType(dwOutputStreamIndex, dwTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  17259.     function SetInputType(dwInputStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult; stdcall;
  17260.     function SetOutputType(dwOutputStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult; stdcall;
  17261.     function GetInputCurrentType(dwInputStreamIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  17262.     function GetOutputCurrentType(dwOutputStreamIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  17263.     function GetInputSizeInfo(dwInputStreamIndex: DWORD; out pcbSize, pcbMaxLookahead, pcbAlignment: DWORD): HResult; stdcall;
  17264.     function GetOutputSizeInfo(dwOutputStreamIndex: DWORD; out pcbSize, pcbAlignment: DWORD): HResult; stdcall;
  17265.     function GetInputMaxLatency(dwInputStreamIndex: DWORD; out prtMaxLatency: TReferenceTime): HResult; stdcall;
  17266.     function SetInputMaxLatency(dwInputStreamIndex: DWORD; rtMaxLatency: TReferenceTime): HResult; stdcall;
  17267.     function Flush: HResult; stdcall;
  17268.     function Discontinuity(dwInputStreamIndex: DWORD): HResult; stdcall;
  17269.     function AllocateStreamingResources: HResult; stdcall;
  17270.     function FreeStreamingResources: HResult; stdcall;
  17271.     function GetInputStatus(dwInputStreamIndex: DWORD; out dwFlags: DWORD): HResult; stdcall;
  17272.     function ProcessInput(dwInputStreamIndex: DWORD; pBuffer: IMediaBuffer; dwFlags: DWORD;
  17273.                rtTimestamp, rtTimelength: TReferenceTime): HResult; stdcall;
  17274.     function ProcessOutput(dwFlags, cOutputBufferCount: DWORD; var pOutputBuffers: TDMOOutputDataBufferArray;
  17275.                out pdwStatus: DWORD): HResult; stdcall;
  17276.     function Lock(bLock: longint): HResult; stdcall;
  17277.   end;
  17278.  
  17279.   {$HPPEMIT 'typedef System::DelphiInterface<IEnumDMO> _di_IEnumDMO;'}
  17280.   {$EXTERNALSYM IEnumDMO}
  17281.   IEnumDMO = interface(IUnknown)
  17282.     ['{2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f}']
  17283.     (*** IEnumDMO methods ***)
  17284.     function Next(cItemsToFetch: DWORD; out pCLSID: TGUID; out Names: PWideChar;
  17285.       out pcItemsFetched: DWORD): HResult; stdcall;
  17286.     function Skip(cItemsToSkip: DWORD): HResult; stdcall;
  17287.     function Reset: HResult; stdcall;
  17288.     function Clone(out ppEnum: IEnumDMO): HResult; stdcall;
  17289.   end;
  17290.  
  17291. const
  17292.   DMO_INPLACE_NORMAL = $0;
  17293.   {$EXTERNALSYM DMO_INPLACE_NORMAL}
  17294.   DMO_INPLACE_ZERO   = $1;
  17295.   {$EXTERNALSYM DMO_INPLACE_ZERO}
  17296.  
  17297. type
  17298.   {$HPPEMIT 'typedef System::DelphiInterface<IMediaObjectInPlace> _di_IMediaObjectInPlace;'}
  17299.   {$EXTERNALSYM IMediaObjectInPlace}
  17300.   IMediaObjectInPlace = interface(IUnknown)
  17301.     ['{651b9ad0-0fc7-4aa9-9538-d89931010741}']
  17302.     (*** IMediaObjectInPlace methods ***)
  17303.     function Process(ulSize: ULONG; {in/out} pData: Pointer; refTimeStart: TReferenceTime;
  17304.       dwFlags: DWORD): HResult; stdcall;
  17305.     function Clone(out ppMediaObject: IMediaObjectInPlace): HResult; stdcall;
  17306.     function GetLatency(out pLatencyTime: TReferenceTime): HResult; stdcall;
  17307.   end;
  17308.  
  17309. const
  17310.   DMO_QUALITY_STATUS_ENABLED    = $1;
  17311.   {$EXTERNALSYM DMO_QUALITY_STATUS_ENABLED}
  17312.  
  17313. type
  17314.   {$HPPEMIT 'typedef System::DelphiInterface<IDMOQualityControl> _di_IDMOQualityControl;'}
  17315.   {$EXTERNALSYM IDMOQualityControl}
  17316.   IDMOQualityControl = interface(IUnknown)
  17317.     ['{65abea96-cf36-453f-af8a-705e98f16260}']
  17318.     (*** IDMOQualityControl methods ***)
  17319.     function SetNow(rtNow: TReferenceTime): HResult; stdcall;
  17320.     function SetStatus(dwFlags: DWORD): HResult; stdcall;
  17321.     function GetStatus(out pdwFlags: DWORD): HResult; stdcall;
  17322.   end;
  17323.  
  17324. const
  17325.   DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = $1;
  17326.   {$EXTERNALSYM DMO_VOSF_NEEDS_PREVIOUS_SAMPLE}
  17327.  
  17328. type
  17329.   {$HPPEMIT 'typedef System::DelphiInterface<IDMOVideoOutputOptimizations> _di_IDMOVideoOutputOptimizations;'}
  17330.   {$EXTERNALSYM IDMOVideoOutputOptimizations}
  17331.   IDMOVideoOutputOptimizations = interface(IUnknown)
  17332.     ['{be8f4f4e-5b16-4d29-b350-7f6b5d9298ac}']
  17333.     (*** IDMOVideoOutputOptimizations methods ***)
  17334.     function QueryOperationModePreferences(ulOutputStreamIndex: ULONG;
  17335.       var pdwRequestedCapabilities: DWORD): HResult; stdcall;
  17336.     function SetOperationMode(ulOutputStreamIndex: ULONG;
  17337.       dwEnabledFeatures: DWORD): HResult; stdcall;
  17338.     function GetCurrentOperationMode(ulOutputStreamIndex: ULONG;
  17339.       var pdwEnabledFeatures: DWORD): HResult; stdcall;
  17340.     function GetCurrentSampleRequirements(ulOutputStreamIndex: ULONG;
  17341.       var pdwRequestedFeatures: DWORD): HResult; stdcall;
  17342.   end;
  17343.  
  17344. (************************************************************************
  17345. *                                                                       *
  17346. *   dmodshow.h -- This module defines the DirectMusic core API's        *
  17347. *                                                                       *
  17348. *   Copyright (c) 1998, Microsoft Corp. All rights reserved.            *
  17349. *                                                                       *
  17350. ************************************************************************)
  17351. const
  17352.   IID_IDMOWrapperFilter   : TGUID = '{52d6f586-9f0f-4824-8fc8-e32ca04930c2}';
  17353.   {$EXTERNALSYM IID_IDMOWrapperFilter}
  17354.   CLSID_DMOWrapperFilter  : TGUID = '{94297043-bd82-4dfd-b0de-8177739c6d20}';
  17355.   {$EXTERNALSYM CLSID_DMOWrapperFilter}
  17356.   CLSID_DMOFilterCategory : TGUID = '{bcd5796c-bd52-4d30-ab76-70f975b89199}';
  17357.   {$EXTERNALSYM CLSID_DMOFilterCategory}
  17358.  
  17359. type
  17360.   {$HPPEMIT 'typedef System::DelphiInterface<IDMOWrapperFilter> _di_IDMOWrapperFilter;'}
  17361.   {$EXTERNALSYM IDMOWrapperFilter}
  17362.   IDMOWrapperFilter = interface(IUnknown)
  17363.     ['{52d6f586-9f0f-4824-8fc8-e32ca04930c2}']
  17364.     (*** IDMOWrapperFilter methods ***)
  17365.     function Init(const clsidDMO, catDMO: TGUID): HResult; stdcall;
  17366.   end;
  17367.  
  17368. //------------------------------------------------------------------------------
  17369. // File: DMOReg.h
  17370. //
  17371. // Desc:
  17372. //
  17373. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  17374. //------------------------------------------------------------------------------
  17375.  
  17376. const
  17377.   DMOCATEGORY_AUDIO_DECODER        : TGUID = '{57f2db8b-e6bb-4513-9d43-dcd2a6593125}';
  17378.   {$EXTERNALSYM DMOCATEGORY_AUDIO_DECODER}
  17379.   DMOCATEGORY_AUDIO_ENCODER        : TGUID = '{33D9A761-90C8-11d0-BD43-00A0C911CE86}';
  17380.   {$EXTERNALSYM DMOCATEGORY_AUDIO_ENCODER}
  17381.   DMOCATEGORY_VIDEO_DECODER        : TGUID = '{4a69b442-28be-4991-969c-b500adf5d8a8}';
  17382.   {$EXTERNALSYM DMOCATEGORY_VIDEO_DECODER}
  17383.   DMOCATEGORY_VIDEO_ENCODER        : TGUID = '{33D9A760-90C8-11d0-BD43-00A0C911CE86}';
  17384.   {$EXTERNALSYM DMOCATEGORY_VIDEO_ENCODER}
  17385.   DMOCATEGORY_AUDIO_EFFECT         : TGUID = '{f3602b3f-0592-48df-a4cd-674721e7ebeb}';
  17386.   {$EXTERNALSYM DMOCATEGORY_AUDIO_EFFECT}
  17387.   DMOCATEGORY_VIDEO_EFFECT         : TGUID = '{d990ee14-776c-4723-be46-3da2f56f10b9}';
  17388.   {$EXTERNALSYM DMOCATEGORY_VIDEO_EFFECT}
  17389.   DMOCATEGORY_AUDIO_CAPTURE_EFFECT : TGUID = '{f665aaba-3e09-4920-aa5f-219811148f09}';
  17390.   {$EXTERNALSYM DMOCATEGORY_AUDIO_CAPTURE_EFFECT}
  17391.  
  17392. // Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1}
  17393. // Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h
  17394.   DMOCATEGORY_ACOUSTIC_ECHO_CANCEL : TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}';
  17395.   {$EXTERNALSYM DMOCATEGORY_ACOUSTIC_ECHO_CANCEL}
  17396.  
  17397. // Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5}
  17398. // Matches KSNODETYPE_AUDIO_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h
  17399.   DMOCATEGORY_AUDIO_NOISE_SUPPRESS : TGUID = '{E07F903F-62FD-4e60-8CDD-DEA7236665B5}';
  17400.   {$EXTERNALSYM DMOCATEGORY_AUDIO_NOISE_SUPPRESS}
  17401.  
  17402. // Automatic Gain Control {E88C9BA0-C557-11D0-8A2B-00A0C9255AC1}
  17403. // Matches KSNODETYPE_AGC in ksmedia.h
  17404.   DMOCATEGORY_AGC                  : TGUID = '{E88C9BA0-C557-11D0-8A2B-00A0C9255AC1}';
  17405.   {$EXTERNALSYM DMOCATEGORY_AGC}
  17406.  
  17407. type
  17408.   PDMOPartialMediaType = ^TDMOPartialMediaType;
  17409.   _DMO_PARTIAL_MEDIATYPE = record
  17410.     type_    : TGUID;
  17411.     subtype  : TGUID;
  17412.   end;
  17413.   {$EXTERNALSYM _DMO_PARTIAL_MEDIATYPE}
  17414.   DMO_PARTIAL_MEDIATYPE = _DMO_PARTIAL_MEDIATYPE;
  17415.   {$EXTERNALSYM DMO_PARTIAL_MEDIATYPE}
  17416.   PDMO_PARTIAL_MEDIATYPE = DMO_PARTIAL_MEDIATYPE;
  17417.   {$EXTERNALSYM PDMO_PARTIAL_MEDIATYPE}
  17418.   TDMOPartialMediaType = _DMO_PARTIAL_MEDIATYPE;
  17419.  
  17420. const
  17421.   DMO_REGISTERF_IS_KEYED   = $00000001;
  17422.   {$EXTERNALSYM DMO_REGISTERF_IS_KEYED}
  17423.   DMO_ENUMF_INCLUDE_KEYED  = $00000001;
  17424.   {$EXTERNALSYM DMO_ENUMF_INCLUDE_KEYED}
  17425.  
  17426. type
  17427.   TDMOName = array[0..79] of WCHAR;
  17428.  
  17429.   function DMORegister(szName: PWideChar; const clsidDMO, guidCategory: TGUID; dwFlags: DWORD; // DMO_REGISTERF_XXX
  17430.      // Register all mediatypes supported by the object.  This carries no
  17431.      // information about which combinations of input/output types would
  17432.      // actually work.
  17433.      cInTypes: DWORD; const pInTypes: PDMO_PARTIAL_MEDIATYPE; cOutTypes: DWORD;
  17434.      const pOutTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  17435.   {$EXTERNALSYM DMORegister}
  17436.  
  17437.   function DMOUnregister(const clsidDMO,
  17438.      guidCategory: TGUID// optional - GUID_NULL means unregister from all
  17439.      ): HResult; stdcall;
  17440.   {$EXTERNALSYM DMOUnregister}
  17441.  
  17442.  
  17443.   function DMOEnum(
  17444.      const guidCategory: TGUID; // GUID_NULL for "all"
  17445.      dwFlags: DWORD;      // DMO_ENUMF_XXX
  17446.      //
  17447.     // Enumerate only objects that support at least one of the specified input types
  17448.     // and at least one of the specified output types.  If no input types are specified,
  17449.     // enumerate objects regardless of what input types they support.  Same for
  17450.     // output types.
  17451.      //
  17452.      cInTypes: DWORD;
  17453.      pInTypes: PDMO_PARTIAL_MEDIATYPE;  // can be NULL only of ulInTypes = 0
  17454.      cOutTypes: DWORD;
  17455.      pOutTypes: PDMO_PARTIAL_MEDIATYPE; // can be NULL only of ulOutTypes = 0
  17456.      //
  17457.      // Output parameter - this receives a pointer to the DMO CLSID enumerator
  17458.      //
  17459.      out ppEnum: IEnumDMO): HResult; stdcall;
  17460.   {$EXTERNALSYM DMOEnum}
  17461.  
  17462.   function DMOGetTypes(
  17463.      const clsidDMO: TGUID;
  17464.      ulInputTypesRequested: ULONG;
  17465.      pulInputTypesSupplied: PULONG;
  17466.      pInputTypes: PDMO_PARTIAL_MEDIATYPE;
  17467.      ulOutputTypesRequested: ULONG;
  17468.      pulOutputTypesSupplied: PULONG;
  17469.      pOutputTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  17470.   {$EXTERNALSYM DMOGetTypes}
  17471.  
  17472.   function DMOGetName(const clsidDMO: TGUID; szName: TDMOName): HResult; stdcall;
  17473.   {$EXTERNALSYM DMOGetName}
  17474.  
  17475. //------------------------------------------------------------------------------
  17476. // File: DMORt.h
  17477. //
  17478. // Desc: Miscellaneous runtime support for DirectShow Media Objects
  17479. //
  17480. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  17481. //------------------------------------------------------------------------------
  17482.  
  17483. // Mediatype helpers.  MoInitMediaType() goes with MoFreeMediaType(),
  17484. // MoCreateMediaType() goes with MoDeleteMediaType() - don't mix !
  17485.  
  17486. // Takes a pointer to an already allocated DMO_MEDIA_TYPE structure, allocates
  17487. // a format block of cbFormat bytes, and sets appropriate members of
  17488. // DMO_MEDIA_TYPE to point to the newly allocated format block.  Also
  17489. // initializes the IUnknown pointer inside DMO_MEDIA_TYPE to NULL.
  17490. //
  17491. // The format block allocated by MoInitMediaType must be freed by calling
  17492. // MoFreeMediaType().
  17493.   function MoInitMediaType(pmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  17494.   {$EXTERNALSYM MoInitMediaType}
  17495.  
  17496. // Frees the format block and releases any IUnknown, but does not free the
  17497. // DMO_MEDIA_TYPE structure itself.  Input parameter must point to an
  17498. // DMO_MEDIA_TYPE structure previously initialized by MoInitMediaType().
  17499.   function MoFreeMediaType(pmt: PDMOMediaType): HResult; stdcall;
  17500.   {$EXTERNALSYM MoFreeMediaType}
  17501.  
  17502. // Copies the DMO_MEDIA_TYPE members.  Also duplicates the format block and
  17503. // the IUnknown pointer.  Both parameters must point to valid DMO_MEDIA_TYPE
  17504. // structures.  Target structure must be later freed using MoFreeMediaType().
  17505.   function MoCopyMediaType(out pmtDest: TDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  17506.   {$EXTERNALSYM MoCopyMediaType}
  17507.  
  17508. // Allocates a new DMO_MEDIA_TYPE structure and initializes it just like
  17509. // MoInitMediaType.  I.e., this function allocates both the format block
  17510. // and the DMO_MEDIA_TYPE structure itself.  Pointer to DMO_MEDIA_TYPE is
  17511. // returned as *ppmt.
  17512. //
  17513. // DMO_MEDIA_TYPE structures allocated by MoCreateMediaType() must be freed
  17514. // by calling MoDeleteMediaType().
  17515.   function MoCreateMediaType(out ppmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  17516.   {$EXTERNALSYM MoCreateMediaType}
  17517.  
  17518. // Frees any format block, releases any IUnknown, and deletes the
  17519. // DMO_MEDIA_TYPE structure itself.  The input parameter must point to an
  17520. // DMO_MEDIA_TYPE structure previously allocated by MoCreateMediaType().
  17521.   function MoDeleteMediaType(pmt: PDMOMediaType): HResult; stdcall;
  17522.   {$EXTERNALSYM MoDeleteMediaType}
  17523.  
  17524. // Allocates a new DMO_MEDIA_TYPE structure and copies pmtSrc into it like
  17525. // MoCopyMediaType.  I.e., this function allocates a new DMO_MEDIA_TYPE struct
  17526. // as well as a new format block for the target mediatype.  Trager mediatype
  17527. // must later be freed using MoDeleteMediaType().
  17528.   function MoDuplicateMediaType(out ppmtDest: PDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  17529.   {$EXTERNALSYM MoDuplicateMediaType}
  17530.  
  17531. {===============================================================================
  17532.  *
  17533.  * Copyright (C) Microsoft Corporation, 1996 - 1999
  17534.  *
  17535.  * Module Name: ks.h
  17536.  * Abstract:
  17537.  *   Windows Driver Model/Connection and Streaming Architecture (WDM-CSA)
  17538.  *   core definitions.
  17539.  *
  17540.  * Note : All _NTDDK_ specific definitions have been removed from original file
  17541.  *        because never used in DX8SDK.
  17542.  ===============================================================================}
  17543. const
  17544. //===========================================================================
  17545.   IOCTL_KS_PROPERTY      = DWORD(3080195);
  17546.   {$EXTERNALSYM IOCTL_KS_PROPERTY}
  17547.   IOCTL_KS_ENABLE_EVENT  = DWORD(3080199);
  17548.   {$EXTERNALSYM IOCTL_KS_ENABLE_EVENT}
  17549.   IOCTL_KS_DISABLE_EVENT = DWORD(3080203);
  17550.   {$EXTERNALSYM IOCTL_KS_DISABLE_EVENT}
  17551.   IOCTL_KS_METHOD        = DWORD(3080207);
  17552.   {$EXTERNALSYM IOCTL_KS_METHOD}
  17553.   IOCTL_KS_WRITE_STREAM  = DWORD(3112979);
  17554.   {$EXTERNALSYM IOCTL_KS_WRITE_STREAM}
  17555.   IOCTL_KS_READ_STREAM   = DWORD(3096599);
  17556.   {$EXTERNALSYM IOCTL_KS_READ_STREAM}
  17557.   IOCTL_KS_RESET_STATE   = DWORD(3080219);
  17558.   {$EXTERNALSYM IOCTL_KS_RESET_STATE}
  17559. //===========================================================================
  17560.  
  17561. type
  17562.   KSRESET = (
  17563.     KSRESET_BEGIN,
  17564.     KSRESET_END
  17565.   );
  17566.   {$EXTERNALSYM KSRESET}
  17567.   TKSReset = KSRESET;
  17568.  
  17569.   KSSTATE = (
  17570.     KSSTATE_STOP,
  17571.     KSSTATE_ACQUIRE,
  17572.     KSSTATE_PAUSE,
  17573.     KSSTATE_RUN
  17574.   );
  17575.   {$EXTERNALSYM KSSTATE}
  17576.   PKSSTATE = ^KSSTATE;
  17577.   {$EXTERNALSYM PKSSTATE}
  17578.   TKSState = KSSTATE;
  17579.  
  17580. const
  17581.   KSPRIORITY_LOW       = $00000001;
  17582.   {$EXTERNALSYM KSPRIORITY_LOW}
  17583.   KSPRIORITY_NORMAL    = $40000000;
  17584.   {$EXTERNALSYM KSPRIORITY_NORMAL}
  17585.   KSPRIORITY_HIGH      = $80000000;
  17586.   {$EXTERNALSYM KSPRIORITY_HIGH}
  17587.   KSPRIORITY_EXCLUSIVE = $FFFFFFFF;
  17588.   {$EXTERNALSYM KSPRIORITY_EXCLUSIVE}
  17589.  
  17590. type
  17591.   KSPRIORITY = record
  17592.     PriorityClass    : ULONG;
  17593.     PrioritySubClass : ULONG;
  17594.   end;
  17595.   {$EXTERNALSYM KSPRIORITY}
  17596.   PKSPRIORITY = ^KSPRIORITY;
  17597.   {$EXTERNALSYM PKSPRIORITY}
  17598.   TKSPriority = KSPRIORITY;
  17599.  
  17600.   KSIDENTIFIER = record
  17601.     case Integer of
  17602.       0: (
  17603.         Set_  : TGUID;
  17604.         Id    : ULONG;
  17605.         Flags : ULONG);
  17606.       1: (
  17607.         Alignment : int64);
  17608.   end;
  17609.   {$EXTERNALSYM KSIDENTIFIER}
  17610.   PKSIDENTIFIER = ^KSIDENTIFIER;
  17611.   {$EXTERNALSYM PKSIDENTIFIER}
  17612.   TKSIdentifier = KSIDENTIFIER;
  17613.  
  17614.   KSPROPERTY  = {$IFDEF TYPE_IDENTITY}type {$ENDIF} KSIDENTIFIER;
  17615.   {$EXTERNALSYM KSPROPERTY}
  17616.   PKSPROPERTY = ^KSPROPERTY;
  17617.   {$EXTERNALSYM PKSPROPERTY}
  17618.   KSMETHOD    = PKSPROPERTY;
  17619.   {$EXTERNALSYM KSMETHOD}
  17620.   PKSMETHOD   = ^KSMETHOD;
  17621.   {$EXTERNALSYM PKSMETHOD}
  17622.   KSEVENT     = PKSMETHOD;
  17623.   {$EXTERNALSYM KSEVENT}
  17624.   PKSEVENT    = ^KSEVENT;
  17625.   {$EXTERNALSYM PKSEVENT}
  17626.  
  17627. const
  17628.   KSMETHOD_TYPE_NONE             = $00000000;
  17629.   {$EXTERNALSYM KSMETHOD_TYPE_NONE}
  17630.   KSMETHOD_TYPE_READ             = $00000001;
  17631.   {$EXTERNALSYM KSMETHOD_TYPE_READ}
  17632.   KSMETHOD_TYPE_WRITE            = $00000002;
  17633.   {$EXTERNALSYM KSMETHOD_TYPE_WRITE}
  17634.   KSMETHOD_TYPE_MODIFY           = $00000003;
  17635.   {$EXTERNALSYM KSMETHOD_TYPE_MODIFY}
  17636.   KSMETHOD_TYPE_SOURCE           = $00000004;
  17637.   {$EXTERNALSYM KSMETHOD_TYPE_SOURCE}
  17638.  
  17639.   KSMETHOD_TYPE_SEND             = $00000001;
  17640.   {$EXTERNALSYM KSMETHOD_TYPE_SEND}
  17641.   KSMETHOD_TYPE_SETSUPPORT       = $00000100;
  17642.   {$EXTERNALSYM KSMETHOD_TYPE_SETSUPPORT}
  17643.   KSMETHOD_TYPE_BASICSUPPORT     = $00000200;
  17644.   {$EXTERNALSYM KSMETHOD_TYPE_BASICSUPPORT}
  17645.  
  17646.   KSMETHOD_TYPE_TOPOLOGY         = $10000000;
  17647.   {$EXTERNALSYM KSMETHOD_TYPE_TOPOLOGY}
  17648.  
  17649.   KSPROPERTY_TYPE_GET            = $00000001;
  17650.   {$EXTERNALSYM KSPROPERTY_TYPE_GET}
  17651.   KSPROPERTY_TYPE_SET            = $00000002;
  17652.   {$EXTERNALSYM KSPROPERTY_TYPE_SET}
  17653.   KSPROPERTY_TYPE_SETSUPPORT     = $00000100;
  17654.   {$EXTERNALSYM KSPROPERTY_TYPE_SETSUPPORT}
  17655.   KSPROPERTY_TYPE_BASICSUPPORT   = $00000200;
  17656.   {$EXTERNALSYM KSPROPERTY_TYPE_BASICSUPPORT}
  17657.   KSPROPERTY_TYPE_RELATIONS      = $00000400;
  17658.   {$EXTERNALSYM KSPROPERTY_TYPE_RELATIONS}
  17659.   KSPROPERTY_TYPE_SERIALIZESET   = $00000800;
  17660.   {$EXTERNALSYM KSPROPERTY_TYPE_SERIALIZESET}
  17661.   KSPROPERTY_TYPE_UNSERIALIZESET = $00001000;
  17662.   {$EXTERNALSYM KSPROPERTY_TYPE_UNSERIALIZESET}
  17663.   KSPROPERTY_TYPE_SERIALIZERAW   = $00002000;
  17664.   {$EXTERNALSYM KSPROPERTY_TYPE_SERIALIZERAW}
  17665.   KSPROPERTY_TYPE_UNSERIALIZERAW = $00004000;
  17666.   {$EXTERNALSYM KSPROPERTY_TYPE_UNSERIALIZERAW}
  17667.   KSPROPERTY_TYPE_SERIALIZESIZE  = $00008000;
  17668.   {$EXTERNALSYM KSPROPERTY_TYPE_SERIALIZESIZE}
  17669.   KSPROPERTY_TYPE_DEFAULTVALUES  = $00010000;
  17670.   {$EXTERNALSYM KSPROPERTY_TYPE_DEFAULTVALUES}
  17671.  
  17672.   KSPROPERTY_TYPE_TOPOLOGY       = $10000000;
  17673.   {$EXTERNALSYM KSPROPERTY_TYPE_TOPOLOGY}
  17674.  
  17675. type
  17676.   PKSPNode = ^TKSPNode;
  17677.   KSP_NODE = record
  17678.     Property_ : KSPROPERTY;
  17679.     NodeId    : ULONG;
  17680.     Reserved  : ULONG;
  17681.   end;
  17682.   {$EXTERNALSYM KSP_NODE}
  17683.   PKSP_NODE = ^KSP_NODE;
  17684.   {$EXTERNALSYM PKSP_NODE}
  17685.   TKSPNode = KSP_NODE;
  17686.  
  17687.   PKSMNode = ^TKSMNode;
  17688.   KSM_NODE = record
  17689.     Method   : KSMETHOD;
  17690.     NodeId   : ULONG;
  17691.     Reserved : ULONG;
  17692.   end;
  17693.   {$EXTERNALSYM KSM_NODE}
  17694.   PKSM_NODE = ^KSM_NODE;
  17695.   {$EXTERNALSYM PKSM_NODE}
  17696.   TKSMNode = KSM_NODE;
  17697.  
  17698.   PKSENode = ^TKSENode;
  17699.   KSE_NODE = record
  17700.     Event    : KSEVENT;
  17701.     NodeId   : ULONG;
  17702.     Reserved : ULONG;
  17703.   end;
  17704.   {$EXTERNALSYM KSE_NODE}
  17705.   PKSE_NODE = ^KSE_NODE;
  17706.   {$EXTERNALSYM PKSE_NODE}
  17707.   TKSENode = KSE_NODE;
  17708.  
  17709. const
  17710.   KSPROPTYPESETID_General : TGUID = '{97E99BA0-BDEA-11CF-A5D6-28DB04C10000}';
  17711.   {$EXTERNALSYM KSPROPTYPESETID_General}
  17712.  
  17713. type
  17714.   PKSMultipleItem = ^TKSMultipleItem;
  17715.   KSMULTIPLE_ITEM = record
  17716.     Size  : ULONG;
  17717.     Count : ULONG;
  17718.   end;
  17719.   {$EXTERNALSYM KSMULTIPLE_ITEM}
  17720.   PKSMULTIPLE_ITEM = ^KSMULTIPLE_ITEM;
  17721.   {$EXTERNALSYM PKSMULTIPLE_ITEM}
  17722.   TKSMultipleItem = KSMULTIPLE_ITEM;
  17723.  
  17724.   PKSPropertyDescription = ^TKSPropertyDescription;
  17725.   KSPROPERTY_DESCRIPTION = record
  17726.     AccessFlags      : ULONG;
  17727.     DescriptionSize  : ULONG;
  17728.     PropTypeSet      : TKSIDENTIFIER;
  17729.     MembersListCount : ULONG;
  17730.     Reserved         : ULONG;
  17731.   end;
  17732.   {$EXTERNALSYM KSPROPERTY_DESCRIPTION}
  17733.   PKSPROPERTY_DESCRIPTION = ^KSPROPERTY_DESCRIPTION;
  17734.   {$EXTERNALSYM PKSPROPERTY_DESCRIPTION}
  17735.   TKSPropertyDescription = KSPROPERTY_DESCRIPTION;
  17736.  
  17737. const
  17738.   KSPROPERTY_MEMBER_RANGES        = $00000001;
  17739.   {$EXTERNALSYM KSPROPERTY_MEMBER_RANGES}
  17740.   KSPROPERTY_MEMBER_STEPPEDRANGES = $00000002;
  17741.   {$EXTERNALSYM KSPROPERTY_MEMBER_STEPPEDRANGES}
  17742.   KSPROPERTY_MEMBER_VALUES        = $00000003;
  17743.   {$EXTERNALSYM KSPROPERTY_MEMBER_VALUES}
  17744.  
  17745.   KSPROPERTY_MEMBER_FLAG_DEFAULT  = $00000001;
  17746.   {$EXTERNALSYM KSPROPERTY_MEMBER_FLAG_DEFAULT}
  17747.  
  17748. type
  17749.   PKSPropertyMembersHeader = ^TKSPropertyMembersHeader;
  17750.   KSPROPERTY_MEMBERSHEADER = record
  17751.     MembersFlags : ULONG;
  17752.     MembersSize  : ULONG;
  17753.     MembersCount : ULONG;
  17754.     Flags        : ULONG;
  17755.   end;
  17756.   {$EXTERNALSYM KSPROPERTY_MEMBERSHEADER}
  17757.   PKSPROPERTY_MEMBERSHEADER = ^KSPROPERTY_MEMBERSHEADER;
  17758.   {$EXTERNALSYM PKSPROPERTY_MEMBERSHEADER}
  17759.   TKSPropertyMembersHeader = KSPROPERTY_MEMBERSHEADER;
  17760.  
  17761.   PKSPropertyBoundsLong = ^TKSPropertyBoundsLong;
  17762.   KSPROPERTY_BOUNDS_LONG = record
  17763.     case Integer of
  17764.       0: (
  17765.         SignedMinimum   : Longint;
  17766.         SignedMaximum   : Longint);
  17767.       1: (
  17768.         UnsignedMinimum : ULONG;
  17769.         UnsignedMaximum : ULONG);
  17770.   end;
  17771.   {$EXTERNALSYM KSPROPERTY_BOUNDS_LONG}
  17772.   PKSPROPERTY_BOUNDS_LONG = ^KSPROPERTY_BOUNDS_LONG;
  17773.   {$EXTERNALSYM PKSPROPERTY_BOUNDS_LONG}
  17774.   TKSPropertyBoundsLong = KSPROPERTY_BOUNDS_LONG;
  17775.  
  17776.   PKSPropertyBoundsLongLong = ^TKSPropertyBoundsLongLong;
  17777.   KSPROPERTY_BOUNDS_LONGLONG = record
  17778.     case Integer of
  17779.       0: (
  17780.         SignedMinimum   : TLargeInteger;
  17781.         SignedMaximum   : TLargeInteger);
  17782.       1: (
  17783.         UnsignedMinimum : TULargeInteger;
  17784.         UnsignedMaximum : TULargeInteger);
  17785.   end;
  17786.   {$EXTERNALSYM KSPROPERTY_BOUNDS_LONGLONG}
  17787.   PKSPROPERTY_BOUNDS_LONGLONG = ^KSPROPERTY_BOUNDS_LONGLONG;
  17788.   {$EXTERNALSYM PKSPROPERTY_BOUNDS_LONGLONG}
  17789.   TKSPropertyBoundsLongLong = KSPROPERTY_BOUNDS_LONGLONG;
  17790.  
  17791.   PKSPropertySteppingLong = ^TKSPropertySteppingLong;
  17792.   KSPROPERTY_STEPPING_LONG = record
  17793.     SteppingDelta : ULONG;
  17794.     Reserved      : ULONG;
  17795.     Bounds        : TKSPropertyBoundsLong;
  17796.   end;
  17797.   {$EXTERNALSYM KSPROPERTY_STEPPING_LONG}
  17798.   PKSPROPERTY_STEPPING_LONG = ^KSPROPERTY_STEPPING_LONG;
  17799.   {$EXTERNALSYM PKSPROPERTY_STEPPING_LONG}
  17800.   TKSPropertySteppingLong = KSPROPERTY_STEPPING_LONG;
  17801.  
  17802.   PKSPropertySteppingLongLong = ^TKSPropertySteppingLongLong;
  17803.   KSPROPERTY_STEPPING_LONGLONG = record
  17804.     SteppingDelta : TULargeInteger;
  17805.     Bounds        : TKSPropertyBoundsLongLong;
  17806.   end;
  17807.   {$EXTERNALSYM KSPROPERTY_STEPPING_LONGLONG}
  17808.   PKSPROPERTY_STEPPING_LONGLONG = KSPROPERTY_STEPPING_LONGLONG;
  17809.   {$EXTERNALSYM PKSPROPERTY_STEPPING_LONGLONG}
  17810.   TKSPropertySteppingLongLong = KSPROPERTY_STEPPING_LONGLONG;
  17811.  
  17812. //===========================================================================
  17813.   PKSWORKER = pointer;
  17814.   {$EXTERNALSYM PKSWORKER}
  17815.  
  17816.   KSEVENTDATA = record
  17817.     NotificationType : ULONG;
  17818.     case integer of
  17819.       0: ( // EventHandle
  17820.         Event          : THandle;
  17821.         Reserved       : array[0..1] of ULONG);
  17822.       1: ( // SemaphoreHandle
  17823.         Semaphore      : THandle;
  17824.         Reserved_       : ULONG;
  17825.         Adjustment     : Longint);
  17826.       2: ( // Alignment
  17827.         Unused         : Pointer;
  17828.         Alignment      : array[0..1] of Longint);
  17829.   end;
  17830.   {$EXTERNALSYM KSEVENTDATA}
  17831.   PKSEVENTDATA = ^KSEVENTDATA;
  17832.   {$EXTERNALSYM PKSEVENTDATA}
  17833.   TKSEventData = KSEVENTDATA;
  17834.  
  17835. const
  17836.   KSEVENTF_EVENT_HANDLE     = $00000001;
  17837.   {$EXTERNALSYM KSEVENTF_EVENT_HANDLE}
  17838.   KSEVENTF_SEMAPHORE_HANDLE = $00000002;
  17839.   {$EXTERNALSYM KSEVENTF_SEMAPHORE_HANDLE}
  17840.  
  17841.   KSEVENT_TYPE_ENABLE         = $00000001;
  17842.   {$EXTERNALSYM KSEVENT_TYPE_ENABLE}
  17843.   KSEVENT_TYPE_ONESHOT        = $00000002;
  17844.   {$EXTERNALSYM KSEVENT_TYPE_ONESHOT}
  17845.   KSEVENT_TYPE_ENABLEBUFFERED = $00000004;
  17846.   {$EXTERNALSYM KSEVENT_TYPE_ENABLEBUFFERED}
  17847.   KSEVENT_TYPE_SETSUPPORT     = $00000100;
  17848.   {$EXTERNALSYM KSEVENT_TYPE_SETSUPPORT}
  17849.   KSEVENT_TYPE_BASICSUPPORT   = $00000200;
  17850.   {$EXTERNALSYM KSEVENT_TYPE_BASICSUPPORT}
  17851.   KSEVENT_TYPE_QUERYBUFFER    = $00000400;
  17852.   {$EXTERNALSYM KSEVENT_TYPE_QUERYBUFFER}
  17853.  
  17854.   KSEVENT_TYPE_TOPOLOGY       = $10000000;
  17855.   {$EXTERNALSYM KSEVENT_TYPE_TOPOLOGY}
  17856.  
  17857. type
  17858.   KSQUERYBUFFER = record
  17859.     Event     : KSEVENT;
  17860.     EventData : PKSEVENTDATA;
  17861.     Reserved  : Pointer;
  17862.   end;
  17863.   {$EXTERNALSYM KSQUERYBUFFER}
  17864.   PKSQUERYBUFFER = ^KSQUERYBUFFER;
  17865.   {$EXTERNALSYM PKSQUERYBUFFER}
  17866.   TKSQueryBuffer = KSQUERYBUFFER;
  17867.  
  17868.   KSRELATIVEEVENT = record
  17869.      Size      : ULONG;
  17870.      Flags     : ULONG;
  17871.      case integer of
  17872.        0: ( ObjectHandle  : THandle;
  17873.             Reserved      : Pointer;
  17874.             Event         : KSEVENT;
  17875.             EventData     : TKSEVENTDATA);
  17876.        1: ( ObjectPointer : Pointer);
  17877.  
  17878.   end;
  17879.   {$EXTERNALSYM KSRELATIVEEVENT}
  17880.   TKSRelativeEvent = KSRELATIVEEVENT;
  17881.  
  17882. const
  17883.   KSRELATIVEEVENT_FLAG_HANDLE  = $00000001;
  17884.   {$EXTERNALSYM KSRELATIVEEVENT_FLAG_HANDLE}
  17885.   KSRELATIVEEVENT_FLAG_POINTER = $00000002;
  17886.   {$EXTERNALSYM KSRELATIVEEVENT_FLAG_POINTER}
  17887.  
  17888. //===========================================================================
  17889.  
  17890. type
  17891.   PKSEventTimeMark = ^TKSEventTimeMark;
  17892.   KSEVENT_TIME_MARK = record
  17893.     EventData : TKSEVENTDATA;
  17894.     MarkTime  : int64;
  17895.   end;
  17896.   {$EXTERNALSYM KSEVENT_TIME_MARK}
  17897.   PKSEVENT_TIME_MARK = ^KSEVENT_TIME_MARK;
  17898.   {$EXTERNALSYM PKSEVENT_TIME_MARK}
  17899.   TKSEventTimeMark = KSEVENT_TIME_MARK;
  17900.  
  17901.   PKSEventTimeInterval = ^TKSEventTimeInterval;
  17902.   KSEVENT_TIME_INTERVAL = record
  17903.     EventData : TKSEVENTDATA;
  17904.     TimeBase  : int64;
  17905.     Interval  : int64;
  17906.   end;
  17907.   {$EXTERNALSYM KSEVENT_TIME_INTERVAL}
  17908.   PKSEVENT_TIME_INTERVAL = ^KSEVENT_TIME_INTERVAL;
  17909.   {$EXTERNALSYM PKSEVENT_TIME_INTERVAL}
  17910.   TKSEventTimeInterval = KSEVENT_TIME_INTERVAL;
  17911.  
  17912.   KSINTERVAL = record
  17913.     TimeBase : int64;
  17914.     Interval : int64;
  17915.   end;
  17916.   {$EXTERNALSYM KSINTERVAL}
  17917.   PKSINTERVAL = ^KSINTERVAL;
  17918.   {$EXTERNALSYM PKSINTERVAL}
  17919.   TKSInterval = KSINTERVAL;
  17920.  
  17921. //===========================================================================
  17922. const
  17923.   KSPROPSETID_General : TGUID = '{1464EDA5-6A8F-11D1-9AA7-00A0C9223196}';
  17924.   {$EXTERNALSYM KSPROPSETID_General}
  17925.  
  17926. type
  17927.   KSPROPERTY_GENERAL = (
  17928.   {$EXTERNALSYM KSPROPERTY_GENERAL}
  17929.     KSPROPERTY_GENERAL_COMPONENTID
  17930.   );
  17931.   TKSPropertyGeneral = KSPROPERTY_GENERAL;
  17932.  
  17933.   KSCOMPONENTID = record
  17934.     Manufacturer : TGUID;
  17935.     Product      : TGUID;
  17936.     Component    : TGUID;
  17937.     Name         : TGUID;
  17938.     Version      : ULONG;
  17939.     Revision     : ULONG;
  17940.   end;
  17941.   {$EXTERNALSYM KSCOMPONENTID}
  17942.   PKSCOMPONENTID = ^KSCOMPONENTID;
  17943.   {$EXTERNALSYM PKSCOMPONENTID}
  17944.   TKSComponentID = KSCOMPONENTID;
  17945.  
  17946. const
  17947.   KSMETHODSETID_StreamIo : TGUID = '{65D003CA-1523-11D2-B27A-00A0C9223196}';
  17948.   {$EXTERNALSYM KSMETHODSETID_StreamIo}
  17949.  
  17950. type
  17951.   KSMETHOD_STREAMIO = (
  17952.     KSMETHOD_STREAMIO_READ,
  17953.     KSMETHOD_STREAMIO_WRITE
  17954.   );
  17955.   {$EXTERNALSYM KSMETHOD_STREAMIO}
  17956.   TKSMethodStreamIO = KSMETHOD_STREAMIO;
  17957.  
  17958. const
  17959.   KSPROPSETID_MediaSeeking : TGUID = '{EE904F0C-D09B-11D0-ABE9-00A0C9223196}';
  17960.   {$EXTERNALSYM KSPROPSETID_MediaSeeking}
  17961.  
  17962. type
  17963.   KSPROPERTY_MEDIASEEKING = (
  17964.     KSPROPERTY_MEDIASEEKING_CAPABILITIES,
  17965.     KSPROPERTY_MEDIASEEKING_FORMATS,
  17966.     KSPROPERTY_MEDIASEEKING_TIMEFORMAT,
  17967.     KSPROPERTY_MEDIASEEKING_POSITION,
  17968.     KSPROPERTY_MEDIASEEKING_STOPPOSITION,
  17969.     KSPROPERTY_MEDIASEEKING_POSITIONS,
  17970.     KSPROPERTY_MEDIASEEKING_DURATION,
  17971.     KSPROPERTY_MEDIASEEKING_AVAILABLE,
  17972.     KSPROPERTY_MEDIASEEKING_PREROLL,
  17973.     KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
  17974.   );
  17975.   {$EXTERNALSYM KSPROPERTY_MEDIASEEKING}
  17976.   TKSPropertyMediaSeeking = KSPROPERTY_MEDIASEEKING;
  17977.  
  17978.   KS_SEEKING_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  17979.   {$EXTERNALSYM KS_SEEKING_FLAGS}
  17980.   const
  17981.     KS_SEEKING_NoPositioning          = $0;
  17982.     {$EXTERNALSYM KS_SEEKING_NoPositioning}
  17983.     KS_SEEKING_AbsolutePositioning    = $1;
  17984.     {$EXTERNALSYM KS_SEEKING_AbsolutePositioning}
  17985.     KS_SEEKING_RelativePositioning    = $2;
  17986.     {$EXTERNALSYM KS_SEEKING_RelativePositioning}
  17987.     KS_SEEKING_IncrementalPositioning = $3;
  17988.     {$EXTERNALSYM KS_SEEKING_IncrementalPositioning}
  17989.     KS_SEEKING_PositioningBitsMask    = $3;
  17990.     {$EXTERNALSYM KS_SEEKING_PositioningBitsMask}
  17991.     KS_SEEKING_SeekToKeyFrame         = $4;
  17992.     {$EXTERNALSYM KS_SEEKING_SeekToKeyFrame}
  17993.     KS_SEEKING_ReturnTime             = $8;
  17994.     {$EXTERNALSYM KS_SEEKING_ReturnTime}
  17995.  
  17996. type
  17997.   KS_SEEKING_CAPABILITIES = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  17998.   {$EXTERNALSYM KS_SEEKING_CAPABILITIES}
  17999.   const
  18000.     KS_SEEKING_CanSeekAbsolute  = $1;
  18001.     {$EXTERNALSYM KS_SEEKING_CanSeekAbsolute}
  18002.     KS_SEEKING_CanSeekForwards  = $2;
  18003.     {$EXTERNALSYM KS_SEEKING_CanSeekForwards}
  18004.     KS_SEEKING_CanSeekBackwards = $4;
  18005.     {$EXTERNALSYM KS_SEEKING_CanSeekBackwards}
  18006.     KS_SEEKING_CanGetCurrentPos = $8;
  18007.     {$EXTERNALSYM KS_SEEKING_CanGetCurrentPos}
  18008.     KS_SEEKING_CanGetStopPos    = $10;
  18009.     {$EXTERNALSYM KS_SEEKING_CanGetStopPos}
  18010.     KS_SEEKING_CanGetDuration   = $20;
  18011.     {$EXTERNALSYM KS_SEEKING_CanGetDuration}
  18012.     KS_SEEKING_CanPlayBackwards = $40;
  18013.     {$EXTERNALSYM KS_SEEKING_CanPlayBackwards}
  18014.  
  18015. type
  18016.   PKSPropertyPositions = ^TKSPropertyPositions;
  18017.   KSPROPERTY_POSITIONS = record
  18018.     Current      : int64;
  18019.     Stop         : int64;
  18020.     CurrentFlags : KS_SEEKING_FLAGS;
  18021.     StopFlags    : KS_SEEKING_FLAGS;
  18022.   end;
  18023.   {$EXTERNALSYM KSPROPERTY_POSITIONS}
  18024.   PKSPROPERTY_POSITIONS = ^KSPROPERTY_POSITIONS;
  18025.   {$EXTERNALSYM PKSPROPERTY_POSITIONS}
  18026.   TKSPropertyPositions = KSPROPERTY_POSITIONS;
  18027.  
  18028.   PKSPropertyMediaAvailable = ^TKSPropertyMediaAvailable;
  18029.   KSPROPERTY_MEDIAAVAILABLE = record
  18030.     Earliest : int64;
  18031.     Latest   : int64;
  18032.   end;
  18033.   {$EXTERNALSYM KSPROPERTY_MEDIAAVAILABLE}
  18034.   PKSPROPERTY_MEDIAAVAILABLE = ^KSPROPERTY_MEDIAAVAILABLE;
  18035.   {$EXTERNALSYM PKSPROPERTY_MEDIAAVAILABLE}
  18036.   TKSPropertyMediaAvailable = KSPROPERTY_MEDIAAVAILABLE;
  18037.  
  18038.   PKSPTimeFormat = ^TKSPTimeFormat;
  18039.   KSP_TIMEFORMAT = record
  18040.     Property_    : KSPROPERTY;
  18041.     SourceFormat : TGUID;
  18042.     TargetFormat : TGUID;
  18043.     Time         : int64;
  18044.   end;
  18045.   {$EXTERNALSYM KSP_TIMEFORMAT}
  18046.   PKSP_TIMEFORMAT = ^KSP_TIMEFORMAT;
  18047.   {$EXTERNALSYM PKSP_TIMEFORMAT}
  18048.   TKSPTimeFormat = KSP_TIMEFORMAT;
  18049.  
  18050. //===========================================================================
  18051.  
  18052. const
  18053.   KSPROPSETID_Topology : TGUID = '{720D4AC0-7533-11D0-A5D6-28DB04C10000}';
  18054.   {$EXTERNALSYM KSPROPSETID_Topology}
  18055.  
  18056. type
  18057.   KSPROPERTY_TOPOLOGY = (
  18058.     KSPROPERTY_TOPOLOGY_CATEGORIES,
  18059.     KSPROPERTY_TOPOLOGY_NODES,
  18060.     KSPROPERTY_TOPOLOGY_CONNECTIONS,
  18061.     KSPROPERTY_TOPOLOGY_NAME
  18062.   );
  18063.   {$EXTERNALSYM KSPROPERTY_TOPOLOGY}
  18064.   TKSPropertyTopology = KSPROPERTY_TOPOLOGY;
  18065.  
  18066. const
  18067.   KSCATEGORY_BRIDGE                  : TGUID = '{085AFF00-62CE-11CF-A5D6-28DB04C10000}';
  18068.   {$EXTERNALSYM KSCATEGORY_BRIDGE}
  18069.   KSCATEGORY_CAPTURE                 : TGUID = '{65E8773D-8F56-11D0-A3B9-00A0C9223196}';
  18070.   {$EXTERNALSYM KSCATEGORY_CAPTURE}
  18071.   KSCATEGORY_RENDER                  : TGUID = '{65E8773E-8F56-11D0-A3B9-00A0C9223196}';
  18072.   {$EXTERNALSYM KSCATEGORY_RENDER}
  18073.   KSCATEGORY_MIXER                   : TGUID = '{AD809C00-7B88-11D0-A5D6-28DB04C10000}';
  18074.   {$EXTERNALSYM KSCATEGORY_MIXER}
  18075.   KSCATEGORY_SPLITTER                : TGUID = '{0A4252A0-7E70-11D0-A5D6-28DB04C10000}';
  18076.   {$EXTERNALSYM KSCATEGORY_SPLITTER}
  18077.   KSCATEGORY_DATACOMPRESSOR          : TGUID = '{1E84C900-7E70-11D0-A5D6-28DB04C10000}';
  18078.   {$EXTERNALSYM KSCATEGORY_DATACOMPRESSOR}
  18079.   KSCATEGORY_DATADECOMPRESSOR        : TGUID = '{2721AE20-7E70-11D0-A5D6-28DB04C10000}';
  18080.   {$EXTERNALSYM KSCATEGORY_DATADECOMPRESSOR}
  18081.   KSCATEGORY_DATATRANSFORM           : TGUID = '{2EB07EA0-7E70-11D0-A5D6-28DB04C10000}';
  18082.   {$EXTERNALSYM KSCATEGORY_DATATRANSFORM}
  18083.   KSCATEGORY_COMMUNICATIONSTRANSFORM : TGUID = '{CF1DDA2C-9743-11D0-A3EE-00A0C9223196}';
  18084.   {$EXTERNALSYM KSCATEGORY_COMMUNICATIONSTRANSFORM}
  18085.   KSCATEGORY_INTERFACETRANSFORM      : TGUID = '{CF1DDA2D-9743-11D0-A3EE-00A0C9223196}';
  18086.   {$EXTERNALSYM KSCATEGORY_INTERFACETRANSFORM}
  18087.   KSCATEGORY_MEDIUMTRANSFORM         : TGUID = '{CF1DDA2E-9743-11D0-A3EE-00A0C9223196}';
  18088.   {$EXTERNALSYM KSCATEGORY_MEDIUMTRANSFORM}
  18089.   KSCATEGORY_FILESYSTEM              : TGUID = '{760FED5E-9357-11D0-A3CC-00A0C9223196}';
  18090.   {$EXTERNALSYM KSCATEGORY_FILESYSTEM}
  18091.  
  18092. // KSNAME_Clock
  18093.   KSCATEGORY_CLOCK   : TGUID = '{53172480-4791-11D0-A5D6-28DB04C10000}';
  18094.   {$EXTERNALSYM KSCATEGORY_CLOCK}
  18095.   KSCATEGORY_PROXY   : TGUID = '{97EBAACA-95BD-11D0-A3EA-00A0C9223196}';
  18096.   {$EXTERNALSYM KSCATEGORY_PROXY}
  18097.   KSCATEGORY_QUALITY : TGUID = '{97EBAACB-95BD-11D0-A3EA-00A0C9223196}';
  18098.   {$EXTERNALSYM KSCATEGORY_QUALITY}
  18099.  
  18100. type
  18101.   PKSTopologyConnection = ^TKSTopologyConnection;
  18102.   KSTOPOLOGY_CONNECTION = record
  18103.     FromNode    : ULONG;
  18104.     FromNodePin : ULONG;
  18105.     ToNode      : ULONG;
  18106.     ToNodePin   : ULONG;
  18107.   end;
  18108.   {$EXTERNALSYM KSTOPOLOGY_CONNECTION}
  18109.   PKSTOPOLOGY_CONNECTION = ^KSTOPOLOGY_CONNECTION;
  18110.   {$EXTERNALSYM PKSTOPOLOGY_CONNECTION}
  18111.   TKSTopologyConnection = KSTOPOLOGY_CONNECTION;
  18112.  
  18113.   KSTOPOLOGY = record
  18114.     CategoriesCount          : ULONG;
  18115.     Categories               : PGUID;
  18116.     TopologyNodesCount       : ULONG;
  18117.     TopologyNodes            : PGUID;
  18118.     TopologyConnectionsCount : ULONG;
  18119.     TopologyConnections      : PKSTOPOLOGY_CONNECTION;
  18120.     TopologyNodesNames       : PGUID;
  18121.     Reserved                 : ULONG;
  18122.   end;
  18123.   {$EXTERNALSYM KSTOPOLOGY}
  18124.   PKSTOPOLOGY = ^KSTOPOLOGY;
  18125.   {$EXTERNALSYM PKSTOPOLOGY}
  18126.   TKSTopology = KSTOPOLOGY;
  18127.  
  18128. const
  18129.   KSFILTER_NODE = ULONG(-1);
  18130.   {$EXTERNALSYM KSFILTER_NODE}
  18131.   KSALL_NODES   = ULONG(-1);
  18132.   {$EXTERNALSYM KSALL_NODES}
  18133.  
  18134. type
  18135.   PKSNodeCreate = ^TKSNodeCreate;
  18136.   KSNODE_CREATE = record
  18137.     CreateFlags : ULONG;
  18138.     Node        : ULONG;
  18139.   end;
  18140.   {$EXTERNALSYM KSNODE_CREATE}
  18141.   PKSNODE_CREATE = ^KSNODE_CREATE;
  18142.   {$EXTERNALSYM PKSNODE_CREATE}
  18143.   TKSNodeCreate = KSNODE_CREATE;
  18144.  
  18145. //===========================================================================
  18146. const
  18147. // TIME_FORMAT_NONE
  18148.   KSTIME_FORMAT_NONE       : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18149.   {$EXTERNALSYM KSTIME_FORMAT_NONE}
  18150.  
  18151. // TIME_FORMAT_FRAME
  18152.   KSTIME_FORMAT_FRAME      : TGUID = '{7b785570-8c82-11cf-bc0c-00aa00ac74f6}';
  18153.   {$EXTERNALSYM KSTIME_FORMAT_FRAME}
  18154.  
  18155. // TIME_FORMAT_BYTE
  18156.   KSTIME_FORMAT_BYTE       : TGUID = '{7b785571-8c82-11cf-bc0c-00aa00ac74f6}';
  18157.   {$EXTERNALSYM KSTIME_FORMAT_BYTE}
  18158.  
  18159. // TIME_FORMAT_SAMPLE
  18160.   KSTIME_FORMAT_SAMPLE     : TGUID = '{7b785572-8c82-11cf-bc0c-00aa00ac74f6}';
  18161.   {$EXTERNALSYM KSTIME_FORMAT_SAMPLE}
  18162.  
  18163. // TIME_FORMAT_FIELD
  18164.   KSTIME_FORMAT_FIELD      : TGUID = '{7b785573-8c82-11cf-bc0c-00aa00ac74f6}';
  18165.   {$EXTERNALSYM KSTIME_FORMAT_FIELD}
  18166.  
  18167. // TIME_FORMAT_MEDIA_TIME
  18168.   KSTIME_FORMAT_MEDIA_TIME : TGUID = '{7b785574-8c82-11cf-bc0c-00aa00ac74f6}';
  18169.   {$EXTERNALSYM KSTIME_FORMAT_MEDIA_TIME}
  18170.  
  18171. //===========================================================================
  18172.  
  18173. type
  18174.   PKSPIN_INTERFACE = ^KSPIN_INTERFACE;
  18175.   {$EXTERNALSYM PKSPIN_INTERFACE}
  18176.   KSPIN_INTERFACE = KSIDENTIFIER;
  18177.   {$EXTERNALSYM KSPIN_INTERFACE}
  18178.  
  18179.   PKSPinInterface = PKSPIN_INTERFACE;
  18180.   TKSPinInterface = KSPIN_INTERFACE;
  18181.  
  18182. const
  18183.   KSINTERFACESETID_Standard : TGUID = '{1A8766A0-62CE-11CF-A5D6-28DB04C10000}';
  18184.   {$EXTERNALSYM KSINTERFACESETID_Standard}
  18185.  
  18186. type
  18187.   KSINTERFACE_STANDARD = (
  18188.     KSINTERFACE_STANDARD_STREAMING,
  18189.     KSINTERFACE_STANDARD_LOOPED_STREAMING,
  18190.     KSINTERFACE_STANDARD_CONTROL
  18191.   );
  18192.   {$EXTERNALSYM KSINTERFACE_STANDARD}
  18193.   TKSInterfaceStandard = KSINTERFACE_STANDARD;
  18194.  
  18195. const
  18196.   KSINTERFACESETID_FileIo : TGUID = '{8C6F932C-E771-11D0-B8FF-00A0C9223196}';
  18197.   {$EXTERNALSYM KSINTERFACESETID_FileIo}
  18198.  
  18199. type
  18200.   KSINTERFACE_FILEIO = (
  18201.     KSINTERFACE_FILEIO_STREAMING
  18202.   );
  18203.   {$EXTERNALSYM KSINTERFACE_FILEIO}
  18204.   TKSInterfaceFileIO = KSINTERFACE_FILEIO;
  18205.  
  18206. //===========================================================================
  18207. const
  18208.   KSMEDIUM_TYPE_ANYINSTANCE = 0;
  18209.   {$EXTERNALSYM KSMEDIUM_TYPE_ANYINSTANCE}
  18210.  
  18211.   KSMEDIUMSETID_Standard : TGUID = '{4747B320-62CE-11CF-A5D6-28DB04C10000}';
  18212.   {$EXTERNALSYM KSMEDIUMSETID_Standard}
  18213.  
  18214. //For compatibility only
  18215.   KSMEDIUM_STANDARD_DEVIO = KSMEDIUM_TYPE_ANYINSTANCE;
  18216.   {$EXTERNALSYM KSMEDIUM_STANDARD_DEVIO}
  18217.  
  18218. //===========================================================================
  18219.  
  18220.   KSPROPSETID_Pin : TGUID = '{8C134960-51AD-11CF-878A-94F801C10000}';
  18221.   {$EXTERNALSYM KSPROPSETID_Pin}
  18222.  
  18223. type
  18224.   KSPROPERTY_PIN = (
  18225.     KSPROPERTY_PIN_CINSTANCES,
  18226.     KSPROPERTY_PIN_CTYPES,
  18227.     KSPROPERTY_PIN_DATAFLOW,
  18228.     KSPROPERTY_PIN_DATARANGES,
  18229.     KSPROPERTY_PIN_DATAINTERSECTION,
  18230.     KSPROPERTY_PIN_INTERFACES,
  18231.     KSPROPERTY_PIN_MEDIUMS,
  18232.     KSPROPERTY_PIN_COMMUNICATION,
  18233.     KSPROPERTY_PIN_GLOBALCINSTANCES,
  18234.     KSPROPERTY_PIN_NECESSARYINSTANCES,
  18235.     KSPROPERTY_PIN_PHYSICALCONNECTION,
  18236.     KSPROPERTY_PIN_CATEGORY,
  18237.     KSPROPERTY_PIN_NAME,
  18238.     KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
  18239.     KSPROPERTY_PIN_PROPOSEDATAFORMAT
  18240.   );
  18241.   {$EXTERNALSYM KSPROPERTY_PIN}
  18242.   TKSPropertyPin = KSPROPERTY_PIN;
  18243.  
  18244.   PKSPPin = ^TKSPPin;
  18245.   KSP_PIN = record
  18246.     Property_  : KSPROPERTY;
  18247.     PinId      : ULONG;
  18248.     Reserved   : ULONG;
  18249.   end;
  18250.   {$EXTERNALSYM KSP_PIN}
  18251.   PKSP_PIN = ^KSP_PIN;
  18252.   {$EXTERNALSYM PKSP_PIN}
  18253.   TKSPPin = KSP_PIN;
  18254.  
  18255. const
  18256.   KSINSTANCE_INDETERMINATE = ULONG(-1);
  18257.   {$EXTERNALSYM KSINSTANCE_INDETERMINATE}
  18258.  
  18259. type
  18260.   PKSPinCInstance = ^TKSPinCInstance;
  18261.   KSPIN_CINSTANCES = record
  18262.     PossibleCount : ULONG;
  18263.     CurrentCount  : ULONG;
  18264.   end;
  18265.   {$EXTERNALSYM KSPIN_CINSTANCES}
  18266.   PKSPIN_CINSTANCES = ^KSPIN_CINSTANCES;
  18267.   {$EXTERNALSYM PKSPIN_CINSTANCES}
  18268.   TKSPinCInstance = KSPIN_CINSTANCES;
  18269.  
  18270.  
  18271.   PKSPinDataFlow = ^TKSPinDataFlow;
  18272.   KSPIN_DATAFLOW = (
  18273.     KSPIN_DATAFLOW_Invalid,
  18274.     KSPIN_DATAFLOW_IN,
  18275.     KSPIN_DATAFLOW_OUT
  18276.   );
  18277.   {$EXTERNALSYM KSPIN_DATAFLOW}
  18278.   PKSPIN_DATAFLOW = ^KSPIN_DATAFLOW;
  18279.   {$EXTERNALSYM PKSPIN_DATAFLOW}
  18280.   TKSPinDataFlow = KSPIN_DATAFLOW;
  18281.  
  18282. const
  18283.   KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION =  0;
  18284.   {$EXTERNALSYM KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION}
  18285.   KSDATAFORMAT_TEMPORAL_COMPRESSION     =  (1 shl KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION);
  18286.   {$EXTERNALSYM KSDATAFORMAT_TEMPORAL_COMPRESSION}
  18287.   KSDATAFORMAT_BIT_ATTRIBUTES           =  1;
  18288.   {$EXTERNALSYM KSDATAFORMAT_BIT_ATTRIBUTES}
  18289.   KSDATAFORMAT_ATTRIBUTES               =  (1 shl KSDATAFORMAT_BIT_ATTRIBUTES);
  18290.   {$EXTERNALSYM KSDATAFORMAT_ATTRIBUTES}
  18291.  
  18292.   KSDATARANGE_BIT_ATTRIBUTES          = 1;
  18293.   {$EXTERNALSYM KSDATARANGE_BIT_ATTRIBUTES}
  18294.   KSDATARANGE_ATTRIBUTES              = (1 shl KSDATARANGE_BIT_ATTRIBUTES);
  18295.   {$EXTERNALSYM KSDATARANGE_ATTRIBUTES}
  18296.   KSDATARANGE_BIT_REQUIRED_ATTRIBUTES = 2;
  18297.   {$EXTERNALSYM KSDATARANGE_BIT_REQUIRED_ATTRIBUTES}
  18298.   KSDATARANGE_REQUIRED_ATTRIBUTES     = (1 shl KSDATARANGE_BIT_REQUIRED_ATTRIBUTES);
  18299.   {$EXTERNALSYM KSDATARANGE_REQUIRED_ATTRIBUTES}
  18300.  
  18301. type
  18302.   KSDATAFORMAT = record
  18303.     case integer of
  18304.     0: (
  18305.       FormatSize  : ULONG;
  18306.       Flags       : ULONG;
  18307.       SampleSize  : ULONG;
  18308.       Reserved    : ULONG;
  18309.       MajorFormat : TGUID;
  18310.       SubFormat   : TGUID;
  18311.       Specifier   : TGUID);
  18312.     1: (
  18313.       Alignment   : int64);
  18314.   end;
  18315.   {$EXTERNALSYM KSDATAFORMAT}
  18316.   PKSDATAFORMAT = ^KSDATAFORMAT;
  18317.   {$EXTERNALSYM PKSDATAFORMAT}
  18318.   TKSDataFormat = KSDATAFORMAT;
  18319.  
  18320.   PKSDATARANGE = ^KSDATARANGE;
  18321.   {$EXTERNALSYM PKSDATARANGE}
  18322.   KSDATARANGE = KSDATAFORMAT;
  18323.   {$EXTERNALSYM KSDATARANGE}
  18324.  
  18325.   TKSDataRange = KSDATARANGE;
  18326.  
  18327. const
  18328.   KSATTRIBUTE_REQUIRED = $00000001;
  18329.   {$EXTERNALSYM KSATTRIBUTE_REQUIRED}
  18330.  
  18331. type
  18332.   KSATTRIBUTE = record
  18333.     Size      : ULONG;
  18334.     Flags     : ULONG;
  18335.     Attribute : TGUID;
  18336.   end;
  18337.   {$EXTERNALSYM KSATTRIBUTE}
  18338.   PKSATTRIBUTE = ^KSATTRIBUTE;
  18339.   {$EXTERNALSYM PKSATTRIBUTE}
  18340.   TKSAttribute = KSATTRIBUTE;
  18341.  
  18342.   PKSPinCommunication = ^TKSPinCommunication;
  18343.   KSPIN_COMMUNICATION = (
  18344.     KSPIN_COMMUNICATION_NONE,
  18345.     KSPIN_COMMUNICATION_SINK,
  18346.     KSPIN_COMMUNICATION_SOURCE,
  18347.     KSPIN_COMMUNICATION_BOTH,
  18348.     KSPIN_COMMUNICATION_BRIDGE
  18349.   );
  18350.   {$EXTERNALSYM KSPIN_COMMUNICATION}
  18351.   PKSPIN_COMMUNICATION = ^KSPIN_COMMUNICATION;
  18352.   {$EXTERNALSYM PKSPIN_COMMUNICATION}
  18353.   TKSPinCommunication = KSPIN_COMMUNICATION;
  18354.  
  18355.   PKSPIN_MEDIUM = ^KSPIN_MEDIUM;
  18356.   {$EXTERNALSYM PKSPIN_MEDIUM}
  18357.   KSPIN_MEDIUM = KSIDENTIFIER;
  18358.   {$EXTERNALSYM KSPIN_MEDIUM}
  18359.  
  18360.   PKSPinMedium = PKSPIN_MEDIUM;
  18361.   TKSPinMedium = KSPIN_MEDIUM;
  18362.  
  18363.   PKSPinConnect = ^TKSPinConnect;
  18364.   KSPIN_CONNECT = record
  18365.     Interface_  : TKSPinInterface;
  18366.     Medium      : TKSPinMedium;
  18367.     PinId       : ULONG;
  18368.     PinToHandle : THandle;
  18369.     Priority    : TKSPriority;
  18370.   end;
  18371.   {$EXTERNALSYM KSPIN_CONNECT}
  18372.   PKSPIN_CONNECT = KSPIN_CONNECT;
  18373.   {$EXTERNALSYM PKSPIN_CONNECT}
  18374.   TKSPinConnect = KSPIN_CONNECT;
  18375.  
  18376.   PKSPinPhysicalConnection = ^TKSPinPhysicalConnection;
  18377.   KSPIN_PHYSICALCONNECTION = record
  18378.     Size             : ULONG;
  18379.     Pin              : ULONG;
  18380.     SymbolicLinkName : array[0..0] of WCHAR;
  18381.   end;
  18382.   {$EXTERNALSYM KSPIN_PHYSICALCONNECTION}
  18383.   PKSPIN_PHYSICALCONNECTION = KSPIN_PHYSICALCONNECTION;
  18384.   {$EXTERNALSYM PKSPIN_PHYSICALCONNECTION}
  18385.   TKSPinPhysicalConnection = KSPIN_PHYSICALCONNECTION;
  18386.  
  18387. const
  18388.   KSNAME_Filter       : TGUID = '{9b365890-165f-11d0-a195-0020afd156e4}';
  18389.   {$EXTERNALSYM KSNAME_Filter}
  18390.   KSSTRING_Filter             = '{9B365890-165F-11D0-A195-0020AFD156E4}';
  18391.   {$EXTERNALSYM KSSTRING_Filter}
  18392.  
  18393.   KSNAME_Pin          : TGUID = '{146F1A80-4791-11D0-A5D6-28DB04C10000}';
  18394.   {$EXTERNALSYM KSNAME_Pin}
  18395.   KSSTRING_Pin                = '{146F1A80-4791-11D0-A5D6-28DB04C10000}';
  18396.   {$EXTERNALSYM KSSTRING_Pin}
  18397.  
  18398.   KSNAME_Clock        : TGUID = '{53172480-4791-11D0-A5D6-28DB04C10000}';
  18399.   {$EXTERNALSYM KSNAME_Clock}
  18400.   KSSTRING_Clock              = '{53172480-4791-11D0-A5D6-28DB04C10000}';
  18401.   {$EXTERNALSYM KSSTRING_Clock}
  18402.  
  18403.   KSNAME_Allocator    : TGUID = '{642F5D00-4791-11D0-A5D6-28DB04C10000}';
  18404.   {$EXTERNALSYM KSNAME_Allocator}
  18405.   KSSTRING_Allocator          = '{642F5D00-4791-11D0-A5D6-28DB04C10000}';
  18406.   {$EXTERNALSYM KSSTRING_Allocator}
  18407.  
  18408.   KSSTRING_AllocatorEx        = '{091BB63B-603F-11D1-B067-00A0C9062802}';
  18409.   {$EXTERNALSYM KSSTRING_AllocatorEx}
  18410.  
  18411.   KSNAME_TopologyNode : TGUID = '{0621061A-EE75-11D0-B915-00A0C9223196}';
  18412.   {$EXTERNALSYM KSNAME_TopologyNode}
  18413.   KSSTRING_TopologyNode       = '{0621061A-EE75-11D0-B915-00A0C9223196}';
  18414.   {$EXTERNALSYM KSSTRING_TopologyNode}
  18415.  
  18416. //===========================================================================
  18417.  
  18418. // MEDIATYPE_NULL
  18419. const
  18420.   KSDATAFORMAT_TYPE_WILDCARD       : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18421.   {$EXTERNALSYM KSDATAFORMAT_TYPE_WILDCARD}
  18422.  
  18423. // MEDIASUBTYPE_NULL
  18424.   KSDATAFORMAT_SUBTYPE_WILDCARD    : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18425.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_WILDCARD}
  18426.  
  18427. // MEDIATYPE_Stream
  18428.   KSDATAFORMAT_TYPE_STREAM         : TGUID = '{E436EB83-524F-11CE-9F53-0020AF0BA770}';
  18429.   {$EXTERNALSYM KSDATAFORMAT_TYPE_STREAM}
  18430.  
  18431. // MEDIASUBTYPE_None
  18432.   KSDATAFORMAT_SUBTYPE_NONE        : TGUID = '{E436EB8E-524F-11CE-9F53-0020AF0BA770}';
  18433.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_NONE}
  18434.  
  18435.   KSDATAFORMAT_SPECIFIER_WILDCARD  : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18436.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_WILDCARD}
  18437.  
  18438.   KSDATAFORMAT_SPECIFIER_FILENAME  : TGUID = '{AA797B40-E974-11CF-A5D6-28DB04C10000}';
  18439.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_FILENAME}
  18440.   KSDATAFORMAT_SPECIFIER_FILEHANDLE: TGUID = '{65E8773C-8F56-11D0-A3B9-00A0C9223196}';
  18441.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_FILEHANDLE}
  18442.  
  18443. // FORMAT_None
  18444.   KSDATAFORMAT_SPECIFIER_NONE      : TGUID = '{0F6417D6-C318-11D0-A43F-00A0C9223196}';
  18445.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_NONE}
  18446.  
  18447. //===========================================================================
  18448.  
  18449.   KSPROPSETID_Quality : TGUID = '{D16AD380-AC1A-11CF-A5D6-28DB04C10000}';
  18450.   {$EXTERNALSYM KSPROPSETID_Quality}
  18451.  
  18452. type
  18453.   KSPROPERTY_QUALITY = (
  18454.     KSPROPERTY_QUALITY_REPORT,
  18455.     KSPROPERTY_QUALITY_ERROR
  18456.   );
  18457.   {$EXTERNALSYM KSPROPERTY_QUALITY}
  18458.   TKSPropertyQuality = KSPROPERTY_QUALITY;
  18459.  
  18460. //===========================================================================
  18461. const
  18462.   KSPROPSETID_Connection : TGUID = '{1D58C920-AC9B-11CF-A5D6-28DB04C10000}';
  18463.   {$EXTERNALSYM KSPROPSETID_Connection}
  18464. type
  18465.   KSPROPERTY_CONNECTION = (
  18466.     KSPROPERTY_CONNECTION_STATE,
  18467.     KSPROPERTY_CONNECTION_PRIORITY,
  18468.     KSPROPERTY_CONNECTION_DATAFORMAT,
  18469.     KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
  18470.     KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,
  18471.     KSPROPERTY_CONNECTION_ACQUIREORDERING,
  18472.     KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
  18473.     KSPROPERTY_CONNECTION_STARTAT
  18474.   );
  18475.   {$EXTERNALSYM KSPROPERTY_CONNECTION}
  18476.   TKSPropertyConnection = KSPROPERTY_CONNECTION;
  18477.  
  18478. //===========================================================================
  18479. //
  18480. // pins flags
  18481. //
  18482. const
  18483.   KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER  = $00000001;
  18484.   {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER}
  18485.   KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY     = $00000002;
  18486.   {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY}
  18487.   KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY   = $00000004;
  18488.   {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY}
  18489.   KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE     = $00000008;
  18490.   {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE}
  18491.   KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY  = $80000000;
  18492.   {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY}
  18493.  
  18494.   KSALLOCATOR_OPTIONF_COMPATIBLE             = $00000001;
  18495.   {$EXTERNALSYM KSALLOCATOR_OPTIONF_COMPATIBLE}
  18496.   KSALLOCATOR_OPTIONF_SYSTEM_MEMORY          = $00000002;
  18497.   {$EXTERNALSYM KSALLOCATOR_OPTIONF_SYSTEM_MEMORY}
  18498.   KSALLOCATOR_OPTIONF_VALID                  = $00000003;
  18499.   {$EXTERNALSYM KSALLOCATOR_OPTIONF_VALID}
  18500. //
  18501. // pins extended framing flags
  18502. //
  18503.   KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT      = $00000010;
  18504.   {$EXTERNALSYM KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT}
  18505.   KSALLOCATOR_FLAG_DEVICE_SPECIFIC           = $00000020;
  18506.   {$EXTERNALSYM KSALLOCATOR_FLAG_DEVICE_SPECIFIC}
  18507.   KSALLOCATOR_FLAG_CAN_ALLOCATE              = $00000040;
  18508.   {$EXTERNALSYM KSALLOCATOR_FLAG_CAN_ALLOCATE}
  18509.   KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO = $00000080;
  18510.   {$EXTERNALSYM KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO}
  18511. //
  18512. // allocator pipes flags
  18513. //
  18514. // there is at least one data modification in a pipe
  18515.   KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY        = $00000100;
  18516.   {$EXTERNALSYM KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY}
  18517.   KSALLOCATOR_FLAG_MULTIPLE_OUTPUT           = $00000200;
  18518.   {$EXTERNALSYM KSALLOCATOR_FLAG_MULTIPLE_OUTPUT}
  18519.   KSALLOCATOR_FLAG_CYCLE                     = $00000400;
  18520.   {$EXTERNALSYM KSALLOCATOR_FLAG_CYCLE}
  18521.   KSALLOCATOR_FLAG_ALLOCATOR_EXISTS          = $00000800;
  18522.   {$EXTERNALSYM KSALLOCATOR_FLAG_ALLOCATOR_EXISTS}
  18523. // there is no framing dependency between neighbouring pipes.
  18524.   KSALLOCATOR_FLAG_INDEPENDENT_RANGES        = $00001000;
  18525.   {$EXTERNALSYM KSALLOCATOR_FLAG_INDEPENDENT_RANGES}
  18526.   KSALLOCATOR_FLAG_ATTENTION_STEPPING        = $00002000;
  18527.   {$EXTERNALSYM KSALLOCATOR_FLAG_ATTENTION_STEPPING}
  18528.  
  18529.  
  18530. //
  18531. // old Framing structure
  18532. //
  18533. type
  18534.   PKSAllocatorFraming = ^TKSAllocatorFraming;
  18535.   KSALLOCATOR_FRAMING = record
  18536.   case integer of
  18537.   0: (
  18538.     OptionsFlags : ULONG);       // allocator options (create)
  18539.   1: (
  18540.     RequirementsFlags : ULONG;   // allocation requirements (query)
  18541.     PoolType      : ULONG;
  18542.     Frames        : ULONG; // total number of allowable outstanding frames
  18543.     FrameSize     : ULONG; // total size of frame
  18544.     FileAlignment : ULONG;
  18545.     Reserved      : ULONG);
  18546.   end;
  18547.   {$EXTERNALSYM KSALLOCATOR_FRAMING}
  18548.   PKSALLOCATOR_FRAMING = ^KSALLOCATOR_FRAMING;
  18549.   {$EXTERNALSYM PKSALLOCATOR_FRAMING}
  18550.   TKSAllocatorFraming = KSALLOCATOR_FRAMING;
  18551.  
  18552. //
  18553. // new Framing structure, eventually will replace KSALLOCATOR_FRAMING.
  18554. //
  18555.   PKSFramingRange = ^TKSFramingRange;
  18556.   KS_FRAMING_RANGE = record
  18557.     MinFrameSize : ULONG;
  18558.     MaxFrameSize : ULONG;
  18559.     Stepping     : ULONG;
  18560.   end;
  18561.   {$EXTERNALSYM KS_FRAMING_RANGE}
  18562.   PKS_FRAMING_RANGE = ^KS_FRAMING_RANGE;
  18563.   {$EXTERNALSYM PKS_FRAMING_RANGE}
  18564.   TKSFramingRange = KS_FRAMING_RANGE;
  18565.  
  18566.   PKSFramingRangeWeighted = ^TKSFramingRangeWeighted;
  18567.   KS_FRAMING_RANGE_WEIGHTED = record
  18568.     Range            : TKSFramingRange;
  18569.     InPlaceWeight    : ULONG;
  18570.     NotInPlaceWeight : ULONG;
  18571.   end;
  18572.   {$EXTERNALSYM KS_FRAMING_RANGE_WEIGHTED}
  18573.   PKS_FRAMING_RANGE_WEIGHTED = ^KS_FRAMING_RANGE_WEIGHTED;
  18574.   {$EXTERNALSYM PKS_FRAMING_RANGE_WEIGHTED}
  18575.   TKSFramingRangeWeighted = KS_FRAMING_RANGE_WEIGHTED;
  18576.  
  18577.   PKSCompression = ^TKSCompression;
  18578.   KS_COMPRESSION = record
  18579.     RatioNumerator      : ULONG;      // compression/expansion ratio
  18580.     RatioDenominator    : ULONG;
  18581.     RatioConstantMargin : ULONG;
  18582.   end;
  18583.   {$EXTERNALSYM KS_COMPRESSION}
  18584.   PKS_COMPRESSION = ^KS_COMPRESSION;
  18585.   {$EXTERNALSYM PKS_COMPRESSION}
  18586.   TKSCompression = KS_COMPRESSION;
  18587.  
  18588. //
  18589. // Memory Types and Buses are repeated in each entry.
  18590. // Easiest to use but takes a little more memory than the varsize layout Pin\Memories\Buses\Ranges.
  18591. //
  18592.   PKSFramingItem = ^TKSFramingItem;
  18593.   KS_FRAMING_ITEM = record
  18594.     MemoryType       : TGUID;
  18595.     BusType          : TGUID;
  18596.     MemoryFlags      : ULONG;
  18597.     BusFlags         : ULONG;
  18598.     Flags            : ULONG;
  18599.     Frames           : ULONG; // total number of allowable outstanding frames
  18600.     FileAlignment    : ULONG;
  18601.     MemoryTypeWeight : ULONG; // this memory type Weight pin-wide
  18602.     PhysicalRange    : TKSFramingRange;
  18603.     FramingRange     : TKSFramingRangeWeighted;
  18604.   end;
  18605.   {$EXTERNALSYM KS_FRAMING_ITEM}
  18606.   PKS_FRAMING_ITEM = ^KS_FRAMING_ITEM;
  18607.   {$EXTERNALSYM PKS_FRAMING_ITEM}
  18608.   TKSFramingItem = KS_FRAMING_ITEM;
  18609.  
  18610.   PKSAllocatorFramingEx = ^TKSAllocatorFramingEx;
  18611.   KSALLOCATOR_FRAMING_EX = record
  18612.     CountItems        : ULONG;         // count of FramingItem-s below.
  18613.     PinFlags          : ULONG;
  18614.     OutputCompression : TKSCompression;
  18615.     PinWeight         : ULONG;          // this pin framing's Weight graph-wide
  18616.     FramingItem       : array[0..0] of TKSFramingItem;
  18617.   end;
  18618.   {$EXTERNALSYM KSALLOCATOR_FRAMING_EX}
  18619.   PKSALLOCATOR_FRAMING_EX = ^KSALLOCATOR_FRAMING_EX;
  18620.   {$EXTERNALSYM PKSALLOCATOR_FRAMING_EX}
  18621.   TKSAllocatorFramingEx = KSALLOCATOR_FRAMING_EX;
  18622.  
  18623. //
  18624. // define memory type GUIDs
  18625. //
  18626. const
  18627.   KSMEMORY_TYPE_WILDCARD        : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18628.   {$EXTERNALSYM KSMEMORY_TYPE_WILDCARD}
  18629.   KSMEMORY_TYPE_DONT_CARE       : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18630.   {$EXTERNALSYM KSMEMORY_TYPE_DONT_CARE}
  18631.   KS_TYPE_DONT_CARE             : TGUID = '{00000000-0000-0000-0000-000000000000}';
  18632.   {$EXTERNALSYM KS_TYPE_DONT_CARE}
  18633.  
  18634.   KSMEMORY_TYPE_SYSTEM          : TGUID = '{091bb638-603f-11d1-b067-00a0c9062802}';
  18635.   {$EXTERNALSYM KSMEMORY_TYPE_SYSTEM}
  18636.   KSMEMORY_TYPE_USER            : TGUID = '{8cb0fc28-7893-11d1-b069-00a0c9062802}';
  18637.   {$EXTERNALSYM KSMEMORY_TYPE_USER}
  18638.   KSMEMORY_TYPE_KERNEL_PAGED    : TGUID = '{d833f8f8-7894-11d1-b069-00a0c9062802}';
  18639.   {$EXTERNALSYM KSMEMORY_TYPE_KERNEL_PAGED}
  18640.   KSMEMORY_TYPE_KERNEL_NONPAGED : TGUID = '{4a6d5fc4-7895-11d1-b069-00a0c9062802}';
  18641.   {$EXTERNALSYM KSMEMORY_TYPE_KERNEL_NONPAGED}
  18642.  
  18643. // old KS clients did not specify the device memory type
  18644.   KSMEMORY_TYPE_DEVICE_UNKNOWN  : TGUID = '{091bb639-603f-11d1-b067-00a0c9062802}';
  18645.   {$EXTERNALSYM KSMEMORY_TYPE_DEVICE_UNKNOWN}
  18646.  
  18647. //
  18648. // Helper framing macros.
  18649. //
  18650. {#define DECLARE_SIMPLE_FRAMING_EX(FramingExName, MemoryType, Flags, Frames, Alignment, MinFrameSize, MaxFrameSize) \
  18651.     const KSALLOCATOR_FRAMING_EX FramingExName = \
  18652.     {\
  18653.         1, \
  18654.         0, \
  18655.         {\
  18656.             1, \
  18657.             1, \
  18658.             0 \
  18659.         }//, \
  18660. //        0, \
  18661.         {\
  18662.             {\
  18663.                 MemoryType, \
  18664.                 STATIC_KS_TYPE_DONT_CARE, \
  18665.                 0, \
  18666.                 0, \
  18667.                 Flags, \
  18668.                 Frames, \
  18669.                 Alignment, \
  18670.                 0, \
  18671.                 {\
  18672.                     0, \
  18673.                     (ULONG)-1, \
  18674.                     1 \
  18675.                 }//, \
  18676.                 {\
  18677.                     {\
  18678.                         MinFrameSize, \
  18679.                         MaxFrameSize, \
  18680.                         1 \
  18681.                     }//, \
  18682.  //                   0, \
  18683.  //                   0  \
  18684.  //               }\
  18685.  //           }\
  18686.  //       }\
  18687.  //   }
  18688.  
  18689. {#define SetDefaultKsCompression(KsCompressionPointer) \
  18690. {\
  18691.     KsCompressionPointer->RatioNumerator = 1;\
  18692.     KsCompressionPointer->RatioDenominator = 1;\
  18693.     KsCompressionPointer->RatioConstantMargin = 0;\
  18694. }
  18695.  
  18696. {#define SetDontCareKsFramingRange(KsFramingRangePointer) \
  18697. {\
  18698.     KsFramingRangePointer->MinFrameSize = 0;\
  18699.     KsFramingRangePointer->MaxFrameSize = (ULONG) -1;\
  18700.     KsFramingRangePointer->Stepping = 1;\
  18701. }
  18702.  
  18703. {#define SetKsFramingRange(KsFramingRangePointer, P_MinFrameSize, P_MaxFrameSize) \
  18704. {\
  18705.     KsFramingRangePointer->MinFrameSize = P_MinFrameSize;\
  18706.     KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize;\
  18707.     KsFramingRangePointer->Stepping = 1;\
  18708. }
  18709.  
  18710. {#define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer, P_MinFrameSize, P_MaxFrameSize) \
  18711. {\
  18712.     KS_FRAMING_RANGE *KsFramingRange = &KsFramingRangeWeightedPointer->Range;\
  18713.     SetKsFramingRange(KsFramingRange, P_MinFrameSize, P_MaxFrameSize);\
  18714.     KsFramingRangeWeightedPointer->InPlaceWeight = 0;\
  18715.     KsFramingRangeWeightedPointer->NotInPlaceWeight = 0;\
  18716. }
  18717.  
  18718. {#define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer, P_MemoryType, P_Flags, P_Frames, P_Alignment, P_MinFrameSize, P_MaxFrameSize) \
  18719. {\
  18720.     KS_COMPRESSION *KsCompression = &FramingExPointer->OutputCompression;\
  18721.     KS_FRAMING_RANGE *KsFramingRange = &FramingExPointer->FramingItem[0].PhysicalRange;\
  18722.     KS_FRAMING_RANGE_WEIGHTED *KsFramingRangeWeighted = &FramingExPointer->FramingItem[0].FramingRange;\
  18723.     FramingExPointer->CountItems = 1;\
  18724.     FramingExPointer->PinFlags = 0;\
  18725.     SetDefaultKsCompression(KsCompression);\
  18726.     FramingExPointer->PinWeight = 0;\
  18727.     FramingExPointer->FramingItem[0].MemoryType = P_MemoryType;\
  18728.     FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE;\
  18729.     FramingExPointer->FramingItem[0].MemoryFlags = 0;\
  18730.     FramingExPointer->FramingItem[0].BusFlags = 0;\
  18731.     FramingExPointer->FramingItem[0].Flags = P_Flags;\
  18732.     FramingExPointer->FramingItem[0].Frames = P_Frames;\
  18733.     FramingExPointer->FramingItem[0].FileAlignment = P_Alignment;\
  18734.     FramingExPointer->FramingItem[0].MemoryTypeWeight = 0;\
  18735.     SetDontCareKsFramingRange(KsFramingRange);\
  18736.     SetKsFramingRangeWeighted(KsFramingRangeWeighted, P_MinFrameSize, P_MaxFrameSize);\
  18737. }
  18738.  
  18739.   KSEVENTSETID_StreamAllocator : TGUID = '{75d95571-073c-11d0-a161-0020afd156e4}';
  18740.   {$EXTERNALSYM KSEVENTSETID_StreamAllocator}
  18741.  
  18742. type
  18743.   KSEVENT_STREAMALLOCATOR = (
  18744.     KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,
  18745.     KSEVENT_STREAMALLOCATOR_FREEFRAME
  18746.   );
  18747.   {$EXTERNALSYM KSEVENT_STREAMALLOCATOR}
  18748.   TKSEventStreamAllocator = KSEVENT_STREAMALLOCATOR;
  18749.  
  18750. const
  18751.   KSMETHODSETID_StreamAllocator : TGUID = '{cf6e4341-ec87-11cf-a130-0020afd156e4}';
  18752.   {$EXTERNALSYM KSMETHODSETID_StreamAllocator}
  18753.  
  18754. type
  18755.   KSMETHOD_STREAMALLOCATOR = (
  18756.     KSMETHOD_STREAMALLOCATOR_ALLOC,
  18757.     KSMETHOD_STREAMALLOCATOR_FREE
  18758.   );
  18759.   {$EXTERNALSYM KSMETHOD_STREAMALLOCATOR}
  18760.   TKSMethodStreamAllocation = KSMETHOD_STREAMALLOCATOR;
  18761.  
  18762. {#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler)\
  18763.     DEFINE_KSMETHOD_ITEM(\
  18764.         KSMETHOD_STREAMALLOCATOR_ALLOC,\
  18765.         KSMETHOD_TYPE_WRITE,\
  18766.         (Handler),\
  18767.         sizeof(KSMETHOD),\
  18768.         sizeof(PVOID),\
  18769.         NULL)
  18770.  
  18771. #define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler)\
  18772.     DEFINE_KSMETHOD_ITEM(\
  18773.         KSMETHOD_STREAMALLOCATOR_FREE,\
  18774.         KSMETHOD_TYPE_READ,\
  18775.         (Handler),\
  18776.         sizeof(KSMETHOD),\
  18777.         sizeof(PVOID),\
  18778.         NULL)
  18779.  
  18780. #define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet, MethodAlloc, MethodFree)\
  18781. DEFINE_KSMETHOD_TABLE(AllocatorSet) {\
  18782.     DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc),\
  18783.     DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree)\
  18784. }
  18785. const
  18786.   KSPROPSETID_StreamAllocator : TGUID = '{cf6e4342-ec87-11cf-a130-0020afd156e4}';
  18787.   {$EXTERNALSYM KSPROPSETID_StreamAllocator}
  18788.  
  18789. type
  18790.   PKSStreamAllocatorStatus = ^TKSStreamAllocatorStatus;
  18791.   KSSTREAMALLOCATOR_STATUS = record
  18792.     Framing         : TKSAllocatorFraming;
  18793.     AllocatedFrames : ULONG;
  18794.     Reserved        : ULONG;
  18795.   end;
  18796.   {$EXTERNALSYM KSSTREAMALLOCATOR_STATUS}
  18797.   PKSSTREAMALLOCATOR_STATUS = ^KSSTREAMALLOCATOR_STATUS;
  18798.   {$EXTERNALSYM PKSSTREAMALLOCATOR_STATUS}
  18799.   TKSStreamAllocatorStatus = KSSTREAMALLOCATOR_STATUS;
  18800.  
  18801.   PKSStreamAllocatorStatusEx = ^TKSStreamAllocatorStatusEx;
  18802.   KSSTREAMALLOCATOR_STATUS_EX = record
  18803.     Framing         : TKSAllocatorFramingEx;
  18804.     AllocatedFrames : ULONG;
  18805.     Reserved        : ULONG;
  18806.   end;
  18807.   {$EXTERNALSYM KSSTREAMALLOCATOR_STATUS_EX}
  18808.   PKSSTREAMALLOCATOR_STATUS_EX = ^KSSTREAMALLOCATOR_STATUS_EX;
  18809.   {$EXTERNALSYM PKSSTREAMALLOCATOR_STATUS_EX}
  18810.   TKSStreamAllocatorStatusEx = KSSTREAMALLOCATOR_STATUS_EX;
  18811.  
  18812. const
  18813.   KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT       = $00000001;
  18814.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT}
  18815.   KSSTREAM_HEADER_OPTIONSF_PREROLL           = $00000002;
  18816.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_PREROLL}
  18817.   KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY = $00000004;
  18818.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY}
  18819.   KSSTREAM_HEADER_OPTIONSF_TYPECHANGED       = $00000008;
  18820.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_TYPECHANGED}
  18821.   KSSTREAM_HEADER_OPTIONSF_TIMEVALID         = $00000010;
  18822.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_TIMEVALID}
  18823.   KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY = $00000040;
  18824.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY}
  18825.   KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE      = $00000080;
  18826.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE}
  18827.   KSSTREAM_HEADER_OPTIONSF_DURATIONVALID     = $00000100;
  18828.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_DURATIONVALID}
  18829.   KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM       = $00000200;
  18830.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM}
  18831.   KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA        = $80000000;
  18832.   {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA}
  18833.  
  18834. type
  18835.   KSTIME = record
  18836.     Time        : int64;
  18837.     Numerator   : ULONG;
  18838.     Denominator : ULONG;
  18839.   end;
  18840.   {$EXTERNALSYM KSTIME}
  18841.   PKSTIME = ^KSTIME;
  18842.   {$EXTERNALSYM PKSTIME}
  18843.   TKSTime = KSTIME;
  18844.  
  18845.   PKSStreamHeader = ^TKSStreamHeader;
  18846.   KSSTREAM_HEADER = record
  18847.     Size              : ULONG;
  18848.     TypeSpecificFlags : ULONG;
  18849.     PresentationTime  : TKSTIME;
  18850.     Duration          : int64;
  18851.     FrameExtent       : ULONG;
  18852.     DataUsed          : ULONG;
  18853.     Data              : Pointer;
  18854.     OptionsFlags      : ULONG;
  18855. //#if _WIN64
  18856. //  Reserved          : ULONG;
  18857. //#endif
  18858.   end;
  18859.   {$EXTERNALSYM KSSTREAM_HEADER}
  18860.   PKSSTREAM_HEADER = ^KSSTREAM_HEADER;
  18861.   {$EXTERNALSYM PKSSTREAM_HEADER}
  18862.   TKSStreamHeader = KSSTREAM_HEADER;
  18863.  
  18864. const
  18865.   KSPROPSETID_StreamInterface : TGUID = '{1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a}';
  18866.   {$EXTERNALSYM KSPROPSETID_StreamInterface}
  18867. type
  18868.   KSPROPERTY_STREAMINTERFACE = (
  18869.     KSPROPERTY_STREAMINTERFACE_HEADERSIZE
  18870.   );
  18871.   {$EXTERNALSYM KSPROPERTY_STREAMINTERFACE}
  18872.   TKSPropertyStreamInterface = KSPROPERTY_STREAMINTERFACE;
  18873.  
  18874. {#define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( GetHandler )\
  18875.     DEFINE_KSPROPERTY_ITEM(\
  18876.         KSPROPERTY_STREAMINTERFACE_HEADERSIZE,\
  18877.         (GetHandler),\
  18878.         sizeof(KSPROPERTY),\
  18879.         sizeof(ULONG),\
  18880.         NULL, NULL, 0, NULL, NULL, 0)
  18881.  
  18882. #define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet,\
  18883.     HeaderSizeHandler)\
  18884. DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) {\
  18885.     DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( HeaderSizeHandler )\
  18886. }
  18887. const
  18888.   KSPROPSETID_Stream : TGUId = '{65aaba60-98ae-11cf-a10d-0020afd156e4}';
  18889.   {$EXTERNALSYM KSPROPSETID_Stream}
  18890.  
  18891. type
  18892.   KSPROPERTY_STREAM = (
  18893.     KSPROPERTY_STREAM_ALLOCATOR,
  18894.     KSPROPERTY_STREAM_QUALITY,
  18895.     KSPROPERTY_STREAM_DEGRADATION,
  18896.     KSPROPERTY_STREAM_MASTERCLOCK,
  18897.     KSPROPERTY_STREAM_TIMEFORMAT,
  18898.     KSPROPERTY_STREAM_PRESENTATIONTIME,
  18899.     KSPROPERTY_STREAM_PRESENTATIONEXTENT,
  18900.     KSPROPERTY_STREAM_FRAMETIME,
  18901.     KSPROPERTY_STREAM_RATECAPABILITY,
  18902.     KSPROPERTY_STREAM_RATE,
  18903.     KSPROPERTY_STREAM_PIPE_ID
  18904.   );
  18905.   {$EXTERNALSYM KSPROPERTY_STREAM}
  18906.   TKSPropertyStream = KSPROPERTY_STREAM;
  18907.  
  18908. {#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\
  18909.     DEFINE_KSPROPERTY_ITEM(\
  18910.         KSPROPERTY_STREAM_ALLOCATOR,\
  18911.         (GetHandler),\
  18912.         sizeof(KSPROPERTY),\
  18913.         sizeof(HANDLE),\
  18914.         (SetHandler),\
  18915.         NULL, 0, NULL, NULL, 0)
  18916.  
  18917. #define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\
  18918.     DEFINE_KSPROPERTY_ITEM(\
  18919.         KSPROPERTY_STREAM_QUALITY,\
  18920.         (Handler),\
  18921.         sizeof(KSPROPERTY),\
  18922.         sizeof(KSQUALITY_MANAGER),\
  18923.         NULL, NULL, 0, NULL, NULL, 0)
  18924.  
  18925. #define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\
  18926.     DEFINE_KSPROPERTY_ITEM(\
  18927.         KSPROPERTY_STREAM_DEGRADATION,\
  18928.         (GetHandler),\
  18929.         sizeof(KSPROPERTY),\
  18930.         0,\
  18931.         (SetHandler),\
  18932.         NULL, 0, NULL, NULL, 0)
  18933.  
  18934. #define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\
  18935.     DEFINE_KSPROPERTY_ITEM(\
  18936.         KSPROPERTY_STREAM_MASTERCLOCK,\
  18937.         (GetHandler),\
  18938.         sizeof(KSPROPERTY),\
  18939.         sizeof(HANDLE),\
  18940.         (SetHandler),\
  18941.         NULL, 0, NULL, NULL, 0)
  18942.  
  18943. #define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\
  18944.     DEFINE_KSPROPERTY_ITEM(\
  18945.         KSPROPERTY_STREAM_TIMEFORMAT,\
  18946.         (Handler),\
  18947.         sizeof(KSPROPERTY),\
  18948.         sizeof(GUID),\
  18949.         NULL, NULL, 0, NULL, NULL, 0)
  18950.  
  18951. #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\
  18952.     DEFINE_KSPROPERTY_ITEM(\
  18953.         KSPROPERTY_STREAM_PRESENTATIONTIME,\
  18954.         (GetHandler),\
  18955.         sizeof(KSPROPERTY),\
  18956.         sizeof(KSTIME),\
  18957.         (SetHandler),\
  18958.         NULL, 0, NULL, NULL, 0)
  18959.  
  18960. #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\
  18961.     DEFINE_KSPROPERTY_ITEM(\
  18962.         KSPROPERTY_STREAM_PRESENTATIONEXTENT,\
  18963.         (Handler),\
  18964.         sizeof(KSPROPERTY),\
  18965.         sizeof(LONGLONG),\
  18966.         NULL, NULL, 0, NULL, NULL, 0)
  18967.  
  18968. #define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\
  18969.     DEFINE_KSPROPERTY_ITEM(\
  18970.         KSPROPERTY_STREAM_FRAMETIME,\
  18971.         (Handler),\
  18972.         sizeof(KSPROPERTY),\
  18973.         sizeof(KSFRAMETIME),\
  18974.         NULL, NULL, 0, NULL, NULL, 0)
  18975.  
  18976. #define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\
  18977.     DEFINE_KSPROPERTY_ITEM(\
  18978.         KSPROPERTY_STREAM_RATECAPABILITY,\
  18979.         (Handler),\
  18980.         sizeof(KSRATE_CAPABILITY),\
  18981.         sizeof(KSRATE),\
  18982.         NULL, NULL, 0, NULL, NULL, 0)
  18983.  
  18984. #define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\
  18985.     DEFINE_KSPROPERTY_ITEM(\
  18986.         KSPROPERTY_STREAM_RATE,\
  18987.         (GetHandler),\
  18988.         sizeof(KSPROPERTY),\
  18989.         sizeof(KSRATE),\
  18990.         (SetHandler),\
  18991.         NULL, 0, NULL, NULL, 0)
  18992.  
  18993. #define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\
  18994.     DEFINE_KSPROPERTY_ITEM(\
  18995.         KSPROPERTY_STREAM_PIPE_ID,\
  18996.         (GetHandler),\
  18997.         sizeof(KSPROPERTY),\
  18998.         sizeof(HANDLE),\
  18999.         (SetHandler),\
  19000.         NULL, 0, NULL, NULL, 0)  }
  19001.  
  19002.   PKSQualityManager = ^TKSQualityManager;
  19003.   KSQUALITY_MANAGER = record
  19004.     QualityManager : THandle;
  19005.     Context        : Pointer;
  19006.   end;
  19007.   {$EXTERNALSYM KSQUALITY_MANAGER}
  19008.   PKSQUALITY_MANAGER = ^KSQUALITY_MANAGER;
  19009.   {$EXTERNALSYM PKSQUALITY_MANAGER}
  19010.   TKSQualityManager = KSQUALITY_MANAGER;
  19011.  
  19012.   KSFRAMETIME = record
  19013.     Duration   : int64;
  19014.     FrameFlags : ULONG;
  19015.     Reserved   : ULONG;
  19016.   end;
  19017.   {$EXTERNALSYM KSFRAMETIME}
  19018.   PKSFRAMETIME = ^KSFRAMETIME;
  19019.   {$EXTERNALSYM PKSFRAMETIME}
  19020.   TKSFrameTime = KSFRAMETIME;
  19021. const
  19022.   KSFRAMETIME_VARIABLESIZE = $00000001;
  19023.   {$EXTERNALSYM KSFRAMETIME_VARIABLESIZE}
  19024.  
  19025. type
  19026.   KSRATE = record
  19027.   {$EXTERNALSYM KSRATE}
  19028.     PresentationStart : int64;
  19029.     Duration          : int64;
  19030.     Interface_        : TKSPinInterface;
  19031.     Rate              : Longint;
  19032.     Flags             : ULONG;
  19033.   end;
  19034.   PKSRATE = ^KSRATE;
  19035.   {$EXTERNALSYM PKSRATE}
  19036.   TKSRate = KSRATE;
  19037.  
  19038. const
  19039.   KSRATE_NOPRESENTATIONSTART    = $00000001;
  19040.   {$EXTERNALSYM KSRATE_NOPRESENTATIONSTART}
  19041.   KSRATE_NOPRESENTATIONDURATION = $00000002;
  19042.   {$EXTERNALSYM KSRATE_NOPRESENTATIONDURATION}
  19043.  
  19044. type
  19045.   PKSRateCapability = ^TKSRateCapability;
  19046.   KSRATE_CAPABILITY = record
  19047.     Property_ : KSPROPERTY;
  19048.     Rate      : TKSRATE;
  19049.   end;
  19050.   {$EXTERNALSYM KSRATE_CAPABILITY}
  19051.   PKSRATE_CAPABILITY = ^KSRATE_CAPABILITY;
  19052.   {$EXTERNALSYM PKSRATE_CAPABILITY}
  19053.   TKSRateCapability = KSRATE_CAPABILITY;
  19054.  
  19055. const
  19056.   KSPROPSETID_Clock : TGUID = '{DF12A4C0-AC17-11CF-A5D6-28DB04C10000}';
  19057.   {$EXTERNALSYM KSPROPSETID_Clock}
  19058.  
  19059. //
  19060. // Performs a x*y/z operation on 64 bit quantities by splitting the operation. The equation
  19061. // is simplified with respect to adding in the remainder for the upper 32 bits.
  19062. //
  19063. // (xh * 10000000 / Frequency) * 2^32 + ((((xh * 10000000) % Frequency) * 2^32 + (xl * 10000000)) / Frequency)
  19064. //
  19065.   NANOSECONDS = 10000000;
  19066.   {$EXTERNALSYM NANOSECONDS}
  19067. {#define KSCONVERT_PERFORMANCE_TIME(Frequency, PerformanceTime) \
  19068.     ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS / (Frequency)) << 32) + \
  19069.     ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS) % (Frequency)) << 32) + \
  19070.     ((ULONGLONG)(PerformanceTime).LowPart * NANOSECONDS)) / (Frequency)))}
  19071.  
  19072. type
  19073.   PKSClockCreate = ^TKSClockCreate;
  19074.   KSCLOCK_CREATE = record
  19075.     CreateFlags : ULONG;
  19076.   end;
  19077.   {$EXTERNALSYM KSCLOCK_CREATE}
  19078.   PKSCLOCK_CREATE = ^KSCLOCK_CREATE;
  19079.   {$EXTERNALSYM PKSCLOCK_CREATE}
  19080.   TKSClockCreate = KSCLOCK_CREATE;
  19081.  
  19082.   PKSCorrelatedTime = ^TKSCorrelatedTime;
  19083.   KSCORRELATED_TIME = record
  19084.     Time       : int64;
  19085.     SystemTime : int64;
  19086.   end;
  19087.   {$EXTERNALSYM KSCORRELATED_TIME}
  19088.   PKSCORRELATED_TIME = ^KSCORRELATED_TIME;
  19089.   {$EXTERNALSYM PKSCORRELATED_TIME}
  19090.   TKSCorrelatedTime = KSCORRELATED_TIME;
  19091.  
  19092.   KSRESOLUTION = record
  19093.     Granularity : int64;
  19094.     Error       : int64;
  19095.   end;
  19096.   {$EXTERNALSYM KSRESOLUTION}
  19097.   PKSRESOLUTION = ^KSRESOLUTION;
  19098.   {$EXTERNALSYM PKSRESOLUTION}
  19099.   TKSResolution = KSRESOLUTION;
  19100.  
  19101.   KSPROPERTY_CLOCK = (
  19102.     KSPROPERTY_CLOCK_TIME,
  19103.     KSPROPERTY_CLOCK_PHYSICALTIME,
  19104.     KSPROPERTY_CLOCK_CORRELATEDTIME,
  19105.     KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
  19106.     KSPROPERTY_CLOCK_RESOLUTION,
  19107.     KSPROPERTY_CLOCK_STATE
  19108.   );
  19109.   {$EXTERNALSYM KSPROPERTY_CLOCK}
  19110.   TKSPropertyClock = KSPROPERTY_CLOCK;
  19111.  
  19112. const
  19113.   KSEVENTSETID_Clock : TGUID = '{364D8E20-62C7-11CF-A5D6-28DB04C10000}';
  19114.   {$EXTERNALSYM KSEVENTSETID_Clock}
  19115.  
  19116. type
  19117.   KSEVENT_CLOCK_POSITION = (
  19118.     KSEVENT_CLOCK_INTERVAL_MARK,
  19119.     KSEVENT_CLOCK_POSITION_MARK
  19120.   );
  19121.   {$EXTERNALSYM KSEVENT_CLOCK_POSITION}
  19122.   TKSEventClockPosition = KSEVENT_CLOCK_POSITION;
  19123.  
  19124. const
  19125.   KSEVENTSETID_Connection : TGUID = '{7f4bcbe0-9ea5-11cf-a5d6-28db04c10000}';
  19126.   {$EXTERNALSYM KSEVENTSETID_Connection}
  19127.  
  19128. type
  19129.   KSEVENT_CONNECTION = (
  19130.     KSEVENT_CONNECTION_POSITIONUPDATE,
  19131.     KSEVENT_CONNECTION_DATADISCONTINUITY,
  19132.     KSEVENT_CONNECTION_TIMEDISCONTINUITY,
  19133.     KSEVENT_CONNECTION_PRIORITY,
  19134.     KSEVENT_CONNECTION_ENDOFSTREAM
  19135.   );
  19136.   {$EXTERNALSYM KSEVENT_CONNECTION}
  19137.   TKSEventConnection = KSEVENT_CONNECTION;
  19138.  
  19139.   KSQUALITY = record
  19140.     Context    : Pointer;
  19141.     Proportion : ULONG;
  19142.     DeltaTime  : int64;
  19143.   end;
  19144.   {$EXTERNALSYM KSQUALITY}
  19145.   PKSQUALITY = ^KSQUALITY;
  19146.   {$EXTERNALSYM PKSQUALITY}
  19147.   TKSQuality = KSQUALITY;
  19148.  
  19149.   KSERROR = record
  19150.   {$EXTERNALSYM KSERROR}
  19151.     Context : Pointer;
  19152.     Status  : ULONG;
  19153.   end;
  19154.   PKSERROR = ^KSERROR;
  19155.   {$EXTERNALSYM PKSERROR}
  19156.   TKSError = KSERROR;
  19157.  
  19158.   PKSDEGRADE = ^KSDEGRADE;
  19159.   {$EXTERNALSYM PKSDEGRADE}
  19160.   KSDEGRADE = KSIDENTIFIER;
  19161.   {$EXTERNALSYM KSDEGRADE}
  19162.  
  19163.   TKSDegrade = KSDEGRADE;
  19164.  
  19165. const
  19166.   KSDEGRADESETID_Standard : TGUID = '{9F564180-704C-11D0-A5D6-28DB04C10000}';
  19167.   {$EXTERNALSYM KSDEGRADESETID_Standard}
  19168.  
  19169. type
  19170.   KSDEGRADE_STANDARD = (
  19171.     KSDEGRADE_STANDARD_SAMPLE,
  19172.     KSDEGRADE_STANDARD_QUALITY,
  19173.     KSDEGRADE_STANDARD_COMPUTATION,
  19174.     KSDEGRADE_STANDARD_SKIP
  19175.   );
  19176.   {$EXTERNALSYM KSDEGRADE_STANDARD}
  19177.   TKSDegradeStandard = KSDEGRADE_STANDARD;
  19178.  
  19179. //#if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
  19180. //#include <pshpack1.h>
  19181. //#endif
  19182.  
  19183.   KSPROPERTY_SERIALHDR = record
  19184.     PropertySet : TGUID;
  19185.     Count       : ULONG;
  19186.   end;
  19187.   {$EXTERNALSYM KSPROPERTY_SERIALHDR}
  19188.   PKSPROPERTY_SERIALHDR = ^KSPROPERTY_SERIALHDR;
  19189.   {$EXTERNALSYM PKSPROPERTY_SERIALHDR}
  19190.   TKSPropertySerialHDR = KSPROPERTY_SERIALHDR;
  19191.  
  19192. //#if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
  19193. //#include <poppack.h>
  19194. //#endif
  19195.  
  19196.   PKSPropertySerial = ^TKSPropertySerial;
  19197.   KSPROPERTY_SERIAL = record
  19198.     PropTypeSet    : TKSIdentifier;
  19199.     Id             : ULONG;
  19200.     PropertyLength : ULONG;
  19201.   end;
  19202.   {$EXTERNALSYM KSPROPERTY_SERIAL}
  19203.   PKSPROPERTY_SERIAL = ^KSPROPERTY_SERIAL;
  19204.   {$EXTERNALSYM PKSPROPERTY_SERIAL}
  19205.   TKSPropertySerial = KSPROPERTY_SERIAL;
  19206.  
  19207. //===========================================================================
  19208. //
  19209. // exported prototypes
  19210.  
  19211.  
  19212. //  From WinNT.h (H.GOURVEST)
  19213. //  Define the access mask as a longword sized structure divided up as
  19214. //  follows:
  19215. //
  19216. //       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  19217. //       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  19218. //      +---------------+---------------+-------------------------------+
  19219. //      |G|G|G|G|Res'd|A| StandardRights|         SpecificRights        |
  19220. //      |R|W|E|A|     |S|               |                               |
  19221. //      +-+-------------+---------------+-------------------------------+
  19222. //
  19223. //      typedef struct _ACCESS_MASK {
  19224. //          WORD   SpecificRights;
  19225. //          BYTE  StandardRights;
  19226. //          BYTE  AccessSystemAcl : 1;
  19227. //          BYTE  Reserved : 3;
  19228. //          BYTE  GenericAll : 1;
  19229. //          BYTE  GenericExecute : 1;
  19230. //          BYTE  GenericWrite : 1;
  19231. //          BYTE  GenericRead : 1;
  19232. //      } ACCESS_MASK;
  19233. //      typedef ACCESS_MASK *PACCESS_MASK;
  19234. //
  19235. //  but to make life simple for programmer's we'll allow them to specify
  19236. //  a desired access mask by simply OR'ing together mulitple single rights
  19237. //  and treat an access mask as a DWORD.  For example
  19238. //
  19239. //      DesiredAccess = DELETE | READ_CONTROL
  19240. //
  19241. //  So we'll declare ACCESS_MASK as DWORD
  19242. //
  19243.  
  19244.   function KsCreateAllocator(ConnectionHandle: THandle;
  19245.              AllocatorFraming: PKSAllocatorFraming;
  19246.              out AllocatorHandle: PHandle): DWORD; stdcall;
  19247.   {$EXTERNALSYM KsCreateAllocator}
  19248.  
  19249.   function KsCreateClock(ConnectionHandle: THandle;
  19250.              ClockCreate: PKSClockCreate;
  19251.              out ClockHandle: PHandle): DWORD; stdcall;
  19252.   {$EXTERNALSYM KsCreateClock}
  19253.  
  19254.   function KsCreatePin(FilterHandle: THandle;
  19255.              Connect: PKSPinConnect;
  19256.              DesiredAccess: ACCESS_MASK ;
  19257.              out ConnectionHandle: PHandle): DWORD; stdcall;
  19258.   {$EXTERNALSYM KsCreatePin}
  19259.  
  19260.   function KsCreateTopologyNode(ParentHandle: THandle;
  19261.              NodeCreate: PKSNodeCreate;
  19262.              DesiredAccess: ACCESS_MASK;
  19263.              out NodeHandle: PHandle): DWORD; stdcall;
  19264.   {$EXTERNALSYM KsCreateTopologyNode}
  19265.  
  19266. {===============================================================================
  19267. *
  19268. * Copyright (C) Microsoft Corporation, 1996 - 1999
  19269. * Module Name:   ksproxy.h
  19270. * Abstract   :   Interface definitions for WDM-CSA proxy filters.
  19271. *
  19272. *==============================================================================}
  19273. const
  19274.   IID_IKsObject             : TGUID = (D1:$423c13a2;D2:$2070;D3:$11d0;D4:($9e,$f7,$00,$aa,$00,$a2,$16,$a1));
  19275.   {$EXTERNALSYM IID_IKsObject}
  19276.   STATIC_IID_IKsObject      : TGUID = (D1:$423c13a2;D2:$2070;D3:$11d0;D4:($9e,$f7,$00,$aa,$00,$a2,$16,$a1));
  19277.   {$EXTERNALSYM STATIC_IID_IKsObject}
  19278.  
  19279.   IID_IKsPinEx              : TGUID = (D1:$7bb38260;D2:$d19c;D3:$11d2;D4:($b3,$8a,$00,$a0,$c9,$5e,$c2,$2e));
  19280.   {$EXTERNALSYM IID_IKsPinEx}
  19281.   STATIC_IID_IKsPinEx       : TGUID = (D1:$7bb38260;D2:$d19c;D3:$11d2;D4:($b3,$8a,$00,$a0,$c9,$5e,$c2,$2e));
  19282.   {$EXTERNALSYM STATIC_IID_IKsPinEx}
  19283.  
  19284.   IID_IKsPinPipe            : TGUID = (D1:$e539cd90;D2:$a8b4;D3:$11d1;D4:($81,$89,$00,$a0,$c9,$06,$28,$02));
  19285.   {$EXTERNALSYM IID_IKsPinPipe}
  19286.   STATIC_IID_IKsPinPipe     : TGUID = (D1:$e539cd90;D2:$a8b4;D3:$11d1;D4:($81,$89,$00,$a0,$c9,$06,$28,$02));
  19287.   {$EXTERNALSYM STATIC_IID_IKsPinPipe}
  19288.  
  19289.   IID_IKsDataTypeCompletion : TGUID = (D1:$827D1A0E;D2:$0F73;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  19290.   {$EXTERNALSYM IID_IKsDataTypeCompletion}
  19291.   STATIC_IID_IKsDataTypeCompletion : TGUID = (D1:$827D1A0E;D2:$0F73;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  19292.   {$EXTERNALSYM STATIC_IID_IKsDataTypeCompletion}
  19293.  
  19294.   IID_IKsClockPropertySet   : TGUID = (D1:$5C5CBD84;D2:$E755;D3:$11D0;D4:($AC,$18,$00,$A0,$C9,$22,$31,$96));
  19295.   {$EXTERNALSYM IID_IKsClockPropertySet}
  19296.   STATIC_IID_IKsClockPropertySet   : TGUID = (D1:$5C5CBD84;D2:$E755;D3:$11D0;D4:($AC,$18,$00,$A0,$C9,$22,$31,$96));
  19297.   {$EXTERNALSYM STATIC_IID_IKsClockPropertySet}
  19298.  
  19299.   IID_IKsAllocator          : TGUID = (D1:$8da64899;D2:$c0d9;D3:$11d0;D4:($84,$13,$00,$00,$f8,$22,$fe,$8a));
  19300.   {$EXTERNALSYM IID_IKsAllocator}
  19301.   STATIC_IID_IKsAllocator          : TGUID = (D1:$8da64899;D2:$c0d9;D3:$11d0;D4:($84,$13,$00,$00,$f8,$22,$fe,$8a));
  19302.   {$EXTERNALSYM STATIC_IID_IKsAllocator}
  19303.  
  19304.   IID_IKsAllocatorEx        : TGUID = (D1:$091bb63a;D2:$603f;D3:$11d1;D4:($b0,$67,$00,$a0,$c9,$06,$28,$02));
  19305.   {$EXTERNALSYM IID_IKsAllocatorEx}
  19306.   STATIC_IID_IKsAllocatorEx        : TGUID = (D1:$091bb63a;D2:$603f;D3:$11d1;D4:($b0,$67,$00,$a0,$c9,$06,$28,$02));
  19307.   {$EXTERNALSYM STATIC_IID_IKsAllocatorEx}
  19308.  
  19309.   IID_IKsTopology           : TGUID = (D1:$28F54683;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  19310.   {$EXTERNALSYM IID_IKsTopology}
  19311.   STATIC_IID_IKsTopology    : TGUID = (D1:$28F54683;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  19312.   {$EXTERNALSYM STATIC_IID_IKsTopology}
  19313.  
  19314.   IID_IKsAggregateControl   : TGUID = (D1:$7F40EAC0;D2:$3947;D3:$11D2;D4:($87,$4E,$00,$A0,$C9,$22,$31,$96));
  19315.   {$EXTERNALSYM IID_IKsAggregateControl}
  19316.   STATIC_IID_IKsAggregateControl   : TGUID = (D1:$7F40EAC0;D2:$3947;D3:$11D2;D4:($87,$4E,$00,$A0,$C9,$22,$31,$96));
  19317.   {$EXTERNALSYM STATIC_IID_IKsAggregateControl}
  19318.  
  19319.   CLSID_Proxy               : TGUID = (D1:$17CCA71B;D2:$ECD7;D3:$11D0;D4:($B9,$08,$00,$A0,$C9,$22,$31,$96));
  19320.   {$EXTERNALSYM CLSID_Proxy}
  19321.  
  19322.   IID_IKsQualityForwarder   : TGUID = '{97EBAACB-95BD-11D0-A3EA-00A0C9223196}';
  19323.   {$EXTERNALSYM IID_IKsQualityForwarder}
  19324.   STATIC_IID_IKsQualityForwarder   : TGUID = '{97EBAACB-95BD-11D0-A3EA-00A0C9223196}';
  19325.   {$EXTERNALSYM STATIC_IID_IKsQualityForwarder}
  19326.  
  19327.   IID_IKsNotifyEvent : TGUID = '{412bd695-f84b-46c1-ac73-54196dbc8fa7}';
  19328.   {$EXTERNALSYM IID_IKsNotifyEvent}
  19329.  
  19330. type
  19331.   KSALLOCATORMODE = (
  19332.     KsAllocatorMode_User,
  19333.     KsAllocatorMode_Kernel
  19334.   );
  19335.   {$EXTERNALSYM KSALLOCATORMODE}
  19336.   TKSAllocatorMode = KSALLOCATORMODE;
  19337.  
  19338.   PFramingProp = ^TFramingProp;
  19339.   FRAMING_PROP = (
  19340.     FramingProp_Uninitialized,
  19341.     FramingProp_None,
  19342.     FramingProp_Old,
  19343.     FramingProp_Ex
  19344.   );
  19345.   {$EXTERNALSYM FRAMING_PROP}
  19346.   PFRAMING_PROP = ^FRAMING_PROP;
  19347.   {$EXTERNALSYM PFRAMING_PROP}
  19348.   TFramingProp = FRAMING_PROP;
  19349.  
  19350.   FRAMING_CACHE_OPS = (
  19351.     Framing_Cache_Update,     // request to bypass cache when read/write
  19352.     Framing_Cache_ReadLast,
  19353.     Framing_Cache_ReadOrig,
  19354.     Framing_Cache_Write
  19355.   );
  19356.   {$EXTERNALSYM FRAMING_CACHE_OPS}
  19357.   TFramingCacheOps = FRAMING_CACHE_OPS;
  19358.  
  19359.   OPTIMAL_WEIGHT_TOTALS = record
  19360.     MinTotalNominator : int64;
  19361.     MaxTotalNominator : int64;
  19362.     TotalDenominator  : int64;
  19363.   end;
  19364.   {$EXTERNALSYM OPTIMAL_WEIGHT_TOTALS}
  19365.   TOptimalWeightTotals = OPTIMAL_WEIGHT_TOTALS;
  19366.  
  19367. //
  19368. // allocators strategy is defined by graph manager
  19369. //
  19370. const
  19371.   AllocatorStrategy_DontCare = 0;
  19372.   {$EXTERNALSYM AllocatorStrategy_DontCare}
  19373.  
  19374. //
  19375. // what to optimize
  19376. //
  19377.   AllocatorStrategy_MinimizeNumberOfFrames     = $00000001;
  19378.   {$EXTERNALSYM AllocatorStrategy_MinimizeNumberOfFrames}
  19379.   AllocatorStrategy_MinimizeFrameSize          = $00000002;
  19380.   {$EXTERNALSYM AllocatorStrategy_MinimizeFrameSize}
  19381.   AllocatorStrategy_MinimizeNumberOfAllocators = $00000004;
  19382.   {$EXTERNALSYM AllocatorStrategy_MinimizeNumberOfAllocators}
  19383.   AllocatorStrategy_MaximizeSpeed              = $00000008;
  19384.   {$EXTERNALSYM AllocatorStrategy_MaximizeSpeed}
  19385.  
  19386. //
  19387. // factors (flags) defining the Pipes properties
  19388. //
  19389.   PipeFactor_None               = 0;
  19390.   {$EXTERNALSYM PipeFactor_None}
  19391.   PipeFactor_UserModeUpstream   = $00000001;
  19392.   {$EXTERNALSYM PipeFactor_UserModeUpstream}
  19393.   PipeFactor_UserModeDownstream = $00000002;
  19394.   {$EXTERNALSYM PipeFactor_UserModeDownstream}
  19395.   PipeFactor_MemoryTypes        = $00000004;
  19396.   {$EXTERNALSYM PipeFactor_MemoryTypes}
  19397.   PipeFactor_Flags              = $00000008;
  19398.   {$EXTERNALSYM PipeFactor_Flags}
  19399.   PipeFactor_PhysicalRanges     = $00000010;
  19400.   {$EXTERNALSYM PipeFactor_PhysicalRanges}
  19401.   PipeFactor_OptimalRanges      = $00000020;
  19402.   {$EXTERNALSYM PipeFactor_OptimalRanges}
  19403.   PipeFactor_FixedCompression   = $00000040;
  19404.   {$EXTERNALSYM PipeFactor_FixedCompression}
  19405.   PipeFactor_UnknownCompression = $00000080;
  19406.   {$EXTERNALSYM PipeFactor_UnknownCompression}
  19407.   PipeFactor_Buffers            = $00000100;
  19408.   {$EXTERNALSYM PipeFactor_Buffers}
  19409.   PipeFactor_Align              = $00000200;
  19410.   {$EXTERNALSYM PipeFactor_Align}
  19411.  
  19412.   PipeFactor_PhysicalEnd        = $00000400;
  19413.   {$EXTERNALSYM PipeFactor_PhysicalEnd}
  19414.   PipeFactor_LogicalEnd         = $00000800;
  19415.   {$EXTERNALSYM PipeFactor_LogicalEnd}
  19416.  
  19417. type
  19418.   PIPE_STATE = (
  19419.     PipeState_DontCare,
  19420.     PipeState_RangeNotFixed,
  19421.     PipeState_RangeFixed,
  19422.     PipeState_CompressionUnknown,
  19423.     PipeState_Finalized
  19424.   );
  19425.   {$EXTERNALSYM PIPE_STATE}
  19426.   TPipeState = PIPE_STATE;
  19427.  
  19428. //
  19429. // pipe dimensions relative to BeginPin.
  19430. //
  19431.   PPipeDimensions = ^TPipeDimensions;
  19432.   PIPE_DIMENSIONS = record
  19433.     AllocatorPin    : TKSCompression;
  19434.     MaxExpansionPin : TKSCompression;
  19435.     EndPin          : TKSCompression;
  19436.   end;
  19437.   {$EXTERNALSYM PIPE_DIMENSIONS}
  19438.   PPIPE_DIMENSIONS = ^PIPE_DIMENSIONS;
  19439.   {$EXTERNALSYM PPIPE_DIMENSIONS}
  19440.   TPipeDimensions = PIPE_DIMENSIONS;
  19441.  
  19442.   PPipeAllocatorPlace = ^TPipeAllocatorPlace;
  19443.   PIPE_ALLOCATOR_PLACE = (
  19444.     Pipe_Allocator_None,
  19445.     Pipe_Allocator_FirstPin,
  19446.     Pipe_Allocator_LastPin,
  19447.     Pipe_Allocator_MiddlePin
  19448.   );
  19449.   {$EXTERNALSYM PIPE_ALLOCATOR_PLACE}
  19450.   PPIPE_ALLOCATOR_PLACE = ^PIPE_ALLOCATOR_PLACE;
  19451.   {$EXTERNALSYM PPIPE_ALLOCATOR_PLACE}
  19452.   TPipeAllocatorPlace = PIPE_ALLOCATOR_PLACE;
  19453.  
  19454.   PKSLogicalMemoryType = ^TKSLogicalMemoryType;
  19455.   KS_LogicalMemoryType = (
  19456.     KS_MemoryTypeDontCare,
  19457.     KS_MemoryTypeKernelPaged,
  19458.     KS_MemoryTypeKernelNonPaged,
  19459.     KS_MemoryTypeDeviceHostMapped,
  19460.     KS_MemoryTypeDeviceSpecific,
  19461.     KS_MemoryTypeUser,
  19462.     KS_MemoryTypeAnyHost
  19463.   );
  19464.   {$EXTERNALSYM KS_LogicalMemoryType}
  19465.   PKS_LogicalMemoryType = ^KS_LogicalMemoryType;
  19466.   {$EXTERNALSYM PKS_LogicalMemoryType}
  19467.   TKSLogicalMemoryType = KS_LogicalMemoryType;
  19468.  
  19469.   PIPE_TERMINATION = record
  19470.     Flags          : ULONG;
  19471.     OutsideFactors : ULONG;
  19472.     Weigth         : ULONG;            // outside weight
  19473.     PhysicalRange  : TKSFramingRange;
  19474.     OptimalRange   : TKSFramingRangeWeighted;
  19475.     Compression    : TKSCompression;  // relative to the connected pin on a neighboring filter.
  19476.   end;
  19477.   {$EXTERNALSYM PIPE_TERMINATION}
  19478.   TPipeTermination = PIPE_TERMINATION;
  19479.  
  19480.   IKsAllocatorEx = interface;
  19481.  
  19482. //
  19483. // extended allocator properties
  19484. //
  19485.   PAllocatorPropertiesEx = ^TAllocatorPropertiesEx;
  19486.   ALLOCATOR_PROPERTIES_EX = record
  19487.     cBuffers          : longint;
  19488.     cbBuffer          : longint;
  19489.     cbAlign           : longint;
  19490.     cbPrefix          : longint;
  19491. // new part
  19492.     MemoryType        : TGUID;
  19493.     BusType           : TGUID;                 // one of the buses this pipe is using
  19494.     State             : TPipeState;
  19495.     Input             : TPipeTermination;
  19496.     Output            : TPipeTermination;
  19497.     Strategy          : ULONG;
  19498.     Flags             : ULONG;
  19499.     Weight            : ULONG;
  19500.     LogicalMemoryType : TKSLogicalMemoryType;
  19501.     AllocatorPlace    : TPipeAllocatorPlace;
  19502.     Dimensions        : TPipeDimensions;
  19503.     PhysicalRange     : TKSFramingRange;     // on allocator pin
  19504.     PrevSegment       : IKsAllocatorEx;        // doubly-linked list of KS allocators
  19505.     CountNextSegments : ULONG;                 // possible multiple dependent pipes
  19506.     NextSegments      : IKsAllocatorEx;
  19507.     InsideFactors     : ULONG;                 // existing factors (different from "don't care")
  19508.     NumberPins        : ULONG;
  19509.   end;
  19510.   {$EXTERNALSYM ALLOCATOR_PROPERTIES_EX}
  19511.   PALLOCATOR_PROPERTIES_EX =^ALLOCATOR_PROPERTIES_EX;
  19512.   {$EXTERNALSYM PALLOCATOR_PROPERTIES_EX}
  19513.   TAllocatorPropertiesEx = ALLOCATOR_PROPERTIES_EX;
  19514.  
  19515.   {$HPPEMIT 'typedef System::DelphiInterface<IKsClockPropertySet> _di_IKsClockPropertySet;'}
  19516.   {$EXTERNALSYM IKsClockPropertySet}
  19517.   IKsClockPropertySet = interface(IUnknown)
  19518.     ['{5C5CBD84-E755-11D0-AC18-00A0C9223196}']
  19519.     (*** IKsClockPropertySet methods ***)
  19520.     procedure KsGetTime(out Time: int64); stdcall;
  19521.     procedure KsSetTime(Time: int64); stdcall;
  19522.     procedure KsGetPhysicalTime(out Time: int64); stdcall;
  19523.     procedure KsSetPhysicalTime(Time: int64); stdcall;
  19524.     procedure KsGetCorrelatedTime(out CorrelatedTime: TKSCorrelatedTime); stdcall;
  19525.     procedure KsSetCorrelatedTime(CorrelatedTime: TKSCorrelatedTime); stdcall;
  19526.     procedure KsGetCorrelatedPhysicalTime(out CorrelatedTime: TKSCorrelatedTime); stdcall;
  19527.     procedure KsSetCorrelatedPhysicalTime(CorrelatedTime: TKSCorrelatedTime); stdcall;
  19528.     procedure KsGetResolution(out Resolution: TKSResolution); stdcall;
  19529.     procedure KsGetState(out State: TKSState); stdcall;
  19530.   end;
  19531.  
  19532.   {$HPPEMIT 'typedef System::DelphiInterface<IKsAllocator> _di_IKsAllocator;'}
  19533.   {$EXTERNALSYM IKsAllocator}
  19534.   IKsAllocator = interface(IUnknown)
  19535.     ['{8da64899-c0d9-11d0-8413-0000f822fe8a}']
  19536.     (*** IKsAllocator methods ***)
  19537.     function  KsGetAllocatorHandle: THandle; stdcall;
  19538.     function  KsGetAllocatorMode: TKSALLOCATORMODE; stdcall;
  19539.     procedure KsGetAllocatorStatus(AllocatorStatus: PKSSTREAMALLOCATOR_STATUS); stdcall;
  19540.     procedure KsSetAllocatorMode(Mode: TKSALLOCATORMODE); stdcall;
  19541.   end;
  19542.  
  19543.   IKsPin = interface;
  19544.  
  19545.   {$HPPEMIT 'typedef System::DelphiInterface<IKsAllocatorEx> _di_IKsAllocatorEx;'}
  19546.   {$EXTERNALSYM IKsAllocatorEx}
  19547.   IKsAllocatorEx = interface(IKsAllocator)
  19548.     ['{091bb63a-603f-11d1-b067-00a0c9062802}']
  19549.     (*** IKsAllocatorEx methods ***)
  19550.     function  KsGetProperties: TAllocatorPropertiesEx; stdcall;
  19551.     procedure KsSetProperties(PROPERTIES: PALLOCATOR_PROPERTIES_EX); stdcall;
  19552.     procedure KsSetAllocatorHandle(AllocatorHandle: THandle); stdcall;
  19553.     function  KsCreateAllocatorAndGetHandle(KsPin: IKsPin): THandle; stdcall;
  19554.   end;
  19555.  
  19556.   KSPEEKOPERATION = (
  19557.     KsPeekOperation_PeekOnly,
  19558.     KsPeekOperation_AddRef
  19559.   );
  19560.   {$EXTERNALSYM KSPEEKOPERATION}
  19561.   TKSPeekOperation = KSPEEKOPERATION;
  19562.  
  19563.   IKsInterfaceHandler = interface;
  19564.   IKsDataTypeHandler = interface;
  19565.  
  19566.   KSIOOPERATION = (
  19567.     KsIoOperation_Write,
  19568.     KsIoOperation_Read
  19569.   );
  19570.   {$EXTERNALSYM KSIOOPERATION}
  19571.   TKSIOOperation = KSIOOPERATION;
  19572.  
  19573.   PKSStreamSegment = ^TKSStreamSegment;
  19574.   KSSTREAM_SEGMENT = record
  19575.     KsInterfaceHandler : IKsInterfaceHandler;
  19576.     KsDataTypeHandler  : IKsDataTypeHandler;
  19577.     IoOperation        : TKSIOOPERATION;
  19578.     CompletionEvent    : THandle;
  19579.   end;
  19580.   {$EXTERNALSYM KSSTREAM_SEGMENT}
  19581.   PKSSTREAM_SEGMENT = ^KSSTREAM_SEGMENT;
  19582.   {$EXTERNALSYM PKSSTREAM_SEGMENT}
  19583.   TKSStreamSegment = KSSTREAM_SEGMENT;
  19584.  
  19585.   {$HPPEMIT 'typedef System::DelphiInterface<IKsPin> _di_IKsPin;'}
  19586.   {$EXTERNALSYM IKsPin}
  19587.   IKsPin = interface(IUnknown)
  19588.     ['{b61178d1-a2d9-11cf-9e53-00aa00a216a1}']
  19589.     (*** IKsPin methods ***)
  19590.     procedure KsQueryMediums(MediumList: PKSMULTIPLE_ITEM); stdcall;
  19591.     procedure KsQueryInterfaces(InterfaceList: PKSMULTIPLE_ITEM); stdcall;
  19592.     procedure KsCreateSinkPinHandle(Interface_: TKSPinInterface; Medium: TKSPinMedium); stdcall;
  19593.     procedure KsGetCurrentCommunication(Communication: PKSPIN_COMMUNICATION;
  19594.                 Interface_: PKSPIN_INTERFACE; Medium: PKSPIN_MEDIUM); stdcall;
  19595.     procedure KsPropagateAcquire; stdcall;
  19596.     procedure KsDeliver(Sample: IMediaSample; Flags: ULONG); stdcall;
  19597.     procedure KsMediaSamplesCompleted(StreamSegment: PKSSTREAM_SEGMENT); stdcall;
  19598.     function  KsPeekAllocator(Operation: TKSPEEKOPERATION): IMemAllocator; stdcall;
  19599.     procedure KsReceiveAllocator(MemAllocator: IMemAllocator); stdcall;
  19600.     procedure KsRenegotiateAllocator; stdcall;
  19601.     function  KsIncrementPendingIoCount: Longint; stdcall;
  19602.     function  KsDecrementPendingIoCount: Longint; stdcall;
  19603.     procedure KsQualityNotify(Proportion: ULONG; TimeDelta: TReferenceTime); stdcall;
  19604.   end;
  19605.  
  19606.   {$HPPEMIT 'typedef System::DelphiInterface<IKsPinEx> _di_IKsPinEx;'}
  19607.   {$EXTERNALSYM IKsPinEx}
  19608.   IKsPinEx = interface(IKsPin)
  19609.     ['{7bb38260-d19c-11d2-b38a-00a0c95ec22e}']
  19610.     (*** IKsPinEx methods ***)
  19611.     procedure KsNotifyError(Sample: IMediaSample; hr: HResult);
  19612.   end;
  19613.  
  19614.   {$HPPEMIT 'typedef System::DelphiInterface<IKsPinPipe> _di_IKsPinPipe;'}
  19615.   {$EXTERNALSYM IKsPinPipe}
  19616.   IKsPinPipe = interface(IUnknown)
  19617.     ['{e539cd90-a8b4-11d1-8189-00a0c9062802}']
  19618.     (*** IKsPinPipe methods ***)
  19619.     procedure KsGetPinFramingCache(FramingEx: PKSALLOCATOR_FRAMING_EX;
  19620.                 FramingProp: PFRAMING_PROP; Option: TFramingCacheOps); stdcall;
  19621.     procedure KsSetPinFramingCache(FramingEx: PKSALLOCATOR_FRAMING_EX;
  19622.                 FramingProp: PFRAMING_PROP; Option: TFramingCacheOps); stdcall;
  19623.     function KsGetConnectedPin: IPin; stdcall;
  19624.     function KsGetPipe(Operation: TKSPEEKOPERATION): IKsAllocatorEx; stdcall;
  19625.     procedure KsSetPipe(KsAllocator: IKsAllocatorEx); stdcall;
  19626.     function KsGetPipeAllocatorFlag: ULONG; stdcall;
  19627.     procedure KsSetPipeAllocatorFlag(Flag: ULONG); stdcall;
  19628.     function KsGetPinBusCache: TGUID; stdcall;
  19629.     procedure KsSetPinBusCache(const Bus: TGUID); stdcall;
  19630.     // very useful methods for tracing.
  19631.     function KsGetPinName: PWideChar; stdcall;
  19632.     function KsGetFilterName: PWideChar; stdcall;
  19633.   end;
  19634.  
  19635.   {$HPPEMIT 'typedef System::DelphiInterface<IKsPinFactory> _di_IKsPinFactory;'}
  19636.   {$EXTERNALSYM IKsPinFactory}
  19637.   IKsPinFactory = interface(IUnknown)
  19638.     ['{CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196}']
  19639.     (*** IKsPinFactory methods ***)
  19640.     procedure KsPinFactory(PinFactory: PULONG); stdcall;
  19641.   end;
  19642.  
  19643.   {$HPPEMIT 'typedef System::DelphiInterface<IKsDataTypeHandler> _di_IKsDataTypeHandler;'}
  19644.   {$EXTERNALSYM IKsDataTypeHandler}
  19645.   IKsDataTypeHandler = interface(IUnknown)
  19646.     ['{5ffbaa02-49a3-11d0-9f36-00aa00a216a1}']
  19647.     (*** IKsDataTypeHandler methods ***)
  19648.     procedure KsCompleteIoOperation(Sample: IMediaSample; StreamHeader: Pointer;
  19649.                 IoOperation: TKSIOOPERATION; Cancelled: BOOL); stdcall;
  19650.     procedure KsIsMediaTypeInRanges(DataRanges: Pointer); stdcall;
  19651.     procedure KsPrepareIoOperation(Sample: IMediaSample; StreamHeader: Pointer;
  19652.                 IoOperation: TKSIOOPERATION); stdcall;
  19653.     procedure KsQueryExtendedSize(var ExtendedSize: ULONG); stdcall;
  19654.     procedure KsSetMediaType(const AmMediaType: TAMMediaType); stdcall;
  19655.   end;
  19656.  
  19657.   {$HPPEMIT 'typedef System::DelphiInterface<IKsDataTypeCompletion> _di_IKsDataTypeCompletion;'}
  19658.   {$EXTERNALSYM IKsDataTypeCompletion}
  19659.   IKsDataTypeCompletion = interface(IUnknown)
  19660.     ['{827D1A0E-0F73-11D2-B27A-00A0C9223196}']
  19661.     (*** IKsDataTypeCompletion methods ***)
  19662.     procedure KsCompleteMediaType(FilterHandle: THandle; PinFactoryId: ULONG;
  19663.                 var AmMediaType: TAMMediaType); stdcall;
  19664.   end;
  19665.  
  19666.   {$HPPEMIT 'typedef System::DelphiInterface<IKsInterfaceHandler> _di_IKsInterfaceHandler;'}
  19667.   {$EXTERNALSYM IKsInterfaceHandler}
  19668.   IKsInterfaceHandler = interface(IUnknown)
  19669.     ['{D3ABC7E0-9A61-11d0-A40D-00A0C9223196}']
  19670.     (*** IKsInterfaceHandler methods ***)
  19671.     procedure KsSetPin(KsPin: IKsPin); stdcall;
  19672.     procedure KsProcessMediaSamples(KsDataTypeHandler: IKsDataTypeHandler;
  19673.                 SampleList: IMediaSample; SampleCount: PLongint;
  19674.                 IoOperation: TKSIOOPERATION; StreamSegment: PKSSTREAM_SEGMENT); stdcall;
  19675.     procedure KsCompleteIo(StreamSegment: PKSSTREAM_SEGMENT); stdcall;
  19676.   end;
  19677.  
  19678.  
  19679. //
  19680. // This structure definition is the common header required by the proxy to
  19681. // dispatch the stream segment to the interface handler.  Interface handlers
  19682. // will create extended structures to include other information such as
  19683. // media samples, extended header size and so on.
  19684.  
  19685.  
  19686.   {$HPPEMIT 'typedef System::DelphiInterface<IKsObject> _di_IKsObject;'}
  19687.   {$EXTERNALSYM IKsObject}
  19688.   IKsObject = interface(IUnknown)
  19689.     ['{423c13a2-2070-11d0-9ef7-00aa00a216a1}']
  19690.     (*** IKsObject methods ***)
  19691.     function KsGetObjectHandle: THandle; stdcall;
  19692.   end;
  19693.  
  19694.   {$HPPEMIT 'typedef System::DelphiInterface<IKsQualityForwarder> _di_IKsQualityForwarder;'}
  19695.   {$EXTERNALSYM IKsQualityForwarder}
  19696.   IKsQualityForwarder = interface(IUnknown)
  19697.     ['{97ebaacb-95bd-11d0-a3ea-00a0c9223196}']
  19698.     (*** IKsQualityForwarder methods ***)
  19699.     procedure KsFlushClient(Pin: IKsPin); stdcall;
  19700.   end;
  19701.  
  19702.   {$HPPEMIT 'typedef System::DelphiInterface<IKsNotifyEvent> _di_IKsNotifyEvent;'}
  19703.   {$EXTERNALSYM IKsNotifyEvent}
  19704.   IKsNotifyEvent = interface(IUnknown)
  19705.     ['{412bd695-f84b-46c1-ac73-54196dbc8fa7}']
  19706.     (*** IKsNotifyEvent methods ***)
  19707.     procedure KsNotifyEvent(Event,lParam1, lParam2: ULONG); stdcall;
  19708.   end;
  19709.  
  19710.  function KsResolveRequiredAttributes(DataRange: PKSDATARANGE;
  19711.              {OPTIONAL}Attributes: PKSMULTIPLE_ITEM): HResult; stdcall;
  19712.  {$EXTERNALSYM KsResolveRequiredAttributes}
  19713.  
  19714.  function KsOpenDefaultDevice(Category: TGUID; Access: ACCESS_MASK;
  19715.              DeviceHandle: PHANDLE): HResult; stdcall;
  19716.  {$EXTERNALSYM KsOpenDefaultDevice}
  19717.  
  19718.  function KsSynchronousDeviceControl(Handle: THandle; IoControl: ULONG;
  19719.              InBuffer: Pointer; InLength: ULONG; OutBuffer: Pointer;
  19720.              OutLength: ULONG; BytesReturned: PULONG): HResult; stdcall;
  19721.  {$EXTERNALSYM KsSynchronousDeviceControl}
  19722.  
  19723.  function KsGetMultiplePinFactoryItems(FilterHandle: THandle; PinFactoryId: ULONG;
  19724.              PropertyId: ULONG; Items: Pointer): HResult; stdcall;
  19725.  {$EXTERNALSYM KsGetMultiplePinFactoryItems}
  19726.  
  19727.  function KsGetMediaTypeCount(FilterHandle: THandle; PinFactoryId: ULONG;
  19728.              out MediaTypeCount: ULONG): HResult; stdcall;
  19729.  {$EXTERNALSYM KsGetMediaTypeCount}
  19730.  
  19731.  function KsGetMediaType(Position: integer; out AmMediaType: TAMMediaType;
  19732.              FilterHandle: THandle; PinFactoryId: ULONG): HResult; stdcall;
  19733.  {$EXTERNALSYM KsGetMediaType}
  19734.  
  19735. type
  19736.   {$HPPEMIT 'typedef System::DelphiInterface<IKsAggregateControl> _di_IKsAggregateControl;'}
  19737.   {$EXTERNALSYM IKsAggregateControl}
  19738.   IKsAggregateControl = interface(IUnknown)
  19739.     ['{7F40EAC0-3947-11D2-874E-00A0C9223196}']
  19740.     (*** IKsAggregateControl methods ***)
  19741.     procedure KsAddAggregate(const AggregateClass: TGUID); stdcall;
  19742.     procedure KsRemoveAggregate(const AggregateClass: TGUID); stdcall;
  19743.   end;
  19744.  
  19745.   {$HPPEMIT 'typedef System::DelphiInterface<IKsTopology> _di_IKsTopology;'}
  19746.   {$EXTERNALSYM IKsTopology}
  19747.   IKsTopology = interface(IUnknown)
  19748.     ['{28F54683-06FD-11D2-B27A-00A0C9223196}']
  19749.     (*** IKsTopology methods ***)
  19750.     procedure CreateNodeInstance(NodeId: ULONG; Flags: ULONG; DesiredAccess: ACCESS_MASK;
  19751.               {OPTIONAL}UnkOuter: IUnknown; const InterfaceId: TGUID; out Interface_); stdcall;
  19752.   end;
  19753.  
  19754.  {*****************************************************************************
  19755.  *  Copyright (C) Microsoft Corporation, 1996 - 2000                          *
  19756.  *                                                                            *
  19757.  *  Module Name: ksmedia.h                                                    *
  19758.  *                                                                            *
  19759.  *  Abstract: WDM-CSA Multimedia Definitions.                                 *
  19760.  *                                                                            *
  19761.  *****************************************************************************}
  19762.  
  19763.   PKSMultipleDataProp = ^TKSMultipleDataProp;
  19764.   KSMULTIPLE_DATA_PROP = record
  19765.     Property_    : KSPROPERTY;
  19766.     MultipleItem : TKSMultipleItem;
  19767.   end;
  19768.   {$EXTERNALSYM KSMULTIPLE_DATA_PROP}
  19769.   PKSMULTIPLE_DATA_PROP = ^KSMULTIPLE_DATA_PROP;
  19770.   {$EXTERNALSYM PKSMULTIPLE_DATA_PROP}
  19771.   TKSMultipleDataProp = KSMULTIPLE_DATA_PROP;
  19772.  
  19773. const
  19774.   KSMEDIUMSETID_MidiBus  : TGUID = '{05908040-3246-11D0-A5D6-28DB04C10000}';
  19775.   {$EXTERNALSYM KSMEDIUMSETID_MidiBus}
  19776.   KSMEDIUMSETID_VPBus    : TGUID = '{A18C15EC-CE43-11D0-ABE7-00A0C9223196}';
  19777.   {$EXTERNALSYM KSMEDIUMSETID_VPBus}
  19778.   KSINTERFACESETID_Media : TGUID = '{3A13EB40-30A7-11D0-A5D6-28DB04C10000}';
  19779.   {$EXTERNALSYM KSINTERFACESETID_Media}
  19780.  
  19781. type
  19782.   KSINTERFACE_MEDIA = (
  19783.     KSINTERFACE_MEDIA_MUSIC,
  19784.     KSINTERFACE_MEDIA_WAVE_BUFFERED,
  19785.     KSINTERFACE_MEDIA_WAVE_QUEUED
  19786.   );
  19787.   {$EXTERNALSYM KSINTERFACE_MEDIA}
  19788.   TKSInterfaceMedia = KSINTERFACE_MEDIA;
  19789.  
  19790. // USB Terminals
  19791. //#define INIT_USB_TERMINAL(guid, id)\
  19792. {\
  19793.     (guid)->Data1 = 0xDFF219E0 + (USHORT)(id);\
  19794.     (guid)->Data2 = 0xF70F;\
  19795.     (guid)->Data3 = 0x11D0;\
  19796.     (guid)->Data4[0] = 0xb9;\
  19797.     (guid)->Data4[1] = 0x17;\
  19798.     (guid)->Data4[2] = 0x00;\
  19799.     (guid)->Data4[3] = 0xa0;\
  19800.     (guid)->Data4[4] = 0xc9;\
  19801.     (guid)->Data4[5] = 0x22;\
  19802.     (guid)->Data4[6] = 0x31;\
  19803.     (guid)->Data4[7] = 0x96;\
  19804. }
  19805.  
  19806. {#define EXTRACT_USB_TERMINAL(guid)\
  19807.     (USHORT)((guid)->Data1 - 0xDFF219E0)
  19808. #define DEFINE_USB_TERMINAL_GUID(id)\
  19809.     0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
  19810. const
  19811.   KSNODETYPE_MICROPHONE                      : TGUID = '{DFF21BE1-F70F-11D0-B917-00A0C9223196}';
  19812.   {$EXTERNALSYM KSNODETYPE_MICROPHONE}
  19813.   KSNODETYPE_DESKTOP_MICROPHONE              : TGUID = '{DFF21BE2-F70F-11D0-B917-00A0C9223196}';
  19814.   {$EXTERNALSYM KSNODETYPE_DESKTOP_MICROPHONE}
  19815.   KSNODETYPE_PERSONAL_MICROPHONE             : TGUID = '{DFF21BE3-F70F-11D0-B917-00A0C9223196}';
  19816.   {$EXTERNALSYM KSNODETYPE_PERSONAL_MICROPHONE}
  19817.   KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE     : TGUID = '{DFF21BE4-F70F-11D0-B917-00A0C9223196}';
  19818.   {$EXTERNALSYM KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE}
  19819.   KSNODETYPE_MICROPHONE_ARRAY                : TGUID = '{DFF21BE5-F70F-11D0-B917-00A0C9223196}';
  19820.   {$EXTERNALSYM KSNODETYPE_MICROPHONE_ARRAY}
  19821.   KSNODETYPE_PROCESSING_MICROPHONE_ARRAY     : TGUID = '{DFF21BE6-F70F-11D0-B917-00A0C9223196}';
  19822.   {$EXTERNALSYM KSNODETYPE_PROCESSING_MICROPHONE_ARRAY}
  19823.   KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR      : TGUID = '{830a44f2-a32d-476b-be97-42845673b35a}';
  19824.   {$EXTERNALSYM KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR}
  19825.   KSNODETYPE_SPEAKER                         : TGUID = '{DFF21CE1-F70F-11D0-B917-00A0C9223196}';
  19826.   {$EXTERNALSYM KSNODETYPE_SPEAKER}
  19827.   KSNODETYPE_HEADPHONES                      : TGUID = '{DFF21CE2-F70F-11D0-B917-00A0C9223196}';
  19828.   {$EXTERNALSYM KSNODETYPE_HEADPHONES}
  19829.   KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO      : TGUID = '{DFF21CE3-F70F-11D0-B917-00A0C9223196}';
  19830.   {$EXTERNALSYM KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO}
  19831.   KSNODETYPE_DESKTOP_SPEAKER                 : TGUID = '{DFF21CE4-F70F-11D0-B917-00A0C9223196}';
  19832.   {$EXTERNALSYM KSNODETYPE_DESKTOP_SPEAKER}
  19833.   KSNODETYPE_ROOM_SPEAKER                    : TGUID = '{DFF21CE5-F70F-11D0-B917-00A0C9223196}';
  19834.   {$EXTERNALSYM KSNODETYPE_ROOM_SPEAKER}
  19835.   KSNODETYPE_COMMUNICATION_SPEAKER           : TGUID = '{DFF21CE6-F70F-11D0-B917-00A0C9223196}';
  19836.   {$EXTERNALSYM KSNODETYPE_COMMUNICATION_SPEAKER}
  19837.   KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER   : TGUID = '{DFF21CE7-F70F-11D0-B917-00A0C9223196}';
  19838.   {$EXTERNALSYM KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER}
  19839.   KSNODETYPE_HANDSET                         : TGUID = '{DFF21DE1-F70F-11D0-B917-00A0C9223196}';
  19840.   {$EXTERNALSYM KSNODETYPE_HANDSET}
  19841.   KSNODETYPE_HEADSET                         : TGUID = '{DFF21DE2-F70F-11D0-B917-00A0C9223196}';
  19842.   {$EXTERNALSYM KSNODETYPE_HEADSET}
  19843.   KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION  : TGUID = '{DFF21DE3-F70F-11D0-B917-00A0C9223196}';
  19844.   {$EXTERNALSYM KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION}
  19845.   KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE   : TGUID = '{DFF21DE4-F70F-11D0-B917-00A0C9223196}';
  19846.   {$EXTERNALSYM KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE}
  19847.   KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE     : TGUID = '{DFF21DE5-F70F-11D0-B917-00A0C9223196}';
  19848.   {$EXTERNALSYM KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE}
  19849.   KSNODETYPE_PHONE_LINE                      : TGUID = '{DFF21EE1-F70F-11D0-B917-00A0C9223196}';
  19850.   {$EXTERNALSYM KSNODETYPE_PHONE_LINE}
  19851.   KSNODETYPE_TELEPHONE                       : TGUID = '{DFF21EE2-F70F-11D0-B917-00A0C9223196}';
  19852.   {$EXTERNALSYM KSNODETYPE_TELEPHONE}
  19853.   KSNODETYPE_DOWN_LINE_PHONE                 : TGUID = '{DFF21EE3-F70F-11D0-B917-00A0C9223196}';
  19854.   {$EXTERNALSYM KSNODETYPE_DOWN_LINE_PHONE}
  19855.   KSNODETYPE_ANALOG_CONNECTOR                : TGUID = '{DFF21FE1-F70F-11D0-B917-00A0C9223196}';
  19856.   {$EXTERNALSYM KSNODETYPE_ANALOG_CONNECTOR}
  19857.   KSNODETYPE_DIGITAL_AUDIO_INTERFACE         : TGUID = '{DFF21FE2-F70F-11D0-B917-00A0C9223196}';
  19858.   {$EXTERNALSYM KSNODETYPE_DIGITAL_AUDIO_INTERFACE}
  19859.   KSNODETYPE_LINE_CONNECTOR                  : TGUID = '{DFF21FE3-F70F-11D0-B917-00A0C9223196}';
  19860.   {$EXTERNALSYM KSNODETYPE_LINE_CONNECTOR}
  19861.   KSNODETYPE_LEGACY_AUDIO_CONNECTOR          : TGUID = '{DFF21FE4-F70F-11D0-B917-00A0C9223196}';
  19862.   {$EXTERNALSYM KSNODETYPE_LEGACY_AUDIO_CONNECTOR}
  19863.   KSNODETYPE_SPDIF_INTERFACE                 : TGUID = '{DFF21FE5-F70F-11D0-B917-00A0C9223196}';
  19864.   {$EXTERNALSYM KSNODETYPE_SPDIF_INTERFACE}
  19865.   KSNODETYPE_1394_DA_STREAM                  : TGUID = '{DFF21FE6-F70F-11D0-B917-00A0C9223196}';
  19866.   {$EXTERNALSYM KSNODETYPE_1394_DA_STREAM}
  19867.   KSNODETYPE_1394_DV_STREAM_SOUNDTRACK       : TGUID = '{DFF21FE7-F70F-11D0-B917-00A0C9223196}';
  19868.   {$EXTERNALSYM KSNODETYPE_1394_DV_STREAM_SOUNDTRACK}
  19869.   KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE  : TGUID = '{DFF220E1-F70F-11D0-B917-00A0C9223196}';
  19870.   {$EXTERNALSYM KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE}
  19871.   KSNODETYPE_EQUALIZATION_NOISE              : TGUID = '{DFF220E2-F70F-11D0-B917-00A0C9223196}';
  19872.   {$EXTERNALSYM KSNODETYPE_EQUALIZATION_NOISE}
  19873.   KSNODETYPE_CD_PLAYER                       : TGUID = '{DFF220E3-F70F-11D0-B917-00A0C9223196}';
  19874.   {$EXTERNALSYM KSNODETYPE_CD_PLAYER}
  19875.   KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE       : TGUID = '{DFF220E4-F70F-11D0-B917-00A0C9223196}';
  19876.   {$EXTERNALSYM KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE}
  19877.   KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE : TGUID = '{DFF220E5-F70F-11D0-B917-00A0C9223196}';
  19878.   {$EXTERNALSYM KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE}
  19879.   KSNODETYPE_MINIDISK                        : TGUID = '{DFF220E6-F70F-11D0-B917-00A0C9223196}';
  19880.   {$EXTERNALSYM KSNODETYPE_MINIDISK}
  19881.   KSNODETYPE_ANALOG_TAPE                     : TGUID = '{DFF220E7-F70F-11D0-B917-00A0C9223196}';
  19882.   {$EXTERNALSYM KSNODETYPE_ANALOG_TAPE}
  19883.   KSNODETYPE_PHONOGRAPH                      : TGUID = '{DFF220E8-F70F-11D0-B917-00A0C9223196}';
  19884.   {$EXTERNALSYM KSNODETYPE_PHONOGRAPH}
  19885.   KSNODETYPE_VCR_AUDIO                       : TGUID = '{DFF220E9-F70F-11D0-B917-00A0C9223196}';
  19886.   {$EXTERNALSYM KSNODETYPE_VCR_AUDIO}
  19887.   KSNODETYPE_VIDEO_DISC_AUDIO                : TGUID = '{DFF220EA-F70F-11D0-B917-00A0C9223196}';
  19888.   {$EXTERNALSYM KSNODETYPE_VIDEO_DISC_AUDIO}
  19889.   KSNODETYPE_DVD_AUDIO                       : TGUID = '{DFF220EB-F70F-11D0-B917-00A0C9223196}';
  19890.   {$EXTERNALSYM KSNODETYPE_DVD_AUDIO}
  19891.   KSNODETYPE_TV_TUNER_AUDIO                  : TGUID = '{DFF220EC-F70F-11D0-B917-00A0C9223196}';
  19892.   {$EXTERNALSYM KSNODETYPE_TV_TUNER_AUDIO}
  19893.   KSNODETYPE_SATELLITE_RECEIVER_AUDIO        : TGUID = '{DFF220ED-F70F-11D0-B917-00A0C9223196}';
  19894.   {$EXTERNALSYM KSNODETYPE_SATELLITE_RECEIVER_AUDIO}
  19895.   KSNODETYPE_CABLE_TUNER_AUDIO               : TGUID = '{DFF220EE-F70F-11D0-B917-00A0C9223196}';
  19896.   {$EXTERNALSYM KSNODETYPE_CABLE_TUNER_AUDIO}
  19897.   KSNODETYPE_DSS_AUDIO                       : TGUID = '{DFF220EF-F70F-11D0-B917-00A0C9223196}';
  19898.   {$EXTERNALSYM KSNODETYPE_DSS_AUDIO}
  19899.   KSNODETYPE_RADIO_RECEIVER                  : TGUID = '{DFF220F0-F70F-11D0-B917-00A0C9223196}';
  19900.   {$EXTERNALSYM KSNODETYPE_RADIO_RECEIVER}
  19901.   KSNODETYPE_RADIO_TRANSMITTER               : TGUID = '{DFF220F1-F70F-11D0-B917-00A0C9223196}';
  19902.   {$EXTERNALSYM KSNODETYPE_RADIO_TRANSMITTER}
  19903.   KSNODETYPE_MULTITRACK_RECORDER             : TGUID = '{DFF220F2-F70F-11D0-B917-00A0C9223196}';
  19904.   {$EXTERNALSYM KSNODETYPE_MULTITRACK_RECORDER}
  19905.   KSNODETYPE_SYNTHESIZER                     : TGUID = '{DFF220F3-F70F-11D0-B917-00A0C9223196}';
  19906.   {$EXTERNALSYM KSNODETYPE_SYNTHESIZER}
  19907. // Microsoft's WDMAUD virtual swsynth pin name guid
  19908.   KSNODETYPE_SWSYNTH                         : TGUID = '{423274A0-8B81-11D1-A050-0000F8004788}';
  19909.   {$EXTERNALSYM KSNODETYPE_SWSYNTH}
  19910. // Microsoft's SWMIDI midi pin and node name guid
  19911.   KSNODETYPE_SWMIDI                          : TGUID = '{CB9BEFA0-A251-11D1-A050-0000F8004788}';
  19912.   {$EXTERNALSYM KSNODETYPE_SWMIDI}
  19913.   KSNODETYPE_DRM_DESCRAMBLE                  : TGUID = '{FFBB6E3F-CCFE-4D84-90D9-421418B03A8E}';
  19914.   {$EXTERNALSYM KSNODETYPE_DRM_DESCRAMBLE}
  19915. // General categories
  19916.   KSCATEGORY_AUDIO                           : TGUID = '{6994AD04-93EF-11D0-A3CC-00A0C9223196}';
  19917.   {$EXTERNALSYM KSCATEGORY_AUDIO}
  19918.   KSCATEGORY_VIDEO                           : TGUID = '{6994AD05-93EF-11D0-A3CC-00A0C9223196}';
  19919.   {$EXTERNALSYM KSCATEGORY_VIDEO}
  19920.   KSCATEGORY_TEXT                            : TGUID = '{6994AD06-93EF-11D0-A3CC-00A0C9223196}';
  19921.   {$EXTERNALSYM KSCATEGORY_TEXT}
  19922.   KSCATEGORY_NETWORK                         : TGUID = '{67C9CC3C-69C4-11D2-8759-00A0C9223196}';
  19923.   {$EXTERNALSYM KSCATEGORY_NETWORK}
  19924.   KSCATEGORY_TOPOLOGY                        : TGUID = '{DDA54A40-1E4C-11D1-A050-405705C10000}';
  19925.   {$EXTERNALSYM KSCATEGORY_TOPOLOGY}
  19926.   KSCATEGORY_VIRTUAL                         : TGUID = '{3503EAC4-1F26-11D1-8AB0-00A0C9223196}';
  19927.   {$EXTERNALSYM KSCATEGORY_VIRTUAL}
  19928.   KSCATEGORY_ACOUSTIC_ECHO_CANCEL            : TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}';
  19929.   {$EXTERNALSYM KSCATEGORY_ACOUSTIC_ECHO_CANCEL}
  19930.   KSCATEGORY_SYSAUDIO                        : TGUID = '{A7C7A5B1-5AF3-11D1-9CED-00A024BF0407}';
  19931.   {$EXTERNALSYM KSCATEGORY_SYSAUDIO}
  19932.   KSCATEGORY_WDMAUD                          : TGUID = '{3E227E76-690D-11D2-8161-0000F8775BF1}';
  19933.   {$EXTERNALSYM KSCATEGORY_WDMAUD}
  19934.   KSCATEGORY_AUDIO_GFX                       : TGUID = '{9BAF9572-340C-11D3-ABDC-00A0C90AB16F}';
  19935.   {$EXTERNALSYM KSCATEGORY_AUDIO_GFX}
  19936.   KSCATEGORY_AUDIO_SPLITTER                  : TGUID = '{9EA331FA-B91B-45F8-9285-BD2BC77AFCDE}';
  19937.   {$EXTERNALSYM KSCATEGORY_AUDIO_SPLITTER}
  19938.  
  19939.   KSCATEGORY_SYNTHESIZER                     : TGUID = '{DFF220F3-F70F-11D0-B917-00A0C9223196}'; //KSNODETYPE_SYNTHESIZER
  19940.   {$EXTERNALSYM KSCATEGORY_SYNTHESIZER}
  19941.   KSCATEGORY_DRM_DESCRAMBLE                  : TGUID = '{FFBB6E3F-CCFE-4D84-90D9-421418B03A8E}'; //KSNODETYPE_DRM_DESCRAMBLE
  19942.   {$EXTERNALSYM KSCATEGORY_DRM_DESCRAMBLE}
  19943.  
  19944.   KSCATEGORY_AUDIO_DEVICE                    : TGUID = '{FBF6F530-07B9-11D2-A71E-0000F8004788}';
  19945.   {$EXTERNALSYM KSCATEGORY_AUDIO_DEVICE}
  19946.   KSCATEGORY_PREFERRED_WAVEOUT_DEVICE        : TGUID = '{D6C5066E-72C1-11D2-9755-0000F8004788}';
  19947.   {$EXTERNALSYM KSCATEGORY_PREFERRED_WAVEOUT_DEVICE}
  19948.   KSCATEGORY_PREFERRED_WAVEIN_DEVICE         : TGUID = '{D6C50671-72C1-11D2-9755-0000F8004788}';
  19949.   {$EXTERNALSYM KSCATEGORY_PREFERRED_WAVEIN_DEVICE}
  19950.   KSCATEGORY_PREFERRED_MIDIOUT_DEVICE        : TGUID = '{D6C50674-72C1-11D2-9755-0000F8004788}';
  19951.   {$EXTERNALSYM KSCATEGORY_PREFERRED_MIDIOUT_DEVICE}
  19952. // Special pin category for wdmaud
  19953.   KSCATEGORY_WDMAUD_USE_PIN_NAME             : TGUID = '{47A4FA20-A251-11D1-A050-0000F8004788}';
  19954.   {$EXTERNALSYM KSCATEGORY_WDMAUD_USE_PIN_NAME}
  19955. // Escalante Platform Interface
  19956.   KSCATEGORY_ESCALANTE_PLATFORM_DRIVER       : TGUID = '{74f3aea8-9768-11d1-8e07-00a0c95ec22e}';
  19957.   {$EXTERNALSYM KSCATEGORY_ESCALANTE_PLATFORM_DRIVER}
  19958. // -- major types ---
  19959.  
  19960. // 'vids' == MEDIATYPE_Video,
  19961.   KSDATAFORMAT_TYPE_VIDEO                    : TGUID = '{73646976-0000-0010-8000-00aa00389b71}';
  19962.   {$EXTERNALSYM KSDATAFORMAT_TYPE_VIDEO}
  19963. // 'auds' == MEDIATYPE_Audio
  19964.   KSDATAFORMAT_TYPE_AUDIO                    : TGUID = '{73647561-0000-0010-8000-00aa00389b71}';
  19965.   {$EXTERNALSYM KSDATAFORMAT_TYPE_AUDIO}
  19966. // 'txts' == MEDIATYPE_Text
  19967.   KSDATAFORMAT_TYPE_TEXT                     : TGUID = '{73747874-0000-0010-8000-00aa00389b71}';
  19968.   {$EXTERNALSYM KSDATAFORMAT_TYPE_TEXT}
  19969.  
  19970. {#if !defined( DEFINE_WAVEFORMATEX_GUID )
  19971. #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  19972. #endif}
  19973.  
  19974.   KSDATAFORMAT_SUBTYPE_WAVEFORMATEX          : TGUID = '{00000000-0000-0010-8000-00aa00389b71}';
  19975.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_WAVEFORMATEX}
  19976.  
  19977. //#define INIT_WAVEFORMATEX_GUID(Guid, x)\
  19978. {\
  19979.     *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;\
  19980.     (Guid)->Data1 = (USHORT)(x);\
  19981. }
  19982.  
  19983. {#define EXTRACT_WAVEFORMATEX_ID(Guid)\
  19984.     (USHORT)((Guid)->Data1)
  19985.  
  19986. #define IS_VALID_WAVEFORMATEX_GUID(Guid)\
  19987.     (!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1, sizeof(GUID) - sizeof(USHORT)))
  19988.  
  19989. #if !defined(INIT_MMREG_MID)}
  19990. //{d5a47fa7-6d98-11d1-a21a-00a0c9223196}
  19991. //#define INIT_MMREG_MID(guid, id)\
  19992. {\
  19993.     (guid)->Data1 = 0xd5a47fa7 + (USHORT)(id);\
  19994.     (guid)->Data2 = 0x6d98;\
  19995.     (guid)->Data3 = 0x11d1;\
  19996.     (guid)->Data4[0] = 0xa2;\
  19997.     (guid)->Data4[1] = 0x1a;\
  19998.     (guid)->Data4[2] = 0x00;\
  19999.     (guid)->Data4[3] = 0xa0;\
  20000.     (guid)->Data4[4] = 0xc9;\
  20001.     (guid)->Data4[5] = 0x22;\
  20002.     (guid)->Data4[6] = 0x31;\
  20003.     (guid)->Data4[7] = 0x96;\
  20004. }
  20005. {#define EXTRACT_MMREG_MID(guid)\
  20006.     (USHORT)((guid)->Data1 - 0xd5a47fa7)
  20007. #define DEFINE_MMREG_MID_GUID(id)\
  20008.     0xd5a47fa7+(USHORT)(id), 0x6d98, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96
  20009.  
  20010. #define IS_COMPATIBLE_MMREG_MID(guid)\
  20011.     (((guid)->Data1 >= 0xd5a47fa7) &&\
  20012.     ((guid)->Data1 < 0xd5a47fa7 + 0xffff) &&\
  20013.     ((guid)->Data2 == 0x6d98) &&\
  20014.     ((guid)->Data3 == 0x11d1) &&\
  20015.     ((guid)->Data4[0] == 0xa2) &&\
  20016.     ((guid)->Data4[1] == 0x1a) &&\
  20017.     ((guid)->Data4[2] == 0x00) &&\
  20018.     ((guid)->Data4[3] == 0xa0) &&\
  20019.     ((guid)->Data4[4] == 0xc9) &&\
  20020.     ((guid)->Data4[5] == 0x22) &&\
  20021.     ((guid)->Data4[6] == 0x31) &&\
  20022.     ((guid)->Data4[7] == 0x96))
  20023. #endif // !defined(INIT_MMREG_MID)
  20024.  
  20025. #if !defined(INIT_MMREG_PID)
  20026. //{e36dc2ac-6d9a-11d1-a21a-00a0c9223196}
  20027. //#define INIT_MMREG_PID(guid, id)\
  20028. {\
  20029.     (guid)->Data1 = 0xe36dc2ac + (USHORT)(id);\
  20030.     (guid)->Data2 = 0x6d9a;\
  20031.     (guid)->Data3 = 0x11d1;\
  20032.     (guid)->Data4[0] = 0xa2;\
  20033.     (guid)->Data4[1] = 0x1a;\
  20034.     (guid)->Data4[2] = 0x00;\
  20035.     (guid)->Data4[3] = 0xa0;\
  20036.     (guid)->Data4[4] = 0xc9;\
  20037.     (guid)->Data4[5] = 0x22;\
  20038.     (guid)->Data4[6] = 0x31;\
  20039.     (guid)->Data4[7] = 0x96;\
  20040. }
  20041. {#define EXTRACT_MMREG_PID(guid)\
  20042.     (USHORT)((guid)->Data1 - 0xe36dc2ac)
  20043. #define DEFINE_MMREG_PID_GUID(id)\
  20044.     0xe36dc2ac+(USHORT)(id), 0x6d9a, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96
  20045.  
  20046. #define IS_COMPATIBLE_MMREG_PID(guid)\
  20047.     (((guid)->Data1 >= 0xe36dc2ac) &&\
  20048.     ((guid)->Data1 < 0xe36dc2ac + 0xffff) &&\
  20049.     ((guid)->Data2 == 0x6d9a) &&\
  20050.     ((guid)->Data3 == 0x11d1) &&\
  20051.     ((guid)->Data4[0] == 0xa2) &&\
  20052.     ((guid)->Data4[1] == 0x1a) &&\
  20053.     ((guid)->Data4[2] == 0x00) &&\
  20054.     ((guid)->Data4[3] == 0xa0) &&\
  20055.     ((guid)->Data4[4] == 0xc9) &&\
  20056.     ((guid)->Data4[5] == 0x22) &&\
  20057.     ((guid)->Data4[6] == 0x31) &&\
  20058.     ((guid)->Data4[7] == 0x96))
  20059. #endif // !defined(INIT_MMREG_PID)}
  20060.  
  20061.  KSDATAFORMAT_SUBTYPE_ANALOG         : TGUID = '{6dba3190-67bd-11cf-a0f7-0020afd156e4}';
  20062.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ANALOG}
  20063.  KSDATAFORMAT_SUBTYPE_PCM            : TGUID = '{00000001-0000-0010-8000-00aa00389b71}';
  20064.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_PCM}
  20065.  KSDATAFORMAT_SUBTYPE_IEEE_FLOAT     : TGUID = '{00000003-0000-0010-8000-00aa00389b71}';
  20066.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_IEEE_FLOAT}
  20067.  KSDATAFORMAT_SUBTYPE_DRM            : TGUID = '{00000009-0000-0010-8000-00aa00389b71}';
  20068.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DRM}
  20069.  KSDATAFORMAT_SUBTYPE_ALAW           : TGUID = '{00000006-0000-0010-8000-00aa00389b71}';
  20070.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ALAW}
  20071.  KSDATAFORMAT_SUBTYPE_MULAW          : TGUID = '{00000007-0000-0010-8000-00aa00389b71}';
  20072.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MULAW}
  20073.  KSDATAFORMAT_SUBTYPE_ADPCM          : TGUID = '{00000002-0000-0010-8000-00aa00389b71}';
  20074.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ADPCM}
  20075.  KSDATAFORMAT_SUBTYPE_MPEG           : TGUID = '{00000050-0000-0010-8000-00aa00389b71}';
  20076.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG}
  20077.  KSDATAFORMAT_SPECIFIER_VC_ID        : TGUID = '{AD98D184-AAC3-11D0-A41C-00A0C9223196}';
  20078.  {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VC_ID}
  20079.  KSDATAFORMAT_SPECIFIER_WAVEFORMATEX : TGUID = '{05589f81-c356-11ce-bf01-00aa0055595a}';
  20080.  {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_WAVEFORMATEX}
  20081.  KSDATAFORMAT_SPECIFIER_DSOUND       : TGUID = '{518590a2-a184-11d0-8522-00c04fd9baf3}';
  20082.  {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DSOUND}
  20083.  
  20084. type
  20085.   PKSDataFormatWaveFormatEx = ^TKSDataFormatWaveFormatEx;
  20086.   KSDATAFORMAT_WAVEFORMATEX = record
  20087.     DataFormat   : TKSDATAFORMAT;
  20088.     WaveFormatEx : TWAVEFORMATEX;
  20089.   end;
  20090.   {$EXTERNALSYM KSDATAFORMAT_WAVEFORMATEX}
  20091.   PKSDATAFORMAT_WAVEFORMATEX = ^KSDATAFORMAT_WAVEFORMATEX;
  20092.   {$EXTERNALSYM PKSDATAFORMAT_WAVEFORMATEX}
  20093.   TKSDataFormatWaveFormatEx = KSDATAFORMAT_WAVEFORMATEX;
  20094.  
  20095.   //
  20096.   // The WAVEFORMATEXTENSIBLE structure defines the format of waveform-audio data for formats having more than two channels.
  20097.   // This structure is part of the Platform SDK and is not declared in Dsound.h. It is included here for convenience.
  20098.   //
  20099.   PWaveFormatExtensible = ^TWaveFormatExtensible;
  20100.   WAVEFORMATEXTENSIBLE = record
  20101.     Format: TWaveFormatEx;
  20102.     case byte of
  20103.       0: (wValidBitsPerSample : Word;   // bits of precision
  20104.           dwChannelMask       : DWORD;  // which channels are present in stream
  20105.           SubFormat           : TGUID);
  20106.       1: (wSamplesPerBlock    : Word);  // valid if wBitsPerSample = 0
  20107.       2: (wReserved           : Word);  // If neither applies, set to zero.
  20108.   end;
  20109.   {$EXTERNALSYM WAVEFORMATEXTENSIBLE}
  20110.   TWaveFormatExtensible = WAVEFORMATEXTENSIBLE;
  20111.  
  20112. const
  20113.   WAVE_FORMAT_EXTENSIBLE          = $FFFE;
  20114.   {$EXTERNALSYM WAVE_FORMAT_EXTENSIBLE}
  20115.  
  20116. type
  20117. // DirectSound buffer description
  20118.   PKSDSoundBufferDesc = ^TKSDSoundBufferDesc;
  20119.   KSDSOUND_BUFFERDESC = record
  20120.     Flags        : ULONG;
  20121.     Control      : ULONG;
  20122.     WaveFormatEx : TWAVEFORMATEX;
  20123.   end;
  20124.   {$EXTERNALSYM KSDSOUND_BUFFERDESC}
  20125.   PKSDSOUND_BUFFERDESC = ^KSDSOUND_BUFFERDESC;
  20126.   {$EXTERNALSYM PKSDSOUND_BUFFERDESC}
  20127.   TKSDSoundBufferDesc = KSDSOUND_BUFFERDESC;
  20128.  
  20129. // DirectSound format
  20130.   PKSDataFormatDSound = ^TKSDataFormatDSound;
  20131.   KSDATAFORMAT_DSOUND = record
  20132.     DataFormat :TKSDataFormat;
  20133.     BufferDesc :TKSDSoundBufferDesc;
  20134.   end;
  20135.   {$EXTERNALSYM KSDATAFORMAT_DSOUND}
  20136.   PKSDATAFORMAT_DSOUND = ^KSDATAFORMAT_DSOUND;
  20137.   {$EXTERNALSYM PKSDATAFORMAT_DSOUND}
  20138.   TKSDataFormatDSound = KSDATAFORMAT_DSOUND;
  20139.  
  20140. const
  20141. // DirectSound buffer flags
  20142.   KSDSOUND_BUFFER_PRIMARY     = $00000001;
  20143.   {$EXTERNALSYM KSDSOUND_BUFFER_PRIMARY}
  20144.   KSDSOUND_BUFFER_STATIC      = $00000002;
  20145.   {$EXTERNALSYM KSDSOUND_BUFFER_STATIC}
  20146.   KSDSOUND_BUFFER_LOCHARDWARE = $00000004;
  20147.   {$EXTERNALSYM KSDSOUND_BUFFER_LOCHARDWARE}
  20148.   KSDSOUND_BUFFER_LOCSOFTWARE = $00000008;
  20149.   {$EXTERNALSYM KSDSOUND_BUFFER_LOCSOFTWARE}
  20150.  
  20151. // DirectSound buffer control flags
  20152.   KSDSOUND_BUFFER_CTRL_3D             = $00000001;
  20153.   {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_3D}
  20154.   KSDSOUND_BUFFER_CTRL_FREQUENCY      = $00000002;
  20155.   {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_FREQUENCY}
  20156.   KSDSOUND_BUFFER_CTRL_PAN            = $00000004;
  20157.   {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_PAN}
  20158.   KSDSOUND_BUFFER_CTRL_VOLUME         = $00000008;
  20159.   {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_VOLUME}
  20160.   KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY = $00000010;
  20161.   {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY}
  20162.  
  20163.   KSDSOUND_BUFFER_CTRL_HRTF_3D        = $40000000;
  20164.   {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_HRTF_3D}
  20165.  
  20166. type
  20167.   PKSAudioPosition = ^TKSAudioPosition;
  20168.   KSAUDIO_POSITION = record
  20169.     PlayOffset  :int64;
  20170.     WriteOffset :int64;
  20171.   end;
  20172.   {$EXTERNALSYM KSAUDIO_POSITION}
  20173.   PKSAUDIO_POSITION = ^KSAUDIO_POSITION;
  20174.   {$EXTERNALSYM PKSAUDIO_POSITION}
  20175.   TKSAudioPosition = KSAUDIO_POSITION;
  20176.  
  20177. // DirectSound3D FIR context
  20178. //  PKSDS3DITDParams = ^TKSDS3DITDParams;
  20179. //  KSDS3D_ITD_PARAMS = record
  20180. //    Channel             : longint;
  20181. //    VolSmoothScale      : single;
  20182. //    TotalDryAttenuation : single;
  20183. //    TotalWetAttenuation : single;
  20184. //    SmoothFrequency     : longint;
  20185. //    Delay               : longint;
  20186. //  end;
  20187. //  {$EXTERNALSYM KSDS3D_ITD_PARAMS}
  20188. //  PKSDS3D_ITD_PARAMS = ^KSDS3D_ITD_PARAMS;
  20189. //  {$EXTERNALSYM PKSDS3D_ITD_PARAMS}
  20190. //  TKSDS3DITDParams = KSDS3D_ITD_PARAMS;
  20191.  
  20192. //  PKSDS3DITDParamsMsg = ^TKSDS3DITDParamsMsg;
  20193. //  KSDS3D_ITD_PARAMS_MSG = record
  20194. //    Enabled     :ULONG;
  20195. //    LeftParams  :TKSDS3DITDParams;
  20196. //    RightParams :TKSDS3DITDParams;
  20197. //    Reserved    :ULONG;
  20198. //  end;
  20199. //  {$EXTERNALSYM KSDS3D_ITD_PARAMS_MSG}
  20200. //  PKSDS3D_ITD_PARAMS_MSG = ^KSDS3D_ITD_PARAMS_MSG;
  20201. //  {$EXTERNALSYM PKSDS3D_ITD_PARAMS_MSG}
  20202. //  TKSDS3DITDParamsMsg = KSDS3D_ITD_PARAMS_MSG;
  20203.  
  20204. // DirectSound3D HRTF messages
  20205.  
  20206. //  PKSDS3DHRTFParamsMsg = ^TKSDS3DHRTFParamsMsg;
  20207. //  KSDS3D_HRTF_PARAMS_MSG = record
  20208. //    Size            :ULONG; // This is the size of the struct in bytes
  20209. //    Enabled         :ULONG;
  20210. //    SwapChannels    :BOOL;
  20211. //    ZeroAzimuth     :BOOL;
  20212. //    CrossFadeOutput :BOOL;
  20213. //    FilterSize      :ULONG; // This is the additional size of the filter coeff in bytes
  20214. //  end;
  20215. //  {$EXTERNALSYM KSDS3D_HRTF_PARAMS_MSG}
  20216. //  PKSDS3D_HRTF_PARAMS_MSG = ^KSDS3D_HRTF_PARAMS_MSG;
  20217. //  {$EXTERNALSYM PKSDS3D_HRTF_PARAMS_MSG}
  20218. //  TKSDS3DHRTFParamsMsg = KSDS3D_HRTF_PARAMS_MSG;
  20219.  
  20220. // HRTF filter quality levels
  20221. //  KSDS3D_HRTF_FILTER_QUALITY = (
  20222. //    FULL_FILTER,
  20223. //    LIGHT_FILTER,
  20224. //    KSDS3D_FILTER_QUALITY_COUNT
  20225. //  );
  20226. //  {$EXTERNALSYM KSDS3D_HRTF_FILTER_QUALITY}
  20227. //  TKSDS3DHRTFFilterQuality = KSDS3D_HRTF_FILTER_QUALITY;
  20228.  
  20229. //  PKSDS3DHRTFInitMsg = ^TKSDS3DHRTFInitMsg;
  20230. //  KSDS3D_HRTF_INIT_MSG = record
  20231. //    Size                      : ULONG; // This is the size of the struct in bytes
  20232. //    Quality                   : TKSDS3DHRTFFilterQuality;
  20233. //    SampleRate                : single;
  20234. //    MaxFilterSize             : ULONG;
  20235. //    FilterTransientMuteLength : ULONG;
  20236. //    FilterOverlapBufferLength : ULONG;
  20237. //    OutputOverlapBufferLength : ULONG;
  20238. //    Reserved                  : ULONG;
  20239. //  end;
  20240. //  {$EXTERNALSYM KSDS3D_HRTF_INIT_MSG}
  20241. //  PKSDS3D_HRTF_INIT_MSG = ^KSDS3D_HRTF_INIT_MSG;
  20242. //  {$EXTERNALSYM PKSDS3D_HRTF_INIT_MSG}
  20243. //  TKSDS3DHRTFInitMsg = KSDS3D_HRTF_INIT_MSG;
  20244.  
  20245. // Coefficient formats
  20246. //  KSDS3D_HRTF_COEFF_FORMAT = (
  20247. //    FLOAT_COEFF,
  20248. //    SHORT_COEFF,
  20249. //    KSDS3D_COEFF_COUNT
  20250. //  );
  20251. //  {$EXTERNALSYM KSDS3D_HRTF_COEFF_FORMAT}
  20252. //  TKSDS3DHRTFCoeffFormat = KSDS3D_HRTF_COEFF_FORMAT;
  20253.  
  20254. //// Filter methods
  20255. //  KSDS3D_HRTF_FILTER_METHOD = (
  20256. //    DIRECT_FORM,
  20257. //    CASCADE_FORM,
  20258. //    KSDS3D_FILTER_METHOD_COUNT
  20259. //  );
  20260. //  {$EXTERNALSYM KSDS3D_HRTF_FILTER_METHOD}
  20261. //  TKSDS3DHRTFFilterMethod = KSDS3D_HRTF_FILTER_METHOD;
  20262.  
  20263. // Filter methods
  20264. //  KSDS3D_HRTF_FILTER_VERSION = (
  20265. //    DS3D_HRTF_VERSION_1
  20266. //  );
  20267. //  {$EXTERNALSYM KSDS3D_HRTF_FILTER_VERSION}
  20268. //  TKSDS3DHRTFFilterVersion = KSDS3D_HRTF_FILTER_VERSION;
  20269.  
  20270. //  PKSDS3DHRTFFilterFormatMsg = ^TKSDS3DHRTFFilterFormatMsg;
  20271. //  KSDS3D_HRTF_FILTER_FORMAT_MSG = record
  20272. //    FilterMethod : TKSDS3DHRTFFilterMethod;
  20273. //    CoeffFormat  : TKSDS3DHRTFCoeffFormat;
  20274. //    Version      : TKSDS3DHRTFFilterVersion;
  20275. //    Reserved     : ULONG;
  20276. //  end;
  20277. //  {$EXTERNALSYM KSDS3D_HRTF_FILTER_FORMAT_MSG}
  20278. //  PKSDS3D_HRTF_FILTER_FORMAT_MSG = ^KSDS3D_HRTF_FILTER_FORMAT_MSG;
  20279. //  {$EXTERNALSYM PKSDS3D_HRTF_FILTER_FORMAT_MSG}
  20280. //  TKSDS3DHRTFFilterFormatMsg = KSDS3D_HRTF_FILTER_FORMAT_MSG;
  20281.  
  20282. //===========================================================================
  20283. // DirectSound3D HAL
  20284.  
  20285.  
  20286.   _DS3DVECTOR = record
  20287.     case integer of
  20288.     0: (
  20289.       x   : single;
  20290.       y   : single;
  20291.       z   : single);
  20292.     1: (
  20293.       dvX : single;
  20294.       dvY : single;
  20295.       dvZ : single);
  20296.     end;
  20297.   {$EXTERNALSYM _DS3DVECTOR}
  20298.   DS3DVECTOR = _DS3DVECTOR;
  20299.   {$EXTERNALSYM DS3DVECTOR}
  20300.   PDS3DVECTOR = ^DS3DVECTOR;
  20301.   {$EXTERNALSYM PDS3DVECTOR}
  20302.   TDS3DVector = DS3DVECTOR;
  20303.  
  20304. //===========================================================================
  20305. //===========================================================================
  20306.  
  20307. // KSPROPSETID_DirectSound3DListener : {437B3414-D060-11d0-8583-00C04FD9BAF3}
  20308. const
  20309.   KSPROPSETID_DirectSound3DListener : TGUID = '{437b3414-d060-11d0-8583-00c04fd9baf3}';
  20310.   {$EXTERNALSYM KSPROPSETID_DirectSound3DListener}
  20311.  
  20312. type
  20313.   KSPROPERTY_DIRECTSOUND3DLISTENER = (
  20314.     KSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
  20315.     KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
  20316.     KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
  20317.     KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
  20318.     KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
  20319.     KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
  20320.     KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
  20321.     KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
  20322.     KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
  20323.   );
  20324.   {$EXTERNALSYM KSPROPERTY_DIRECTSOUND3DLISTENER}
  20325.   TKSPropertyDirectSound3DListener = KSPROPERTY_DIRECTSOUND3DLISTENER;
  20326.  
  20327.   PKSDS3DListenerAll = ^TKSDS3DListenerAll;
  20328.   KSDS3D_LISTENER_ALL = record
  20329.     Position       : TDS3DVECTOR;
  20330.     Velocity       : TDS3DVECTOR;
  20331.     OrientFront    : TDS3DVECTOR;
  20332.     OrientTop      : TDS3DVECTOR;
  20333.     DistanceFactor : single;
  20334.     RolloffFactor  : single;
  20335.     DopplerFactor  : single;
  20336.   end;
  20337.   {$EXTERNALSYM KSDS3D_LISTENER_ALL}
  20338.   PKSDS3D_LISTENER_ALL = ^KSDS3D_LISTENER_ALL;
  20339.   {$EXTERNALSYM PKSDS3D_LISTENER_ALL}
  20340.   TKSDS3DListenerAll = KSDS3D_LISTENER_ALL;
  20341.  
  20342.  
  20343.   KSDS3D_LISTENER_ORIENTATION = record
  20344.     Front : TDS3DVECTOR;
  20345.     Top   : TDS3DVECTOR;
  20346.   end;
  20347.   {$EXTERNALSYM KSDS3D_LISTENER_ORIENTATION}
  20348.   PKSDS3D_LISTENER_ORIENTATION = ^KSDS3D_LISTENER_ORIENTATION;
  20349.   {$EXTERNALSYM PKSDS3D_LISTENER_ORIENTATION}
  20350.   TKSDS3DListenerOrientation = KSDS3D_LISTENER_ORIENTATION;
  20351.  
  20352. //===========================================================================
  20353. //===========================================================================
  20354. // KSPROPSETID_DirectSound3DBuffer : {437B3411-D060-11d0-8583-00C04FD9BAF3}
  20355. const
  20356.   KSPROPSETID_DirectSound3DBuffer : TGUID = '{437B3411-D060-11d0-8583-00C04FD9BAF3}';
  20357.   {$EXTERNALSYM KSPROPSETID_DirectSound3DBuffer}
  20358.  
  20359. type
  20360.   KSPROPERTY_DIRECTSOUND3DBUFFER = (
  20361.     KSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
  20362.     KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
  20363.     KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
  20364.     KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
  20365.     KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
  20366.     KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
  20367.     KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
  20368.     KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
  20369.     KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
  20370.   );
  20371.   {$EXTERNALSYM KSPROPERTY_DIRECTSOUND3DBUFFER}
  20372.   TKSPropertyDirectSound3DBuffer = KSPROPERTY_DIRECTSOUND3DBUFFER;
  20373.  
  20374.   KSDS3D_BUFFER_ALL = record
  20375.     Position          : TDS3DVECTOR;
  20376.     Velocity          : TDS3DVECTOR;
  20377.     InsideConeAngle   : ULONG;
  20378.     OutsideConeAngle  : ULONG;
  20379.     ConeOrientation   : TDS3DVECTOR;
  20380.     ConeOutsideVolume : longint;
  20381.     MinDistance       : single;
  20382.     MaxDistance       : single;
  20383.     Mode              : ULONG;
  20384.   end;
  20385.   {$EXTERNALSYM KSDS3D_BUFFER_ALL}
  20386.   PKSDS3D_BUFFER_ALL = ^KSDS3D_BUFFER_ALL;
  20387.   {$EXTERNALSYM PKSDS3D_BUFFER_ALL}
  20388.   TKSDS3DBufferAll = KSDS3D_BUFFER_ALL;
  20389.  
  20390.   KSDS3D_BUFFER_CONE_ANGLES = record
  20391.     InsideConeAngle  : ULONG;
  20392.     OutsideConeAngle : ULONG;
  20393.   end;
  20394.   {$EXTERNALSYM KSDS3D_BUFFER_CONE_ANGLES}
  20395.   PKSDS3D_BUFFER_CONE_ANGLES = ^KSDS3D_BUFFER_CONE_ANGLES;
  20396.   {$EXTERNALSYM PKSDS3D_BUFFER_CONE_ANGLES}
  20397.   TKSDS3DBufferConeAngles = KSDS3D_BUFFER_CONE_ANGLES;
  20398.  
  20399. const
  20400.   KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE = -1;
  20401.   {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE}
  20402.   KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN       = 5;
  20403.   {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN}
  20404.   KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW    = 10;
  20405.   {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW}
  20406.   KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE      = 20;
  20407.   {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE}
  20408.   KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX       = 180;
  20409.   {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX}
  20410.  
  20411.   KSDSOUND_3D_MODE_NORMAL       = $00000000;
  20412.   {$EXTERNALSYM KSDSOUND_3D_MODE_NORMAL}
  20413.   KSDSOUND_3D_MODE_HEADRELATIVE = $00000001;
  20414.   {$EXTERNALSYM KSDSOUND_3D_MODE_HEADRELATIVE}
  20415.   KSDSOUND_3D_MODE_DISABLE      = $00000002;
  20416.   {$EXTERNALSYM KSDSOUND_3D_MODE_DISABLE}
  20417.  
  20418. type
  20419.   KSDATARANGE_AUDIO = record
  20420.     DataRange              : TKSDataRange;
  20421.     MaximumChannels        : ULONG;
  20422.     MinimumBitsPerSample   : ULONG;
  20423.     MaximumBitsPerSample   : ULONG;
  20424.     MinimumSampleFrequency : ULONG;
  20425.     MaximumSampleFrequency : ULONG;
  20426.   end;
  20427.   {$EXTERNALSYM KSDATARANGE_AUDIO}
  20428.   PKSDATARANGE_AUDIO = ^KSDATARANGE_AUDIO;
  20429.   {$EXTERNALSYM PKSDATARANGE_AUDIO}
  20430.   TKSDataRangeAudio = KSDATARANGE_AUDIO;
  20431.  
  20432. //---------------------------------------------------------------------------
  20433. const
  20434.   KSDATAFORMAT_SUBTYPE_RIFF     : TGUID = '{4995DAEE-9EE6-11D0-A40E-00A0C9223196}';
  20435.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RIFF}
  20436.   KSDATAFORMAT_SUBTYPE_RIFFWAVE : TGUID = '{e436eb8b-524f-11ce-9f53-0020af0ba770}';
  20437.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RIFFWAVE}
  20438.  
  20439. //===========================================================================
  20440. //===========================================================================
  20441.  
  20442.   KSPROPSETID_Bibliographic     : TGUID = '{07BA150E-E2B1-11D0-AC17-00A0C9223196}';
  20443.   {$EXTERNALSYM KSPROPSETID_Bibliographic}
  20444.  
  20445. //Repeatable tags contain all entries within the property, each preceeded by length
  20446. type
  20447.   KSPROPERTY_BIBLIOGRAPHIC = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  20448.   {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC}
  20449.   const
  20450.     KSPROPERTY_BIBLIOGRAPHIC_LEADER                      = 'RDL ';
  20451.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_LEADER}
  20452.     KSPROPERTY_BIBLIOGRAPHIC_LCCN                        = '010 ';
  20453.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_LCCN}
  20454.     KSPROPERTY_BIBLIOGRAPHIC_ISBN                        = '020 ';
  20455.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ISBN}
  20456.     KSPROPERTY_BIBLIOGRAPHIC_ISSN                        = '220 ';
  20457.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ISSN}
  20458.     KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE            = '040 ';
  20459.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE}
  20460.     KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME            = '001 ';
  20461.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME}
  20462.     KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY           = '011 ';
  20463.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY}
  20464.     KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME             = '111 ';
  20465.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME}
  20466.     KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE            = '031 ';
  20467.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE}
  20468.     KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE                = '042 ';
  20469.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE}
  20470.     KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT              = '542 ';
  20471.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT}
  20472.     KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE            = '642 ';
  20473.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE}
  20474.     KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION                 = '062 ';
  20475.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION}
  20476.     KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION         = '003 ';
  20477.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION}
  20478.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE             = '044 ';
  20479.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE}
  20480.     KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT             = '094 ';
  20481.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT}
  20482.     KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE                 = '005 ';
  20483.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE}
  20484.     KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE            = '405 ';
  20485.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE}
  20486.     KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE                = '505 ';
  20487.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE}
  20488.     KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT              = '805 ';
  20489.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT}
  20490.     KSPROPERTY_BIBLIOGRAPHIC_CITATION                    = '015 ';
  20491.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CITATION}
  20492.     KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT                 = '115 ';
  20493.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT}
  20494.     KSPROPERTY_BIBLIOGRAPHIC_SUMMARY                     = '025 ';
  20495.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SUMMARY}
  20496.     KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE              = '125 ';
  20497.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE}
  20498.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE          = '035 ';
  20499.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE}
  20500.     KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS               = '835 ';
  20501.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS}
  20502.     KSPROPERTY_BIBLIOGRAPHIC_AWARDS                      = '685 ';
  20503.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_AWARDS}
  20504.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME      = '006 ';
  20505.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME}
  20506.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM       = '056 ';
  20507.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM}
  20508.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC        = '156 ';
  20509.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC}
  20510.     KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE              = '556 ';
  20511.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE}
  20512.     KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM         = '856 ';
  20513.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM}
  20514.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE      = '037 ';
  20515.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE}
  20516.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED           = '047 ';
  20517.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED}
  20518.     KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ';
  20519.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME}
  20520.     KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 ';
  20521.     {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE}
  20522.  
  20523.   KSPROPSETID_TopologyNode : TGUID = '{45FFAAA1-6E1B-11D0-BCF2-444553540000}';
  20524.   {$EXTERNALSYM KSPROPSETID_TopologyNode}
  20525.  
  20526. type
  20527.   KSPROPERTY_TOPOLOGYNODE = (
  20528.   {$IFNDEF COMPILER6_UP}
  20529.     KSPROPERTY_TOPOLOGYNODE_INVALID_0,
  20530.     KSPROPERTY_TOPOLOGYNODE_ENABLE,
  20531.     KSPROPERTY_TOPOLOGYNODE_RESET
  20532.   {$ELSE}
  20533.     KSPROPERTY_TOPOLOGYNODE_ENABLE = 1,
  20534.     KSPROPERTY_TOPOLOGYNODE_RESET  = 2
  20535.   {$ENDIF}
  20536.   );
  20537.   {$EXTERNALSYM KSPROPERTY_TOPOLOGYNODE}
  20538.   TKSPropertyTopologyNode = KSPROPERTY_TOPOLOGYNODE;
  20539.  
  20540. //===========================================================================
  20541. const
  20542.   KSPROPSETID_DrmAudioStream : TGUID = '{2F2C8DDD-4198-4fac-BA29-61BB05B7DE06}';
  20543.   {$EXTERNALSYM KSPROPSETID_DrmAudioStream}
  20544.  
  20545. type
  20546.   KSPROPERTY_DRMAUDIOSTREAM = (
  20547.     KSPROPERTY_DRMAUDIOSTREAM_CONTENTID,
  20548.     KSPROPERTY_DRMAUDIOSTREAM_AUTHENTICATEFUNCTION
  20549.   );
  20550.   {$EXTERNALSYM KSPROPERTY_DRMAUDIOSTREAM}
  20551.   TKSPRopertyDRMAudioStream = KSPROPERTY_DRMAUDIOSTREAM;
  20552.  
  20553. //===========================================================================
  20554. const
  20555.   KSPROPSETID_Audio : TGUID = '{45FFAAA0-6E1B-11D0-BCF2-444553540000}';
  20556.   {$EXTERNALSYM KSPROPSETID_Audio}
  20557.  
  20558. type
  20559.   KSPROPERTY_AUDIO = (
  20560.   {$IFNDEF COMPILER6_UP}
  20561.     KSPROPERTY_AUDIO_INVALID_0,
  20562.     KSPROPERTY_AUDIO_LATENCY,
  20563.   {$ELSE}
  20564.     KSPROPERTY_AUDIO_LATENCY = 1,
  20565.   {$ENDIF}
  20566.     KSPROPERTY_AUDIO_COPY_PROTECTION,
  20567.     KSPROPERTY_AUDIO_CHANNEL_CONFIG,
  20568.     KSPROPERTY_AUDIO_VOLUMELEVEL,
  20569.     KSPROPERTY_AUDIO_POSITION,
  20570.     KSPROPERTY_AUDIO_DYNAMIC_RANGE,
  20571.     KSPROPERTY_AUDIO_QUALITY,
  20572.     KSPROPERTY_AUDIO_SAMPLING_RATE,
  20573.     KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
  20574.     KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
  20575.     KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
  20576.     KSPROPERTY_AUDIO_MUX_SOURCE,
  20577.     KSPROPERTY_AUDIO_MUTE,
  20578.     KSPROPERTY_AUDIO_BASS,
  20579.     KSPROPERTY_AUDIO_MID,
  20580.     KSPROPERTY_AUDIO_TREBLE,
  20581.     KSPROPERTY_AUDIO_BASS_BOOST,
  20582.     KSPROPERTY_AUDIO_EQ_LEVEL,
  20583.     KSPROPERTY_AUDIO_NUM_EQ_BANDS,
  20584.     KSPROPERTY_AUDIO_EQ_BANDS,
  20585.     KSPROPERTY_AUDIO_AGC,
  20586.     KSPROPERTY_AUDIO_DELAY,
  20587.     KSPROPERTY_AUDIO_LOUDNESS,
  20588.     KSPROPERTY_AUDIO_WIDE_MODE,
  20589.     KSPROPERTY_AUDIO_WIDENESS,
  20590.     KSPROPERTY_AUDIO_REVERB_LEVEL,
  20591.     KSPROPERTY_AUDIO_CHORUS_LEVEL,
  20592.     KSPROPERTY_AUDIO_DEV_SPECIFIC,
  20593.     KSPROPERTY_AUDIO_DEMUX_DEST,
  20594.     KSPROPERTY_AUDIO_STEREO_ENHANCE,
  20595.     KSPROPERTY_AUDIO_MANUFACTURE_GUID,
  20596.     KSPROPERTY_AUDIO_PRODUCT_GUID,
  20597.     KSPROPERTY_AUDIO_CPU_RESOURCES,
  20598.     KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
  20599.     KSPROPERTY_AUDIO_SURROUND_ENCODE,
  20600.     KSPROPERTY_AUDIO_3D_INTERFACE,
  20601.     KSPROPERTY_AUDIO_PEAKMETER,
  20602.     KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
  20603.   );
  20604.   {$EXTERNALSYM KSPROPERTY_AUDIO}
  20605.   TKSPropertyAudio = KSPROPERTY_AUDIO;
  20606.  
  20607. // Audio quality constants
  20608. const
  20609.   KSAUDIO_QUALITY_WORST    = $0;
  20610.   {$EXTERNALSYM KSAUDIO_QUALITY_WORST}
  20611.   KSAUDIO_QUALITY_PC       = $1;
  20612.   {$EXTERNALSYM KSAUDIO_QUALITY_PC}
  20613.   KSAUDIO_QUALITY_BASIC    = $2;
  20614.   {$EXTERNALSYM KSAUDIO_QUALITY_BASIC}
  20615.   KSAUDIO_QUALITY_ADVANCED = $3;
  20616.   {$EXTERNALSYM KSAUDIO_QUALITY_ADVANCED}
  20617.  
  20618. // Audio CPU resource constants
  20619.   KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU = $00000000;
  20620.   {$EXTERNALSYM KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU}
  20621.   KSAUDIO_CPU_RESOURCES_HOST_CPU     = $7FFFFFFF;
  20622.   {$EXTERNALSYM KSAUDIO_CPU_RESOURCES_HOST_CPU}
  20623.  
  20624. type
  20625.   PKSAudioCopyProtection = ^TKSAudioCopyProtection;
  20626.   KSAUDIO_COPY_PROTECTION = record
  20627.     fCopyrighted : BOOL;
  20628.     fOriginal    : BOOL;
  20629.   end;
  20630.   {$EXTERNALSYM KSAUDIO_COPY_PROTECTION}
  20631.   PKSAUDIO_COPY_PROTECTION = ^KSAUDIO_COPY_PROTECTION;
  20632.   {$EXTERNALSYM PKSAUDIO_COPY_PROTECTION}
  20633.   TKSAudioCopyProtection = KSAUDIO_COPY_PROTECTION;
  20634.  
  20635.   PKSAudioChannelConfig = ^TKSAudioChannelConfig;
  20636.   KSAUDIO_CHANNEL_CONFIG = record
  20637.     ActiveSpeakerPositions : Longint;
  20638.   end;
  20639.   {$EXTERNALSYM KSAUDIO_CHANNEL_CONFIG}
  20640.   PKSAUDIO_CHANNEL_CONFIG = ^KSAUDIO_CHANNEL_CONFIG;
  20641.   {$EXTERNALSYM PKSAUDIO_CHANNEL_CONFIG}
  20642.   TKSAudioChannelConfig = KSAUDIO_CHANNEL_CONFIG;
  20643.  
  20644. // Speaker Positions:
  20645. const
  20646.   SPEAKER_FRONT_LEFT            = $1;
  20647.   {$EXTERNALSYM SPEAKER_FRONT_LEFT}
  20648.   SPEAKER_FRONT_RIGHT           = $2;
  20649.   {$EXTERNALSYM SPEAKER_FRONT_RIGHT}
  20650.   SPEAKER_FRONT_CENTER          = $4;
  20651.   {$EXTERNALSYM SPEAKER_FRONT_CENTER}
  20652.   SPEAKER_LOW_FREQUENCY         = $8;
  20653.   {$EXTERNALSYM SPEAKER_LOW_FREQUENCY}
  20654.   SPEAKER_BACK_LEFT             = $10;
  20655.   {$EXTERNALSYM SPEAKER_BACK_LEFT}
  20656.   SPEAKER_BACK_RIGHT            = $20;
  20657.   {$EXTERNALSYM SPEAKER_BACK_RIGHT}
  20658.   SPEAKER_FRONT_LEFT_OF_CENTER  = $40;
  20659.   {$EXTERNALSYM SPEAKER_FRONT_LEFT_OF_CENTER}
  20660.   SPEAKER_FRONT_RIGHT_OF_CENTER = $80;
  20661.   {$EXTERNALSYM SPEAKER_FRONT_RIGHT_OF_CENTER}
  20662.   SPEAKER_BACK_CENTER           = $100;
  20663.   {$EXTERNALSYM SPEAKER_BACK_CENTER}
  20664.   SPEAKER_SIDE_LEFT             = $200;
  20665.   {$EXTERNALSYM SPEAKER_SIDE_LEFT}
  20666.   SPEAKER_SIDE_RIGHT            = $400;
  20667.   {$EXTERNALSYM SPEAKER_SIDE_RIGHT}
  20668.   SPEAKER_TOP_CENTER            = $800;
  20669.   {$EXTERNALSYM SPEAKER_TOP_CENTER}
  20670.   SPEAKER_TOP_FRONT_LEFT        = $1000;
  20671.   {$EXTERNALSYM SPEAKER_TOP_FRONT_LEFT}
  20672.   SPEAKER_TOP_FRONT_CENTER      = $2000;
  20673.   {$EXTERNALSYM SPEAKER_TOP_FRONT_CENTER}
  20674.   SPEAKER_TOP_FRONT_RIGHT       = $4000;
  20675.   {$EXTERNALSYM SPEAKER_TOP_FRONT_RIGHT}
  20676.   SPEAKER_TOP_BACK_LEFT         = $8000;
  20677.   {$EXTERNALSYM SPEAKER_TOP_BACK_LEFT}
  20678.   SPEAKER_TOP_BACK_CENTER       = $10000;
  20679.   {$EXTERNALSYM SPEAKER_TOP_BACK_CENTER}
  20680.   SPEAKER_TOP_BACK_RIGHT        = $20000;
  20681.   {$EXTERNALSYM SPEAKER_TOP_BACK_RIGHT}
  20682.  
  20683. // Bit mask locations reserved for future use
  20684.   SPEAKER_RESERVED  = $7FFC0000;
  20685.   {$EXTERNALSYM SPEAKER_RESERVED}
  20686.  
  20687. // Used to specify that any possible permutation of speaker configurations
  20688.   SPEAKER_ALL       = $80000000;
  20689.   {$EXTERNALSYM SPEAKER_ALL}
  20690.  
  20691. // DirectSound Speaker Config
  20692.   KSAUDIO_SPEAKER_MONO     =       (SPEAKER_FRONT_CENTER);
  20693.   {$EXTERNALSYM KSAUDIO_SPEAKER_MONO}
  20694.   KSAUDIO_SPEAKER_STEREO   =       (SPEAKER_FRONT_LEFT           or SPEAKER_FRONT_RIGHT);
  20695.   {$EXTERNALSYM KSAUDIO_SPEAKER_STEREO}
  20696.   KSAUDIO_SPEAKER_QUAD     =       (SPEAKER_FRONT_LEFT           or SPEAKER_FRONT_RIGHT or
  20697.   {$EXTERNALSYM KSAUDIO_SPEAKER_QUAD}
  20698.                                     SPEAKER_BACK_LEFT            or SPEAKER_BACK_RIGHT);
  20699.   KSAUDIO_SPEAKER_SURROUND =       (SPEAKER_FRONT_LEFT           or SPEAKER_FRONT_RIGHT or
  20700.   {$EXTERNALSYM KSAUDIO_SPEAKER_SURROUND}
  20701.                                     SPEAKER_FRONT_CENTER         or SPEAKER_BACK_CENTER);
  20702.   KSAUDIO_SPEAKER_5POINT1  =       (SPEAKER_FRONT_LEFT           or SPEAKER_FRONT_RIGHT or
  20703.   {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1}
  20704.                                     SPEAKER_FRONT_CENTER         or SPEAKER_LOW_FREQUENCY or
  20705.                                     SPEAKER_BACK_LEFT            or SPEAKER_BACK_RIGHT);
  20706.   KSAUDIO_SPEAKER_7POINT1  =       (SPEAKER_FRONT_LEFT           or SPEAKER_FRONT_RIGHT or
  20707.   {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1}
  20708.                                     SPEAKER_FRONT_CENTER         or SPEAKER_LOW_FREQUENCY or
  20709.                                     SPEAKER_BACK_LEFT            or SPEAKER_BACK_RIGHT or
  20710.                                     SPEAKER_FRONT_LEFT_OF_CENTER or SPEAKER_FRONT_RIGHT_OF_CENTER);
  20711.  
  20712. // DVD Speaker Positions
  20713.   KSAUDIO_SPEAKER_GROUND_FRONT_LEFT   = SPEAKER_FRONT_LEFT;
  20714.   {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_LEFT}
  20715.   KSAUDIO_SPEAKER_GROUND_FRONT_CENTER = SPEAKER_FRONT_CENTER;
  20716.   {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_CENTER}
  20717.   KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT  = SPEAKER_FRONT_RIGHT;
  20718.   {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT}
  20719.   KSAUDIO_SPEAKER_GROUND_REAR_LEFT    = SPEAKER_BACK_LEFT;
  20720.   {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_REAR_LEFT}
  20721.   KSAUDIO_SPEAKER_GROUND_REAR_RIGHT   = SPEAKER_BACK_RIGHT;
  20722.   {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_REAR_RIGHT}
  20723.   KSAUDIO_SPEAKER_TOP_MIDDLE          = SPEAKER_TOP_CENTER;
  20724.   {$EXTERNALSYM KSAUDIO_SPEAKER_TOP_MIDDLE}
  20725.   KSAUDIO_SPEAKER_SUPER_WOOFER        = SPEAKER_LOW_FREQUENCY;
  20726.   {$EXTERNALSYM KSAUDIO_SPEAKER_SUPER_WOOFER}
  20727.  
  20728. type
  20729.   PKSAudioDynamicRange = ^TKSAudioDynamicRange;
  20730.   KSAUDIO_DYNAMIC_RANGE = record
  20731.     QuietCompression : ULONG;
  20732.     LoudCompression  : ULONG;
  20733.   end;
  20734.   {$EXTERNALSYM KSAUDIO_DYNAMIC_RANGE}
  20735.   PKSAUDIO_DYNAMIC_RANGE = ^KSAUDIO_DYNAMIC_RANGE;
  20736.   {$EXTERNALSYM PKSAUDIO_DYNAMIC_RANGE}
  20737.   TKSAudioDynamicRange = KSAUDIO_DYNAMIC_RANGE;
  20738.  
  20739.   PKSAudioMixLevel = ^TKSAudioMixLevel;
  20740.   KSAUDIO_MIXLEVEL = record
  20741.     Mute  : BOOL;
  20742.     Level : Longint;
  20743.   end;
  20744.   {$EXTERNALSYM KSAUDIO_MIXLEVEL}
  20745.   PKSAUDIO_MIXLEVEL = ^KSAUDIO_MIXLEVEL;
  20746.   {$EXTERNALSYM PKSAUDIO_MIXLEVEL}
  20747.   TKSAudioMixLevel = KSAUDIO_MIXLEVEL;
  20748.  
  20749.   PKSAudioMixCaps = ^TKSAudioMixCaps;
  20750.   KSAUDIO_MIX_CAPS = record
  20751.     Mute    : BOOL;
  20752.     Minimum : longint;
  20753.     Maximum : longint;
  20754.     Reset   : longint;
  20755.   end;
  20756.   {$EXTERNALSYM KSAUDIO_MIX_CAPS}
  20757.   PKSAUDIO_MIX_CAPS = ^KSAUDIO_MIX_CAPS;
  20758.   {$EXTERNALSYM PKSAUDIO_MIX_CAPS}
  20759.   TKSAudioMixCaps = KSAUDIO_MIX_CAPS;
  20760.  
  20761.   PKSaudioMixcapTable = ^TKSaudioMixcapTable;
  20762.   KSAUDIO_MIXCAP_TABLE = record
  20763.     InputChannels  : ULONG;
  20764.     OutputChannels : ULONG;
  20765.     Capabilities   : array[0..0] of TKSAudioMixCaps;
  20766.   end;
  20767.   {$EXTERNALSYM KSAUDIO_MIXCAP_TABLE}
  20768.   PKSAUDIO_MIXCAP_TABLE = ^KSAUDIO_MIXCAP_TABLE;
  20769.   {$EXTERNALSYM PKSAUDIO_MIXCAP_TABLE}
  20770.   TKSaudioMixcapTable = KSAUDIO_MIXCAP_TABLE;
  20771.  
  20772.   SE_TECHNIQUE = (
  20773.     SE_TECH_NONE,
  20774.     SE_TECH_ANALOG_DEVICES_PHAT,
  20775.     SE_TECH_CREATIVE,
  20776.     SE_TECH_NATIONAL_SEMI,
  20777.     SE_TECH_YAMAHA_YMERSION,
  20778.     SE_TECH_BBE,
  20779.     SE_TECH_CRYSTAL_SEMI,
  20780.     SE_TECH_QSOUND_QXPANDER,
  20781.     SE_TECH_SPATIALIZER,
  20782.     SE_TECH_SRS,
  20783.     SE_TECH_PLATFORM_TECH,
  20784.     SE_TECH_AKM,
  20785.     SE_TECH_AUREAL,
  20786.     SE_TECH_AZTECH,
  20787.     SE_TECH_BINAURA,
  20788.     SE_TECH_ESS_TECH,
  20789.     SE_TECH_HARMAN_VMAX,
  20790.     SE_TECH_NVIDEA,
  20791.     SE_TECH_PHILIPS_INCREDIBLE,
  20792.     SE_TECH_TEXAS_INST,
  20793.     SE_TECH_VLSI_TECH
  20794.   );
  20795.   {$EXTERNALSYM SE_TECHNIQUE}
  20796.   TSETechnique = SE_TECHNIQUE;
  20797.  
  20798.   PKSAudioStereoEnhance = ^TKSAudioStereoEnhance;
  20799.   KSAUDIO_STEREO_ENHANCE = record
  20800.     Technique : TSETechnique;
  20801.     Center    : ULONG;
  20802.     Depth     : ULONG;
  20803.     Reserved  : ULONG;
  20804.   end;
  20805.   {$EXTERNALSYM KSAUDIO_STEREO_ENHANCE}
  20806.   PKSAUDIO_STEREO_ENHANCE = ^KSAUDIO_STEREO_ENHANCE;
  20807.   {$EXTERNALSYM PKSAUDIO_STEREO_ENHANCE}
  20808.   TKSAudioStereoEnhance = KSAUDIO_STEREO_ENHANCE;
  20809.  
  20810. //===========================================================================
  20811. // Topology Node Type GUIDs
  20812. const
  20813.   KSNODETYPE_DAC                        : TGUID = '{507AE360-C554-11D0-8A2B-00A0C9255AC1}';
  20814.   {$EXTERNALSYM KSNODETYPE_DAC}
  20815.   KSNODETYPE_ADC                        : TGUID = '{4D837FE0-C555-11D0-8A2B-00A0C9255AC1}';
  20816.   {$EXTERNALSYM KSNODETYPE_ADC}
  20817.   KSNODETYPE_SRC                        : TGUID = '{9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1}';
  20818.   {$EXTERNALSYM KSNODETYPE_SRC}
  20819.   KSNODETYPE_SUPERMIX                   : TGUID = '{E573ADC0-C555-11D0-8A2B-00A0C9255AC1}';
  20820.   {$EXTERNALSYM KSNODETYPE_SUPERMIX}
  20821.   KSNODETYPE_MUX                        : TGUID = '{2CEAF780-C556-11D0-8A2B-00A0C9255AC1}';
  20822.   {$EXTERNALSYM KSNODETYPE_MUX}
  20823.   KSNODETYPE_DEMUX                      : TGUID = '{C0EB67D4-E807-11D0-958A-00C04FB925D3}';
  20824.   {$EXTERNALSYM KSNODETYPE_DEMUX}
  20825.   KSNODETYPE_SUM                        : TGUID = '{DA441A60-C556-11D0-8A2B-00A0C9255AC1}';
  20826.   {$EXTERNALSYM KSNODETYPE_SUM}
  20827.   KSNODETYPE_MUTE                       : TGUID = '{02B223C0-C557-11D0-8A2B-00A0C9255AC1}';
  20828.   {$EXTERNALSYM KSNODETYPE_MUTE}
  20829.   KSNODETYPE_VOLUME                     : TGUID = '{3A5ACC00-C557-11D0-8A2B-00A0C9255AC1}';
  20830.   {$EXTERNALSYM KSNODETYPE_VOLUME}
  20831.   KSNODETYPE_TONE                       : TGUID = '{7607E580-C557-11D0-8A2B-00A0C9255AC1}';
  20832.   {$EXTERNALSYM KSNODETYPE_TONE}
  20833.   KSNODETYPE_EQUALIZER                  : TGUID = '{9D41B4A0-C557-11D0-8A2B-00A0C9255AC1}';
  20834.   {$EXTERNALSYM KSNODETYPE_EQUALIZER}
  20835.   KSNODETYPE_AGC                        : TGUID = '{E88C9BA0-C557-11D0-8A2B-00A0C9255AC1}';
  20836.   {$EXTERNALSYM KSNODETYPE_AGC}
  20837.   KSNODETYPE_NOISE_SUPPRESS             : TGUID = '{E07F903F-62FD-4e60-8CDD-DEA7236665B5}';
  20838.   {$EXTERNALSYM KSNODETYPE_NOISE_SUPPRESS}
  20839.   KSNODETYPE_DELAY                      : TGUID = '{144981E0-C558-11D0-8A2B-00A0C9255AC1}';
  20840.   {$EXTERNALSYM KSNODETYPE_DELAY}
  20841.   KSNODETYPE_LOUDNESS                   : TGUID = '{41887440-C558-11D0-8A2B-00A0C9255AC1}';
  20842.   {$EXTERNALSYM KSNODETYPE_LOUDNESS}
  20843.   KSNODETYPE_PROLOGIC_DECODER           : TGUID = '{831C2C80-C558-11D0-8A2B-00A0C9255AC1}';
  20844.   {$EXTERNALSYM KSNODETYPE_PROLOGIC_DECODER}
  20845.   KSNODETYPE_STEREO_WIDE                : TGUID = '{A9E69800-C558-11D0-8A2B-00A0C9255AC1}';
  20846.   {$EXTERNALSYM KSNODETYPE_STEREO_WIDE}
  20847.   KSNODETYPE_STEREO_ENHANCE             : TGUID = '{AF6878AC-E83F-11D0-958A-00C04FB925D3}';
  20848.   {$EXTERNALSYM KSNODETYPE_STEREO_ENHANCE}
  20849.   KSNODETYPE_REVERB                     : TGUID = '{EF0328E0-C558-11D0-8A2B-00A0C9255AC1}';
  20850.   {$EXTERNALSYM KSNODETYPE_REVERB}
  20851.   KSNODETYPE_CHORUS                     : TGUID = '{20173F20-C559-11D0-8A2B-00A0C9255AC1}';
  20852.   {$EXTERNALSYM KSNODETYPE_CHORUS}
  20853.   KSNODETYPE_3D_EFFECTS                 : TGUID = '{55515860-C559-11D0-8A2B-00A0C9255AC1}';
  20854.   {$EXTERNALSYM KSNODETYPE_3D_EFFECTS}
  20855.  
  20856.   KSNODETYPE_ACOUSTIC_ECHO_CANCEL       : TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}'; //KSCATEGORY_ACOUSTIC_ECHO_CANCEL
  20857.   {$EXTERNALSYM KSNODETYPE_ACOUSTIC_ECHO_CANCEL}
  20858.   KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR : TGUID = '{830a44f2-a32d-476b-be97-42845673b35a}'; //KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR
  20859.   {$EXTERNALSYM KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR}
  20860.  
  20861.   KSNODETYPE_DEV_SPECIFIC               : TGUID = '{941C7AC0-C559-11D0-8A2B-00A0C9255AC1}';
  20862.   {$EXTERNALSYM KSNODETYPE_DEV_SPECIFIC}
  20863.   KSNODETYPE_SURROUND_ENCODER           : TGUID = '{8074C5B2-3C66-11D2-B45A-3078302C2030}';
  20864.   {$EXTERNALSYM KSNODETYPE_SURROUND_ENCODER}
  20865.   KSNODETYPE_PEAKMETER                  : TGUID = '{A085651E-5F0D-4b36-A869-D195D6AB4B9E}';
  20866.   {$EXTERNALSYM KSNODETYPE_PEAKMETER}
  20867.  
  20868. //===========================================================================
  20869. // Topology Node Name GUIDs for common audio nodes
  20870.   KSAUDFNAME_BASS                       : TGUID = '{185FEDE0-9905-11D1-95A9-00C04FB925D3}';
  20871.   {$EXTERNALSYM KSAUDFNAME_BASS}
  20872.   KSAUDFNAME_TREBLE                     : TGUID = '{185FEDE1-9905-11D1-95A9-00C04FB925D3}';
  20873.   {$EXTERNALSYM KSAUDFNAME_TREBLE}
  20874.   KSAUDFNAME_3D_STEREO                  : TGUID = '{185FEDE2-9905-11D1-95A9-00C04FB925D3}';
  20875.   {$EXTERNALSYM KSAUDFNAME_3D_STEREO}
  20876.   KSAUDFNAME_MASTER_VOLUME              : TGUID = '{185FEDE3-9905-11D1-95A9-00C04FB925D3}';
  20877.   {$EXTERNALSYM KSAUDFNAME_MASTER_VOLUME}
  20878.   KSAUDFNAME_MASTER_MUTE                : TGUID = '{185FEDE4-9905-11D1-95A9-00C04FB925D3}';
  20879.   {$EXTERNALSYM KSAUDFNAME_MASTER_MUTE}
  20880.   KSAUDFNAME_WAVE_VOLUME                : TGUID = '{185FEDE5-9905-11D1-95A9-00C04FB925D3}';
  20881.   {$EXTERNALSYM KSAUDFNAME_WAVE_VOLUME}
  20882.   KSAUDFNAME_WAVE_MUTE                  : TGUID = '{185FEDE6-9905-11D1-95A9-00C04FB925D3}';
  20883.   {$EXTERNALSYM KSAUDFNAME_WAVE_MUTE}
  20884.   KSAUDFNAME_MIDI_VOLUME                : TGUID = '{185FEDE7-9905-11D1-95A9-00C04FB925D3}';
  20885.   {$EXTERNALSYM KSAUDFNAME_MIDI_VOLUME}
  20886.   KSAUDFNAME_MIDI_MUTE                  : TGUID = '{185FEDE8-9905-11D1-95A9-00C04FB925D3}';
  20887.   {$EXTERNALSYM KSAUDFNAME_MIDI_MUTE}
  20888.   KSAUDFNAME_CD_VOLUME                  : TGUID = '{185FEDE9-9905-11D1-95A9-00C04FB925D3}';
  20889.   {$EXTERNALSYM KSAUDFNAME_CD_VOLUME}
  20890.   KSAUDFNAME_CD_MUTE                    : TGUID = '{185FEDEA-9905-11D1-95A9-00C04FB925D3}';
  20891.   {$EXTERNALSYM KSAUDFNAME_CD_MUTE}
  20892.   KSAUDFNAME_LINE_VOLUME                : TGUID = '{185FEDEB-9905-11D1-95A9-00C04FB925D3}';
  20893.   {$EXTERNALSYM KSAUDFNAME_LINE_VOLUME}
  20894.   KSAUDFNAME_LINE_MUTE                  : TGUID = '{185FEDEC-9905-11D1-95A9-00C04FB925D3}';
  20895.   {$EXTERNALSYM KSAUDFNAME_LINE_MUTE}
  20896.   KSAUDFNAME_MIC_VOLUME                 : TGUID = '{185FEDED-9905-11D1-95A9-00C04FB925D3}';
  20897.   {$EXTERNALSYM KSAUDFNAME_MIC_VOLUME}
  20898.   KSAUDFNAME_MIC_MUTE                   : TGUID = '{185FEDEE-9905-11D1-95A9-00C04FB925D3}';
  20899.   {$EXTERNALSYM KSAUDFNAME_MIC_MUTE}
  20900.   KSAUDFNAME_RECORDING_SOURCE           : TGUID = '{185FEDEF-9905-11D1-95A9-00C04FB925D3}';
  20901.   {$EXTERNALSYM KSAUDFNAME_RECORDING_SOURCE}
  20902.   KSAUDFNAME_PC_SPEAKER_VOLUME          : TGUID = '{185FEDF0-9905-11D1-95A9-00C04FB925D3}';
  20903.   {$EXTERNALSYM KSAUDFNAME_PC_SPEAKER_VOLUME}
  20904.   KSAUDFNAME_PC_SPEAKER_MUTE            : TGUID = '{185FEDF1-9905-11D1-95A9-00C04FB925D3}';
  20905.   {$EXTERNALSYM KSAUDFNAME_PC_SPEAKER_MUTE}
  20906.   KSAUDFNAME_MIDI_IN_VOLUME             : TGUID = '{185FEDF2-9905-11D1-95A9-00C04FB925D3}';
  20907.   {$EXTERNALSYM KSAUDFNAME_MIDI_IN_VOLUME}
  20908.   KSAUDFNAME_CD_IN_VOLUME               : TGUID = '{185FEDF3-9905-11D1-95A9-00C04FB925D3}';
  20909.   {$EXTERNALSYM KSAUDFNAME_CD_IN_VOLUME}
  20910.   KSAUDFNAME_LINE_IN_VOLUME             : TGUID = '{185FEDF4-9905-11D1-95A9-00C04FB925D3}';
  20911.   {$EXTERNALSYM KSAUDFNAME_LINE_IN_VOLUME}
  20912.   KSAUDFNAME_MIC_IN_VOLUME              : TGUID = '{185FEDF5-9905-11D1-95A9-00C04FB925D3}';
  20913.   {$EXTERNALSYM KSAUDFNAME_MIC_IN_VOLUME}
  20914.   KSAUDFNAME_WAVE_IN_VOLUME             : TGUID = '{185FEDF6-9905-11D1-95A9-00C04FB925D3}';
  20915.   {$EXTERNALSYM KSAUDFNAME_WAVE_IN_VOLUME}
  20916.   KSAUDFNAME_VOLUME_CONTROL             : TGUID = '{185FEDF7-9905-11D1-95A9-00C04FB925D3}';
  20917.   {$EXTERNALSYM KSAUDFNAME_VOLUME_CONTROL}
  20918.   KSAUDFNAME_MIDI                       : TGUID = '{185FEDF8-9905-11D1-95A9-00C04FB925D3}';
  20919.   {$EXTERNALSYM KSAUDFNAME_MIDI}
  20920.   KSAUDFNAME_LINE_IN                    : TGUID = '{185FEDF9-9905-11D1-95A9-00C04FB925D3}';
  20921.   {$EXTERNALSYM KSAUDFNAME_LINE_IN}
  20922.   KSAUDFNAME_RECORDING_CONTROL          : TGUID = '{185FEDFA-9905-11D1-95A9-00C04FB925D3}';
  20923.   {$EXTERNALSYM KSAUDFNAME_RECORDING_CONTROL}
  20924.   KSAUDFNAME_CD_AUDIO                   : TGUID = '{185FEDFB-9905-11D1-95A9-00C04FB925D3}';
  20925.   {$EXTERNALSYM KSAUDFNAME_CD_AUDIO}
  20926.   KSAUDFNAME_AUX_VOLUME                 : TGUID = '{185FEDFC-9905-11D1-95A9-00C04FB925D3}';
  20927.   {$EXTERNALSYM KSAUDFNAME_AUX_VOLUME}
  20928.   KSAUDFNAME_AUX_MUTE                   : TGUID = '{185FEDFD-9905-11D1-95A9-00C04FB925D3}';
  20929.   {$EXTERNALSYM KSAUDFNAME_AUX_MUTE}
  20930.   KSAUDFNAME_AUX                        : TGUID = '{185FEDFE-9905-11D1-95A9-00C04FB925D3}';
  20931.   {$EXTERNALSYM KSAUDFNAME_AUX}
  20932.   KSAUDFNAME_PC_SPEAKER                 : TGUID = '{185FEDFF-9905-11D1-95A9-00C04FB925D3}';
  20933.   {$EXTERNALSYM KSAUDFNAME_PC_SPEAKER}
  20934.   KSAUDFNAME_WAVE_OUT_MIX               : TGUID = '{185FEE00-9905-11D1-95A9-00C04FB925D3}';
  20935.   {$EXTERNALSYM KSAUDFNAME_WAVE_OUT_MIX}
  20936.   KSAUDFNAME_MONO_OUT                   : TGUID = '{F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68}';
  20937.   {$EXTERNALSYM KSAUDFNAME_MONO_OUT}
  20938.   KSAUDFNAME_STEREO_MIX                 : TGUID = '{00DFF077-96E3-11d2-AC4C-00C04F8EFB68}';
  20939.   {$EXTERNALSYM KSAUDFNAME_STEREO_MIX}
  20940.   KSAUDFNAME_MONO_MIX                   : TGUID = '{00DFF078-96E3-11d2-AC4C-00C04F8EFB68}';
  20941.   {$EXTERNALSYM KSAUDFNAME_MONO_MIX}
  20942.   KSAUDFNAME_MONO_OUT_VOLUME            : TGUID = '{1AD247EB-96E3-11d2-AC4C-00C04F8EFB68}';
  20943.   {$EXTERNALSYM KSAUDFNAME_MONO_OUT_VOLUME}
  20944.   KSAUDFNAME_MONO_OUT_MUTE              : TGUID = '{1AD247EC-96E3-11d2-AC4C-00C04F8EFB68}';
  20945.   {$EXTERNALSYM KSAUDFNAME_MONO_OUT_MUTE}
  20946.   KSAUDFNAME_STEREO_MIX_VOLUME          : TGUID = '{1AD247ED-96E3-11d2-AC4C-00C04F8EFB68}';
  20947.   {$EXTERNALSYM KSAUDFNAME_STEREO_MIX_VOLUME}
  20948.   KSAUDFNAME_STEREO_MIX_MUTE            : TGUID = '{22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68}';
  20949.   {$EXTERNALSYM KSAUDFNAME_STEREO_MIX_MUTE}
  20950.   KSAUDFNAME_MONO_MIX_VOLUME            : TGUID = '{22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68}';
  20951.   {$EXTERNALSYM KSAUDFNAME_MONO_MIX_VOLUME}
  20952.   KSAUDFNAME_MONO_MIX_MUTE              : TGUID = '{2BC31D69-96E3-11d2-AC4C-00C04F8EFB68}';
  20953.   {$EXTERNALSYM KSAUDFNAME_MONO_MIX_MUTE}
  20954.   KSAUDFNAME_MICROPHONE_BOOST           : TGUID = '{2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68}';
  20955.   {$EXTERNALSYM KSAUDFNAME_MICROPHONE_BOOST}
  20956.   KSAUDFNAME_ALTERNATE_MICROPHONE       : TGUID = '{2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68}';
  20957.   {$EXTERNALSYM KSAUDFNAME_ALTERNATE_MICROPHONE}
  20958.   KSAUDFNAME_3D_DEPTH                   : TGUID = '{63FF5747-991F-11d2-AC4D-00C04F8EFB68}';
  20959.   {$EXTERNALSYM KSAUDFNAME_3D_DEPTH}
  20960.   KSAUDFNAME_3D_CENTER                  : TGUID = '{9F0670B4-991F-11d2-AC4D-00C04F8EFB68}';
  20961.   {$EXTERNALSYM KSAUDFNAME_3D_CENTER}
  20962.   KSAUDFNAME_VIDEO_VOLUME               : TGUID = '{9B46E708-992A-11d2-AC4D-00C04F8EFB68}';
  20963.   {$EXTERNALSYM KSAUDFNAME_VIDEO_VOLUME}
  20964.   KSAUDFNAME_VIDEO_MUTE                 : TGUID = '{9B46E709-992A-11d2-AC4D-00C04F8EFB68}';
  20965.   {$EXTERNALSYM KSAUDFNAME_VIDEO_MUTE}
  20966.   KSAUDFNAME_VIDEO                      : TGUID = '{915DAEC4-A434-11d2-AC52-00C04F8EFB68}';
  20967.   {$EXTERNALSYM KSAUDFNAME_VIDEO}
  20968.   KSAUDFNAME_PEAKMETER                  : TGUID = '{57E24340-FC5B-4612-A562-72B11A29DFAE}';
  20969.   {$EXTERNALSYM KSAUDFNAME_PEAKMETER}
  20970.  
  20971. // Internal topology node pin definitions
  20972.  
  20973.   KSNODEPIN_STANDARD_IN     = 1;
  20974.   {$EXTERNALSYM KSNODEPIN_STANDARD_IN}
  20975.   KSNODEPIN_STANDARD_OUT    = 0;
  20976.   {$EXTERNALSYM KSNODEPIN_STANDARD_OUT}
  20977.  
  20978.   KSNODEPIN_SUM_MUX_IN      = 1; // can be >= 1
  20979.   {$EXTERNALSYM KSNODEPIN_SUM_MUX_IN}
  20980.   KSNODEPIN_SUM_MUX_OUT     = 0;
  20981.   {$EXTERNALSYM KSNODEPIN_SUM_MUX_OUT}
  20982.  
  20983.   KSNODEPIN_DEMUX_IN        = 0;
  20984.   {$EXTERNALSYM KSNODEPIN_DEMUX_IN}
  20985.   KSNODEPIN_DEMUX_OUT       = 1; // can be >= 1
  20986.   {$EXTERNALSYM KSNODEPIN_DEMUX_OUT}
  20987.  
  20988.   KSNODEPIN_AEC_RENDER_IN   = 1;
  20989.   {$EXTERNALSYM KSNODEPIN_AEC_RENDER_IN}
  20990.   KSNODEPIN_AEC_RENDER_OUT  = 0;
  20991.   {$EXTERNALSYM KSNODEPIN_AEC_RENDER_OUT}
  20992.   KSNODEPIN_AEC_CAPTURE_IN  = 2;
  20993.   {$EXTERNALSYM KSNODEPIN_AEC_CAPTURE_IN}
  20994.   KSNODEPIN_AEC_CAPTURE_OUT = 3;
  20995.   {$EXTERNALSYM KSNODEPIN_AEC_CAPTURE_OUT}
  20996.  
  20997. //===========================================================================
  20998. //===========================================================================
  20999.  
  21000.   KSMETHODSETID_Wavetable : TGUID = '{DCEF31EB-D907-11D0-9583-00C04FB925D3}';
  21001.   {$EXTERNALSYM KSMETHODSETID_Wavetable}
  21002.  
  21003. type
  21004.   KSMETHOD_WAVETABLE = (
  21005.     KSMETHOD_WAVETABLE_WAVE_ALLOC,
  21006.     KSMETHOD_WAVETABLE_WAVE_FREE,
  21007.     KSMETHOD_WAVETABLE_WAVE_FIND,
  21008.     KSMETHOD_WAVETABLE_WAVE_WRITE
  21009.   );
  21010.   {$EXTERNALSYM KSMETHOD_WAVETABLE}
  21011.   TKSMethodWavetable = KSMETHOD_WAVETABLE;
  21012.  
  21013.   PKSWaveTableWaveDesc = ^TKSWaveTableWaveDesc;
  21014.   KSWAVETABLE_WAVE_DESC = record
  21015.     Identifier : TKSIdentifier; // wave identifier
  21016.     Size       : ULONG;         // wave size
  21017.     Looped     : BOOL;          // wave looped flag
  21018.     LoopPoint  : ULONG;         // wave loop point
  21019.     InROM      : BOOL;          // wave InROM flag
  21020.     Format     : TKSDataFormat; // wave format
  21021.   end;
  21022.   {$EXTERNALSYM KSWAVETABLE_WAVE_DESC}
  21023.   PKSWAVETABLE_WAVE_DESC = ^KSWAVETABLE_WAVE_DESC;
  21024.   {$EXTERNALSYM PKSWAVETABLE_WAVE_DESC}
  21025.   TKSWaveTableWaveDesc = KSWAVETABLE_WAVE_DESC;
  21026.  
  21027. //===========================================================================
  21028. //===========================================================================
  21029.  
  21030. //
  21031. //  Property sets and items
  21032. //
  21033.  
  21034. //===========================================================================
  21035. //===========================================================================
  21036.  
  21037. const
  21038.   KSPROPSETID_Itd3d : TGUID = '{6429f090-9fd9-11d0-a75b-00a0c90365e3}';
  21039.   {$EXTERNALSYM KSPROPSETID_Itd3d}
  21040.  
  21041. //type
  21042. //  KSPROPERTY_ITD3D = (
  21043. //    KSPROPERTY_ITD3D_PARAMS
  21044. //  );
  21045. //  {$EXTERNALSYM KSPROPERTY_ITD3D}
  21046. //  TKSPropertyITD3D = KSPROPERTY_ITD3D;
  21047.  
  21048. //===========================================================================
  21049. //===========================================================================
  21050. const
  21051.   KSPROPSETID_Hrtf3d: TGUID = '{b66decb0-a083-11d0-851e-00c04fd9baf3}';
  21052.   {$EXTERNALSYM KSPROPSETID_Hrtf3d}
  21053.  
  21054. //type
  21055. //  KSPROPERTY_HRTF3D = (
  21056. //    KSPROPERTY_HRTF3D_PARAMS,
  21057. //    KSPROPERTY_HRTF3D_INITIALIZE,
  21058. //    KSPROPERTY_HRTF3D_FILTER_FORMAT
  21059. //  );
  21060. //  {$EXTERNALSYM KSPROPERTY_HRTF3D}
  21061. //  TKSPropertyHRTF3D = KSPROPERTY_HRTF3D;
  21062.  
  21063. //===========================================================================
  21064. //===========================================================================
  21065. const
  21066.   KSPROPSETID_Wave_Queued   : TGUID = '{16a15b10-16f0-11d0-a195-0020afd156e4}';
  21067.   {$EXTERNALSYM KSPROPSETID_Wave_Queued}
  21068.  
  21069.   KSPROPERTY_WAVE_QUEUED_POSITION   = $00000001;
  21070.   {$EXTERNALSYM KSPROPERTY_WAVE_QUEUED_POSITION}
  21071.  
  21072.   KSMETHODSETID_Wave_Queued : TGUID = '{7432c160-8827-11cf-a102-0020afd156e4}';
  21073.   {$EXTERNALSYM KSMETHODSETID_Wave_Queued}
  21074.  
  21075.   KSMETHOD_WAVE_QUEUED_BREAKLOOP    = $00000001;
  21076.   {$EXTERNALSYM KSMETHOD_WAVE_QUEUED_BREAKLOOP}
  21077.  
  21078.   KSPROPSETID_Wave          : TGUID = '{924e54b0-630f-11cf-ada7-08003e30494a}';
  21079.   {$EXTERNALSYM KSPROPSETID_Wave}
  21080.  
  21081. type
  21082.   KSPROPERTY_WAVE = (
  21083.     KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES,
  21084.     KSPROPERTY_WAVE_INPUT_CAPABILITIES,
  21085.     KSPROPERTY_WAVE_OUTPUT_CAPABILITIES,
  21086.     KSPROPERTY_WAVE_BUFFER,
  21087.     KSPROPERTY_WAVE_FREQUENCY,
  21088.     KSPROPERTY_WAVE_VOLUME,
  21089.     KSPROPERTY_WAVE_PAN
  21090.   );
  21091.   {$EXTERNALSYM KSPROPERTY_WAVE}
  21092.   TKSPropertyWave = KSPROPERTY_WAVE;
  21093.  
  21094.   PKSWaveCompatCaps = ^TKSWaveCompatCaps;
  21095.   KSWAVE_COMPATCAPS = record
  21096.     ulDeviceType : ULONG;
  21097.   end;
  21098.   {$EXTERNALSYM KSWAVE_COMPATCAPS}
  21099.   PKSWAVE_COMPATCAPS = ^KSWAVE_COMPATCAPS;
  21100.   {$EXTERNALSYM PKSWAVE_COMPATCAPS}
  21101.   TKSWaveCompatCaps = KSWAVE_COMPATCAPS;
  21102.  
  21103. const
  21104.   KSWAVE_COMPATCAPS_INPUT  = $00000000;
  21105.   {$EXTERNALSYM KSWAVE_COMPATCAPS_INPUT}
  21106.   KSWAVE_COMPATCAPS_OUTPUT = $00000001;
  21107.   {$EXTERNALSYM KSWAVE_COMPATCAPS_OUTPUT}
  21108.  
  21109. type
  21110.   PKSWaveInputCapabilities = ^TKSWaveInputCapabilities;
  21111.   KSWAVE_INPUT_CAPABILITIES = record
  21112.     MaximumChannelsPerConnection : ULONG;
  21113.     MinimumBitsPerSample         : ULONG;
  21114.     MaximumBitsPerSample         : ULONG;
  21115.     MinimumSampleFrequency       : ULONG;
  21116.     MaximumSampleFrequency       : ULONG;
  21117.     TotalConnections             : ULONG;
  21118.     ActiveConnections            : ULONG;
  21119.   end;
  21120.   {$EXTERNALSYM KSWAVE_INPUT_CAPABILITIES}
  21121.   PKSWAVE_INPUT_CAPABILITIES = ^KSWAVE_INPUT_CAPABILITIES;
  21122.   {$EXTERNALSYM PKSWAVE_INPUT_CAPABILITIES}
  21123.   TKSWaveInputCapabilities = KSWAVE_INPUT_CAPABILITIES;
  21124.  
  21125.   PKSWaveOutputCapabilities = ^TKSWaveOutputCapabilities;
  21126.   KSWAVE_OUTPUT_CAPABILITIES = record
  21127.     MaximumChannelsPerConnection      : ULONG;
  21128.     MinimumBitsPerSample              : ULONG;
  21129.     MaximumBitsPerSample              : ULONG;
  21130.     MinimumSampleFrequency            : ULONG;
  21131.     MaximumSampleFrequency            : ULONG;
  21132.     TotalConnections                  : ULONG;
  21133.     StaticConnections                 : ULONG;
  21134.     StreamingConnections              : ULONG;
  21135.     ActiveConnections                 : ULONG;
  21136.     ActiveStaticConnections           : ULONG;
  21137.     ActiveStreamingConnections        : ULONG;
  21138.     Total3DConnections                : ULONG;
  21139.     Static3DConnections               : ULONG;
  21140.     Streaming3DConnections            : ULONG;
  21141.     Active3DConnections               : ULONG;
  21142.     ActiveStatic3DConnections         : ULONG;
  21143.     ActiveStreaming3DConnections      : ULONG;
  21144.     TotalSampleMemory                 : ULONG;
  21145.     FreeSampleMemory                  : ULONG;
  21146.     LargestFreeContiguousSampleMemory : ULONG;
  21147.   end;
  21148.   {$EXTERNALSYM KSWAVE_OUTPUT_CAPABILITIES}
  21149.   PKSWAVE_OUTPUT_CAPABILITIES = ^KSWAVE_OUTPUT_CAPABILITIES;
  21150.   {$EXTERNALSYM PKSWAVE_OUTPUT_CAPABILITIES}
  21151.   TKSWaveOutputCapabilities = KSWAVE_OUTPUT_CAPABILITIES;
  21152.  
  21153.   PKSWaveVolume = ^TKSWaveVolume;
  21154.   KSWAVE_VOLUME = record
  21155.     LeftAttenuation  : longint;
  21156.     RightAttenuation : longint;
  21157.   end;
  21158.   {$EXTERNALSYM KSWAVE_VOLUME}
  21159.   PKSWAVE_VOLUME = ^KSWAVE_VOLUME;
  21160.   {$EXTERNALSYM PKSWAVE_VOLUME}
  21161.   TKSWaveVolume = KSWAVE_VOLUME;
  21162.  
  21163. const
  21164.   KSWAVE_BUFFER_ATTRIBUTEF_LOOPING = $00000001;
  21165.   {$EXTERNALSYM KSWAVE_BUFFER_ATTRIBUTEF_LOOPING}
  21166.   KSWAVE_BUFFER_ATTRIBUTEF_STATIC  = $00000002;
  21167.   {$EXTERNALSYM KSWAVE_BUFFER_ATTRIBUTEF_STATIC}
  21168.  
  21169. type
  21170.   PKSWaveBuffer = ^TKSWaveBuffer;
  21171.   KSWAVE_BUFFER = record
  21172.     Attributes    : ULONG;
  21173.     BufferSize    : ULONG;
  21174.     BufferAddress : Pointer;
  21175.   end;
  21176.   {$EXTERNALSYM KSWAVE_BUFFER}
  21177.   PKSWAVE_BUFFER = ^KSWAVE_BUFFER;
  21178.   {$EXTERNALSYM PKSWAVE_BUFFER}
  21179.   TKSWaveBuffer = KSWAVE_BUFFER;
  21180.  
  21181. //===========================================================================
  21182. //===========================================================================
  21183. const
  21184.  KSMUSIC_TECHNOLOGY_PORT      : TGUID = '{86C92E60-62E8-11CF-A5D6-28DB04C10000}';
  21185.  {$EXTERNALSYM KSMUSIC_TECHNOLOGY_PORT}
  21186.  KSMUSIC_TECHNOLOGY_SQSYNTH   : TGUID = '{0ECF4380-62E9-11CF-A5D6-28DB04C10000}';
  21187.  {$EXTERNALSYM KSMUSIC_TECHNOLOGY_SQSYNTH}
  21188.  KSMUSIC_TECHNOLOGY_FMSYNTH   : TGUID = '{252C5C80-62E9-11CF-A5D6-28DB04C10000}';
  21189.  {$EXTERNALSYM KSMUSIC_TECHNOLOGY_FMSYNTH}
  21190.  KSMUSIC_TECHNOLOGY_WAVETABLE : TGUID = '{394EC7C0-62E9-11CF-A5D6-28DB04C10000}';
  21191.  {$EXTERNALSYM KSMUSIC_TECHNOLOGY_WAVETABLE}
  21192.  KSMUSIC_TECHNOLOGY_SWSYNTH   : TGUID = '{37407736-3620-11D1-85D3-0000F8754380}';
  21193.  {$EXTERNALSYM KSMUSIC_TECHNOLOGY_SWSYNTH}
  21194.  KSPROPSETID_WaveTable        : TGUID = '{8539E660-62E9-11CF-A5D6-28DB04C10000}';
  21195.  {$EXTERNALSYM KSPROPSETID_WaveTable}
  21196.  
  21197. type
  21198.   KSPROPERTY_WAVETABLE = (
  21199.     KSPROPERTY_WAVETABLE_LOAD_SAMPLE,
  21200.     KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE,
  21201.     KSPROPERTY_WAVETABLE_MEMORY,
  21202.     KSPROPERTY_WAVETABLE_VERSION
  21203.   );
  21204.   {$EXTERNALSYM KSPROPERTY_WAVETABLE}
  21205.   TKSPropertyWaveTable = KSPROPERTY_WAVETABLE;
  21206.  
  21207.   PKSDataRangeMusic = ^TKSDataRangeMusic;
  21208.   KSDATARANGE_MUSIC = record
  21209.     DataRange   : TKSDataRange;
  21210.     Technology  : TGUID;
  21211.     Channels    : ULONG;
  21212.     Notes       : ULONG;
  21213.     ChannelMask : ULONG;
  21214.   end;
  21215.   {$EXTERNALSYM KSDATARANGE_MUSIC}
  21216.   PKSDATARANGE_MUSIC = ^KSDATARANGE_MUSIC;
  21217.   {$EXTERNALSYM PKSDATARANGE_MUSIC}
  21218.   TKSDataRangeMusic = KSDATARANGE_MUSIC;
  21219.  
  21220. //===========================================================================
  21221. const
  21222.   KSEVENTSETID_Cyclic : TGUID = '{142C1AC0-072A-11D0-A5D6-28DB04C10000}';
  21223.   {$EXTERNALSYM KSEVENTSETID_Cyclic}
  21224.  
  21225. type
  21226.   KSEVENT_CYCLIC_TIME = (
  21227.     KSEVENT_CYCLIC_TIME_INTERVAL
  21228.   );
  21229.   {$EXTERNALSYM KSEVENT_CYCLIC_TIME}
  21230.   TKSEventCyclicTime = KSEVENT_CYCLIC_TIME;
  21231.  
  21232. const
  21233.   KSPROPSETID_Cyclic: TGUID = '{3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000}';
  21234.   {$EXTERNALSYM KSPROPSETID_Cyclic}
  21235.  
  21236. type
  21237.   KSPROPERTY_CYCLIC = (
  21238.     KSPROPERTY_CYCLIC_POSITION
  21239.   );
  21240.   {$EXTERNALSYM KSPROPERTY_CYCLIC}
  21241.   TKSPropertyCyclic = KSPROPERTY_CYCLIC;
  21242.  
  21243. //===========================================================================
  21244. const
  21245.   KSEVENTSETID_AudioControlChange: TGUID = '{E85E9698-FA2F-11D1-95BD-00C04FB925D3}';
  21246.   {$EXTERNALSYM KSEVENTSETID_AudioControlChange}
  21247.  
  21248. type
  21249.   KSEVENT_AUDIO_CONTROL_CHANGE = (
  21250.     KSEVENT_CONTROL_CHANGE
  21251.   );
  21252.   {$EXTERNALSYM KSEVENT_AUDIO_CONTROL_CHANGE}
  21253.   TKSEventAudioControlChange = KSEVENT_AUDIO_CONTROL_CHANGE;
  21254.  
  21255. //===========================================================================
  21256. const
  21257.   KSEVENTSETID_LoopedStreaming : TGUID = '{4682B940-C6EF-11D0-96D8-00AA0051E51D}';
  21258.   {$EXTERNALSYM KSEVENTSETID_LoopedStreaming}
  21259.  
  21260. type
  21261.   KSEVENT_LOOPEDSTREAMING = (
  21262.     KSEVENT_LOOPEDSTREAMING_POSITION
  21263.   );
  21264.   {$EXTERNALSYM KSEVENT_LOOPEDSTREAMING}
  21265.   TKSEventLoopedStreaming = KSEVENT_LOOPEDSTREAMING;
  21266.  
  21267.   PLoopedStreamingPositionEventData = ^TLoopedStreamingPositionEventData;
  21268.   LOOPEDSTREAMING_POSITION_EVENT_DATA = record
  21269.     KsEventData : TKSEVENTDATA;
  21270.     Position    : int64;
  21271.   end;
  21272.   {$EXTERNALSYM LOOPEDSTREAMING_POSITION_EVENT_DATA}
  21273.   PLOOPEDSTREAMING_POSITION_EVENT_DATA = ^LOOPEDSTREAMING_POSITION_EVENT_DATA;
  21274.   {$EXTERNALSYM PLOOPEDSTREAMING_POSITION_EVENT_DATA}
  21275.   TLoopedStreamingPositionEventData = LOOPEDSTREAMING_POSITION_EVENT_DATA;
  21276.  
  21277. const
  21278.   KSEVENTSETID_Sysaudio : TGUID = '{04800320-4491-11D1-A050-405705C10000}';
  21279.   {$EXTERNALSYM KSEVENTSETID_Sysaudio}
  21280.  
  21281. type
  21282.   KSEVENT_SYSAUDIO = (
  21283.     KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE,
  21284.     KSEVENT_SYSAUDIO_CHANGE_DEVICE
  21285.   );
  21286.   {$EXTERNALSYM KSEVENT_SYSAUDIO}
  21287.   TKSEventSysAudio = KSEVENT_SYSAUDIO;
  21288.  
  21289. const
  21290.   KSPROPSETID_Sysaudio : TGUID = '{CBE3FAA0-CC75-11D0-B465-00001A1818E6}';
  21291.   {$EXTERNALSYM KSPROPSETID_Sysaudio}
  21292.  
  21293. type
  21294.   KSPROPERTY_SYSAUDIO = (
  21295.     KSPROPERTY_SYSAUDIO_DEVICE_Invalid,
  21296.     KSPROPERTY_SYSAUDIO_DEVICE_COUNT,
  21297.     KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME,
  21298.     KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE,
  21299.     KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME,
  21300.     KSPROPERTY_SYSAUDIO_SELECT_GRAPH,
  21301.     KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE,
  21302.     KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT,
  21303.     KSPROPERTY_SYSAUDIO_ALWAYS_CREATE_VIRTUAL_SOURCE,
  21304.     KSPROPERTY_SYSAUDIO_ADDREMOVE_LOCK,
  21305.     KSPROPERTY_SYSAUDIO_ADDREMOVE_UNLOCK,
  21306.     KSPROPERTY_SYSAUDIO_RENDER_PIN_INSTANCES,
  21307.     KSPROPERTY_SYSAUDIO_RENDER_CONNECTION_INDEX,
  21308.     KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE_ONLY,
  21309.     KSPROPERTY_SYSAUDIO_INSTANCE_INFO,
  21310.     KSPROPERTY_SYSAUDIO_PREFERRED_DEVICE
  21311.   );
  21312.   {$EXTERNALSYM KSPROPERTY_SYSAUDIO}
  21313.   TKSPropertySysAudio = KSPROPERTY_SYSAUDIO;
  21314.  
  21315.   PSysAudioCreateVirtualSource = ^TSysAudioCreateVirtualSource;
  21316.   SYSAUDIO_CREATE_VIRTUAL_SOURCE = record
  21317.     Property_   : KSPROPERTY;
  21318.     PinCategory : TGUID;
  21319.     PinName     : TGUID;
  21320.   end;
  21321.   {$EXTERNALSYM SYSAUDIO_CREATE_VIRTUAL_SOURCE}
  21322.   PSYSAUDIO_CREATE_VIRTUAL_SOURCE = ^SYSAUDIO_CREATE_VIRTUAL_SOURCE;
  21323.   {$EXTERNALSYM PSYSAUDIO_CREATE_VIRTUAL_SOURCE}
  21324.   TSysAudioCreateVirtualSource = SYSAUDIO_CREATE_VIRTUAL_SOURCE;
  21325.  
  21326.   PSysAudioSelectGraph = ^TSysAudioSelectGraph;
  21327.   SYSAUDIO_SELECT_GRAPH = record
  21328.      Property_ : KSPROPERTY;
  21329.      PinId     : ULONG;
  21330.      NodeId    : ULONG;
  21331.      Flags     : ULONG;
  21332.      Reserved  : ULONG;
  21333.   end;
  21334.   {$EXTERNALSYM SYSAUDIO_SELECT_GRAPH}
  21335.   PSYSAUDIO_SELECT_GRAPH = ^SYSAUDIO_SELECT_GRAPH;
  21336.   {$EXTERNALSYM PSYSAUDIO_SELECT_GRAPH}
  21337.   TSysAudioSelectGraph = SYSAUDIO_SELECT_GRAPH;
  21338.  
  21339.   PSysAudioInstanceInfo = ^TSysAudioInstanceInfo;
  21340.   SYSAUDIO_INSTANCE_INFO = record
  21341.     Property_    : KSPROPERTY;
  21342.     Flags        : ULONG;
  21343.     DeviceNumber : ULONG;
  21344.   end;
  21345.   {$EXTERNALSYM SYSAUDIO_INSTANCE_INFO}
  21346.   PSYSAUDIO_INSTANCE_INFO = ^SYSAUDIO_INSTANCE_INFO;
  21347.   {$EXTERNALSYM PSYSAUDIO_INSTANCE_INFO}
  21348.   TSysAudioInstanceInfo = SYSAUDIO_INSTANCE_INFO;
  21349.  
  21350. const
  21351.   SYSAUDIO_FLAGS_DONT_COMBINE_PINS = $00000001;
  21352.   {$EXTERNALSYM SYSAUDIO_FLAGS_DONT_COMBINE_PINS}
  21353.  
  21354. type
  21355.   SYSAUDIO_PREFERRED_DEVICE = record
  21356.     Property_ : KSPROPERTY;
  21357.     Flags     : ULONG;
  21358.     Index     : ULONG; // KSPROPERTY_SYSAUDIO_DEFAULT_TYPE
  21359.   end;
  21360.   {$EXTERNALSYM SYSAUDIO_PREFERRED_DEVICE}
  21361.   PSYSAUDIO_PREFERRED_DEVICE = ^SYSAUDIO_PREFERRED_DEVICE;
  21362.   {$EXTERNALSYM PSYSAUDIO_PREFERRED_DEVICE}
  21363.   TSysAudioPreferredDevice = SYSAUDIO_PREFERRED_DEVICE;
  21364.  
  21365. const
  21366.   SYSAUDIO_FLAGS_CLEAR_PREFERRED = $00000002;
  21367.   {$EXTERNALSYM SYSAUDIO_FLAGS_CLEAR_PREFERRED}
  21368.  
  21369. type
  21370.   KSPROPERTY_SYSAUDIO_DEFAULT_TYPE = ( // preferred device index
  21371.     KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT,
  21372.     KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT,
  21373.     KSPROPERTY_SYSAUDIO_RECORD_DEFAULT,
  21374.     KSPROPERTY_SYSAUDIO_MIDI_DEFAULT,
  21375.     KSPROPERTY_SYSAUDIO_MIXER_DEFAULT
  21376.   );
  21377.   {$EXTERNALSYM KSPROPERTY_SYSAUDIO_DEFAULT_TYPE}
  21378.   TKSPropertySysAudioDefaultType = KSPROPERTY_SYSAUDIO_DEFAULT_TYPE;
  21379.  
  21380. const
  21381.    KSPROPSETID_Sysaudio_Pin : TGUID = '{A3A53220-C6E4-11D0-B465-00001A1818E6}';
  21382.    {$EXTERNALSYM KSPROPSETID_Sysaudio_Pin}
  21383.  
  21384. type
  21385.   KSPROPERTY_SYSAUDIO_PIN = (
  21386.     KSPROPERTY_SYSAUDIO_TOPOLOGY_CONNECTION_INDEX,
  21387.     KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE,
  21388.     KSPROPERTY_SYSAUDIO_PIN_VOLUME_NODE
  21389.   );
  21390.   {$EXTERNALSYM KSPROPERTY_SYSAUDIO_PIN}
  21391.   TKSPropertySysAudioPin = KSPROPERTY_SYSAUDIO_PIN;
  21392.  
  21393.   PSysAudioAttachVirtualSource = ^TSysAudioAttachVirtualSource;
  21394.   SYSAUDIO_ATTACH_VIRTUAL_SOURCE = record
  21395.     Property_  : KSPROPERTY;
  21396.     MixerPinId : ULONG;
  21397.     Reserved   : ULONG;
  21398.   end;
  21399.   {$EXTERNALSYM SYSAUDIO_ATTACH_VIRTUAL_SOURCE}
  21400.   PSYSAUDIO_ATTACH_VIRTUAL_SOURCE = ^SYSAUDIO_ATTACH_VIRTUAL_SOURCE;
  21401.   {$EXTERNALSYM PSYSAUDIO_ATTACH_VIRTUAL_SOURCE}
  21402.   TSysAudioAttachVirtualSource = SYSAUDIO_ATTACH_VIRTUAL_SOURCE;
  21403.  
  21404.   KSNODEPROPERTY = record
  21405.     Property_ : KSPROPERTY;
  21406.     NodeId    : ULONG;
  21407.     Reserved  : ULONG;
  21408.   end;
  21409.   {$EXTERNALSYM KSNODEPROPERTY}
  21410.   PKSNODEPROPERTY = ^KSNODEPROPERTY;
  21411.   {$EXTERNALSYM PKSNODEPROPERTY}
  21412.   TKSNodeProperty = KSNODEPROPERTY;
  21413.  
  21414.   PKSNodePropertyAudioChannel = ^TKSNodePropertyAudioChannel;
  21415.   KSNODEPROPERTY_AUDIO_CHANNEL = record
  21416.     NodeProperty : TKSNODEPROPERTY;
  21417.     Channel      : Longint; // value to get or set
  21418.     Reserved     : ULONG;
  21419.   end;
  21420.   {$EXTERNALSYM KSNODEPROPERTY_AUDIO_CHANNEL}
  21421.   PKSNODEPROPERTY_AUDIO_CHANNEL = ^KSNODEPROPERTY_AUDIO_CHANNEL;
  21422.   {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_CHANNEL}
  21423.   TKSNodePropertyAudioChannel = KSNODEPROPERTY_AUDIO_CHANNEL;
  21424.  
  21425.   PKSNodePropertyAudioDevSpecific = ^TKSNodePropertyAudioDevSpecific;
  21426.   KSNODEPROPERTY_AUDIO_DEV_SPECIFIC = record
  21427.     NodeProperty  :TKSNODEPROPERTY;
  21428.     DevSpecificId :ULONG;
  21429.     DeviceInfo    :ULONG;
  21430.     Length        :ULONG;
  21431.   end;
  21432.   {$EXTERNALSYM KSNODEPROPERTY_AUDIO_DEV_SPECIFIC}
  21433.   PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC = ^KSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
  21434.   {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC}
  21435.   TKSNodePropertyAudioDevSpecific = KSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
  21436.  
  21437.   PKSNodePropertyAudio3DListenerp = ^TKSNodePropertyAudio3DListener;
  21438.   KSNODEPROPERTY_AUDIO_3D_LISTENER = record
  21439.     NodeProperty : TKSNODEPROPERTY;
  21440.     ListenerId   : pointer;
  21441.     Reserved     : ULONG;
  21442.   end;
  21443.   {$EXTERNALSYM KSNODEPROPERTY_AUDIO_3D_LISTENER}
  21444.   PKSNODEPROPERTY_AUDIO_3D_LISTENER = ^KSNODEPROPERTY_AUDIO_3D_LISTENER;
  21445.   {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_3D_LISTENER}
  21446.   TKSNodePropertyAudio3DListener = KSNODEPROPERTY_AUDIO_3D_LISTENER;
  21447.  
  21448.   PKSNodePropertyAudioProperty = ^TKSNodePropertyAudioProperty;
  21449.   KSNODEPROPERTY_AUDIO_PROPERTY = record
  21450.     NodeProperty : TKSNODEPROPERTY;
  21451.     AppContext   : Pointer;
  21452.     Length       : ULONG;
  21453.     Reserved     : ULONG;
  21454.   end;
  21455.   {$EXTERNALSYM KSNODEPROPERTY_AUDIO_PROPERTY}
  21456.   PKSNODEPROPERTY_AUDIO_PROPERTY = ^KSNODEPROPERTY_AUDIO_PROPERTY;
  21457.   {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_PROPERTY}
  21458.   TKSNodePropertyAudioProperty = KSNODEPROPERTY_AUDIO_PROPERTY;
  21459.  
  21460. //===========================================================================
  21461. const
  21462.   KSPROPSETID_Linear : TGUID = '{5A2FFE80-16B9-11D0-A5D6-28DB04C10000}';
  21463.   {$EXTERNALSYM KSPROPSETID_Linear}
  21464.  
  21465. type
  21466.   KSPROPERTY_LINEAR = (
  21467.     KSPROPERTY_LINEAR_POSITION
  21468.   );
  21469.   {$EXTERNALSYM KSPROPERTY_LINEAR}
  21470.   TKSPropertyLinear = KSPROPERTY_LINEAR;
  21471.  
  21472. //===========================================================================
  21473.  
  21474. //
  21475. // Midi definitions
  21476. //
  21477.  
  21478. //
  21479. //  Formats
  21480. //
  21481. const
  21482.  KSDATAFORMAT_TYPE_MUSIC       : TGUID = '{E725D360-62CC-11CF-A5D6-28DB04C10000}';
  21483.  {$EXTERNALSYM KSDATAFORMAT_TYPE_MUSIC}
  21484. // 'mids' == MEDIATYPE_Midi
  21485.  KSDATAFORMAT_TYPE_MIDI        : TGUID = '{7364696D-0000-0010-8000-00aa00389b71}';
  21486.  {$EXTERNALSYM KSDATAFORMAT_TYPE_MIDI}
  21487.  KSDATAFORMAT_SUBTYPE_MIDI     : TGUID = '{1D262760-E957-11CF-A5D6-28DB04C10000}';
  21488.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MIDI}
  21489.  KSDATAFORMAT_SUBTYPE_MIDI_BUS : TGUID = '{2CA15FA0-6CFE-11CF-A5D6-28DB04C10000}';
  21490.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MIDI_BUS}
  21491.  KSDATAFORMAT_SUBTYPE_RIFFMIDI : TGUID = '{4995DAF0-9EE6-11D0-A40E-00A0C9223196}';
  21492.  {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RIFFMIDI}
  21493.  
  21494. //
  21495. //  KSDATAFORMAT_SUBTYPE_DIRECTMUSIC
  21496. //    see DMusicKS.h
  21497. //
  21498.  
  21499. // WARNING! This structure MUST be dword aligned
  21500. // regardless of the number of data bytes.
  21501. type
  21502.   KSMUSICFORMAT = record
  21503.     TimeDeltaMs : ULONG   ;     // Delta Milliseconds from the previous midiformat
  21504.                                 // in the packet. The first midiformat in the packet
  21505.                                 // is a delta from the PTS in the KSSTREAM_HEADER.
  21506.     ByteCount   : ULONG   ;     // Number of bytes of data that follow this struct.
  21507.   end;
  21508.   {$EXTERNALSYM KSMUSICFORMAT}
  21509.   PKSMUSICFORMAT = ^KSMUSICFORMAT;
  21510.   {$EXTERNALSYM PKSMUSICFORMAT}
  21511.   TKSMusicFormat = KSMUSICFORMAT;
  21512.  
  21513. //
  21514. // This entire set of MPEG Standard/Dialect Guids are obsolete. Do not use them.
  21515. //
  21516. //====================================================================================================
  21517. //====================================================================================================
  21518. // The following official MPEG Formats, Subtypes and Specifiers are listed as required or optional
  21519. // These official MPEG GUIDs are the preferred method of supporting MPEG/AC-3 media types in new code.
  21520. // Older MPEG GUIDs should also be supported for compatibilty, but these new modes are still required.
  21521. //====================================================================================================
  21522. //====================================================================================================
  21523.  
  21524. {
  21525. This is a summary of what media types/specifiers will be required for all DVD+DSS+DVB+DTV MPEG decoders.
  21526. These media types are what the decoder driver must accept, hardware support for all of these media types
  21527. may or may not actually be provided by the decoder natively.  These media types are intended to define
  21528. the "officially" supported MPEG/AC-3 media types that all WHQL certified decoders must implement.  This
  21529. specifically includes driver and/or hardware support for all the required standards and dialects.
  21530.  
  21531. All MPEG video decoders must support all of the MPEG video modes shown as [required] below.
  21532. All MPEG audio decoders must support all of the MPEG audio modes shown as [required] below.
  21533. All AC-3 audio decoders must support all of the AC-3 audio modes shown as [required] below.
  21534. The line items shown as [optional] need not be implemented, but are possible formats that might be implemented.
  21535.  
  21536. Note that the input/output pin formats are defined by 2 or 3 GUIDs: TYPE, SUBTYPE, and maybe SPECIFIER.
  21537. The specifiers are included if the data format is a "dialect" that needs to be differentiated during decoding.
  21538. The decoder MUST be prepared to deal with ALL requests for _required_ "Standard" formats OR _required_ "Dialects".
  21539.  
  21540. STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM         [required]
  21541.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO            [required]
  21542.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO           [optional]
  21543.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO            [required]
  21544.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO           [optional]
  21545.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO            [required]
  21546.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO           [required]
  21547.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO            [required]
  21548.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO           [optional]
  21549.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO              [required]
  21550.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO             [optional]
  21551. STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET                [required]
  21552.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO            [optional]
  21553.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO           [optional]
  21554.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO            [optional]
  21555.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO           [optional]
  21556.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO            [required]
  21557.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO           [required]
  21558.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO            [required]
  21559.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO           [required]
  21560.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO              [required]
  21561.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO             [optional]
  21562. STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER               [required]
  21563.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO            [required]
  21564.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO           [required]
  21565.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO            [required]
  21566.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO           [optional]
  21567.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO              [required]
  21568.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO             [optional]
  21569.  
  21570. Note that the SPECIFIER GUIDs normally identify particular versions of MPEG such as DSS and DVD.
  21571. This approach was taken to minimize the number of DSS/DVB/DVD/DTV etc. media SUBTYPES.
  21572. These specifiers are currently required to disambiguate MPEG syntax _parsing_ by the decoder
  21573. using alternate parsing routines or downloadable firmware or hardware decode settings.
  21574.  
  21575. In the future these specifiers will be extended to cover new KS MPEG flavors such as DVB and DTV.
  21576. Thus, the optional specifiers will be subject to clarification and/or definition as they are needed.
  21577.  
  21578. Important note: Per the ITU MPEG specs, MPEG 2 media may contain pure MPEG 1 syntax and
  21579. any "MPEG 2" PES packets may actually contain MPEG 1 payloads and MPEG 1 syntax.  Some MPEG
  21580. broadcasts can revert from MPEG2 to MPEG1 format data at their discretion, without warning.
  21581.  
  21582. CAUTION: Decoders MUST attempt to process MPEG data AS SOON AS POSSIBLE after reception.
  21583. In particular, elementary MPEG or MPEG PES packet streams should not be aggregated into DVD
  21584. "pack headers" internally before submission to the codec hardware if AT ALL POSSIBLE.  The
  21585. reason is that mpeg data may need to be processed immediately but there may be no additional
  21586. MPEG data forthcoming to fill up the PES packet OR DVD "pack" in a timely fashion.  This is
  21587. particularly true of MPEG dialects that utilize "repeat field signally" to reuse the last
  21588. decoded MPEG video field.
  21589.  
  21590. }
  21591.  
  21592. /////////////////////////////////////////////////////////////////////////
  21593. // The major data type GUIDs that define the data packet encapsulation //
  21594. /////////////////////////////////////////////////////////////////////////
  21595. const
  21596. // STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM
  21597.   KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM : TGUID = '{36523B11-8EE5-11d1-8CA3-0060B057664A}';
  21598.   {$EXTERNALSYM KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM}
  21599.  
  21600. // STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET
  21601.   KSDATAFORMAT_TYPE_STANDARD_PES_PACKET        : TGUID = '{36523B12-8EE5-11d1-8CA3-0060B057664A}';
  21602.   {$EXTERNALSYM KSDATAFORMAT_TYPE_STANDARD_PES_PACKET}
  21603.  
  21604. // STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER
  21605.   KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER       : TGUID = '{36523B13-8EE5-11d1-8CA3-0060B057664A}';
  21606.   {$EXTERNALSYM KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER}
  21607.  
  21608. ///////////////////////////////////////////////////////////////////////////////
  21609. // The minor data subtype GUIDs that define the exact class of the data type.//
  21610. ///////////////////////////////////////////////////////////////////////////////
  21611.  
  21612. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO
  21613.   KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO    : TGUID = '{36523B21-8EE5-11d1-8CA3-0060B057664A}';
  21614.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO}
  21615.  
  21616. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO
  21617.   KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO    : TGUID = '{36523B22-8EE5-11d1-8CA3-0060B057664A}';
  21618.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO}
  21619.  
  21620. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO
  21621.   KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO    : TGUID = '{36523B23-8EE5-11d1-8CA3-0060B057664A}';
  21622.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO}
  21623.  
  21624. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO
  21625.   KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO    : TGUID = '{36523B24-8EE5-11d1-8CA3-0060B057664A}';
  21626.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO}
  21627.  
  21628. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO
  21629.   KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO      : TGUID = '{36523B25-8EE5-11d1-8CA3-0060B057664A}';
  21630.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO}
  21631.  
  21632. ///////////////////////////////////////////////////////////////////////////////
  21633. // The low-level specifier GUIDs that define the flavor of the data subtype. //
  21634. // Some SUBTYPES, notably MPEG2_VIDEO, MPEG2_AUDIO have different dialects.  //
  21635. // These specifiers are intended to be accompanied by a specifier structure. //
  21636. ///////////////////////////////////////////////////////////////////////////////
  21637.  
  21638. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO
  21639.   KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO    : TGUID = '{36523B31-8EE5-11d1-8CA3-0060B057664A}';
  21640.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO}
  21641.  
  21642. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO
  21643.   KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO    : TGUID = '{36523B32-8EE5-11d1-8CA3-0060B057664A}';
  21644.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO}
  21645.  
  21646. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO    Associated with KS_MPEGVIDEOINFO2 defined later
  21647.   KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO    : TGUID = '{36523B33-8EE5-11d1-8CA3-0060B057664A}';
  21648.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO}
  21649.  
  21650. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO    Associated with KS_MPEGAUDIOINFO defined later
  21651.   KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO    : TGUID = '{36523B34-8EE5-11d1-8CA3-0060B057664A}';
  21652.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO}
  21653.  
  21654. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO
  21655.   KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO      : TGUID = '{36523B35-8EE5-11d1-8CA3-0060B057664A}';
  21656.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO}
  21657.  
  21658. //====================================================================================================
  21659. //====================================================================================================
  21660. //                              *** COMPATIBILITY WARNING ***
  21661. // The *following* older DSS, MPEG, DVD & AC-3 GUID definitions are retained for backward compability.
  21662. // These MPEG GUIDs should also be supported for compatibilty, but the above newer modes are still required.
  21663. //====================================================================================================
  21664. //====================================================================================================
  21665.  
  21666. //
  21667. // DSS definitions
  21668. //
  21669.  
  21670.   KSDATAFORMAT_SUBTYPE_DSS_VIDEO : TGUID = '{a0af4f81-e163-11d0-bad9-00609744111a}';
  21671.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DSS_VIDEO}
  21672.   KSDATAFORMAT_SUBTYPE_DSS_AUDIO : TGUID = '{a0af4f82-e163-11d0-bad9-00609744111a}';
  21673.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DSS_AUDIO}
  21674.  
  21675. //
  21676. // End of obsolete MPEG definitions.
  21677. //
  21678.  
  21679. //
  21680. // mpeg 1 definitions
  21681. //
  21682.   KSDATAFORMAT_SUBTYPE_MPEG1Packet   : TGUID = '{e436eb80-524f-11ce-9F53-0020af0ba770}';
  21683.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG1Packet}
  21684.   KSDATAFORMAT_SUBTYPE_MPEG1Payload  : TGUID = '{e436eb81-524f-11ce-9F53-0020af0ba770}';
  21685.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG1Payload}
  21686.  
  21687. // MEDIASUBTYPE_MPEG1Video
  21688.   KSDATAFORMAT_SUBTYPE_MPEG1Video    : TGUID = '{e436eb86-524f-11ce-9f53-0020af0ba770}';
  21689.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG1Video}
  21690.  
  21691. //FORMAT_MPEGVideo
  21692.   KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO : TGUID = '{05589f82-c356-11ce-bf01-00aa0055595a}';
  21693.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO}
  21694.  
  21695. //
  21696. // mpeg 2 definitions
  21697. //
  21698.   KSDATAFORMAT_TYPE_MPEG2_PES        : TGUID = '{e06d8020-db46-11cf-b4d1-00805f6cbbea}';
  21699.   {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_PES}
  21700.   KSDATAFORMAT_TYPE_MPEG2_PROGRAM    : TGUID = '{e06d8022-db46-11cf-b4d1-00805f6cbbea}';
  21701.   {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_PROGRAM}
  21702.   KSDATAFORMAT_TYPE_MPEG2_TRANSPORT  : TGUID = '{e06d8023-db46-11cf-b4d1-00805f6cbbea}';
  21703.   {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_TRANSPORT}
  21704.   KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO   : TGUID = '{e06d8026-db46-11cf-b4d1-00805f6cbbea}';
  21705.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO}
  21706.  
  21707. // use MPEGVIDEOINFO2 (defined below) with KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
  21708.   KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO : TGUID = '{e06d80e3-db46-11cf-b4d1-00805f6cbbea}';
  21709.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO}
  21710.  
  21711. //
  21712. // Mpeg2 video properties
  21713. //
  21714.   KSPROPSETID_Mpeg2Vid : TGUID = '{C8E11B60-0CC9-11D0-BD69-003505C103A9}';
  21715.   {$EXTERNALSYM KSPROPSETID_Mpeg2Vid}
  21716.  
  21717. type
  21718.   KSPROPERTY_MPEG2VID = (
  21719.     KSPROPERTY_MPEG2VID_MODES,          // available output modes of decoder
  21720.     KSPROPERTY_MPEG2VID_CUR_MODE,       // current mode of the decoder
  21721.     KSPROPERTY_MPEG2VID_4_3_RECT,       // output coordinates for 4:3 source
  21722.     KSPROPERTY_MPEG2VID_16_9_RECT,      // output coordinates for 16:9 source
  21723.     KSPROPERTY_MPEG2VID_16_9_PANSCAN    // pan and scan vectors
  21724.   );
  21725.   {$EXTERNALSYM KSPROPERTY_MPEG2VID}
  21726.   TKSPropertyMPEG2Vid = KSPROPERTY_MPEG2VID;
  21727.  
  21728. //
  21729. // bit field definitions for MPEG2 VIDEO mode
  21730. //
  21731. const
  21732.   KSMPEGVIDMODE_PANSCAN = $0001;
  21733.   {$EXTERNALSYM KSMPEGVIDMODE_PANSCAN}
  21734.   KSMPEGVIDMODE_LTRBOX  = $0002;
  21735.   {$EXTERNALSYM KSMPEGVIDMODE_LTRBOX}
  21736.   KSMPEGVIDMODE_SCALE   = $0004;
  21737.   {$EXTERNALSYM KSMPEGVIDMODE_SCALE}
  21738.  
  21739. //
  21740. // rectangle definitions for the 4/3 and 16/9 cropping properties of
  21741. // the MPEG2Video decoder
  21742. //
  21743. type
  21744.   PKSMPEGVidRect = ^TKSMPEGVidRect;
  21745.   _KSMPEGVID_RECT = record
  21746.     StartX : ULONG;
  21747.     StartY : ULONG;
  21748.     EndX   : ULONG;
  21749.     EndY   : ULONG;
  21750.   end;
  21751.   {$EXTERNALSYM _KSMPEGVID_RECT}
  21752.   KSMPEGVID_RECT = _KSMPEGVID_RECT;
  21753.   {$EXTERNALSYM KSMPEGVID_RECT}
  21754.   PKSMPEGVID_RECT = ^KSMPEGVID_RECT;
  21755.   {$EXTERNALSYM PKSMPEGVID_RECT}
  21756.   TKSMPEGVidRect = _KSMPEGVID_RECT;
  21757.  
  21758. //
  21759. // Params for pan / scan
  21760. //
  21761.  
  21762.  
  21763. //
  21764. // MPEG2 Audio definition
  21765. //
  21766. const
  21767.   KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO   : TGUID = '{e06d802b-db46-11cf-b4d1-00805f6cbbea}';
  21768.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO}
  21769.   KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO : TGUID = '{e06d80e5-db46-11cf-b4d1-00805f6cbbea}';
  21770.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO}
  21771.  
  21772. //
  21773. // DVD LPCM Audio definition
  21774. //
  21775.  
  21776.   KSDATAFORMAT_SUBTYPE_LPCM_AUDIO    : TGUID = '{e06d8032-db46-11cf-b4d1-00805f6cbbea}';
  21777.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_LPCM_AUDIO}
  21778.   KSDATAFORMAT_SPECIFIER_LPCM_AUDIO  : TGUID = '{e06d80e6-db46-11cf-b4d1-00805f6cbbea}';
  21779.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_LPCM_AUDIO}
  21780.  
  21781. //
  21782. // AC-3 definition
  21783. //
  21784.  
  21785.   KSDATAFORMAT_SUBTYPE_AC3_AUDIO     : TGUID = '{e06d802c-db46-11cf-b4d1-00805f6cbbea}';
  21786.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_AC3_AUDIO}
  21787.   KSDATAFORMAT_SPECIFIER_AC3_AUDIO   : TGUID = '{e06d80e4-db46-11cf-b4d1-00805f6cbbea}';
  21788.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_AC3_AUDIO}
  21789.   KSPROPSETID_AC3                    : TGUID = '{BFABE720-6E1F-11D0-BCF2-444553540000}';
  21790.   {$EXTERNALSYM KSPROPSETID_AC3}
  21791.  
  21792. type
  21793.   KSPROPERTY_AC3 = (
  21794.     KSPROPERTY_AC3_Invalid,
  21795.     KSPROPERTY_AC3_ERROR_CONCEALMENT,
  21796.     KSPROPERTY_AC3_ALTERNATE_AUDIO,
  21797.     KSPROPERTY_AC3_DOWNMIX,
  21798.     KSPROPERTY_AC3_BIT_STREAM_MODE,
  21799.     KSPROPERTY_AC3_DIALOGUE_LEVEL,
  21800.     KSPROPERTY_AC3_LANGUAGE_CODE,
  21801.     KSPROPERTY_AC3_ROOM_TYPE
  21802.   );
  21803.   {$EXTERNALSYM KSPROPERTY_AC3}
  21804.   TKSPropertyAC3 = KSPROPERTY_AC3;
  21805.  
  21806.  
  21807.   PKSAC3ErrorConcealment = ^TKSAC3ErrorConcealment;
  21808.   KSAC3_ERROR_CONCEALMENT = record
  21809.     fRepeatPreviousBlock : BOOL;
  21810.     fErrorInCurrentBlock : BOOL;
  21811.   end;
  21812.   {$EXTERNALSYM KSAC3_ERROR_CONCEALMENT}
  21813.   PKSAC3_ERROR_CONCEALMENT = ^KSAC3_ERROR_CONCEALMENT;
  21814.   {$EXTERNALSYM PKSAC3_ERROR_CONCEALMENT}
  21815.   TKSAC3ErrorConcealment = KSAC3_ERROR_CONCEALMENT;
  21816.  
  21817.   PKSAC3AlternateAudio = ^TKSAC3AlternateAudio;
  21818.   KSAC3_ALTERNATE_AUDIO = record
  21819.     fStereo  : BOOL;
  21820.     DualMode : ULONG;
  21821.   end;
  21822.   {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO}
  21823.   PKSAC3_ALTERNATE_AUDIO = ^KSAC3_ALTERNATE_AUDIO;
  21824.   {$EXTERNALSYM PKSAC3_ALTERNATE_AUDIO}
  21825.   TKSAC3AlternateAudio = KSAC3_ALTERNATE_AUDIO;
  21826.  
  21827. const
  21828.   KSAC3_ALTERNATE_AUDIO_1    = 1;
  21829.   {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO_1}
  21830.   KSAC3_ALTERNATE_AUDIO_2    = 2;
  21831.   {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO_2}
  21832.   KSAC3_ALTERNATE_AUDIO_BOTH = 3;
  21833.   {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO_BOTH}
  21834.  
  21835. type
  21836.   PKSAC3DownMix = ^TKSAC3DownMix;
  21837.   KSAC3_DOWNMIX = record
  21838.     fDownMix       : BOOL;
  21839.     fDolbySurround : BOOL;
  21840.   end;
  21841.   {$EXTERNALSYM KSAC3_DOWNMIX}
  21842.   PKSAC3_DOWNMIX = ^KSAC3_DOWNMIX;
  21843.   {$EXTERNALSYM PKSAC3_DOWNMIX}
  21844.   TKSAC3DownMix = KSAC3_DOWNMIX;
  21845.  
  21846.   PKSAC3BitStreamMode = ^TKSAC3BitStreamMode;
  21847.   KSAC3_BIT_STREAM_MODE = record
  21848.     BitStreamMode : Longint;
  21849.   end;
  21850.   {$EXTERNALSYM KSAC3_BIT_STREAM_MODE}
  21851.   PKSAC3_BIT_STREAM_MODE = ^KSAC3_BIT_STREAM_MODE;
  21852.   {$EXTERNALSYM PKSAC3_BIT_STREAM_MODE}
  21853.   TKSAC3BitStreamMode = KSAC3_BIT_STREAM_MODE;
  21854.  
  21855. const
  21856.   KSAC3_SERVICE_MAIN_AUDIO        = 0;
  21857.   {$EXTERNALSYM KSAC3_SERVICE_MAIN_AUDIO}
  21858.   KSAC3_SERVICE_NO_DIALOG         = 1;
  21859.   {$EXTERNALSYM KSAC3_SERVICE_NO_DIALOG}
  21860.   KSAC3_SERVICE_VISUALLY_IMPAIRED = 2;
  21861.   {$EXTERNALSYM KSAC3_SERVICE_VISUALLY_IMPAIRED}
  21862.   KSAC3_SERVICE_HEARING_IMPAIRED  = 3;
  21863.   {$EXTERNALSYM KSAC3_SERVICE_HEARING_IMPAIRED}
  21864.   KSAC3_SERVICE_DIALOG_ONLY       = 4;
  21865.   {$EXTERNALSYM KSAC3_SERVICE_DIALOG_ONLY}
  21866.   KSAC3_SERVICE_COMMENTARY        = 5;
  21867.   {$EXTERNALSYM KSAC3_SERVICE_COMMENTARY}
  21868.   KSAC3_SERVICE_EMERGENCY_FLASH   = 6;
  21869.   {$EXTERNALSYM KSAC3_SERVICE_EMERGENCY_FLASH}
  21870.   KSAC3_SERVICE_VOICE_OVER        = 7;
  21871.   {$EXTERNALSYM KSAC3_SERVICE_VOICE_OVER}
  21872.  
  21873. type
  21874.   PKSAC3DialogueLevel = ^TKSAC3DialogueLevel;
  21875.   KSAC3_DIALOGUE_LEVEL = record
  21876.     DialogueLevel : ULONG;
  21877.   end;
  21878.   {$EXTERNALSYM KSAC3_DIALOGUE_LEVEL}
  21879.   PKSAC3_DIALOGUE_LEVEL = ^KSAC3_DIALOGUE_LEVEL;
  21880.   {$EXTERNALSYM PKSAC3_DIALOGUE_LEVEL}
  21881.   TKSAC3DialogueLevel = KSAC3_DIALOGUE_LEVEL;
  21882.  
  21883.   PKSAC3RoomType = ^TKSAC3RoomType;
  21884.   KSAC3_ROOM_TYPE = record
  21885.     fLargeRoom : BOOL;
  21886.   end;
  21887.   {$EXTERNALSYM KSAC3_ROOM_TYPE}
  21888.   PKSAC3_ROOM_TYPE = ^KSAC3_ROOM_TYPE;
  21889.   {$EXTERNALSYM PKSAC3_ROOM_TYPE}
  21890.   TKSAC3RoomType = KSAC3_ROOM_TYPE;
  21891.  
  21892. //
  21893. // DTS and SDDS definitions (media subtype GUIDs)
  21894. //
  21895. const
  21896.   KSDATAFORMAT_SUBTYPE_DTS_AUDIO  : TGUID = '{e06d8033-db46-11cf-b4d1-00805f6cbbea}';
  21897.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DTS_AUDIO}
  21898.   KSDATAFORMAT_SUBTYPE_SDDS_AUDIO : TGUID = '{e06d8034-db46-11cf-b4d1-00805f6cbbea}';
  21899.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_SDDS_AUDIO}
  21900.  
  21901. //
  21902. // audio decoder output properties
  21903. //
  21904.  
  21905.   KSPROPSETID_AudioDecoderOut     : TGUID = '{6ca6e020-43bd-11d0-bd6a-003505c103a9}';
  21906.   {$EXTERNALSYM KSPROPSETID_AudioDecoderOut}
  21907.  
  21908. type
  21909.   KSPROPERTY_AUDDECOUT = (
  21910.     KSPROPERTY_AUDDECOUT_MODES,        // available output modes of decoder
  21911.     KSPROPERTY_AUDDECOUT_CUR_MODE      // current mode of the decoder
  21912.   );
  21913.   {$EXTERNALSYM KSPROPERTY_AUDDECOUT}
  21914.   TKSPropertyAuddecout = KSPROPERTY_AUDDECOUT;
  21915.  
  21916. const
  21917.   KSAUDDECOUTMODE_STEREO_ANALOG = $0001;
  21918.   {$EXTERNALSYM KSAUDDECOUTMODE_STEREO_ANALOG}
  21919.   KSAUDDECOUTMODE_PCM_51        = $0002;
  21920.   {$EXTERNALSYM KSAUDDECOUTMODE_PCM_51}
  21921.   KSAUDDECOUTMODE_SPDIFF        = $0004;
  21922.   {$EXTERNALSYM KSAUDDECOUTMODE_SPDIFF}
  21923.  
  21924. //
  21925. // subpicture definition
  21926. //
  21927.  
  21928.   KSDATAFORMAT_SUBTYPE_SUBPICTURE : TGUID = '{e06d802d-db46-11cf-b4d1-00805f6cbbea}';
  21929.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_SUBPICTURE}
  21930.   KSPROPSETID_DvdSubPic           : TGUID = '{ac390460-43af-11d0-bd6a-003505c103a9}';
  21931.   {$EXTERNALSYM KSPROPSETID_DvdSubPic}
  21932.  
  21933. type
  21934.   KSPROPERTY_DVDSUBPIC = (
  21935.     KSPROPERTY_DVDSUBPIC_PALETTE,
  21936.     KSPROPERTY_DVDSUBPIC_HLI,
  21937.     KSPROPERTY_DVDSUBPIC_COMPOSIT_ON  // TRUE for subpicture is displayed
  21938.   );
  21939.   {$EXTERNALSYM KSPROPERTY_DVDSUBPIC}
  21940.   TKSPropertyDVDSubPic = KSPROPERTY_DVDSUBPIC;
  21941.  
  21942.   PKSDVDYCrCb = ^TKSDVDYCrCb;
  21943.   _KS_DVD_YCrCb = record
  21944.     Reserved : byte;
  21945.     Y        : byte;
  21946.     Cr       : byte;
  21947.     Cb       : byte;
  21948.   end;
  21949.   {$EXTERNALSYM _KS_DVD_YCrCb}
  21950.   KS_DVD_YCrCb = _KS_DVD_YCrCb;
  21951.   {$EXTERNALSYM KS_DVD_YCrCb}
  21952.   PKS_DVD_YCrCb = ^KS_DVD_YCrCb;
  21953.   {$EXTERNALSYM PKS_DVD_YCrCb}
  21954.   TKSDVDYCrCb = _KS_DVD_YCrCb;
  21955.  
  21956. // The KS_DVD_YUV structure is now superseded by KS_DVD_YCrCb above and is
  21957. //   here for backward compatibility only
  21958.  
  21959.   PKSDVDYUV = ^TKSDVDYUV;
  21960.   _KS_DVD_YUV = record
  21961.     Reserved : byte;
  21962.     Y        : byte;
  21963.     V        : byte;
  21964.     U        : byte;
  21965.   end;
  21966.   {$EXTERNALSYM _KS_DVD_YUV}
  21967.   KS_DVD_YUV = _KS_DVD_YUV;
  21968.   {$EXTERNALSYM KS_DVD_YUV}
  21969.   PKS_DVD_YUV = ^KS_DVD_YUV;
  21970.   {$EXTERNALSYM PKS_DVD_YUV}
  21971.   TKSDVDYUV = _KS_DVD_YUV;
  21972.  
  21973.   PKSPropertySPPAL = ^TKSPropertySPPAL;
  21974.   _KSPROPERTY_SPPAL = record
  21975.     sppal : array[0..15] of TKSDVDYUV;
  21976.   end;
  21977.   {$EXTERNALSYM _KSPROPERTY_SPPAL}
  21978.   KSPROPERTY_SPPAL = _KSPROPERTY_SPPAL;
  21979.   {$EXTERNALSYM KSPROPERTY_SPPAL}
  21980.   PKSPROPERTY_SPPAL = ^KSPROPERTY_SPPAL;
  21981.   {$EXTERNALSYM PKSPROPERTY_SPPAL}
  21982.   TKSPropertySPPAL = _KSPROPERTY_SPPAL;
  21983.  
  21984.   PKSColCon = ^TKSColCon;
  21985.   _KS_COLCON = record
  21986.     emph1col : byte; //:4;
  21987.     emph2col : byte; //:4;
  21988.     backcol  : byte; //:4;
  21989.     patcol   : byte; //:4;
  21990.     emph1con : byte; //:4;
  21991.     emph2con : byte; //:4;
  21992.     backcon  : byte; //:4;
  21993.     patcon   : byte; //:4;
  21994.   end;
  21995.   {$EXTERNALSYM _KS_COLCON}
  21996.   KS_COLCON = _KS_COLCON;
  21997.   {$EXTERNALSYM KS_COLCON}
  21998.   PKS_COLCON = ^KS_COLCON;
  21999.   {$EXTERNALSYM PKS_COLCON}
  22000.   TKSColCon = _KS_COLCON;
  22001.  
  22002.   PKSPropertySPHLI = ^TKSPropertySPHLI;
  22003.   _KSPROPERTY_SPHLI = record
  22004.     HLISS    : WORD;
  22005.     Reserved : WORD;
  22006.     StartPTM : ULONG;      // start presentation time in x/90000
  22007.     EndPTM   : ULONG;      // end PTM in x/90000
  22008.     StartX   : WORD;
  22009.     StartY   : WORD;
  22010.     StopX    : WORD;
  22011.     StopY    : WORD;
  22012.     ColCon   : TKSColCon; // color contrast description (4 bytes as given in HLI)
  22013.   end;
  22014.   {$EXTERNALSYM _KSPROPERTY_SPHLI}
  22015.   KSPROPERTY_SPHLI = _KSPROPERTY_SPHLI;
  22016.   {$EXTERNALSYM KSPROPERTY_SPHLI}
  22017.   PKSPROPERTY_SPHLI = ^KSPROPERTY_SPHLI;
  22018.   {$EXTERNALSYM PKSPROPERTY_SPHLI}
  22019.   TKSPropertySPHLI = _KSPROPERTY_SPHLI;
  22020.  
  22021.   PKSPROPERTY_COMPOSIT_ON = ^KSPROPERTY_COMPOSIT_ON;
  22022.   {$EXTERNALSYM PKSPROPERTY_COMPOSIT_ON}
  22023.   KSPROPERTY_COMPOSIT_ON = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BOOL;
  22024.   {$EXTERNALSYM KSPROPERTY_COMPOSIT_ON}
  22025.  
  22026. const
  22027.   KSPROPSETID_CopyProt : TGUID = '{0E8A0A40-6AEF-11D0-9ED0-00A024CA19B3}';
  22028.   {$EXTERNALSYM KSPROPSETID_CopyProt}
  22029.  
  22030. type
  22031.   KSPROPERTY_COPYPROT = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22032.   {$EXTERNALSYM KSPROPERTY_COPYPROT}
  22033.   const
  22034.     KSPROPERTY_DVDCOPY_CHLG_KEY       = $01;
  22035.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_CHLG_KEY}
  22036.     KSPROPERTY_DVDCOPY_DVD_KEY1       = $02;
  22037.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_DVD_KEY1}
  22038.     KSPROPERTY_DVDCOPY_DEC_KEY2       = $03;
  22039.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_DEC_KEY2}
  22040.     KSPROPERTY_DVDCOPY_TITLE_KEY      = $04;
  22041.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_TITLE_KEY}
  22042.     KSPROPERTY_COPY_MACROVISION       = $05;
  22043.     {$EXTERNALSYM KSPROPERTY_COPY_MACROVISION}
  22044.     KSPROPERTY_DVDCOPY_REGION         = $06;
  22045.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_REGION}
  22046.     KSPROPERTY_DVDCOPY_SET_COPY_STATE = $07;
  22047.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_SET_COPY_STATE}
  22048.     KSPROPERTY_DVDCOPY_DISC_KEY       = $80;
  22049.     {$EXTERNALSYM KSPROPERTY_DVDCOPY_DISC_KEY}
  22050.  
  22051. type
  22052.   PKSDVDCopyCHLGKey = ^TKSDVDCopyCHLGKey;
  22053.   _KS_DVDCOPY_CHLGKEY = record
  22054.    ChlgKey   : array[0..9] of BYTE;
  22055.    Reserved  : array[0..1] of BYTE;
  22056.   end;
  22057.   {$EXTERNALSYM _KS_DVDCOPY_CHLGKEY}
  22058.   KS_DVDCOPY_CHLGKEY = _KS_DVDCOPY_CHLGKEY;
  22059.   {$EXTERNALSYM KS_DVDCOPY_CHLGKEY}
  22060.   PKS_DVDCOPY_CHLGKEY = ^KS_DVDCOPY_CHLGKEY;
  22061.   {$EXTERNALSYM PKS_DVDCOPY_CHLGKEY}
  22062.   TKSDVDCopyCHLGKey = _KS_DVDCOPY_CHLGKEY;
  22063.  
  22064.   PKSDVDCopyBusKey = ^TKSDVDCopyBusKey;
  22065.   _KS_DVDCOPY_BUSKEY = record
  22066.     BusKey   : array[0..4] of BYTE;
  22067.     Reserved : array[0..0] of BYTE;
  22068.   end;
  22069.   {$EXTERNALSYM _KS_DVDCOPY_BUSKEY}
  22070.   KS_DVDCOPY_BUSKEY = _KS_DVDCOPY_BUSKEY;
  22071.   {$EXTERNALSYM KS_DVDCOPY_BUSKEY}
  22072.   PKS_DVDCOPY_BUSKEY = ^KS_DVDCOPY_BUSKEY;
  22073.   {$EXTERNALSYM PKS_DVDCOPY_BUSKEY}
  22074.   TKSDVDCopyBusKey = _KS_DVDCOPY_BUSKEY;
  22075.  
  22076.   PKSDVDCopyDiscKey = ^TKSDVDCopyDiscKey;
  22077.   _KS_DVDCOPY_DISCKEY = record
  22078.     DiscKey : array[0..2047] of BYTE;
  22079.   end;
  22080.   {$EXTERNALSYM _KS_DVDCOPY_DISCKEY}
  22081.   KS_DVDCOPY_DISCKEY = _KS_DVDCOPY_DISCKEY;
  22082.   {$EXTERNALSYM KS_DVDCOPY_DISCKEY}
  22083.   PKS_DVDCOPY_DISCKEY = ^KS_DVDCOPY_DISCKEY;
  22084.   {$EXTERNALSYM PKS_DVDCOPY_DISCKEY}
  22085.   TKSDVDCopyDiscKey = _KS_DVDCOPY_DISCKEY;
  22086.  
  22087.   PKSDVDCopyRegion = ^TKSDVDCopyRegion;
  22088.   _KS_DVDCOPY_REGION = record
  22089.     Reserved   : UCHAR;
  22090.     RegionData : UCHAR;
  22091.     Reserved2  : array[0..1] of UCHAR;
  22092.   end;
  22093.   {$EXTERNALSYM _KS_DVDCOPY_REGION}
  22094.   KS_DVDCOPY_REGION = _KS_DVDCOPY_REGION;
  22095.   {$EXTERNALSYM KS_DVDCOPY_REGION}
  22096.   PKS_DVDCOPY_REGION = ^KS_DVDCOPY_REGION;
  22097.   {$EXTERNALSYM PKS_DVDCOPY_REGION}
  22098.   TKSDVDCopyRegion = _KS_DVDCOPY_REGION;
  22099.  
  22100.   PKSDVDCopyTitleKey = ^TKSDVDCopyTitleKey;
  22101.   _KS_DVDCOPY_TITLEKEY = record
  22102.     KeyFlags   : ULONG;
  22103.     ReservedNT : array[0..1] of ULONG;
  22104.     TitleKey   : array[0..5] of UCHAR;
  22105.     Reserved   : array[0..1] of UCHAR;
  22106.   end;
  22107.   {$EXTERNALSYM _KS_DVDCOPY_TITLEKEY}
  22108.   KS_DVDCOPY_TITLEKEY = _KS_DVDCOPY_TITLEKEY;
  22109.   {$EXTERNALSYM KS_DVDCOPY_TITLEKEY}
  22110.   PKS_DVDCOPY_TITLEKEY = ^KS_DVDCOPY_TITLEKEY;
  22111.   {$EXTERNALSYM PKS_DVDCOPY_TITLEKEY}
  22112.   TKSDVDCopyTitleKey = _KS_DVDCOPY_TITLEKEY;
  22113.  
  22114.   PKSCopyMacrovision = ^TKSCopyMacrovision;
  22115.   _KS_COPY_MACROVISION = record
  22116.     MACROVISIONLevel : ULONG;
  22117.   end;
  22118.   {$EXTERNALSYM _KS_COPY_MACROVISION}
  22119.   KS_COPY_MACROVISION = _KS_COPY_MACROVISION;
  22120.   {$EXTERNALSYM KS_COPY_MACROVISION}
  22121.   PKS_COPY_MACROVISION = ^KS_COPY_MACROVISION;
  22122.   {$EXTERNALSYM PKS_COPY_MACROVISION}
  22123.   TKSCopyMacrovision = _KS_COPY_MACROVISION;
  22124.  
  22125.   PKSDVDCopySetCopyState = ^TKSDVDCopySetCopyState;
  22126.   _KS_DVDCOPY_SET_COPY_STATE = record
  22127.     DVDCopyState : ULONG;
  22128.   end;
  22129.   {$EXTERNALSYM _KS_DVDCOPY_SET_COPY_STATE}
  22130.   KS_DVDCOPY_SET_COPY_STATE = _KS_DVDCOPY_SET_COPY_STATE;
  22131.   {$EXTERNALSYM KS_DVDCOPY_SET_COPY_STATE}
  22132.   PKS_DVDCOPY_SET_COPY_STATE = ^KS_DVDCOPY_SET_COPY_STATE;
  22133.   {$EXTERNALSYM PKS_DVDCOPY_SET_COPY_STATE}
  22134.   TKSDVDCopySetCopyState = _KS_DVDCOPY_SET_COPY_STATE;
  22135.  
  22136.   KS_DVDCOPYSTATE = (
  22137.     KS_DVDCOPYSTATE_INITIALIZE,         // indicates we are starting a full
  22138.                                         // copy protection sequence.
  22139.     KS_DVDCOPYSTATE_INITIALIZE_TITLE,   // indicates we are starting a title
  22140.                                         // key copy protection sequence
  22141.     KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED,
  22142.     KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED,
  22143.     KS_DVDCOPYSTATE_DONE
  22144.   );
  22145.   {$EXTERNALSYM KS_DVDCOPYSTATE}
  22146.   TKSDVDCopyState = KS_DVDCOPYSTATE;
  22147.  
  22148.   PKSCopyMacrovisionLevel = ^TKSCopyMacrovisionLevel;
  22149.   KS_COPY_MACROVISION_LEVEL = (
  22150.     KS_MACROVISION_DISABLED,
  22151.     KS_MACROVISION_LEVEL1,
  22152.     KS_MACROVISION_LEVEL2,
  22153.     KS_MACROVISION_LEVEL3
  22154.   );
  22155.   {$EXTERNALSYM KS_COPY_MACROVISION_LEVEL}
  22156.   PKS_COPY_MACROVISION_LEVEL = ^KS_COPY_MACROVISION_LEVEL;
  22157.   {$EXTERNALSYM PKS_COPY_MACROVISION_LEVEL}
  22158.   TKSCopyMacrovisionLevel = KS_COPY_MACROVISION_LEVEL;
  22159.  
  22160.  
  22161. //
  22162. // CGMS Copy Protection Flags
  22163. //
  22164. const
  22165.   KS_DVD_CGMS_RESERVED_MASK     = $00000078;
  22166.   {$EXTERNALSYM KS_DVD_CGMS_RESERVED_MASK}
  22167.  
  22168.   KS_DVD_CGMS_COPY_PROTECT_MASK = $00000018;
  22169.   {$EXTERNALSYM KS_DVD_CGMS_COPY_PROTECT_MASK}
  22170.   KS_DVD_CGMS_COPY_PERMITTED    = $00000000;
  22171.   {$EXTERNALSYM KS_DVD_CGMS_COPY_PERMITTED}
  22172.   KS_DVD_CGMS_COPY_ONCE         = $00000010;
  22173.   {$EXTERNALSYM KS_DVD_CGMS_COPY_ONCE}
  22174.   KS_DVD_CGMS_NO_COPY           = $00000018;
  22175.   {$EXTERNALSYM KS_DVD_CGMS_NO_COPY}
  22176.  
  22177.   KS_DVD_COPYRIGHT_MASK         = $00000040;
  22178.   {$EXTERNALSYM KS_DVD_COPYRIGHT_MASK}
  22179.   KS_DVD_NOT_COPYRIGHTED        = $00000000;
  22180.   {$EXTERNALSYM KS_DVD_NOT_COPYRIGHTED}
  22181.   KS_DVD_COPYRIGHTED            = $00000040;
  22182.   {$EXTERNALSYM KS_DVD_COPYRIGHTED}
  22183.  
  22184.   KS_DVD_SECTOR_PROTECT_MASK    = $00000020;
  22185.   {$EXTERNALSYM KS_DVD_SECTOR_PROTECT_MASK}
  22186.   KS_DVD_SECTOR_NOT_PROTECTED   = $00000000;
  22187.   {$EXTERNALSYM KS_DVD_SECTOR_NOT_PROTECTED}
  22188.   KS_DVD_SECTOR_PROTECTED       = $00000020;
  22189.   {$EXTERNALSYM KS_DVD_SECTOR_PROTECTED}
  22190.  
  22191. //===========================================================================
  22192. // The following MUST match the structures in WinGDI.h and AMVideo.h
  22193. //===========================================================================
  22194.  
  22195.   KSCATEGORY_TVTUNER                 : TGUID = '{a799a800-a46d-11d0-a18c-00a02401dcd4}';
  22196.   {$EXTERNALSYM KSCATEGORY_TVTUNER}
  22197.   KSCATEGORY_CROSSBAR                : TGUID = '{a799a801-a46d-11d0-a18c-00a02401dcd4}';
  22198.   {$EXTERNALSYM KSCATEGORY_CROSSBAR}
  22199.   KSCATEGORY_TVAUDIO                 : TGUID = '{a799a802-a46d-11d0-a18c-00a02401dcd4}';
  22200.   {$EXTERNALSYM KSCATEGORY_TVAUDIO}
  22201.   KSCATEGORY_VPMUX                   : TGUID = '{a799a803-a46d-11d0-a18c-00a02401dcd4}';
  22202.   {$EXTERNALSYM KSCATEGORY_VPMUX}
  22203.   KSCATEGORY_VBICODEC                : TGUID = '{07dad660-22f1-11d1-a9f4-00c04fbbde8f}';
  22204.   {$EXTERNALSYM KSCATEGORY_VBICODEC}
  22205.  
  22206.   // SUBTYPE_VPVideo
  22207.   KSDATAFORMAT_SUBTYPE_VPVideo       : TGUID = '{5a9b6a40-1a22-11d1-bad9-00609744111a}';
  22208.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_VPVideo}
  22209.  
  22210.   // SUBTYPE_VPVBI
  22211.   KSDATAFORMAT_SUBTYPE_VPVBI         : TGUID = '{5a9b6a41-1a22-11d1-bad9-00609744111a}';
  22212.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_VPVBI}
  22213.  
  22214.   // FORMAT_VideoInfo
  22215.   KSDATAFORMAT_SPECIFIER_VIDEOINFO   : TGUID = '{05589f80-c356-11ce-bf01-00aa0055595a}';
  22216.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VIDEOINFO}
  22217.  
  22218.   // FORMAT_VideoInfo2
  22219.   KSDATAFORMAT_SPECIFIER_VIDEOINFO2  : TGUID = '{f72a76A0-eb0a-11d0-ace4-0000c0cc16ba}';
  22220.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VIDEOINFO2}
  22221.  
  22222.   // MEDIATYPE_AnalogVideo
  22223.   KSDATAFORMAT_TYPE_ANALOGVIDEO      : TGUID = '{0482dde1-7817-11cf-8a03-00aa006ecb65}';
  22224.   {$EXTERNALSYM KSDATAFORMAT_TYPE_ANALOGVIDEO}
  22225.  
  22226.   // FORMAT_AnalogVideo
  22227.   KSDATAFORMAT_SPECIFIER_ANALOGVIDEO : TGUID = '{0482dde0-7817-11cf-8a03-00aa006ecb65}';
  22228.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_ANALOGVIDEO}
  22229.  
  22230.   // FORMAT_VBI
  22231.   KSDATAFORMAT_SPECIFIER_VBI         : TGUID = '{f72a76e0-eb0a-11d0-ace4-0000c0cc16ba}';
  22232.   {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VBI}
  22233.  
  22234.   // MEDIATYPE_VBI
  22235.   KSDATAFORMAT_TYPE_VBI              : TGUID = '{f72a76e1-eb0a-11d0-ace4-0000c0cc16ba}';
  22236.   {$EXTERNALSYM KSDATAFORMAT_TYPE_VBI}
  22237.  
  22238.   // SUBTYPE_RAW8
  22239.   KSDATAFORMAT_SUBTYPE_RAW8          : TGUID = '{ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf}';
  22240.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RAW8}
  22241.  
  22242.   // MEDIASUBTYPE_CC
  22243.   KSDATAFORMAT_SUBTYPE_CC            : TGUID = '{33214CC1-011F-11D2-B4B1-00A0D102CFBE}';
  22244.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_CC}
  22245.  
  22246.   // MEDIASUBTYPE_NABTS
  22247.   KSDATAFORMAT_SUBTYPE_NABTS         : TGUID = '{f72a76e2-eb0a-11d0-ace4-0000c0cc16ba}';
  22248.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_NABTS}
  22249.  
  22250.   // MEDIASUBTYPE_TELETEXT
  22251.   KSDATAFORMAT_SUBTYPE_TELETEXT      : TGUID = '{f72a76e3-eb0a-11d0-ace4-0000c0cc16ba}';
  22252.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_TELETEXT}
  22253.  
  22254.  
  22255. // constants for the biCompression field
  22256.   KS_BI_RGB       = 0;
  22257.   {$EXTERNALSYM KS_BI_RGB}
  22258.   KS_BI_RLE8      = 1;
  22259.   {$EXTERNALSYM KS_BI_RLE8}
  22260.   KS_BI_RLE4      = 2;
  22261.   {$EXTERNALSYM KS_BI_RLE4}
  22262.   KS_BI_BITFIELDS = 3;
  22263.   {$EXTERNALSYM KS_BI_BITFIELDS}
  22264.  
  22265. type
  22266.   PKSRGBQuad = ^TKSRGBQuad;
  22267.   tagKS_RGBQUAD = record // rgbq
  22268.     rgbBlue     : BYTE;
  22269.     rgbGreen    : BYTE;
  22270.     rgbRed      : BYTE;
  22271.     rgbReserved : BYTE;
  22272.   end;
  22273.   {$EXTERNALSYM tagKS_RGBQUAD}
  22274.   KS_RGBQUAD = tagKS_RGBQUAD;
  22275.   {$EXTERNALSYM KS_RGBQUAD}
  22276.   PKS_RGBQUAD = ^KS_RGBQUAD;
  22277.   {$EXTERNALSYM PKS_RGBQUAD}
  22278.   TKSRGBQuad = tagKS_RGBQUAD;
  22279.  
  22280. // constants for palettes
  22281. const
  22282.   KS_iPALETTE_COLORS  = 256; // Maximum colours in palette
  22283.   {$EXTERNALSYM KS_iPALETTE_COLORS}
  22284.   KS_iEGA_COLORS      = 16;  // Number colours in EGA palette
  22285.   {$EXTERNALSYM KS_iEGA_COLORS}
  22286.   KS_iMASK_COLORS     = 3;   // Maximum three components
  22287.   {$EXTERNALSYM KS_iMASK_COLORS}
  22288.   KS_iTRUECOLOR       = 16;  // Minimum true colour device
  22289.   {$EXTERNALSYM KS_iTRUECOLOR}
  22290.   KS_iRED             = 0;   // Index position for RED mask
  22291.   {$EXTERNALSYM KS_iRED}
  22292.   KS_iGREEN           = 1;   // Index position for GREEN mask
  22293.   {$EXTERNALSYM KS_iGREEN}
  22294.   KS_iBLUE            = 2;   // Index position for BLUE mask
  22295.   {$EXTERNALSYM KS_iBLUE}
  22296.   KS_iPALETTE         = 8;   // Maximum colour depth using a palette
  22297.   {$EXTERNALSYM KS_iPALETTE}
  22298.   KS_iMAXBITS         = 8;   // Maximum bits per colour component
  22299.   {$EXTERNALSYM KS_iMAXBITS}
  22300.   KS_SIZE_EGA_PALETTE = (KS_iEGA_COLORS * sizeof(TKSRGBQUAD));
  22301.   {$EXTERNALSYM KS_SIZE_EGA_PALETTE}
  22302.   KS_SIZE_PALETTE     = (KS_iPALETTE_COLORS * sizeof(TKSRGBQUAD));
  22303.   {$EXTERNALSYM KS_SIZE_PALETTE}
  22304.  
  22305. type
  22306.   PKSBitmapInfoHeader = ^TKSBitmapInfoHeader;
  22307.   tagKS_BITMAPINFOHEADER = record
  22308.     biSize          : DWORD;
  22309.     biWidth         : longint;
  22310.     biHeight        : longint;
  22311.     biPlanes        : WORD;
  22312.     biBitCount      : WORD;
  22313.     biCompression   : DWORD;
  22314.     biSizeImage     : DWORD;
  22315.     biXPelsPerMeter : longint;
  22316.     biYPelsPerMeter : longint;
  22317.     biClrUsed       : DWORD;
  22318.     biClrImportant  : DWORD;
  22319.   end;
  22320.   {$EXTERNALSYM tagKS_BITMAPINFOHEADER}
  22321.   KS_BITMAPINFOHEADER = tagKS_BITMAPINFOHEADER;
  22322.   {$EXTERNALSYM KS_BITMAPINFOHEADER}
  22323.   PKS_BITMAPINFOHEADER = ^KS_BITMAPINFOHEADER;
  22324.   {$EXTERNALSYM PKS_BITMAPINFOHEADER}
  22325.   TKSBitmapInfoHeader = tagKS_BITMAPINFOHEADER;
  22326.  
  22327. // Used for true colour images that also have a palette
  22328.  
  22329.   PKSTrueColorInfo = ^TKSTrueColorInfo;
  22330.   tag_KS_TRUECOLORINFO = record
  22331.     dwBitMasks : array[0..KS_iMASK_COLORS-1]    of DWORD;
  22332.     bmiColors  : array[0..KS_iPALETTE_COLORS-1] of TKSRGBQUAD;
  22333.   end;
  22334.   {$EXTERNALSYM tag_KS_TRUECOLORINFO}
  22335.   KS_TRUECOLORINFO = tag_KS_TRUECOLORINFO;
  22336.   {$EXTERNALSYM KS_TRUECOLORINFO}
  22337.   PKS_TRUECOLORINFO = ^KS_TRUECOLORINFO;
  22338.   {$EXTERNALSYM PKS_TRUECOLORINFO}
  22339.   TKSTrueColorInfo = tag_KS_TRUECOLORINFO;
  22340.  
  22341. //  KS_WIDTHBYTES(bits)  ((DWORD)(((bits)+31) & (~31)) / 8)
  22342. //  KS_DIBWIDTHBYTES(bi) (DWORD)KS_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
  22343. //  KS__DIBSIZE(bi)      (KS_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
  22344. //  KS_DIBSIZE(bi)       ((bi).biHeight < 0 ? (-1)*(KS__DIBSIZE(bi)) : KS__DIBSIZE(bi))
  22345.  
  22346. //  typedef  REFERENCE_TIME: int64;
  22347.  
  22348. // The BITMAPINFOHEADER contains all the details about the video stream such
  22349. // as the actual image dimensions and their pixel depth. A source filter may
  22350. // also request that the sink take only a section of the video by providing a
  22351. // clipping rectangle in rcSource. In the worst case where the sink filter
  22352. // forgets to check this on connection it will simply render the whole thing
  22353. // which isn't a disaster. Ideally a sink filter will check the rcSource and
  22354. // if it doesn't support image extraction and the rectangle is not empty then
  22355. // it will reject the connection. A filter should use SetRectEmpty to reset a
  22356. // rectangle to all zeroes (and IsRectEmpty to later check the rectangle).
  22357. // The rcTarget specifies the destination rectangle for the video, for most
  22358. // source filters they will set this to all zeroes, a downstream filter may
  22359. // request that the video be placed in a particular area of the buffers it
  22360. // supplies in which case it will call QueryAccept with a non empty target
  22361.  
  22362.   PKSVideoInfoHeader = ^TKSVideoInfoHeader;
  22363.   tagKS_VIDEOINFOHEADER = record
  22364.     rcSource        : TRECT;               // The bit we really want to use
  22365.     rcTarget        : TRECT;               // Where the video should go
  22366.     dwBitRate       : DWORD;               // Approximate bit data rate
  22367.     dwBitErrorRate  : DWORD;               // Bit error rate for this stream
  22368.     AvgTimePerFrame : TReferenceTime;     // Average time per frame (100ns units)
  22369.     bmiHeader       : TKSBitmapInfoHeader;
  22370.   end;
  22371.   {$EXTERNALSYM tagKS_VIDEOINFOHEADER}
  22372.   KS_VIDEOINFOHEADER = tagKS_VIDEOINFOHEADER;
  22373.   {$EXTERNALSYM KS_VIDEOINFOHEADER}
  22374.   PKS_VIDEOINFOHEADER = ^KS_VIDEOINFOHEADER;
  22375.   {$EXTERNALSYM PKS_VIDEOINFOHEADER}
  22376.   TKSVideoInfoHeader = tagKS_VIDEOINFOHEADER;
  22377.  
  22378. // !!! WARNING !!!
  22379. // DO NOT use the following structure unless you are sure that the BITMAPINFOHEADER
  22380. // has a normal biSize == sizeof(BITMAPINFOHEADER) !
  22381. // !!! WARNING !!!
  22382.  
  22383.   PKSVideoInfo = ^TKSVideoInfo;
  22384.   tagKS_VIDEOINFO = record
  22385.     rcSource        : TRECT;           // The bit we really want to use
  22386.     rcTarget        : TRECT;           // Where the video should go
  22387.     dwBitRate       : DWORD;           // Approximate bit data rate
  22388.     dwBitErrorRate  : DWORD;           // Bit error rate for this stream
  22389.     AvgTimePerFrame : TReferenceTime; // Average time per frame (100ns units)
  22390.     bmiHeader       : TKSBitmapInfoHeader;
  22391.     case integer of
  22392.       0: (bmiColors     : array[0..KS_iPALETTE_COLORS-1] of TKSRGBQUAD); // Colour palette
  22393.       1: (dwBitMasks    : array[0..KS_iMASK_COLORS-1] of DWORD);          // True colour masks
  22394.       2: (TrueColorInfo : TKSTrueColorInfo);                             // Both of the above
  22395.   end;
  22396.   {$EXTERNALSYM tagKS_VIDEOINFO}
  22397.   KS_VIDEOINFO = tagKS_VIDEOINFO;
  22398.   {$EXTERNALSYM KS_VIDEOINFO}
  22399.   PKS_VIDEOINFO = ^KS_VIDEOINFO;
  22400.   {$EXTERNALSYM PKS_VIDEOINFO}
  22401.   TKSVideoInfo = tagKS_VIDEOINFO;
  22402.  
  22403. const
  22404.   KS_SIZE_MASKS     = (KS_iMASK_COLORS * sizeof(DWORD));
  22405.   {$EXTERNALSYM KS_SIZE_MASKS}
  22406. //  KS_SIZE_PREHEADER = (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader))
  22407.  
  22408. // For normal size
  22409. // #define KS_SIZE_VIDEOHEADER (sizeof(KS_BITMAPINFOHEADER) + KS_SIZE_PREHEADER)
  22410. // !!! for abnormal biSizes
  22411. //#define KS_SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + KS_SIZE_PREHEADER)
  22412.  
  22413. // VBI
  22414. // Used for NABTS, CC, Intercast,
  22415. type
  22416.   PKSVBIInfoHeader = ^TKSVBIInfoHeader;
  22417.   tagKS_VBIINFOHEADER = record
  22418.     StartLine           : ULONG; // inclusive
  22419.     EndLine             : ULONG; // inclusive
  22420.     SamplingFrequency   : ULONG; // Hz.
  22421.     MinLineStartTime    : ULONG; // microSec * 100 from HSync LE
  22422.     MaxLineStartTime    : ULONG; // microSec * 100 from HSync LE
  22423.     ActualLineStartTime : ULONG; // microSec * 100 from HSync LE
  22424.     ActualLineEndTime   : ULONG; // microSec * 100 from HSync LE
  22425.     VideoStandard       : ULONG; // KS_AnalogVideoStandard*
  22426.     SamplesPerLine      : ULONG;
  22427.     StrideInBytes       : ULONG; // May be > SamplesPerLine
  22428.     BufferSize          : ULONG; // Bytes
  22429.   end;
  22430.   {$EXTERNALSYM tagKS_VBIINFOHEADER}
  22431.   KS_VBIINFOHEADER = tagKS_VBIINFOHEADER;
  22432.   {$EXTERNALSYM KS_VBIINFOHEADER}
  22433.   PKS_VBIINFOHEADER = ^KS_VBIINFOHEADER;
  22434.   {$EXTERNALSYM PKS_VBIINFOHEADER}
  22435.   TKSVBIInfoHeader = tagKS_VBIINFOHEADER;
  22436.  
  22437. // VBI Sampling Rates
  22438. const
  22439.   KS_VBIDATARATE_NABTS         = 5727272;
  22440.   {$EXTERNALSYM KS_VBIDATARATE_NABTS}
  22441.   KS_VBIDATARATE_CC            = 503493;    // ~= 1/1.986125e-6
  22442.   {$EXTERNALSYM KS_VBIDATARATE_CC}
  22443.   KS_VBISAMPLINGRATE_4X_NABTS  = longint(4*KS_VBIDATARATE_NABTS);
  22444.   {$EXTERNALSYM KS_VBISAMPLINGRATE_4X_NABTS}
  22445.   KS_VBISAMPLINGRATE_47X_NABTS = longint(27000000);
  22446.   {$EXTERNALSYM KS_VBISAMPLINGRATE_47X_NABTS}
  22447.   KS_VBISAMPLINGRATE_5X_NABTS  = longint(5*KS_VBIDATARATE_NABTS);
  22448.   {$EXTERNALSYM KS_VBISAMPLINGRATE_5X_NABTS}
  22449.  
  22450.   KS_47NABTS_SCALER = KS_VBISAMPLINGRATE_47X_NABTS/KS_VBIDATARATE_NABTS;
  22451.   {$EXTERNALSYM KS_47NABTS_SCALER}
  22452.  
  22453. // Analog video variant - Use this when the format is FORMAT_AnalogVideo
  22454. //
  22455. // rcSource defines the portion of the active video signal to use
  22456. // rcTarget defines the destination rectangle
  22457. //    both of the above are relative to the dwActiveWidth and dwActiveHeight fields
  22458. // dwActiveWidth is currently set to 720 for all formats (but could change for HDTV)
  22459. // dwActiveHeight is 483 for NTSC and 575 for PAL/SECAM  (but could change for HDTV)
  22460. type
  22461.   PKSAnalogVideoInfo = ^TKSAnalogVideoInfo;
  22462.   tagKS_AnalogVideoInfo = record
  22463.     rcSource        : TRECT;           // Width max is 720, height varies w/ TransmissionStd
  22464.     rcTarget        : TRECT;           // Where the video should go
  22465.     dwActiveWidth   : DWORD;           // Always 720 (CCIR-601 active samples per line)
  22466.     dwActiveHeight  : DWORD;           // 483 for NTSC, 575 for PAL/SECAM
  22467.     AvgTimePerFrame : TReferenceTime; // Normal ActiveMovie units (100 nS)
  22468.   end;
  22469.   {$EXTERNALSYM tagKS_AnalogVideoInfo}
  22470.   KS_AnalogVideoInfo = tagKS_AnalogVideoInfo;
  22471.   {$EXTERNALSYM KS_ANALOGVIDEOINFO}
  22472.   PKS_ANALOGVIDEOINFO = ^KS_ANALOGVIDEOINFO;
  22473.   {$EXTERNALSYM PKS_ANALOGVIDEOINFO}
  22474.   TKSAnalogVideoInfo = tagKS_AnalogVideoInfo;
  22475.  
  22476. //===========================================================================
  22477. // Data packet passed on Analog video stream channel change
  22478. //===========================================================================
  22479. const
  22480.   KS_TVTUNER_CHANGE_BEGIN_TUNE = $0001;  // Starting a tuning operation
  22481.   {$EXTERNALSYM KS_TVTUNER_CHANGE_BEGIN_TUNE}
  22482.   KS_TVTUNER_CHANGE_END_TUNE   = $0002;  // Ending a tuning operation
  22483.   {$EXTERNALSYM KS_TVTUNER_CHANGE_END_TUNE}
  22484.  
  22485. type
  22486.   PKSTVTunerChangeInfo = ^TKSTVTunerChangeInfo;
  22487.   tagKS_TVTUNER_CHANGE_INFO = record
  22488.    dwFlags               : DWORD; // KS_TVTUNER_CHANGE_*
  22489.    dwCountryCode         : DWORD;
  22490.    dwAnalogVideoStandard : DWORD; // KS_AnalogVideoStandard
  22491.    dwChannel             : DWORD;
  22492.   end;
  22493.   {$EXTERNALSYM tagKS_TVTUNER_CHANGE_INFO}
  22494.   KS_TVTUNER_CHANGE_INFO = tagKS_TVTUNER_CHANGE_INFO;
  22495.   {$EXTERNALSYM KS_TVTUNER_CHANGE_INFO}
  22496.   PKS_TVTUNER_CHANGE_INFO = ^KS_TVTUNER_CHANGE_INFO;
  22497.   {$EXTERNALSYM PKS_TVTUNER_CHANGE_INFO}
  22498.   TKSTVTunerChangeInfo = tagKS_TVTUNER_CHANGE_INFO;
  22499.  
  22500. //===========================================================================
  22501. // Video format blocks
  22502. //===========================================================================
  22503.  
  22504.   KS_MPEG2Level = (
  22505.     KS_MPEG2Level_Low,
  22506.     KS_MPEG2Level_Main,
  22507.     KS_MPEG2Level_High1440,
  22508.     KS_MPEG2Level_High
  22509.    );
  22510.   {$EXTERNALSYM KS_MPEG2Level}
  22511.   TKSMPEG2Level = KS_MPEG2Level;
  22512.  
  22513.   KS_MPEG2Profile = (
  22514.     KS_MPEG2Profile_Simple,
  22515.     KS_MPEG2Profile_Main,
  22516.     KS_MPEG2Profile_SNRScalable,
  22517.     KS_MPEG2Profile_SpatiallyScalable,
  22518.     KS_MPEG2Profile_High
  22519.   );
  22520.   {$EXTERNALSYM KS_MPEG2Profile}
  22521.   TKSMPEG2Profile = KS_MPEG2Profile;
  22522.  
  22523. const
  22524.   KS_INTERLACE_IsInterlaced          = $00000001;  // if 0, other interlace bits are irrelevent
  22525.   {$EXTERNALSYM KS_INTERLACE_IsInterlaced}
  22526.   KS_INTERLACE_1FieldPerSample       = $00000002;  // else 2 fields per media sample
  22527.   {$EXTERNALSYM KS_INTERLACE_1FieldPerSample}
  22528.   KS_INTERLACE_Field1First           = $00000004;  // else Field 2 is first;  top field in PAL is field 1, top field in NTSC is field 2?
  22529.   {$EXTERNALSYM KS_INTERLACE_Field1First}
  22530.   KS_INTERLACE_UNUSED                = $00000008;  //
  22531.   {$EXTERNALSYM KS_INTERLACE_UNUSED}
  22532.   KS_INTERLACE_FieldPatternMask      = $00000030;  // use this mask with AMINTERLACE_FieldPat*
  22533.   {$EXTERNALSYM KS_INTERLACE_FieldPatternMask}
  22534.   KS_INTERLACE_FieldPatField1Only    = $00000000;  // Data never contains a Field2
  22535.   {$EXTERNALSYM KS_INTERLACE_FieldPatField1Only}
  22536.   KS_INTERLACE_FieldPatField2Only    = $00000010;  // Data never contains a Field1
  22537.   {$EXTERNALSYM KS_INTERLACE_FieldPatField2Only}
  22538.   KS_INTERLACE_FieldPatBothRegular   = $00000020;  // There will be a Field2 for every Field1 (required for Weave?)
  22539.   {$EXTERNALSYM KS_INTERLACE_FieldPatBothRegular}
  22540.   KS_INTERLACE_FieldPatBothIrregular = $00000030;  // Random pattern of Field1s and Field2s
  22541.   {$EXTERNALSYM KS_INTERLACE_FieldPatBothIrregular}
  22542.   KS_INTERLACE_DisplayModeMask       = $000000c0;
  22543.   {$EXTERNALSYM KS_INTERLACE_DisplayModeMask}
  22544.   KS_INTERLACE_DisplayModeBobOnly    = $00000000;
  22545.   {$EXTERNALSYM KS_INTERLACE_DisplayModeBobOnly}
  22546.   KS_INTERLACE_DisplayModeWeaveOnly  = $00000040;
  22547.   {$EXTERNALSYM KS_INTERLACE_DisplayModeWeaveOnly}
  22548.   KS_INTERLACE_DisplayModeBobOrWeave = $00000080;
  22549.   {$EXTERNALSYM KS_INTERLACE_DisplayModeBobOrWeave}
  22550.  
  22551.  
  22552.  
  22553.   KS_MPEG2_DoPanScan           = $00000001;    //if set, the MPEG-2 video decoder should crop output image
  22554.   {$EXTERNALSYM KS_MPEG2_DoPanScan}            //  based on pan-scan vectors in picture_display_extension
  22555.                                                //  and change the picture aspect ratio accordingly.
  22556.   KS_MPEG2_DVDLine21Field1     = $00000002;    //if set, the MPEG-2 decoder must be able to produce an output
  22557.   {$EXTERNALSYM KS_MPEG2_DVDLine21Field1}      //  pin for DVD style closed caption data found in GOP layer of field 1
  22558.   KS_MPEG2_DVDLine21Field2     = $00000004;    //if set, the MPEG-2 decoder must be able to produce an output
  22559.   {$EXTERNALSYM KS_MPEG2_DVDLine21Field2}      //  pin for DVD style closed caption data found in GOP layer of field 2
  22560.   KS_MPEG2_SourceIsLetterboxed = $00000008;    //if set, indicates that black bars have been encoded in the top
  22561.   {$EXTERNALSYM KS_MPEG2_SourceIsLetterboxed}  //  and bottom of the video.
  22562.   KS_MPEG2_FilmCameraMode      = $00000010;    //if set, indicates "film mode" used for 625/50 content.  If cleared,
  22563.   {$EXTERNALSYM KS_MPEG2_FilmCameraMode}       //  indicates that "camera mode" was used.
  22564.   KS_MPEG2_LetterboxAnalogOut  = $00000020;    //if set and this stream is sent to an analog output, it should
  22565.   {$EXTERNALSYM KS_MPEG2_LetterboxAnalogOut}
  22566.                                                //  be letterboxed.  Streams sent to VGA should be letterboxed only by renderers.
  22567.   KS_MPEG2_DSS_UserData        = $00000040;    //if set, the MPEG-2 decoder must process DSS style user data
  22568.   {$EXTERNALSYM KS_MPEG2_DSS_UserData}
  22569.   KS_MPEG2_DVB_UserData        = $00000080;    //if set, the MPEG-2 decoder must process DVB style user data
  22570.   {$EXTERNALSYM KS_MPEG2_DVB_UserData}
  22571.   KS_MPEG2_27MhzTimebase       = $00000100;    //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz
  22572.   {$EXTERNALSYM KS_MPEG2_27MhzTimebase}
  22573.  
  22574. type
  22575.   PKSVideoInfoHeader2 = ^TKSVideoInfoHeader2;
  22576.   tagKS_VIDEOINFOHEADER2 = record
  22577.     rcSource           : TRECT;
  22578.     rcTarget           : TRECT;
  22579.     dwBitRate          : DWORD;
  22580.     dwBitErrorRate     : DWORD;
  22581.     AvgTimePerFrame    : TReferenceTime;
  22582.     dwInterlaceFlags   : DWORD; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0
  22583.     dwCopyProtectFlags : DWORD; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0
  22584.     dwPictAspectRatioX : DWORD; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display
  22585.     dwPictAspectRatioY : DWORD; // Y dimension of picture aspect ratio, e.g.  9 for 16x9 display
  22586.     dwReserved1        : DWORD; // must be 0; reject connection otherwise
  22587.     dwReserved2        : DWORD; // must be 0; reject connection otherwise
  22588.     bmiHeader          : TKSBitmapInfoHeader;
  22589.   end;
  22590.   {$EXTERNALSYM tagKS_VIDEOINFOHEADER2}
  22591.   KS_VIDEOINFOHEADER2 = tagKS_VIDEOINFOHEADER2;
  22592.   {$EXTERNALSYM KS_VIDEOINFOHEADER2}
  22593.   PKS_VIDEOINFOHEADER2 = ^KS_VIDEOINFOHEADER2;
  22594.   {$EXTERNALSYM PKS_VIDEOINFOHEADER2}
  22595.   TKSVideoInfoHeader2 = tagKS_VIDEOINFOHEADER2;
  22596.  
  22597.   PKSMPEG1VideoInfo = ^TKSMPEG1VideoInfo;
  22598.   tagKS_MPEG1VIDEOINFO = record
  22599.     hdr              : TKSVideoInfoHeader ; // Compatible with VIDEOINFO
  22600.     dwStartTimeCode  : DWORD ;               // 25-bit Group of pictures time code at start of data
  22601.     cbSequenceHeader : DWORD ;               // Length in bytes of bSequenceHeader
  22602.     bSequenceHeader  : array[0..0] of BYTE;  // Sequence header including quantization matrices if any
  22603.   end;
  22604.   {$EXTERNALSYM tagKS_MPEG1VIDEOINFO}
  22605.   KS_MPEG1VIDEOINFO = tagKS_MPEG1VIDEOINFO;
  22606.   {$EXTERNALSYM KS_MPEG1VIDEOINFO}
  22607.   PKS_MPEG1VIDEOINFO = ^KS_MPEG1VIDEOINFO;
  22608.   {$EXTERNALSYM PKS_MPEG1VIDEOINFO}
  22609.   TKSMPEG1VideoInfo = tagKS_MPEG1VIDEOINFO;
  22610.  
  22611. const
  22612.   KS_MAX_SIZE_MPEG1_SEQUENCE_INFO = 140;
  22613.   {$EXTERNALSYM KS_MAX_SIZE_MPEG1_SEQUENCE_INFO}
  22614. //  KS_SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(KS_MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  22615. //  KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  22616.  
  22617. type
  22618.   PKSMPEGVideoInfo2 = ^TKSMPEGVideoInfo2;
  22619.   tagKS_MPEGVIDEOINFO2 = record
  22620.     hdr              : TKSVideoInfoHeader2;
  22621.     dwStartTimeCode  : DWORD;                //  ?? not used for DVD ??
  22622.     cbSequenceHeader : DWORD;                // is 0 for DVD (no sequence header)
  22623.     dwProfile        : DWORD;                // use enum MPEG2Profile
  22624.     dwLevel          : DWORD;                // use enum MPEG2Level
  22625.     dwFlags          : DWORD;                // use AMMPEG2_* defines.  Reject connection if undefined bits are not 0
  22626.     bSequenceHeader  : array[0..0] of DWORD; // DWORD instead of Byte for alignment purposes
  22627.                                              //   For MPEG-2, if a sequence_header is included, the sequence_extension
  22628.                                              //   should also be included
  22629.   end;
  22630.   {$EXTERNALSYM tagKS_MPEGVIDEOINFO2}
  22631.   KS_MPEGVIDEOINFO2 = tagKS_MPEGVIDEOINFO2;
  22632.   {$EXTERNALSYM KS_MPEGVIDEOINFO2}
  22633.   PKS_MPEGVIDEOINFO2 = ^KS_MPEGVIDEOINFO2;
  22634.   {$EXTERNALSYM PKS_MPEGVIDEOINFO2}
  22635.   TKSMPEGVideoInfo2 = tagKS_MPEGVIDEOINFO2;
  22636.  
  22637. const
  22638. //  KS_SIZE_MPEGVIDEOINFO2(pv) (FIELD_OFFSET(KS_MPEGVIDEOINFO2, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  22639. //  KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  22640.  
  22641. //===========================================================================
  22642. // Audio format blocks
  22643. //===========================================================================
  22644.  
  22645. //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz
  22646.   KS_MPEGAUDIOINFO_27MhzTimebase = $00000001;
  22647.   {$EXTERNALSYM KS_MPEGAUDIOINFO_27MhzTimebase}
  22648.  
  22649. type
  22650.   PKSMPEGAudioInfo = ^TKSMPEGAudioInfo;
  22651.   tagKS_MPEAUDIOINFO = record
  22652.     dwFlags     : DWORD; // use KS_MPEGAUDIOINFO_* defines.  Reject connection if undefined bits are not 0
  22653.     dwReserved1 : DWORD; // must be 0; reject connection otherwise
  22654.     dwReserved2 : DWORD; // must be 0; reject connection otherwise
  22655.     dwReserved3 : DWORD; // must be 0; reject connection otherwise
  22656.   end;
  22657.   {$EXTERNALSYM tagKS_MPEAUDIOINFO}
  22658.   KS_MPEGAUDIOINFO = tagKS_MPEAUDIOINFO;
  22659.   {$EXTERNALSYM KS_MPEGAUDIOINFO}
  22660.   PKS_MPEGAUDIOINFO = ^KS_MPEGAUDIOINFO;
  22661.   {$EXTERNALSYM PKS_MPEGAUDIOINFO}
  22662.   TKSMPEGAudioInfo = tagKS_MPEAUDIOINFO;
  22663.  
  22664. //===========================================================================
  22665. // Video DATAFORMATs
  22666. //===========================================================================
  22667.  
  22668.   PKSDataFormatVideoInfoHeader = ^TKSDataFormatVideoInfoHeader;
  22669.   tagKS_DATAFORMAT_VIDEOINFOHEADER = record
  22670.     DataFormat      : TKSDataFormat;
  22671.     VideoInfoHeader : TKSVideoInfoHeader;
  22672.   end;
  22673.   {$EXTERNALSYM tagKS_DATAFORMAT_VIDEOINFOHEADER}
  22674.   KS_DATAFORMAT_VIDEOINFOHEADER = tagKS_DATAFORMAT_VIDEOINFOHEADER;
  22675.   {$EXTERNALSYM KS_DATAFORMAT_VIDEOINFOHEADER}
  22676.   PKS_DATAFORMAT_VIDEOINFOHEADER = ^KS_DATAFORMAT_VIDEOINFOHEADER;
  22677.   {$EXTERNALSYM PKS_DATAFORMAT_VIDEOINFOHEADER}
  22678.   TKSDataFormatVideoInfoHeader = tagKS_DATAFORMAT_VIDEOINFOHEADER;
  22679.  
  22680.   PKSDataFormatVideoInfoHeader2 = ^TKSDataFormatVideoInfoHeader2;
  22681.   tagKS_DATAFORMAT_VIDEOINFOHEADER2 = record
  22682.     DataFormat       : TKSDataFormat;
  22683.     VideoInfoHeader2 : TKSVideoInfoHeader2;
  22684.   end;
  22685.   {$EXTERNALSYM tagKS_DATAFORMAT_VIDEOINFOHEADER2}
  22686.   KS_DATAFORMAT_VIDEOINFOHEADER2 = tagKS_DATAFORMAT_VIDEOINFOHEADER2;
  22687.   {$EXTERNALSYM KS_DATAFORMAT_VIDEOINFOHEADER2}
  22688.   PKS_DATAFORMAT_VIDEOINFOHEADER2 = ^KS_DATAFORMAT_VIDEOINFOHEADER2;
  22689.   {$EXTERNALSYM PKS_DATAFORMAT_VIDEOINFOHEADER2}
  22690.   TKSDataFormatVideoInfoHeader2 = tagKS_DATAFORMAT_VIDEOINFOHEADER2;
  22691.  
  22692.   PKSDataFormatVideoinfoPalette = ^TKSDataFormatVideoinfoPalette;
  22693.   tagKS_DATAFORMAT_VIDEOINFO_PALETTE = record
  22694.     DataFormat : TKSDataFormat;
  22695.     VideoInfo  : TKSVideoInfo;
  22696.   end;
  22697.   {$EXTERNALSYM tagKS_DATAFORMAT_VIDEOINFO_PALETTE}
  22698.   KS_DATAFORMAT_VIDEOINFO_PALETTE = tagKS_DATAFORMAT_VIDEOINFO_PALETTE;
  22699.   {$EXTERNALSYM KS_DATAFORMAT_VIDEOINFO_PALETTE}
  22700.   PKS_DATAFORMAT_VIDEOINFO_PALETTE = ^KS_DATAFORMAT_VIDEOINFO_PALETTE;
  22701.   {$EXTERNALSYM PKS_DATAFORMAT_VIDEOINFO_PALETTE}
  22702.   TKSDataFormatVideoinfoPalette = tagKS_DATAFORMAT_VIDEOINFO_PALETTE;
  22703.  
  22704.   PKSDataFormatVBIInfoHeader = ^TKSDataFormatVBIInfoHeader;
  22705.   tagKS_DATAFORMAT_VBIINFOHEADER = record
  22706.     DataFormat    : TKSDATAFORMAT;
  22707.     VBIInfoHeader : TKSVBIInfoHeader;
  22708.   end;
  22709.   {$EXTERNALSYM tagKS_DATAFORMAT_VBIINFOHEADER}
  22710.   KS_DATAFORMAT_VBIINFOHEADER = tagKS_DATAFORMAT_VBIINFOHEADER;
  22711.   {$EXTERNALSYM KS_DATAFORMAT_VBIINFOHEADER}
  22712.   PKS_DATAFORMAT_VBIINFOHEADER = ^KS_DATAFORMAT_VBIINFOHEADER;
  22713.   {$EXTERNALSYM PKS_DATAFORMAT_VBIINFOHEADER}
  22714.   TKSDataFormatVBIInfoHeader = tagKS_DATAFORMAT_VBIINFOHEADER;
  22715.  
  22716.   PKSVideoStreamConfigCaps = ^TKSVideoStreamConfigCaps;
  22717.   _KS_VIDEO_STREAM_CONFIG_CAPS = record
  22718.     guid               : TGUID;   // will be MEDIATYPE_Video
  22719.     VideoStandard      : ULONG;   // logical OR of all AnalogVideoStandards
  22720.                                   // supported
  22721.     InputSize          : TSIZE;   // the inherent size of the incoming signal
  22722.                                   // (every pixel unique)
  22723.     MinCroppingSize    : TSIZE;   // smallest rcSrc cropping rect allowed
  22724.     MaxCroppingSize    : TSIZE;   // largest rcSrc cropping rect allowed
  22725.     CropGranularityX   : integer; // granularity of cropping size
  22726.     CropGranularityY   : integer;
  22727.     CropAlignX         : integer; // alignment of cropping rect
  22728.     CropAlignY         : integer;
  22729.     MinOutputSize      : TSIZE;   // smallest bitmap stream can produce
  22730.     MaxOutputSize      : TSIZE;   // largest  bitmap stream can produce
  22731.     OutputGranularityX : integer; // granularity of output bitmap size
  22732.     OutputGranularityY : integer;
  22733.     StretchTapsX       : integer; // 0, no stretch, 1 pix dup, 2 interp, ...
  22734.     StretchTapsY       : integer; //    Describes quality of hardware scaler
  22735.     ShrinkTapsX        : integer; //
  22736.     ShrinkTapsY        : integer; //
  22737.     MinFrameInterval   : int64;   // 100 nS units
  22738.     MaxFrameInterval   : int64;
  22739.     MinBitsPerSecond   : longint;
  22740.     MaxBitsPerSecond   : longint;
  22741.   end;
  22742.   {$EXTERNALSYM _KS_VIDEO_STREAM_CONFIG_CAPS}
  22743.   KS_VIDEO_STREAM_CONFIG_CAPS = _KS_VIDEO_STREAM_CONFIG_CAPS;
  22744.   {$EXTERNALSYM KS_VIDEO_STREAM_CONFIG_CAPS}
  22745.   PKS_VIDEO_STREAM_CONFIG_CAPS = ^KS_VIDEO_STREAM_CONFIG_CAPS;
  22746.   {$EXTERNALSYM PKS_VIDEO_STREAM_CONFIG_CAPS}
  22747.   TKSVideoStreamConfigCaps = _KS_VIDEO_STREAM_CONFIG_CAPS;
  22748.  
  22749. //===========================================================================
  22750. // Video DATARANGEs
  22751. //===========================================================================
  22752.  
  22753.   PKSDataRangeVideo = ^TKSDataRangeVideo;
  22754.   tagKS_DATARANGE_VIDEO = record
  22755.     DataRange              : TKSDataRange;
  22756.     bFixedSizeSamples      : BOOL;                         // all samples same size?
  22757.     bTemporalCompression   : BOOL;                         // all I frames?
  22758.     StreamDescriptionFlags : DWORD;                        // KS_VIDEO_DESC_*
  22759.     MemoryAllocationFlags  : DWORD;                        // KS_VIDEO_ALLOC_*
  22760.     ConfigCaps             : TKSVideoStreamConfigCaps;
  22761.     VideoInfoHeader        : TKSVideoInfoHeader;          // default format
  22762.   end;
  22763.   {$EXTERNALSYM tagKS_DATARANGE_VIDEO}
  22764.   KS_DATARANGE_VIDEO = tagKS_DATARANGE_VIDEO;
  22765.   {$EXTERNALSYM KS_DATARANGE_VIDEO}
  22766.   PKS_DATARANGE_VIDEO = ^KS_DATARANGE_VIDEO;
  22767.   {$EXTERNALSYM PKS_DATARANGE_VIDEO}
  22768.   TKSDataRangeVideo = tagKS_DATARANGE_VIDEO;
  22769.  
  22770.   PKSDataRangeVideo2 = ^TKSDataRangeVideo2;
  22771.   tagKS_DATARANGE_VIDEO2 = record
  22772.     DataRange              : TKSDataRange;
  22773.     bFixedSizeSamples      : BOOL;  // all samples same size?
  22774.     bTemporalCompression   : BOOL;  // all I frames?
  22775.     StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  22776.     MemoryAllocationFlags  : DWORD; // KS_VIDEO_ALLOC_*
  22777.     ConfigCaps             : TKSVideoStreamConfigCaps;
  22778.     VideoInfoHeader        : TKSVideoInfoHeader2;        // default format
  22779.   end;
  22780.   {$EXTERNALSYM tagKS_DATARANGE_VIDEO2}
  22781.   KS_DATARANGE_VIDEO2 = tagKS_DATARANGE_VIDEO2;
  22782.   {$EXTERNALSYM KS_DATARANGE_VIDEO2}
  22783.   PKS_DATARANGE_VIDEO2 = ^KS_DATARANGE_VIDEO2;
  22784.   {$EXTERNALSYM PKS_DATARANGE_VIDEO2}
  22785.   TKSDataRangeVideo2 = tagKS_DATARANGE_VIDEO2;
  22786.  
  22787.   PKSDataRangeMPEG1Video = ^TKSDataRangeMPEG1Video;
  22788.   tagKS_DATARANGE_MPEG1_VIDEO = record
  22789.     DataRange              : TKSDataRange ;
  22790.     bFixedSizeSamples      : BOOL ;  // all samples same size?
  22791.     bTemporalCompression   : BOOL ;  // all I frames?
  22792.     StreamDescriptionFlags : DWORD ; // KS_VIDEO_DESC_*
  22793.     MemoryAllocationFlags  : DWORD ; // KS_VIDEO_ALLOC_*
  22794.     ConfigCaps             : TKSVideoStreamConfigCaps ;
  22795.     VideoInfoHeader        : TKSMPEG1VideoInfo ; // default format
  22796.   end;
  22797.   {$EXTERNALSYM tagKS_DATARANGE_MPEG1_VIDEO}
  22798.   KS_DATARANGE_MPEG1_VIDEO = tagKS_DATARANGE_MPEG1_VIDEO;
  22799.   {$EXTERNALSYM KS_DATARANGE_MPEG1_VIDEO}
  22800.   PKS_DATARANGE_MPEG1_VIDEO = ^KS_DATARANGE_MPEG1_VIDEO;
  22801.   {$EXTERNALSYM PKS_DATARANGE_MPEG1_VIDEO}
  22802.   TKSDataRangeMPEG1Video = tagKS_DATARANGE_MPEG1_VIDEO;
  22803.  
  22804.   PKSDataRangeMPEG2Video = ^TKSDataRangeMPEG2Video;
  22805.   tagKS_DATARANGE_MPEG2_VIDEO = record
  22806.     DataRange              : TKSDataRange;
  22807.     bFixedSizeSamples      : BOOL;        // all samples same size?
  22808.     bTemporalCompression   : BOOL;        // all I frames?
  22809.     StreamDescriptionFlags : DWORD;       // KS_VIDEO_DESC_*
  22810.     MemoryAllocationFlags  : DWORD;       // KS_VIDEO_ALLOC_*
  22811.     ConfigCaps             : TKSVideoStreamConfigCaps;
  22812.     VideoInfoHeader        : TKSMPEGVideoInfo2;        // default format
  22813.   end;
  22814.   {$EXTERNALSYM tagKS_DATARANGE_MPEG2_VIDEO}
  22815.   KS_DATARANGE_MPEG2_VIDEO = tagKS_DATARANGE_MPEG2_VIDEO;
  22816.   {$EXTERNALSYM KS_DATARANGE_MPEG2_VIDEO}
  22817.   PKS_DATARANGE_MPEG2_VIDEO = ^KS_DATARANGE_MPEG2_VIDEO;
  22818.   {$EXTERNALSYM PKS_DATARANGE_MPEG2_VIDEO}
  22819.   TKSDataRangeMPEG2Video = tagKS_DATARANGE_MPEG2_VIDEO;
  22820.  
  22821.   PKSDataRangeVideoPalette = ^TKSDataRangeVideoPalette;
  22822.   tagKS_DATARANGE_VIDEO_PALETTE = record
  22823.     DataRange              : TKSDataRange;
  22824.     bFixedSizeSamples      : BOOL;  // all samples same size?
  22825.     bTemporalCompression   : BOOL;  // all I frames?
  22826.     StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  22827.     MemoryAllocationFlags  : DWORD; // KS_VIDEO_ALLOC_*
  22828.     ConfigCaps             : TKSVideoStreamConfigCaps;
  22829.     VideoInfo              : TKSVideoInfo;              // default format
  22830.   end;
  22831.   {$EXTERNALSYM tagKS_DATARANGE_VIDEO_PALETTE}
  22832.   KS_DATARANGE_VIDEO_PALETTE = tagKS_DATARANGE_VIDEO_PALETTE;
  22833.   {$EXTERNALSYM KS_DATARANGE_VIDEO_PALETTE}
  22834.   PKS_DATARANGE_VIDEO_PALETTE = ^KS_DATARANGE_VIDEO_PALETTE;
  22835.   {$EXTERNALSYM PKS_DATARANGE_VIDEO_PALETTE}
  22836.   TKSDataRangeVideoPalette = tagKS_DATARANGE_VIDEO_PALETTE;
  22837.  
  22838.   PKSDataRangeVideoVBI = ^TKSDataRangeVideoVBI;
  22839.   tagKS_DATARANGE_VIDEO_VBI = record
  22840.     DataRange              : TKSDataRange;
  22841.     bFixedSizeSamples      : BOOL;  // all samples same size?
  22842.     bTemporalCompression   : BOOL;  // all I frames?
  22843.     StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  22844.     MemoryAllocationFlags  : DWORD; // KS_VIDEO_ALLOC_*
  22845.     ConfigCaps             : TKSVideoStreamConfigCaps;
  22846.     VBIInfoHeader          : TKSVBIInfoHeader; // default format
  22847.   end;
  22848.   {$EXTERNALSYM tagKS_DATARANGE_VIDEO_VBI}
  22849.   KS_DATARANGE_VIDEO_VBI = tagKS_DATARANGE_VIDEO_VBI;
  22850.   {$EXTERNALSYM KS_DATARANGE_VIDEO_VBI}
  22851.   PKS_DATARANGE_VIDEO_VBI = ^KS_DATARANGE_VIDEO_VBI;
  22852.   {$EXTERNALSYM PKS_DATARANGE_VIDEO_VBI}
  22853.   TKSDataRangeVideoVBI = tagKS_DATARANGE_VIDEO_VBI;
  22854.  
  22855.   PKSDataRangeAnalogVideo = ^TKSDataRangeAnalogVideo;
  22856.   tagKS_DATARANGE_ANALOGVIDEO = record
  22857.     DataRange       : TKSDataRange;
  22858.     AnalogVideoInfo : TKSAnalogVideoInfo;
  22859.   end;
  22860.   {$EXTERNALSYM tagKS_DATARANGE_ANALOGVIDEO}
  22861.   KS_DATARANGE_ANALOGVIDEO = tagKS_DATARANGE_ANALOGVIDEO;
  22862.   {$EXTERNALSYM KS_DATARANGE_ANALOGVIDEO}
  22863.   PKS_DATARANGE_ANALOGVIDEO = ^KS_DATARANGE_ANALOGVIDEO;
  22864.   {$EXTERNALSYM PKS_DATARANGE_ANALOGVIDEO}
  22865.   TKSDataRangeAnalogVideo = tagKS_DATARANGE_ANALOGVIDEO;
  22866.  
  22867. //===========================================================================
  22868. // StreamDescriptionFlags
  22869. //
  22870. // These define the "purpose" of each video stream
  22871. //===========================================================================
  22872. const
  22873.   KS_VIDEOSTREAM_PREVIEW     = $0001;  // Preview stream
  22874.   {$EXTERNALSYM KS_VIDEOSTREAM_PREVIEW}
  22875.   KS_VIDEOSTREAM_CAPTURE     = $0002;  // Capture stream
  22876.   {$EXTERNALSYM KS_VIDEOSTREAM_CAPTURE}
  22877.   KS_VIDEOSTREAM_VBI         = $0010;  // Field1 VBI
  22878.   {$EXTERNALSYM KS_VIDEOSTREAM_VBI}
  22879.   KS_VIDEOSTREAM_NABTS       = $0020;  // Field1 NABTS
  22880.   {$EXTERNALSYM KS_VIDEOSTREAM_NABTS}
  22881.   KS_VIDEOSTREAM_CC          = $0100;  // Closed Captioning
  22882.   {$EXTERNALSYM KS_VIDEOSTREAM_CC}
  22883.   KS_VIDEOSTREAM_EDS         = $0200;  // Extended Data Services
  22884.   {$EXTERNALSYM KS_VIDEOSTREAM_EDS}
  22885.   KS_VIDEOSTREAM_TELETEXT    = $0400;  // Field1 Teletext only
  22886.   {$EXTERNALSYM KS_VIDEOSTREAM_TELETEXT}
  22887.   KS_VIDEOSTREAM_STILL       = $1000;  // Still image input
  22888.   {$EXTERNALSYM KS_VIDEOSTREAM_STILL}
  22889.   KS_VIDEOSTREAM_IS_VPE      = $8000;  // Is a VPE based stream?
  22890.   {$EXTERNALSYM KS_VIDEOSTREAM_IS_VPE}
  22891.  
  22892. // MemoryAllocationFlags
  22893.   KS_VIDEO_ALLOC_VPE_SYSTEM  = $0001;  // VPE surface in system memory
  22894.   {$EXTERNALSYM KS_VIDEO_ALLOC_VPE_SYSTEM}
  22895.   KS_VIDEO_ALLOC_VPE_DISPLAY = $0002;  // VPE surface in display memory
  22896.   {$EXTERNALSYM KS_VIDEO_ALLOC_VPE_DISPLAY}
  22897.   KS_VIDEO_ALLOC_VPE_AGP     = $0004;  // VPE surface in AGP memory
  22898.   {$EXTERNALSYM KS_VIDEO_ALLOC_VPE_AGP}
  22899.  
  22900. //////////////////////////////////////////////////////////////
  22901. // Capture driver VBI property sets
  22902. //////////////////////////////////////////////////////////////
  22903.  
  22904. // {F162C607-7B35-496f-AD7F-2DCA3B46B718}
  22905.   KSPROPSETID_VBICAP_PROPERTIES : TGUID = '{F162C607-7B35-496f-AD7F-2DCA3B46B718}';
  22906.   {$EXTERNALSYM KSPROPSETID_VBICAP_PROPERTIES}
  22907.  
  22908. type
  22909.   KSPROPERTY_VBICAP = (
  22910.   {$IFNDEF COMPILER6_UP}
  22911.     KSPROPERTY_VBICAP_PROPERTIES_INVALID_0,
  22912.     KSPROPERTY_VBICAP_PROPERTIES_PROTECTION
  22913.   {$ELSE}
  22914.     KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 1
  22915.   {$ENDIF}
  22916.   );
  22917.   {$EXTERNALSYM KSPROPERTY_VBICAP}
  22918.   TKSPropertyVBICap = KSPROPERTY_VBICAP;
  22919.  
  22920.   PVBICapPropertiesProtectionS = ^TVBICapPropertiesProtectionS;
  22921.   _VBICAP_PROPERTIES_PROTECTION_S = record
  22922.     Property_   : KSPROPERTY;
  22923.     StreamIndex : ULONG; // Index of stream
  22924.     Status      : ULONG;
  22925.   end;
  22926.   {$EXTERNALSYM _VBICAP_PROPERTIES_PROTECTION_S}
  22927.   VBICAP_PROPERTIES_PROTECTION_S = _VBICAP_PROPERTIES_PROTECTION_S;
  22928.   {$EXTERNALSYM VBICAP_PROPERTIES_PROTECTION_S}
  22929.   PVBICAP_PROPERTIES_PROTECTION_S = ^VBICAP_PROPERTIES_PROTECTION_S;
  22930.   {$EXTERNALSYM PVBICAP_PROPERTIES_PROTECTION_S}
  22931.   TVBICapPropertiesProtectionS = _VBICAP_PROPERTIES_PROTECTION_S;
  22932.  
  22933. const
  22934.   KS_VBICAP_PROTECTION_MV_PRESENT  = $0001;
  22935.   {$EXTERNALSYM KS_VBICAP_PROTECTION_MV_PRESENT}
  22936.   KS_VBICAP_PROTECTION_MV_HARDWARE = $0002;
  22937.   {$EXTERNALSYM KS_VBICAP_PROTECTION_MV_HARDWARE}
  22938.   KS_VBICAP_PROTECTION_MV_DETECTED = $0004;
  22939.   {$EXTERNALSYM KS_VBICAP_PROTECTION_MV_DETECTED}
  22940.  
  22941.  
  22942. //***************************************************************************/
  22943. //* VBI Related GUIDs, structs and properties for codecs(generic, cc, nabts)*/
  22944. //***************************************************************************/
  22945.  
  22946. ///////////////////////////////////////////////////////////////////////////////////////
  22947. // IP/NABTS Protocol Reserved Group IDs - Overall Range 0x800-0x8FF [Decimal 2048-2079]
  22948. // Intervening values(0-F) are used if there are multiple providers at a particular tier
  22949. ///////////////////////////////////////////////////////////////////////////////////////
  22950.  
  22951. // Used by individual content creators in show footage/data
  22952.   KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE              = $800;
  22953.   {$EXTERNALSYM KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE}
  22954.   KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE   = $810;
  22955.   {$EXTERNALSYM KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE}
  22956.  
  22957. // Used by production company in finished show data
  22958.   KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE    = $820;
  22959.   {$EXTERNALSYM KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE}
  22960.   KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE = $830;
  22961.   {$EXTERNALSYM KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE}
  22962.  
  22963. // Used by broadcast syndicates in syndicated show data
  22964.   KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE       = $840;
  22965.   {$EXTERNALSYM KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE}
  22966.   KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE    = $850;
  22967.   {$EXTERNALSYM KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE}
  22968.  
  22969. // Used by tv networks in network television data
  22970.   KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE          = $860;
  22971.   {$EXTERNALSYM KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE}
  22972.   KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE       = $870;
  22973.   {$EXTERNALSYM KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE}
  22974.  
  22975. // Used by telvision stations in local programming data
  22976.   KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE    = $880;
  22977.   {$EXTERNALSYM KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE}
  22978.   KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE = $890;
  22979.   {$EXTERNALSYM KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE}
  22980.  
  22981. // Used by cable system in cable head-end originated data
  22982.   KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE    = $8A0;
  22983.   {$EXTERNALSYM KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE}
  22984.   KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE = $8B0;
  22985.   {$EXTERNALSYM KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE}
  22986.  
  22987. // The values between 0x8C0 - 0x8EF are reserved for future expansion
  22988.  
  22989. // Used by Microsoft for Testing purposes (0x8F0 - 0x8FF)
  22990.   KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE  = $8F0;
  22991.   {$EXTERNALSYM KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE}
  22992.  
  22993. //////////////////////////////////////////////////////////////
  22994. // Stream Format FEC-corrected NABTS bundles
  22995. //////////////////////////////////////////////////////////////
  22996.  
  22997.   KSDATAFORMAT_TYPE_NABTS        : TGUID = '{E757BCA0-39AC-11d1-A9F5-00C04FBBDE8F}';
  22998.   {$EXTERNALSYM KSDATAFORMAT_TYPE_NABTS}
  22999.   KSDATAFORMAT_SUBTYPE_NABTS_FEC : TGUID = '{E757BCA1-39AC-11d1-A9F5-00C04FBBDE8F}';
  23000.   {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_NABTS_FEC}
  23001.  
  23002.  
  23003. //////////////////////////////////////////////////////////////
  23004. // NABTS Bundle data structure definition
  23005. //////////////////////////////////////////////////////////////
  23006.  
  23007.   MAX_NABTS_VBI_LINES_PER_FIELD = 11;
  23008.   {$EXTERNALSYM MAX_NABTS_VBI_LINES_PER_FIELD}
  23009.   NABTS_LINES_PER_BUNDLE        = 16;
  23010.   {$EXTERNALSYM NABTS_LINES_PER_BUNDLE}
  23011.   NABTS_PAYLOAD_PER_LINE        = 28;
  23012.   {$EXTERNALSYM NABTS_PAYLOAD_PER_LINE}
  23013.   NABTS_BYTES_PER_LINE          = 36;
  23014.   {$EXTERNALSYM NABTS_BYTES_PER_LINE}
  23015.  
  23016. type
  23017.   PNABTSFecBuffer = ^TNABTSFecBuffer;
  23018.   _NABTSFEC_BUFFER = record
  23019.     dataSize : ULONG;
  23020.     groupID  : word;
  23021.     Reserved : word;
  23022.     data     : array[0..(NABTS_LINES_PER_BUNDLE * NABTS_PAYLOAD_PER_LINE)-1] of UCHAR;
  23023.   end;
  23024.   {$EXTERNALSYM _NABTSFEC_BUFFER}
  23025.   NABTSFEC_BUFFER = _NABTSFEC_BUFFER;
  23026.   {$EXTERNALSYM NABTSFEC_BUFFER}
  23027.   PNABTSFEC_BUFFER = ^NABTSFEC_BUFFER;
  23028.   {$EXTERNALSYM PNABTSFEC_BUFFER}
  23029.   TNABTSFecBuffer = _NABTSFEC_BUFFER;
  23030.  
  23031. //////////////////////////////////////////////////////////////
  23032. // vbi codec filtering pin properties
  23033. //////////////////////////////////////////////////////////////
  23034. const
  23035.   KSPROPSETID_VBICodecFiltering : TGUID = '{cafeb0ca-8715-11d0-bd6a-0035c0edbabe}';
  23036.   {$EXTERNALSYM KSPROPSETID_VBICodecFiltering}
  23037.  
  23038. type
  23039.   KSPROPERTY_VBICODECFILTERING = (
  23040.   {$IFNDEF COMPILER6_UP}
  23041.     KSPROPERTY_VBICODECFILTERING_INVALID_0,
  23042.     KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY,
  23043.   {$ELSE}
  23044.     KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 1,
  23045.   {$ENDIF}
  23046.     KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY,
  23047.     KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
  23048.     KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
  23049.     KSPROPERTY_VBICODECFILTERING_STATISTICS
  23050.   );
  23051.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING}
  23052.   TKSPropertyVBICodecFiltering = KSPROPERTY_VBICODECFILTERING;
  23053.  
  23054.   PVBICodecFilteringScanlines = ^TVBICodecFilteringScanlines;
  23055.   _VBICODECFILTERING_SCANLINES = record
  23056.     DwordBitArray : array[0..31] of DWORD;      // An array of scanline bits 0..1024(32*32)
  23057.   end;
  23058.   {$EXTERNALSYM _VBICODECFILTERING_SCANLINES}
  23059.   VBICODECFILTERING_SCANLINES = _VBICODECFILTERING_SCANLINES;
  23060.   {$EXTERNALSYM VBICODECFILTERING_SCANLINES}
  23061.   PVBICODECFILTERING_SCANLINES = ^VBICODECFILTERING_SCANLINES;
  23062.   {$EXTERNALSYM PVBICODECFILTERING_SCANLINES}
  23063.   TVBICodecFilteringScanlines = _VBICODECFILTERING_SCANLINES;
  23064.  
  23065.   PVBICodecFilteringNABTSSubStreams = ^TVBICodecFilteringNABTSSubStreams;
  23066.   _VBICODECFILTERING_NABTS_SUBSTREAMS = record
  23067.     SubstreamMask : array[0..127] of DWORD;   // An array of 4096 bits (one for each NABTS GroupID)
  23068.   end;
  23069.   {$EXTERNALSYM _VBICODECFILTERING_NABTS_SUBSTREAMS}
  23070.   VBICODECFILTERING_NABTS_SUBSTREAMS = _VBICODECFILTERING_NABTS_SUBSTREAMS;
  23071.   {$EXTERNALSYM VBICODECFILTERING_NABTS_SUBSTREAMS}
  23072.   PVBICODECFILTERING_NABTS_SUBSTREAMS = ^VBICODECFILTERING_NABTS_SUBSTREAMS;
  23073.   {$EXTERNALSYM PVBICODECFILTERING_NABTS_SUBSTREAMS}
  23074.   TVBICodecFilteringNABTSSubStreams = _VBICODECFILTERING_NABTS_SUBSTREAMS;
  23075.  
  23076.   PVBICodecFilteringCCSubStreams = ^TVBICodecFilteringCCSubStreams;
  23077.   _VBICODECFILTERING_CC_SUBSTREAMS = record
  23078.     SubstreamMask : DWORD;        // An array of 32 bits (see KS_CC_SUBSTREAM *)
  23079.   end;
  23080.   {$EXTERNALSYM _VBICODECFILTERING_CC_SUBSTREAMS}
  23081.   VBICODECFILTERING_CC_SUBSTREAMS = _VBICODECFILTERING_CC_SUBSTREAMS;
  23082.   {$EXTERNALSYM VBICODECFILTERING_CC_SUBSTREAMS}
  23083.   PVBICODECFILTERING_CC_SUBSTREAMS = ^VBICODECFILTERING_CC_SUBSTREAMS;
  23084.   {$EXTERNALSYM PVBICODECFILTERING_CC_SUBSTREAMS}
  23085.   TVBICodecFilteringCCSubStreams = _VBICODECFILTERING_CC_SUBSTREAMS;
  23086.  
  23087. const
  23088.   KS_CC_SUBSTREAM_ODD              = $0001;
  23089.   {$EXTERNALSYM KS_CC_SUBSTREAM_ODD}
  23090.   KS_CC_SUBSTREAM_EVEN             = $0002;
  23091.   {$EXTERNALSYM KS_CC_SUBSTREAM_EVEN}
  23092.   KS_CC_SUBSTREAM_SERVICE_MASK_DC1 = $00F0; // DataChannel1: CC1,CC3,T1,T3
  23093.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_MASK_DC1}
  23094.   KS_CC_SUBSTREAM_SERVICE_CC1      = $0010;
  23095.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC1}
  23096.   KS_CC_SUBSTREAM_SERVICE_CC3      = $0020;
  23097.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC3}
  23098.   KS_CC_SUBSTREAM_SERVICE_T1       = $0040;
  23099.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T1}
  23100.   KS_CC_SUBSTREAM_SERVICE_T3       = $0080;
  23101.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T3}
  23102.   KS_CC_SUBSTREAM_SERVICE_MASK_DC2 = $0F00; // DataChannel2: CC2,CC4,T2,T4
  23103.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_MASK_DC2}
  23104.   KS_CC_SUBSTREAM_SERVICE_CC2      = $0100;
  23105.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC2}
  23106.   KS_CC_SUBSTREAM_SERVICE_CC4      = $0200;
  23107.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC4}
  23108.   KS_CC_SUBSTREAM_SERVICE_T2       = $0400;
  23109.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T2}
  23110.   KS_CC_SUBSTREAM_SERVICE_T4       = $0800;
  23111.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T4}
  23112.   KS_CC_SUBSTREAM_SERVICE_XDS      = $1000;
  23113.   {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_XDS}
  23114.  
  23115. ///////////////////////////////////////////////////////////////////
  23116. // Hardware decoded CC stream format
  23117. ///////////////////////////////////////////////////////////////////
  23118.  
  23119.   CC_MAX_HW_DECODE_LINES = 12;
  23120.   {$EXTERNALSYM CC_MAX_HW_DECODE_LINES}
  23121.  
  23122. type
  23123.   PCCBytePair = ^TCCBytePair;
  23124.   _CC_BYTE_PAIR = record
  23125.     Decoded  : array[0..1] of BYTE;
  23126.     Reserved : word;
  23127.   end;
  23128.   {$EXTERNALSYM _CC_BYTE_PAIR}
  23129.   CC_BYTE_PAIR = _CC_BYTE_PAIR;
  23130.   {$EXTERNALSYM CC_BYTE_PAIR}
  23131.   PCC_BYTE_PAIR = ^CC_BYTE_PAIR;
  23132.   {$EXTERNALSYM PCC_BYTE_PAIR}
  23133.   TCCBytePair = _CC_BYTE_PAIR;
  23134.  
  23135.   PCCHWField = ^TCCHWField;
  23136.   _CC_HW_FIELD = record
  23137.    ScanlinesRequested : TVBICodecFilteringScanlines;
  23138.    fieldFlags         : ULONG;    // KS_VBI_FLAG_FIELD1,2
  23139.    PictureNumber      : int64;
  23140.    Lines              : array[0..CC_MAX_HW_DECODE_LINES-1] of TCCBytePair;
  23141.   end;
  23142.   {$EXTERNALSYM _CC_HW_FIELD}
  23143.   CC_HW_FIELD = _CC_HW_FIELD;
  23144.   {$EXTERNALSYM CC_HW_FIELD}
  23145.   PCC_HW_FIELD = ^CC_HW_FIELD;
  23146.   {$EXTERNALSYM PCC_HW_FIELD}
  23147.   TCCHWField = _CC_HW_FIELD;
  23148.  
  23149. ///////////////////////////////////////////////////////////////////
  23150. // Raw NABTS stream format (TYPE_NABTS, SUBTYPE_NABTS)
  23151. ///////////////////////////////////////////////////////////////////
  23152.  
  23153. // These low-level structures are byte packed( -Zp1 )
  23154.  
  23155.   PNABTSBufferLine = ^TNABTSBufferLine;
  23156.   _NABTS_BUFFER_LINE = record
  23157.     Confidence : BYTE;
  23158.     Bytes      : array[0..NABTS_BYTES_PER_LINE-1] of BYTE;
  23159.   end;
  23160.   {$EXTERNALSYM _NABTS_BUFFER_LINE}
  23161.   NABTS_BUFFER_LINE = _NABTS_BUFFER_LINE;
  23162.   {$EXTERNALSYM NABTS_BUFFER_LINE}
  23163.   PNABTS_BUFFER_LINE = ^NABTS_BUFFER_LINE;
  23164.   {$EXTERNALSYM PNABTS_BUFFER_LINE}
  23165.   TNABTSBufferLine = _NABTS_BUFFER_LINE;
  23166.  
  23167. const
  23168.   NABTS_BUFFER_PICTURENUMBER_SUPPORT = 1;
  23169.   {$EXTERNALSYM NABTS_BUFFER_PICTURENUMBER_SUPPORT}
  23170.  
  23171. type
  23172.   PNABTSBuffer = ^TNABTSBuffer;
  23173.   _NABTS_BUFFER = record
  23174.     ScanlinesRequested : TVBICodecFilteringScanlines;
  23175.     PictureNumber      : int64;
  23176.     NabtsLines         : array[0..MAX_NABTS_VBI_LINES_PER_FIELD-1] of TNABTSBufferLine;
  23177.   end;
  23178.   {$EXTERNALSYM _NABTS_BUFFER}
  23179.   NABTS_BUFFER = _NABTS_BUFFER;
  23180.   {$EXTERNALSYM NABTS_BUFFER}
  23181.   PNABTS_BUFFER = ^NABTS_BUFFER;
  23182.   {$EXTERNALSYM PNABTS_BUFFER}
  23183.   TNABTSBuffer = _NABTS_BUFFER;
  23184.  
  23185. //////////////////////////////////////////////////////////////
  23186. // WST Codec Teletext Media Sample Format
  23187. //////////////////////////////////////////////////////////////
  23188. const
  23189.   WST_TVTUNER_CHANGE_BEGIN_TUNE  =  $1000;  // Starting a tuning operation
  23190.   {$EXTERNALSYM WST_TVTUNER_CHANGE_BEGIN_TUNE}
  23191.   WST_TVTUNER_CHANGE_END_TUNE    =  $2000;  // Ending a tuning operation
  23192.   {$EXTERNALSYM WST_TVTUNER_CHANGE_END_TUNE}
  23193.  
  23194.   MAX_WST_VBI_LINES_PER_FIELD = 17;
  23195.   {$EXTERNALSYM MAX_WST_VBI_LINES_PER_FIELD}
  23196.   WST_BYTES_PER_LINE          = 42;
  23197.   {$EXTERNALSYM WST_BYTES_PER_LINE}
  23198.  
  23199. type
  23200.   PWSTBufferLine = ^TWSTBufferLine;
  23201.   _WST_BUFFER_LINE = record
  23202.     Confidence: BYTE;
  23203.     Bytes : array[0..WST_BYTES_PER_LINE-1] of BYTE;
  23204.   end;
  23205.   {$EXTERNALSYM _WST_BUFFER_LINE}
  23206.   WST_BUFFER_LINE = _WST_BUFFER_LINE;
  23207.   {$EXTERNALSYM WST_BUFFER_LINE}
  23208.   PWST_BUFFER_LINE = ^WST_BUFFER_LINE;
  23209.   {$EXTERNALSYM PWST_BUFFER_LINE}
  23210.   TWSTBufferLine = _WST_BUFFER_LINE;
  23211.  
  23212.   PWSTBuffer = ^TWSTBuffer;
  23213.   _WST_BUFFER = record
  23214.     ScanlinesRequested: TVBICodecFilteringScanlines;
  23215.     WstLines: array[0..MAX_WST_VBI_LINES_PER_FIELD-1] of TWSTBufferLine;
  23216.   end;
  23217.   {$EXTERNALSYM _WST_BUFFER}
  23218.   WST_BUFFER = _WST_BUFFER;
  23219.   {$EXTERNALSYM WST_BUFFER}
  23220.   PWST_BUFFER = ^WST_BUFFER;
  23221.   {$EXTERNALSYM PWST_BUFFER}
  23222.   TWSTBuffer = _WST_BUFFER;
  23223. //
  23224. // Common codec statistics
  23225. //
  23226.  
  23227.   PVBICodecFilteringStatisticsCommon = ^TVBICodecFilteringStatisticsCommon;
  23228.   _VBICODECFILTERING_STATISTICS_COMMON = record
  23229.     InputSRBsProcessed   : DWORD; // upstream SRBs received
  23230.     OutputSRBsProcessed  : DWORD; // downstream SRBs sent
  23231.     SRBsIgnored          : DWORD; // SRBs ignored due to no requests
  23232.     InputSRBsMissing     : DWORD; // SRBs dropped upstream
  23233.     OutputSRBsMissing    : DWORD; // Output dropped because no SRB pending
  23234.     OutputFailures       : DWORD; // dropped because of other failure
  23235.     InternalErrors       : DWORD; // could not process due to int. failure
  23236.     ExternalErrors       : DWORD; // could not process due to ext. failure
  23237.     InputDiscontinuities : DWORD; // discontinuities received
  23238.     DSPFailures          : DWORD; // DSP confidence failure
  23239.     TvTunerChanges       : DWORD; // number of received KS_TVTUNER_CHANGE_BEGIN_TUNE and KS_TVTUNER_CHANGE_END_TUNE pairs.
  23240.     VBIHeaderChanges     : DWORD; // number of received KS_VBI_FLAG_VBIINFOHEADER_CHANGE
  23241.     LineConfidenceAvg    : DWORD; // Average of all DSP confidence results
  23242.     BytesOutput          : DWORD; // Bytes sent downstream
  23243.   end;
  23244.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_COMMON}
  23245.   VBICODECFILTERING_STATISTICS_COMMON = _VBICODECFILTERING_STATISTICS_COMMON;
  23246.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_COMMON}
  23247.   PVBICODECFILTERING_STATISTICS_COMMON = ^VBICODECFILTERING_STATISTICS_COMMON;
  23248.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_COMMON}
  23249.   TVBICodecFilteringStatisticsCommon = _VBICODECFILTERING_STATISTICS_COMMON;
  23250.  
  23251.   PVBICodecFilteringStatisticsCommonPin = ^TVBICodecFilteringStatisticsCommonPin;
  23252.   _VBICODECFILTERING_STATISTICS_COMMON_PIN = record
  23253.     SRBsProcessed     : DWORD; // SRBs sent/received
  23254.     SRBsIgnored       : DWORD; // SRBs ignored due to filtering
  23255.     SRBsMissing       : DWORD; // SRBs not sent/received
  23256.     InternalErrors    : DWORD; // could not send/receive due to int. failure
  23257.     ExternalErrors    : DWORD; // could not send/receive due to ext. failure
  23258.     Discontinuities   : DWORD; // discontinuities received/sent
  23259.     LineConfidenceAvg : DWORD; // Average of all DSP confidence results for this pin
  23260.     BytesOutput       : DWORD; // Bytes sent downstream
  23261.   end;
  23262.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_COMMON_PIN}
  23263.   VBICODECFILTERING_STATISTICS_COMMON_PIN = _VBICODECFILTERING_STATISTICS_COMMON_PIN;
  23264.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_COMMON_PIN}
  23265.   PVBICODECFILTERING_STATISTICS_COMMON_PIN = ^VBICODECFILTERING_STATISTICS_COMMON_PIN;
  23266.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_COMMON_PIN}
  23267.   TVBICodecFilteringStatisticsCommonPin = _VBICODECFILTERING_STATISTICS_COMMON_PIN;
  23268.  
  23269. //
  23270. // Codec-specific statistics - NABTS
  23271. //
  23272.  
  23273.   PVBICodecFilteringStatisticsNABTS = ^TVBICodecFilteringStatisticsNABTS;
  23274.   _VBICODECFILTERING_STATISTICS_NABTS = record
  23275.     Common                : TVBICodecFilteringStatisticsCommon ; // Generic VBI statistics
  23276.     FECBundleBadLines     : DWORD; // Un-FEC-correctable lines
  23277.     FECQueueOverflows     : DWORD; // Number of times FEC queue overflowed
  23278.     FECCorrectedLines     : DWORD; // Lines CSUM corrected by FEC
  23279.     FECUncorrectableLines : DWORD; // FEC input lines not CSUM correctable
  23280.     BundlesProcessed      : DWORD; // Bundles received from FEC
  23281.     BundlesSent2IP        : DWORD; // Bundles sent to IP driver
  23282.     FilteredLines         : DWORD; // Lines processed and then dropped
  23283.                                    // because no one was interested
  23284.   end;
  23285.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_NABTS}
  23286.   VBICODECFILTERING_STATISTICS_NABTS = _VBICODECFILTERING_STATISTICS_NABTS;
  23287.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_NABTS}
  23288.   PVBICODECFILTERING_STATISTICS_NABTS = ^VBICODECFILTERING_STATISTICS_NABTS;
  23289.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_NABTS}
  23290.   TVBICodecFilteringStatisticsNABTS = _VBICODECFILTERING_STATISTICS_NABTS;
  23291.  
  23292.   PVBICodecFilteringStatisticsNABTSPin = ^TVBICodecFilteringStatisticsNABTSPin;
  23293.   _VBICODECFILTERING_STATISTICS_NABTS_PIN = record
  23294.     Common : TVBICodecFilteringStatisticsCommonPin; // Generic VBI pin statistics
  23295.   end;
  23296.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_NABTS_PIN}
  23297.   VBICODECFILTERING_STATISTICS_NABTS_PIN = _VBICODECFILTERING_STATISTICS_NABTS_PIN;
  23298.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_NABTS_PIN}
  23299.   PVBICODECFILTERING_STATISTICS_NABTS_PIN = ^VBICODECFILTERING_STATISTICS_NABTS_PIN;
  23300.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_NABTS_PIN}
  23301.   TVBICodecFilteringStatisticsNABTSPin = _VBICODECFILTERING_STATISTICS_NABTS_PIN;
  23302.  
  23303. //
  23304. // Codec-specific statistics - Closed Caption
  23305. //
  23306.  
  23307.   PVBICodecFilteringStatisticsCC = ^TVBICodecFilteringStatisticsCC;
  23308.   _VBICODECFILTERING_STATISTICS_CC = record
  23309.     Common : TVBICodecFilteringStatisticsCommon; // Generic VBI statistics
  23310.   end;
  23311.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_CC}
  23312.   VBICODECFILTERING_STATISTICS_CC = _VBICODECFILTERING_STATISTICS_CC;
  23313.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_CC}
  23314.   PVBICODECFILTERING_STATISTICS_CC = ^VBICODECFILTERING_STATISTICS_CC;
  23315.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_CC}
  23316.   TVBICodecFilteringStatisticsCC = _VBICODECFILTERING_STATISTICS_CC;
  23317.  
  23318.   PVBICodecFilteringStatisticsCCPin = ^TVBICodecFilteringStatisticsCCPin;
  23319.   _VBICODECFILTERING_STATISTICS_CC_PIN = record
  23320.     Common : TVBICodecFilteringStatisticsCommonPin; // Generic VBI pin statistics
  23321.   end;
  23322.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_CC_PIN}
  23323.   VBICODECFILTERING_STATISTICS_CC_PIN = _VBICODECFILTERING_STATISTICS_CC_PIN;
  23324.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_CC_PIN}
  23325.   PVBICODECFILTERING_STATISTICS_CC_PIN = ^VBICODECFILTERING_STATISTICS_CC_PIN;
  23326.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_CC_PIN}
  23327.   TVBICodecFilteringStatisticsCCPin = _VBICODECFILTERING_STATISTICS_CC_PIN;
  23328.  
  23329. //
  23330. // Codec-specific statistics - Closed Caption
  23331. //
  23332.  
  23333.   PVBICodecFilteringStatisticsTeletext = ^TVBICodecFilteringStatisticsTeletext;
  23334.   _VBICODECFILTERING_STATISTICS_TELETEXT = record
  23335.     Common: TVBICodecFilteringStatisticsCommon ; // Generic VBI statistics
  23336.   end;
  23337.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_TELETEXT}
  23338.   VBICODECFILTERING_STATISTICS_TELETEXT = _VBICODECFILTERING_STATISTICS_TELETEXT;
  23339.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_TELETEXT}
  23340.   PVBICODECFILTERING_STATISTICS_TELETEXT = ^VBICODECFILTERING_STATISTICS_TELETEXT;
  23341.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_TELETEXT}
  23342.   TVBICodecFilteringStatisticsTeletext = _VBICODECFILTERING_STATISTICS_TELETEXT;
  23343.  
  23344.   PVBICodecFilteringStatisticsTeletextPin = ^TVBICodecFilteringStatisticsTeletextPin;
  23345.   _VBICODECFILTERING_STATISTICS_TELETEXT_PIN = record
  23346.     Common: TVBICodecFilteringStatisticsCommonPin ;// Generic VBI pin statistics
  23347.   end;
  23348.   {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_TELETEXT_PIN}
  23349.   VBICODECFILTERING_STATISTICS_TELETEXT_PIN = _VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
  23350.   {$EXTERNALSYM VBICODECFILTERING_STATISTICS_TELETEXT_PIN}
  23351.   PVBICODECFILTERING_STATISTICS_TELETEXT_PIN = ^VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
  23352.   {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_TELETEXT_PIN}
  23353.   TVBICodecFilteringStatisticsTeletextPin = _VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
  23354.  
  23355. ////////////////////////////////////////////////////////////////////////////
  23356. // VBI codec property structures(based on KSPROPERTY_VBICODECFILTERING enum)
  23357. ////////////////////////////////////////////////////////////////////////////
  23358.  
  23359. // *** Most codecs support this property
  23360. //    KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY
  23361. //    KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY,
  23362.   PKSPropertyVBICodecFilteringScanlinesS = ^TKSPropertyVBICodecFilteringScanlinesS;
  23363.   KSPROPERTY_VBICODECFILTERING_SCANLINES_S = record
  23364.     Property_ : KSPROPERTY;
  23365.     Scanlines : TVBICodecFilteringScanlines;
  23366.   end;
  23367.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_SCANLINES_S}
  23368.   PKSPROPERTY_VBICODECFILTERING_SCANLINES_S = ^KSPROPERTY_VBICODECFILTERING_SCANLINES_S;
  23369.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_SCANLINES_S}
  23370.   TKSPropertyVBICodecFilteringScanlinesS = KSPROPERTY_VBICODECFILTERING_SCANLINES_S;
  23371.  
  23372. // *** NABTS codecs support this property
  23373. //    KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
  23374. //    KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
  23375.   PKSPropertyVBICodecFilteringNABTSSubstreamsS = ^TKSPropertyVBICodecFilteringNABTSSubstreamsS;
  23376.   KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S = record
  23377.     Property_  : KSPROPERTY;
  23378.     Substreams : TVBICodecFilteringNABTSSubStreams;
  23379.   end;
  23380.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S}
  23381.   PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S = ^KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
  23382.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S}
  23383.   TKSPropertyVBICodecFilteringNABTSSubstreamsS = KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
  23384.  
  23385. // *** Closed captioning codecs support this property
  23386. //    KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
  23387. //    KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
  23388.   PKSPropertyVBICodecFilteringCCSubstreamsS = ^TKSPropertyVBICodecFilteringCCSubstreamsS;
  23389.   KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S = record
  23390.     Property_  : KSPROPERTY;
  23391.     Substreams : TVBICodecFilteringCCSubStreams;
  23392.   end;
  23393.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S}
  23394.   PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S = ^KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
  23395.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S}
  23396.   TKSPropertyVBICodecFilteringCCSubstreamsS = KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
  23397.  
  23398. // *** Most codecs support these versions of the global and pin properties
  23399. //    KSPROPERTY_VBICODECFILTERING_STATISTICS
  23400.   PKSPropertyVBICodecFilteringStatisticsCommonS = ^TKSPropertyVBICodecFilteringStatisticsCommonS;
  23401.   KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S = record
  23402.     Property_  : KSPROPERTY;
  23403.     Statistics : TVBICodecFilteringStatisticsCommon;
  23404.   end;
  23405.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S}
  23406.   PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
  23407.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S}
  23408.   TKSPropertyVBICodecFilteringStatisticsCommonS = KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
  23409.  
  23410.   PKSPropertyVBICodecFilteringStatisticsCommonPinS = ^TKSPropertyVBICodecFilteringStatisticsCommonPinS;
  23411.   KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S = record
  23412.     Property_  : KSPROPERTY;
  23413.     Statistics : TVBICodecFilteringStatisticsCommonPin;
  23414.   end;
  23415.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S}
  23416.   PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
  23417.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S}
  23418.   TKSPropertyVBICodecFilteringStatisticsCommonPinS = KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
  23419.  
  23420. // *** NABTS codecs support this version of the global and pin properties
  23421. //    KSPROPERTY_VBICODECFILTERING_STATISTICS
  23422.   PKSPropertyVBICodecFilteringStatisticsNABTSS = ^TKSPropertyVBICodecFilteringStatisticsNABTSS;
  23423.   KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S = record
  23424.     Property_  : KSPROPERTY;
  23425.     Statistics : TVBICodecFilteringStatisticsNABTS;
  23426.   end;
  23427.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S}
  23428.   PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
  23429.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S}
  23430.   TKSPropertyVBICodecFilteringStatisticsNABTSS = KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
  23431.  
  23432.   PKSPropertyVBICodecFilteringStatisticsNABTSPinS = ^TKSPropertyVBICodecFilteringStatisticsNABTSPinS;
  23433.   KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S = record
  23434.     Property_  : KSPROPERTY;
  23435.     Statistics : TVBICodecFilteringStatisticsNABTSPin;
  23436.   end;
  23437.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S}
  23438.   PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
  23439.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S}
  23440.   TKSPropertyVBICodecFilteringStatisticsNABTSPinS = KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
  23441.  
  23442. // *** Closed captioning codecs support this version of the global and pin properties
  23443. //    KSPROPERTY_VBICODECFILTERING_STATISTICS
  23444.  
  23445.   PKSPropertyVBICodecFilteringStatisticsCCS = ^TKSPropertyVBICodecFilteringStatisticsCCS;
  23446.   KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = record
  23447.     Property_  : KSPROPERTY;
  23448.     Statistics : TVBICodecFilteringStatisticsCC;
  23449.   end;
  23450.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S}
  23451.   PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
  23452.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S}
  23453.   TKSPropertyVBICodecFilteringStatisticsCCS = KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
  23454.  
  23455.   PKSPropertyVBICodecFilteringStatisticsCCPinS = ^TKSPropertyVBICodecFilteringStatisticsCCPinS;
  23456.   KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S = record
  23457.     Property_  : KSPROPERTY;
  23458.     Statistics : TVBICodecFilteringStatisticsCCPin;
  23459.   end;
  23460.   {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S}
  23461.   PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
  23462.   {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S}
  23463.   TKSPropertyVBICodecFilteringStatisticsCCPinS = KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
  23464.  
  23465. // Standard Pin Names for the video capture filter
  23466. //===========================================================================
  23467. const
  23468.   PINNAME_VIDEO_CAPTURE       : TGUID = '{FB6C4281-0353-11d1-905F-0000C0CC16BA}';
  23469.   {$EXTERNALSYM PINNAME_VIDEO_CAPTURE}
  23470.   PINNAME_VIDEO_CC_CAPTURE    : TGUID = '{1AAD8061-012D-11d2-B4B1-00A0D102CFBE}';
  23471.   {$EXTERNALSYM PINNAME_VIDEO_CC_CAPTURE}
  23472.   PINNAME_VIDEO_NABTS_CAPTURE : TGUID = '{29703660-498A-11d2-B4B1-00A0D102CFBE}';
  23473.   {$EXTERNALSYM PINNAME_VIDEO_NABTS_CAPTURE}
  23474.   PINNAME_VIDEO_PREVIEW       : TGUID = '{FB6C4282-0353-11d1-905F-0000C0CC16BA}';
  23475.   {$EXTERNALSYM PINNAME_VIDEO_PREVIEW}
  23476.   PINNAME_VIDEO_ANALOGVIDEOIN : TGUID = '{FB6C4283-0353-11d1-905F-0000C0CC16BA}';
  23477.   {$EXTERNALSYM PINNAME_VIDEO_ANALOGVIDEOIN}
  23478.   PINNAME_VIDEO_VBI           : TGUID = '{FB6C4284-0353-11d1-905F-0000C0CC16BA}';
  23479.   {$EXTERNALSYM PINNAME_VIDEO_VBI}
  23480.   PINNAME_VIDEO_VIDEOPORT     : TGUID = '{FB6C4285-0353-11d1-905F-0000C0CC16BA}';
  23481.   {$EXTERNALSYM PINNAME_VIDEO_VIDEOPORT}
  23482.   PINNAME_VIDEO_NABTS         : TGUID = '{FB6C4286-0353-11d1-905F-0000C0CC16BA}';
  23483.   {$EXTERNALSYM PINNAME_VIDEO_NABTS}
  23484.   PINNAME_VIDEO_EDS           : TGUID = '{FB6C4287-0353-11d1-905F-0000C0CC16BA}';
  23485.   {$EXTERNALSYM PINNAME_VIDEO_EDS}
  23486.   PINNAME_VIDEO_TELETEXT      : TGUID = '{FB6C4288-0353-11d1-905F-0000C0CC16BA}';
  23487.   {$EXTERNALSYM PINNAME_VIDEO_TELETEXT}
  23488.   PINNAME_VIDEO_CC            : TGUID = '{FB6C4289-0353-11d1-905F-0000C0CC16BA}';
  23489.   {$EXTERNALSYM PINNAME_VIDEO_CC}
  23490.   PINNAME_VIDEO_STILL         : TGUID = '{FB6C428A-0353-11d1-905F-0000C0CC16BA}';
  23491.   {$EXTERNALSYM PINNAME_VIDEO_STILL}
  23492.   PINNAME_VIDEO_TIMECODE      : TGUID = '{FB6C428B-0353-11d1-905F-0000C0CC16BA}';
  23493.   {$EXTERNALSYM PINNAME_VIDEO_TIMECODE}
  23494.   PINNAME_VIDEO_VIDEOPORT_VBI : TGUID = '{FB6C428C-0353-11d1-905F-0000C0CC16BA}';
  23495.   {$EXTERNALSYM PINNAME_VIDEO_VIDEOPORT_VBI}
  23496.  
  23497. //===========================================================================
  23498. // KSSTREAM_HEADER extensions for digital video
  23499. //===========================================================================
  23500.  
  23501.   KS_VIDEO_FLAG_FRAME   = $0000; // Frame or Field (default is frame)
  23502.   {$EXTERNALSYM KS_VIDEO_FLAG_FRAME}
  23503.   KS_VIDEO_FLAG_FIELD1  = $0001;
  23504.   {$EXTERNALSYM KS_VIDEO_FLAG_FIELD1}
  23505.   KS_VIDEO_FLAG_FIELD2  = $0002;
  23506.   {$EXTERNALSYM KS_VIDEO_FLAG_FIELD2}
  23507.  
  23508.   KS_VIDEO_FLAG_I_FRAME = $0000; // I, B, or P (default is I)
  23509.   {$EXTERNALSYM KS_VIDEO_FLAG_I_FRAME}
  23510.   KS_VIDEO_FLAG_P_FRAME = $0010;
  23511.   {$EXTERNALSYM KS_VIDEO_FLAG_P_FRAME}
  23512.   KS_VIDEO_FLAG_B_FRAME = $0020;
  23513.   {$EXTERNALSYM KS_VIDEO_FLAG_B_FRAME}
  23514.  
  23515. type
  23516.   PKSFrameInfo = ^TKSFrameInfo;
  23517.   tagKS_FRAME_INFO = record
  23518.     ExtendedHeaderSize : ULONG; // Size of this extended header
  23519.     dwFrameFlags       : DWORD; // Field1, Field2, or Frame
  23520.     PictureNumber      : int64;
  23521.     DropCount          : int64;
  23522.  
  23523.      // The following are only set when using OverlayMixer
  23524.     hDirectDraw        : THandle; // user mode DDraw handle
  23525.     hSurfaceHandle     : THandle; // user mode surface handle
  23526.     DirectDrawRect     : TRECT;   // portion of surface locked
  23527.      // Reserved fields, never reference these
  23528.     Reserved1          : DWORD;
  23529.     Reserved2          : DWORD;
  23530.     Reserved3          : DWORD;
  23531.     Reserved4          : DWORD;
  23532.   end;
  23533.   {$EXTERNALSYM tagKS_FRAME_INFO}
  23534.   KS_FRAME_INFO = tagKS_FRAME_INFO;
  23535.   {$EXTERNALSYM KS_FRAME_INFO}
  23536.   PKS_FRAME_INFO = ^KS_FRAME_INFO;
  23537.   {$EXTERNALSYM PKS_FRAME_INFO}
  23538.   TKSFrameInfo = tagKS_FRAME_INFO;
  23539.  
  23540. //===========================================================================
  23541. // KSSTREAM_HEADER extensions for VBI
  23542. //===========================================================================
  23543. const
  23544.   KS_VBI_FLAG_FIELD1               = $0001;
  23545.   {$EXTERNALSYM KS_VBI_FLAG_FIELD1}
  23546.   KS_VBI_FLAG_FIELD2               = $0002;
  23547.   {$EXTERNALSYM KS_VBI_FLAG_FIELD2}
  23548.  
  23549.   KS_VBI_FLAG_MV_PRESENT           = $0100;
  23550.   {$EXTERNALSYM KS_VBI_FLAG_MV_PRESENT}
  23551.   KS_VBI_FLAG_MV_HARDWARE          = $0200;
  23552.   {$EXTERNALSYM KS_VBI_FLAG_MV_HARDWARE}
  23553.   KS_VBI_FLAG_MV_DETECTED          = $0400;
  23554.   {$EXTERNALSYM KS_VBI_FLAG_MV_DETECTED}
  23555.  
  23556.   KS_VBI_FLAG_TVTUNER_CHANGE       = $0010; // TvTunerChangeInfo is valid
  23557.   {$EXTERNALSYM KS_VBI_FLAG_TVTUNER_CHANGE}
  23558.   KS_VBI_FLAG_VBIINFOHEADER_CHANGE = $0020; // VBIInfoHeader is valid
  23559.   {$EXTERNALSYM KS_VBI_FLAG_VBIINFOHEADER_CHANGE}
  23560.  
  23561. type
  23562.   PKSVBIFrameInfo = ^TKSVBIFrameInfo;
  23563.   tagKS_VBI_FRAME_INFO = record
  23564.     ExtendedHeaderSize  : ULONG; // Size of this extended header
  23565.     dwFrameFlags        : DWORD; // Field1, Field2, or Frame; & etc
  23566.     PictureNumber       : int64; // Test only?
  23567.     DropCount           : int64; // Test only?
  23568.     dwSamplingFrequency : DWORD;
  23569.     TvTunerChangeInfo   : TKSTVTunerChangeInfo;
  23570.     VBIInfoHeader       : TKSVBIInfoHeader;
  23571.   end;
  23572.   {$EXTERNALSYM tagKS_VBI_FRAME_INFO}
  23573.   KS_VBI_FRAME_INFO = tagKS_VBI_FRAME_INFO;
  23574.   {$EXTERNALSYM KS_VBI_FRAME_INFO}
  23575.   PKS_VBI_FRAME_INFO = ^KS_VBI_FRAME_INFO;
  23576.   {$EXTERNALSYM PKS_VBI_FRAME_INFO}
  23577.   TKSVBIFrameInfo = tagKS_VBI_FRAME_INFO;
  23578.  
  23579.  
  23580. //===========================================================================
  23581. // Analog video formats, used with:
  23582. //      Analog Video Decoders
  23583. //      TVTuners
  23584. //      Analog Video Encoders
  23585. //
  23586. // XXX_STANDARDS_SUPPORTED returns a bitmask
  23587. //===========================================================================
  23588. const
  23589.   KS_AnalogVideo_None        = $00000000; // This is a digital sensor
  23590.   {$EXTERNALSYM KS_AnalogVideo_None}
  23591.   KS_AnalogVideo_NTSC_M      = $00000001; //        75 IRE Setup
  23592.   {$EXTERNALSYM KS_AnalogVideo_NTSC_M}
  23593.   KS_AnalogVideo_NTSC_M_J    = $00000002; // Japan,  0 IRE Setup
  23594.   {$EXTERNALSYM KS_AnalogVideo_NTSC_M_J}
  23595.   KS_AnalogVideo_NTSC_433    = $00000004;
  23596.   {$EXTERNALSYM KS_AnalogVideo_NTSC_433}
  23597.   KS_AnalogVideo_PAL_B       = $00000010;
  23598.   {$EXTERNALSYM KS_AnalogVideo_PAL_B}
  23599.   KS_AnalogVideo_PAL_D       = $00000020;
  23600.   {$EXTERNALSYM KS_AnalogVideo_PAL_D}
  23601.   KS_AnalogVideo_PAL_G       = $00000040;
  23602.   {$EXTERNALSYM KS_AnalogVideo_PAL_G}
  23603.   KS_AnalogVideo_PAL_H       = $00000080;
  23604.   {$EXTERNALSYM KS_AnalogVideo_PAL_H}
  23605.   KS_AnalogVideo_PAL_I       = $00000100;
  23606.   {$EXTERNALSYM KS_AnalogVideo_PAL_I}
  23607.   KS_AnalogVideo_PAL_M       = $00000200;
  23608.   {$EXTERNALSYM KS_AnalogVideo_PAL_M}
  23609.   KS_AnalogVideo_PAL_N       = $00000400;
  23610.   {$EXTERNALSYM KS_AnalogVideo_PAL_N}
  23611.   KS_AnalogVideo_PAL_60      = $00000800;
  23612.   {$EXTERNALSYM KS_AnalogVideo_PAL_60}
  23613.   KS_AnalogVideo_SECAM_B     = $00001000;
  23614.   {$EXTERNALSYM KS_AnalogVideo_SECAM_B}
  23615.   KS_AnalogVideo_SECAM_D     = $00002000;
  23616.   {$EXTERNALSYM KS_AnalogVideo_SECAM_D}
  23617.   KS_AnalogVideo_SECAM_G     = $00004000;
  23618.   {$EXTERNALSYM KS_AnalogVideo_SECAM_G}
  23619.   KS_AnalogVideo_SECAM_H     = $00008000;
  23620.   {$EXTERNALSYM KS_AnalogVideo_SECAM_H}
  23621.   KS_AnalogVideo_SECAM_K     = $00010000;
  23622.   {$EXTERNALSYM KS_AnalogVideo_SECAM_K}
  23623.   KS_AnalogVideo_SECAM_K1    = $00020000;
  23624.   {$EXTERNALSYM KS_AnalogVideo_SECAM_K1}
  23625.   KS_AnalogVideo_SECAM_L     = $00040000;
  23626.   {$EXTERNALSYM KS_AnalogVideo_SECAM_L}
  23627.   KS_AnalogVideo_SECAM_L1    = $00080000;
  23628.   {$EXTERNALSYM KS_AnalogVideo_SECAM_L1}
  23629.   KS_AnalogVideo_PAL_N_COMBO = $00100000;
  23630.   {$EXTERNALSYM KS_AnalogVideo_PAL_N_COMBO}
  23631.  
  23632.  
  23633.   KS_AnalogVideo_NTSC_Mask  = $00000007;
  23634.   {$EXTERNALSYM KS_AnalogVideo_NTSC_Mask}
  23635.   KS_AnalogVideo_PAL_Mask   = $00100FF0;
  23636.   {$EXTERNALSYM KS_AnalogVideo_PAL_Mask}
  23637.   KS_AnalogVideo_SECAM_Mask = $000FF000;
  23638.   {$EXTERNALSYM KS_AnalogVideo_SECAM_Mask}
  23639.  
  23640. //===========================================================================
  23641. // Property set definitions
  23642. // The comments show whether a given property is:
  23643. //      R  : READ only
  23644. //      w  : WRITE only
  23645. //      RW : READ / WRITE
  23646. //      O  : Optional (return E_UNSUPPORTED if you don't handle this)
  23647. //===========================================================================
  23648.  
  23649.   PROPSETID_ALLOCATOR_CONTROL : TGUID = '{53171960-148E-11d2-9979-0000C0CC16BA}';
  23650.   {$EXTERNALSYM PROPSETID_ALLOCATOR_CONTROL}
  23651.  
  23652. type
  23653.   KSPROPERTY_ALLOCATOR_CONTROL = (
  23654.     KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT, // R O (will allocate exactly this number of buffers)
  23655.     KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE // R O (return 2 DWORDs specifying surface size)
  23656.   );
  23657.   {$EXTERNALSYM KSPROPERTY_ALLOCATOR_CONTROL}
  23658.   TKSPropertyAllocatorControl = KSPROPERTY_ALLOCATOR_CONTROL;
  23659.  
  23660. //===========================================================================
  23661.  
  23662. const
  23663.   PROPSETID_VIDCAP_VIDEOPROCAMP : TGUID = '{C6E13360-30AC-11d0-A18C-00A0C9118956}';
  23664.   {$EXTERNALSYM PROPSETID_VIDCAP_VIDEOPROCAMP}
  23665.  
  23666. type
  23667.   KSPROPERTY_VIDCAP_VIDEOPROCAMP = (
  23668.     KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS,            // RW O
  23669.     KSPROPERTY_VIDEOPROCAMP_CONTRAST,              // RW O
  23670.     KSPROPERTY_VIDEOPROCAMP_HUE,                   // RW O
  23671.     KSPROPERTY_VIDEOPROCAMP_SATURATION,            // RW O
  23672.     KSPROPERTY_VIDEOPROCAMP_SHARPNESS,             // RW O
  23673.     KSPROPERTY_VIDEOPROCAMP_GAMMA,                 // RW O
  23674.     KSPROPERTY_VIDEOPROCAMP_COLORENABLE,           // RW O
  23675.     KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE,          // RW O
  23676.     KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION // RW O
  23677.   );
  23678.   {$EXTERNALSYM KSPROPERTY_VIDCAP_VIDEOPROCAMP}
  23679.   TKSPropertyVidcapVideoProcAmp = KSPROPERTY_VIDCAP_VIDEOPROCAMP;
  23680.  
  23681.   PKSPropertyVideoProcAmpS = ^TKSPropertyVideoProcAmpS;
  23682.   KSPROPERTY_VIDEOPROCAMP_S = record
  23683.     Property_    : KSPROPERTY;
  23684.     Value        : longint;     // Value to set or get
  23685.     Flags        : ULONG;       // KSPROPERTY_VIDEOPROCAMP_FLAGS_*
  23686.     Capabilities : ULONG;       // KSPROPERTY_VIDEOPROCAMP_FLAGS_*
  23687.   end;
  23688.   {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_S}
  23689.   PKSPROPERTY_VIDEOPROCAMP_S = ^KSPROPERTY_VIDEOPROCAMP_S;
  23690.   {$EXTERNALSYM PKSPROPERTY_VIDEOPROCAMP_S}
  23691.   TKSPropertyVideoProcAmpS = KSPROPERTY_VIDEOPROCAMP_S;
  23692.  
  23693. const
  23694.   KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO   = $0001;
  23695.   {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO}
  23696.   KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL = $0002;
  23697.   {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL}
  23698.  
  23699. //===========================================================================
  23700.  
  23701.   PROPSETID_TUNER : TGUID = '{6a2e0605-28e4-11d0-a18c-00a0c9118956}';
  23702.   {$EXTERNALSYM PROPSETID_TUNER}
  23703.  
  23704. type
  23705.   KSPROPERTY_TUNER = (
  23706.     KSPROPERTY_TUNER_CAPS,              // R  -overall device capabilities
  23707.     KSPROPERTY_TUNER_MODE_CAPS,         // R  -capabilities in this mode
  23708.     KSPROPERTY_TUNER_MODE,              // RW -set a mode (TV, FM, AM, DSS)
  23709.     KSPROPERTY_TUNER_STANDARD,          // R  -get TV standard (only if TV mode)
  23710.     KSPROPERTY_TUNER_FREQUENCY,         // RW -set/get frequency
  23711.     KSPROPERTY_TUNER_INPUT,             // RW -select an input
  23712.     KSPROPERTY_TUNER_STATUS,            // R  -tuning status
  23713.     KSPROPERTY_TUNER_IF_MEDIUM          // R O-Medium for IF or Transport Pin
  23714.   );
  23715.   {$EXTERNALSYM KSPROPERTY_TUNER}
  23716.   TKSPropertyTuner = KSPROPERTY_TUNER;
  23717.  
  23718.   KSPROPERTY_TUNER_MODES = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  23719.   {$EXTERNALSYM KSPROPERTY_TUNER_MODES}
  23720.   const
  23721.     KSPROPERTY_TUNER_MODE_TV            = $0001;
  23722.     {$EXTERNALSYM KSPROPERTY_TUNER_MODE_TV}
  23723.     KSPROPERTY_TUNER_MODE_FM_RADIO      = $0002;
  23724.     {$EXTERNALSYM KSPROPERTY_TUNER_MODE_FM_RADIO}
  23725.     KSPROPERTY_TUNER_MODE_AM_RADIO      = $0004;
  23726.     {$EXTERNALSYM KSPROPERTY_TUNER_MODE_AM_RADIO}
  23727.     KSPROPERTY_TUNER_MODE_DSS           = $0008;
  23728.     {$EXTERNALSYM KSPROPERTY_TUNER_MODE_DSS}
  23729.     KSPROPERTY_TUNER_MODE_ATSC          = $0010;  // also used for DVB-T, DVB-C
  23730.     {$EXTERNALSYM KSPROPERTY_TUNER_MODE_ATSC}
  23731.  
  23732. // Describes how the device tunes.  Only one of these flags may be set
  23733. // in KSPROPERTY_TUNER_MODE_CAPS_S.Strategy
  23734.  
  23735. // Describe how the driver should attempt to tune:
  23736. // EXACT:   just go to the frequency specified (no fine tuning)
  23737. // FINE:    (slow) do an exhaustive search for the best signal
  23738. // COARSE:  (fast) use larger frequency jumps to just determine if any signal
  23739.  
  23740. type
  23741.   KS_TUNER_TUNING_FLAGS = (
  23742.   {$IFNDEF COMPILER6_UP}
  23743.     KS_TUNER_TUNING_INVALID_0,
  23744.     KS_TUNER_TUNING_EXACT,     // No fine tuning
  23745.   {$ELSE}
  23746.     KS_TUNER_TUNING_EXACT = 1,
  23747.   {$ENDIF}
  23748.     KS_TUNER_TUNING_FINE,      // Fine grained search
  23749.     KS_TUNER_TUNING_COARSE     // Coarse search
  23750.   );
  23751.   {$EXTERNALSYM KS_TUNER_TUNING_FLAGS}
  23752.  
  23753.   KS_TUNER_STRATEGY = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  23754.   {$EXTERNALSYM KS_TUNER_STRATEGY}
  23755.   const
  23756.     KS_TUNER_STRATEGY_PLL             = $01; // Tune by PLL offset
  23757.     {$EXTERNALSYM KS_TUNER_STRATEGY_PLL}
  23758.     KS_TUNER_STRATEGY_SIGNAL_STRENGTH = $02; // Tune by signal strength
  23759.     {$EXTERNALSYM KS_TUNER_STRATEGY_SIGNAL_STRENGTH}
  23760.     KS_TUNER_STRATEGY_DRIVER_TUNES    = $04; // Driver does fine tuning
  23761.     {$EXTERNALSYM KS_TUNER_STRATEGY_DRIVER_TUNES}
  23762.  
  23763. type
  23764.   PKSPropertyTunerCapsS = ^TKSPropertyTunerCapsS;
  23765.   KSPROPERTY_TUNER_CAPS_S = record
  23766.     Property_        : KSPROPERTY ;
  23767.     ModesSupported   : ULONG  ;        // KS_PROPERTY_TUNER_MODES_*
  23768.     VideoMedium      : TKSPinMedium ; // GUID_NULL (no pin), or GUID
  23769.     TVAudioMedium    : TKSPinMedium ; // GUID_NULL (no pin), or GUID
  23770.     RadioAudioMedium : TKSPinMedium ; // GUID_NULL (no pin), or GUID
  23771.   end;
  23772.   {$EXTERNALSYM KSPROPERTY_TUNER_CAPS_S}
  23773.   PKSPROPERTY_TUNER_CAPS_S = ^KSPROPERTY_TUNER_CAPS_S;
  23774.   {$EXTERNALSYM PKSPROPERTY_TUNER_CAPS_S}
  23775.   TKSPropertyTunerCapsS = KSPROPERTY_TUNER_CAPS_S;
  23776.  
  23777.   PKSPropertyTunerIfMediumS = ^TKSPropertyTunerIfMediumS;
  23778.   KSPROPERTY_TUNER_IF_MEDIUM_S = record
  23779.     Property_ : KSPROPERTY;
  23780.     IFMedium  : TKSPinMedium; // GUID_NULL (no pin), or GUID
  23781.   end;
  23782.   {$EXTERNALSYM KSPROPERTY_TUNER_IF_MEDIUM_S}
  23783.   PKSPROPERTY_TUNER_IF_MEDIUM_S = ^KSPROPERTY_TUNER_IF_MEDIUM_S;
  23784.   {$EXTERNALSYM PKSPROPERTY_TUNER_IF_MEDIUM_S}
  23785.   TKSPropertyTunerIfMediumS = KSPROPERTY_TUNER_IF_MEDIUM_S;
  23786.  
  23787.   PKSPropertyTunerModeCapsS = ^TKSPropertyTunerModeCapsS;
  23788.   KSPROPERTY_TUNER_MODE_CAPS_S = record
  23789.     Property_          : KSPROPERTY;
  23790.     Mode               : ULONG; // IN: KSPROPERTY_TUNER_MODE
  23791.     StandardsSupported : ULONG; // KS_AnalogVideo_* (if TV or DSS)
  23792.     MinFrequency       : ULONG; // Hz
  23793.     MaxFrequency       : ULONG; // Hz
  23794.     TuningGranularity  : ULONG; // Hz
  23795.     NumberOfInputs     : ULONG; // count of inputs
  23796.     SettlingTime       : ULONG; // milliSeconds
  23797.     Strategy           : ULONG; // KS_TUNER_STRATEGY
  23798.   end;
  23799.   {$EXTERNALSYM KSPROPERTY_TUNER_MODE_CAPS_S}
  23800.   PKSPROPERTY_TUNER_MODE_CAPS_S = ^KSPROPERTY_TUNER_MODE_CAPS_S;
  23801.   {$EXTERNALSYM PKSPROPERTY_TUNER_MODE_CAPS_S}
  23802.   TKSPropertyTunerModeCapsS = KSPROPERTY_TUNER_MODE_CAPS_S;
  23803.  
  23804.   PKSPropertyTunerModeS = ^TKSPropertyTunerModeS;
  23805.   KSPROPERTY_TUNER_MODE_S = record
  23806.     Property_ : KSPROPERTY;
  23807.     Mode      : ULONG;      // IN: KSPROPERTY_TUNER_MODE
  23808.   end;
  23809.   {$EXTERNALSYM KSPROPERTY_TUNER_MODE_S}
  23810.   PKSPROPERTY_TUNER_MODE_S = ^KSPROPERTY_TUNER_MODE_S;
  23811.   {$EXTERNALSYM PKSPROPERTY_TUNER_MODE_S}
  23812.   TKSPropertyTunerModeS = KSPROPERTY_TUNER_MODE_S;
  23813.  
  23814.   PKSPropertyTunerFrequencyS = ^TKSPropertyTunerFrequencyS;
  23815.   KSPROPERTY_TUNER_FREQUENCY_S = record
  23816.     Property_       : KSPROPERTY;
  23817.     Frequency       : ULONG; // Hz
  23818.     LastFrequency   : ULONG; // Hz (last known