(*==========================================================================;
*
* Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved.
*
* DirectX header version 98.08.07
*
* Present by Hiroyuki Hori.
*
* E-Mail: hori@ingjapan.ne.jp
* Homepage: http://www.ingjapan.ne.jp/hori/index-e.html
*
* Present unit:
* DirectX.pas DirectX 6 (DirectX 6 SDK)
* DShow.pas DirectShow (DirectX Media SDK 5.1)
* DAnim.pas DirectAnimation (DirectX Media SDK 5.1)
*
***************************************************************************)
unit DShow;
interface
{$Z4}
{$A+}
{$IfNDef D7UP}
{$WEAKPACKAGEUNIT}
{$EndIf}
uses Windows, ActiveX, DirectX, MMSystem;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: comlite.h
*
***************************************************************************)
function QzInitialize(pvReserved: Pointer): HResult; stdcall;
procedure QzUninitialize; stdcall;
procedure QzFreeUnusedLibraries; stdcall;
function QzGetMalloc(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
function QzTaskMemAlloc(cb: Longint): Pointer; stdcall;
function QzTaskMemRealloc(pv: Pointer; cb: Longint): Pointer; stdcall;
procedure QzTaskMemFree(pv: Pointer); stdcall;
function QzCreateFilterObject(const clsid: TCLSID; unkOuter: IUnknown;
dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
function QzCLSIDFromString(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
function QzStringFromGUID2(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: errors.h
*
***************************************************************************)
const
VFW_FIRST_CODE = $200;
MAX_ERROR_TEXT_LEN = 160;
type
AMGETERRORTEXTPROCA = function(hr: HResult; pbuffer: PChar; MaxLen: DWORD): BOOL; stdcall;
AMGETERRORTEXTPROCW = function(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): BOOL; stdcall;
AMGETERRORTEXTPROC = AMGETERRORTEXTPROCA;
function AMGetErrorTextA(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
function AMGetErrorTextW(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
function AMGetErrorText(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: strmif.h
*
***************************************************************************)
const
IID_IPin: TGUID = '{56A86891-0AD4-11CE-B03A-0020AF0BA770}';
IID_IEnumPins: TGUID = '{56A86892-0AD4-11CE-B03A-0020AF0BA770}';
IID_IEnumMediaTypes: TGUID = '{89C31040-846B-11CE-97D3-00AA0055595A}';
IID_IFilterGraph: TGUID = '{56A8689F-0AD4-11CE-B03A-0020AF0BA770}';
IID_IEnumFilters: TGUID = '{56A86893-0AD4-11CE-B03A-0020AF0BA770}';
IID_IMediaFilter: TGUID = '{56A86899-0AD4-11CE-B03A-0020AF0BA770}';
IID_IBaseFilter: TGUID = '{56A86895-0AD4-11CE-B03A-0020AF0BA770}';
IID_IReferenceClock: TGUID = '{56A86897-0AD4-11CE-B03A-0020AF0BA770}';
IID_IReferenceClock2: TGUID = '{36B73885-C2C8-11CF-8B46-00805F6CEF60}';
IID_IMediaSample: TGUID = '{56A8689A-0AD4-11CE-B03A-0020AF0BA770}';
IID_IMediaSample2: TGUID = '{36B73884-C2C8-11CF-8B46-00805F6CEF60}';
IID_IMemAllocator: TGUID = '{56A8689C-0AD4-11CE-B03A-0020AF0BA770}';
IID_IMemInputPin: TGUID = '{56A8689D-0AD4-11CE-B03A-0020AF0BA770}';
IID_IAMovieSetup: TGUID = '{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}';
IID_IMediaSeeking: TGUID = '{36B73880-C2C8-11CF-8B46-00805F6CEF60}';
IID_IEnumRegFilters: TGUID = '{56A868A4-0AD4-11CE-B03A-0020AF0BA770}';
IID_IFilterMapper: TGUID = '{56A868A3-0AD4-11CE-B03A-0020AF0BA770}';
IID_IFilterMapper2: TGUID = '{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}';
IID_IQualityControl: TGUID = '{56A868A5-0AD4-11CE-B03A-0020AF0BA770}';
IID_IOverlayNotify: TGUID = '{56A868A0-0AD4-11CE-B03A-0020AF0BA770}';
IID_IOverlay: TGUID = '{56A868A1-0AD4-11CE-B03A-0020AF0BA770}';
IID_IMediaEventSink: TGUID = '{56A868A2-0AD4-11CE-B03A-0020AF0BA770}';
IID_IFileSourceFilter: TGUID = '{56A868A6-0AD4-11CE-B03A-0020AF0BA770}';
IID_IFileSinkFilter: TGUID = '{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}';
IID_IFileSinkFilter2: TGUID = '{00855B90-CE1B-11D0-BD4F-00A0C911CE86}';
IID_IFileAsyncIO: TGUID = '{56A868A7-0AD4-11CE-B03A-0020AF0BA770}';
IID_IGraphBuilder: TGUID = '{56A868A9-0AD4-11CE-B03A-0020AF0BA770}';
IID_ICaptureGraphBuilder: TGUID = '{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}';
IID_IAMCopyCaptureFileProgress: TGUID = '{670D1D20-A068-11D0-B3F0-00AA003761C5}';
IID_IFilterGraph2: TGUID = '{36B73882-C2C8-11CF-8B46-00805F6CEF60}';
IID_IStreamBuilder: TGUID = '{56A868BF-0AD4-11CE-B03A-0020AF0BA770}';
IID_IAsyncReader: TGUID = '{56A868AA-0AD4-11CE-B03A-0020AF0BA770}';
IID_IGraphVersion: TGUID = '{56A868AB-0AD4-11CE-B03A-0020AF0BA770}';
IID_IResourceConsumer: TGUID = '{56A868AD-0AD4-11CE-B03A-0020AF0BA770}';
IID_IResourceManager: TGUID = '{56A868AC-0AD4-11CE-B03A-0020AF0BA770}';
IID_IDistributorNotify: TGUID = '{56A868AF-0AD4-11CE-B03A-0020AF0BA770}';
IID_IAMStreamControl: TGUID = '{36b73881-c2c8-11cf-8b46-00805f6cef60}';
IID_ISeekingPassThru: TGUID = '{36B73883-C2C8-11CF-8B46-00805F6CEF60}';
IID_IAMStreamConfig: TGUID = '{C6E13340-30AC-11d0-A18C-00A0C9118956}';
IID_IConfigInterleaving: TGUID = '{BEE3D220-157B-11d0-BD23-00A0C911CE86}';
IID_IConfigAviMux: TGUID = '{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}';
IID_IAMVideoCompression: TGUID = '{C6E13343-30AC-11d0-A18C-00A0C9118956}';
IID_IAMVfwCaptureDialogs: TGUID = '{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}';
IID_IAMVfwCompressDialogs: TGUID = '{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}';
IID_IAMDroppedFrames: TGUID = '{C6E13344-30AC-11d0-A18C-00A0C9118956}';
IID_IAMAudioInputMixer: TGUID = '{54C39221-8380-11d0-B3F0-00AA003761C5}';
IID_IAMAnalogVideoDecoder: TGUID = '{C6E13350-30AC-11d0-A18C-00A0C9118956}';
IID_IAMVideoProcAmp: TGUID = '{C6E13360-30AC-11d0-A18C-00A0C9118956}';
IID_IAMCameraControl: TGUID = '{C6E13370-30AC-11d0-A18C-00A0C9118956}';
IID_IAMCrossbar: TGUID = '{C6E13380-30AC-11d0-A18C-00A0C9118956}';
IID_IAMTuner: TGUID = '{211A8761-03AC-11d1-8D13-00AA00BD8339}';
IID_IAMTunerNotification: TGUID = '{211A8760-03AC-11d1-8D13-00AA00BD8339}';
IID_IAMTVTuner: TGUID = '{211A8766-03AC-11d1-8D13-00AA00BD8339}';
IID_IBPCSatelliteTuner: TGUID = '{211A8765-03AC-11d1-8D13-00AA00BD8339}';
IID_IAMTVAudio: TGUID = '{83EC1C30-23D1-11d1-99E6-00A0C9560266}';
IID_IAMTVAudioNotification: TGUID = '{83EC1C33-23D1-11D1-99E6-00A0C9560266}';
IID_IAMAnalogVideoEncoder: TGUID = '{C6E133B0-30AC-11d0-A18C-00A0C9118956}';
IID_IMediaPropertyBag: TGUID = '{6025A880-C0D5-11D0-BD4E-00A0C911CE86}';
IID_IPersistMediaPropertyBag: TGUID = '{5738E040-B67F-11d0-BD4D-00A0C911CE86}';
IID_IAMPhysicalPinInfo: TGUID = '{F938C991-3029-11CF-8C44-00AA006B6814}';
IID_IAMExtDevice: TGUID = '{B5730A90-1A2C-11CF-8C23-00AA006B6814}';
IID_IAMExtTransport: TGUID = '{A03CD5F0-3045-11CF-8C44-00AA006B6814}';
IID_IAMTimecodeReader: TGUID = '{9B496CE1-811B-11CF-8C77-00AA006B6814}';
IID_IAMTimecodeGenerator: TGUID = '{9B496CE0-811B-11CF-8C77-00AA006B6814}';
IID_IAMTimecodeDisplay: TGUID = '{9B496CE2-811B-11CF-8C77-00AA006B6814}';
IID_IAMDevMemoryAllocator: TGUID = '{C6545BF0-E76B-11D0-BD52-00A0C911CE86}';
IID_IAMDevMemoryControl: TGUID = '{C6545BF1-E76B-11D0-BD52-00A0C911CE86}';
IID_IAMStreamSelect: TGUID = '{C1960960-17F5-11D1-ABE1-00A0C905F375}';
IID_IAMovie: TGUID = '{359ACE10-7688-11CF-8B23-00805F6CEF60}';
IID_ICreateDevEnum: TGUID = '{29840822-5B84-11D0-BD3B-00A0C911CE86}';
IID_IDvdControl: TGUID = '{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}';
IID_IDvdInfo: TGUID = '{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}';
IID_IDvdGraphBuilder: TGUID = '{FCC152B6-F372-11d0-8E00-00C04FD7C08B}';
const
CHARS_IN_GUID = 39;
MAX_PIN_NAME = 128;
MAX_FILTER_NAME = 128;
type
TAM_Media_Type = record
majortype: TGUID;
subtype: TGUID;
bFixedSizeSamples: BOOL;
bTemporalCompression: BOOL;
lSampleSize: ULONG;
formattype: TGUID;
pUnk: IUnknown;
cbFormat: ULONG;
pbFormat: Pointer;
end;
PAM_Media_Type = ^TAM_Media_Type;
TPin_Direction = (
PINDIR_INPUT,
PINDIR_OUTPUT
);
TRefTime = double;
HSEMAPHORE = Longint;
TAllocator_Properties = record
cBuffers: Longint;
cbBuffer: Longint;
cbAlign: Longint;
cbPrefix: Longint;
end;
IBaseFilter = interface;
TPin_Info = record
pFilter: IBaseFilter;
dir: TPin_Direction;
achName: array[0..127] of WCHAR;
end;
IEnumMediaTypes = interface;
IPin = interface(IUnknown)
['{56A86891-0AD4-11CE-B03A-0020AF0BA770}']
function Connect(pReceivePin: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
function ReceiveConnection(pConnector: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
function Disconnect: HResult; stdcall;
function ConnectedTo(out pPin: IPin): HResult; stdcall;
function ConnectionMediaType(out pmt: TAM_Media_Type): HResult; stdcall;
function QueryPinInfo(out pInfo: TPin_Info): HResult; stdcall;
function QueryDirection(var pPinDir: TPin_Direction): HResult; stdcall;
function QueryId(var Id: LPWSTR): HResult; stdcall;
function QueryAccept(const pmt: TAM_Media_Type): HResult; stdcall;
function EnumMediaTypes(out ppEnum: IEnumMediaTypes): HResult; stdcall;
function QueryInternalConnections(out apPin: IPin; var nPin: ULONG): HResult; stdcall;
function EndOfStream: HResult; stdcall;
function BeginFlush: HResult; stdcall;
function EndFlush: HResult; stdcall;
function NewSegment(tStart, tStop: TReference_Time; dRate: double): HResult; stdcall;
end;
IEnumPins = interface(IUnknown)
['{56A86892-0AD4-11CE-B03A-0020AF0BA770}']
function Next(cPins: ULONG; out ppPins; var pcFetched: ULONG): HResult; stdcall;
function Skip(cPins: ULONG): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out ppEnum: IEnumPins): HResult; stdcall;
end;
IEnumMediaTypes = interface(IUnknown)
['{89C31040-846B-11CE-97D3-00AA0055595A}']
function Next(cMediaTypes: ULONG; var ppMediaTypes: PAM_Media_Type;
var pcFetched: ULONG): HResult; stdcall;
function Skip(cMediaTypes: ULONG): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out ppEnum: IEnumMediaTypes): HResult; stdcall;
end;
IEnumFilters = interface;
IFilterGraph = interface(IUnknown)
['{56A8689F-0AD4-11CE-B03A-0020AF0BA770}']
function AddFilter(pFilter: IBaseFilter; pName: LPCWSTR): HResult; stdcall;
function RemoveFilter(pFilter: IBaseFilter): HResult; stdcall;
function EnumFilters(out ppEnum: IEnumFilters): HResult; stdcall;
function FindFilterByName(pName: LPCWSTR; out ppFilter: IBaseFilter): HResult; stdcall;
function ConnectDirect(ppinOut, ppinIn: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
function Reconnect(ppin: IPin): HResult; stdcall;
function Disconnect(ppin: IPin): HResult; stdcall;
function SetDefaultSyncSource: HResult; stdcall;
end;
IEnumFilters = interface(IUnknown)
['{56A86893-0AD4-11CE-B03A-0020AF0BA770}']
function Next(cFilters: ULONG; out ppFilter: IBaseFilter;
var pcFetched: ULONG): HResult; stdcall;
function Skip(cFilters: ULONG): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out ppEnum: IEnumFilters): HResult; stdcall;
end;
TFilter_State = (
State_Stopped,
State_Paused,
State_Running
);
IReferenceClock = interface;
IMediaFilter = interface(IPersist)
['{56A86899-0AD4-11CE-B03A-0020AF0BA770}']
function Stop: HResult; stdcall;
function Pause: HResult; stdcall;
function Run(tStart: TReference_Time): HResult; stdcall;
function GetState(dwMilliSecsTimeout: DWORD; var State: TFilter_State): HResult; stdcall;
function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
function GetSyncSource(out pClock: IReferenceClock): HResult; stdcall;
end;
TFilterInfo = record
achName: array[0..127] of WCHAR;
pGraph: IFilterGraph;
end;
IBaseFilter = interface(IMediaFilter)
['{56A86895-0AD4-11CE-B03A-0020AF0BA770}']
function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
function FindPin(Id: LPCWSTR; out ppPin: IPin): HResult; stdcall;
function QueryFilterInfo(out pInfo: TFilterInfo): HResult; stdcall;
function JoinFilterGraph(pGraph: IFilterGraph; pName: LPCWSTR): HResult; stdcall;
function QueryVendorInfo(var pVendorInfo: LPWSTR): HResult; stdcall;
end;
IReferenceClock = interface(IUnknown)
['{56A86897-0AD4-11CE-B03A-0020AF0BA770}']
function GetTime(var pTime: TReference_Time): HResult; stdcall;
function AdviseTime(baseTime, streamTime: TReference_Time;
hEvent: THandle; var pdwAdviseCookie: DWORD): HResult; stdcall;
function AdvisePeriodic(startTime, periodTime: TReference_Time;
hSemaphore: HSEMAPHORE; var pdwAdviseCookie: DWORD): HResult; stdcall;
function Unadvise(dwAdviseCookie: DWORD): HResult; stdcall;
end;
IReferenceClock2 = interface(IReferenceClock)
['{36B73885-C2C8-11CF-8B46-00805F6CEF60}']
end;
IMediaSample = interface(IUnknown)
['{56A8689A-0AD4-11CE-B03A-0020AF0BA770}']
function GetPointer(var ppBuffer: Pointer): HResult; stdcall;
function GetSize: Longint; stdcall;
function GetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
function SetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
function IsSyncPoint: HResult; stdcall;
function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
function IsPreroll: HResult; stdcall;
function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
function GetActualDataLength: Longint; stdcall;
function SetActualDataLength(lLen: Longint): HResult; stdcall;
function GetMediaType(var ppMediaType: PAM_Media_Type): HResult; stdcall;
function SetMediaType(const pMediaType: TAM_Media_Type): HResult; stdcall;
function IsDiscontinuity: HResult; stdcall;
function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
function GetMediaTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
function SetMediaTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
end;
const
AM_SAMPLE_SPLICEPOINT = $1;
AM_SAMPLE_PREROLL = $2;
AM_SAMPLE_DATADISCONTINUITY = $4;
AM_SAMPLE_TYPECHANGED = $8;
AM_SAMPLE_TIMEVALID = $10;
AM_SAMPLE_TIMEDISCONTINUITY = $40;
AM_SAMPLE_FLUSH_ON_PAUSE = $80;
AM_SAMPLE_STOPVALID = $100;
AM_SAMPLE_ENDOFSTREAM = $200;
AM_STREAM_MEDIA = 0;
AM_STREAM_CONTROL = 1;
type
TAM_Sample2_Properties = record
cbData: DWORD;
dwTypeSpecificFlags: DWORD;
dwSampleFlags: DWORD;
lActual: Longint;
tStart: TReference_Time;
tStop: TReference_Time;
dwStreamId: DWORD;
pMediaType: PAM_Media_Type;
pbBuffer: Pointer;
cbBuffer: Longint;
end;
type
IMediaSample2 = interface(IMediaSample)
['{36B73884-C2C8-11CF-8B46-00805F6CEF60}']
function GetProperties(cbProperties: DWORD; var pbProperties): HResult; stdcall;
function SetProperties(cbProperties: DWORD; const pbProperties): HResult; stdcall;
end;
const
AM_GBF_PREVFRAMESKIPPED = 1;
AM_GBF_NOTASYNCPOINT = 2;
AM_GBF_NOWAIT = 4;
type
IMemAllocator = interface(IUnknown)
['{56A8689C-0AD4-11CE-B03A-0020AF0BA770}']
function SetProperties(const pRequest: TAllocator_Properties;
var pActual: TAllocator_Properties): HResult; stdcall;
function GetProperties(var pProps: TAllocator_Properties): HResult; stdcall;
function Commit: HResult; stdcall;
function Decommit: HResult; stdcall;
function GetBuffer(out ppBuffer: IMediaSample;
var pStartTime, pEndTime: TReference_Time; dwFlags: DWORD): HResult; stdcall;
function ReleaseBuffer(pBuffer: IMediaSample): HResult; stdcall;
end;
IMemInputPin = interface(IUnknown)
['{56A8689D-0AD4-11CE-B03A-0020AF0BA770}']
function GetAllocator(out ppAllocator: IMemAllocator): HResult; stdcall;
function NotifyAllocator(pAllocator: IMemAllocator; bReadOnly: BOOL): HResult; stdcall;
function GetAllocatorRequirements(var pProps: TAllocator_Properties): HResult; stdcall;
function Receive(pSample: IMediaSample): HResult; stdcall;
function ReceiveMultiple(const pSamples; nSamples: Longint;
var nSamplesProcessed: Longint): HResult; stdcall;
function ReceiveCanBlock: HResult; stdcall;
end;
IAMovieSetup = interface(IUnknown)
['{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}']
function Register: HResult; stdcall;
function Unregister: HResult; stdcall;
end;
const
AM_SEEKING_NoPositioning = 0;
AM_SEEKING_AbsolutePositioning = $1;
AM_SEEKING_RelativePositioning = $2;
AM_SEEKING_IncrementalPositioning = $3;
AM_SEEKING_PositioningBitsMask = $3;
AM_SEEKING_SeekToKeyFrame = $4;
AM_SEEKING_ReturnTime = $8;
AM_SEEKING_Segment = $10;
AM_SEEKING_NoFlush = $20;
AM_SEEKING_CanSeekAbsolute = $1;
AM_SEEKING_CanSeekForwards = $2;
AM_SEEKING_CanSeekBackwards = $4;
AM_SEEKING_CanGetCurrentPos = $8;
AM_SEEKING_CanGetStopPos = $10;
AM_SEEKING_CanGetDuration = $20;
AM_SEEKING_CanPlayBackwards = $40;
AM_SEEKING_CanDoSegments = $80;
AM_SEEKING_Source = $100;
type
IMediaSeeking = interface(IUnknown)
['{36B73880-C2C8-11CF-8B46-00805F6CEF60}']
function GetCapabilities(var pCapabilities: DWORD): HResult; stdcall;
function CheckCapabilities(var pCapabilities: DWORD): HResult; stdcall;
function IsFormatSupported(const pFormat: TGUID): HResult; stdcall;
function QueryPreferredFormat(var pFormat: TGUID): HResult; stdcall;
function GetTimeFormat(var pFormat: TGUID): HResult; stdcall;
function IsUsingTimeFormat(const pFormat: TGUID): HResult; stdcall;
function SetTimeFormat(const pFormat: TGUID): HResult; stdcall;
function GetDuration(var pDuration: LONGLONG): HResult; stdcall;
function GetStopPosition(var pStop: LONGLONG): HResult; stdcall;
function GetCurrentPosition(var pCurrent: LONGLONG): HResult; stdcall;
function ConvertTimeFormat(var pTarget: LONGLONG; const pTargetFormat: TGUID;
Source: LONGLONG; const pSourceFormat: TGUID): HResult; stdcall;
function SetPositions(var pCurrent: LONGLONG; dwCurrentFlags: DWORD;
var pStop: LONGLONG; dwStopFlags: DWORD): HResult; stdcall;
function GetPositions(var pCurrent, pStop: LONGLONG): HResult; stdcall;
function GetAvailable(var pEarliest, pLatest: LONGLONG): HResult; stdcall;
function SetRate(dRate: double): HResult; stdcall;
function GetRate(var pdRate: double): HResult; stdcall;
function GetPreroll(var pllPreroll: LONGLONG): HResult; stdcall;
end;
const
AM_MEDIAEVENT_NONOTIFY = $01;
type
TRefFilter = record
Clsid: TGUID;
Name: LPWSTR;
end;
PRefFilter = ^TRefFilter;
IEnumRegFilters = interface(IUnknown)
['{56A868A4-0AD4-11CE-B03A-0020AF0BA770}']
function Next(cFilters: ULONG; var apRegFilter: PRefFilter;
var pcFetched: ULONG): HResult; stdcall;
function Skip(cFilters: ULONG): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out ppEnum: IEnumRegFilters): HResult; stdcall;
end;
const
MERIT_PREFERRED = $800000;
MERIT_NORMAL = $600000;
MERIT_UNLIKELY = $400000;
MERIT_DO_NOT_USE = $200000;
MERIT_SW_COMPRESSOR = $100000;
MERIT_HW_COMPRESSOR = $100050;
type
IFilterMapper = interface(IUnknown)
['{56A868A3-0AD4-11CE-B03A-0020AF0BA770}']
function RegisterFilter(const clsid: TGUID; Name: LPCWSTR; dwMerit: DWORD): HResult; stdcall;
function RegisterFilterInstance(const clsid: TGUID; Name: LPCWSTR;
var MRId: TGUID): HResult; stdcall;
function RegisterPin(const Filter: TGUID; Name: LPCWSTR;
bRendered, bOutput, bZero, bMany: BOOL; const ConnectsToFilter: TGUID;
ConnectsToPin: LPCWSTR): HResult; stdcall;
function RegisterPinType(const clsFilter: TGUID; strName: LPCWSTR;
const clsMajorType, clsSubType: TGUID): HResult; stdcall;
function UnregisterFilter(const Filter: TGUID): HResult; stdcall;
function UnregisterFilterInstance(const MRId: TGUID): HResult; stdcall;
function UnregisterPin(const Filter: TGUID; Name: LPCWSTR): HResult; stdcall;
function EnumMatchingFilters(out ppEnum: IEnumRegFilters; dwMerit: DWORD;
bInputNeeded: BOOL; const clsInMaj, clsInSub: TGUID;
bRender, bOututNeeded: BOOL; const clsOutMaj, clsOutSub: TGUID): HResult; stdcall;
end;
PRefInTypes = ^TRefInTypes;
TRefInTypes = record
clsMajorType: PGUID;
clsMinorType: PGUID;
end;
PRegFilterPins = ^TRegFilterPins;
TRegFilterPins = record
strName: LPWSTR;
bRendered: BOOL;
bOutput: BOOL;
bZero: BOOL;
bMany: BOOL;
oFilter: PGUID;
strConnectsToPin: PWCHAR;
nMediaTypes: UINT;
lpMediaType: PRefInTypes;
end;
PRegPinMedium = ^TRegPinMedium;
TRegPinMedium = record
clsMedium: TGUID;
dw1: DWORD;
dw2: DWORD;
end;
const
REG_PINFLAG_B_ZERO = $1;
REG_PINFLAG_B_RENDERER = $2;
REG_PINFLAG_B_MANY = $4;
REG_PINFLAG_B_OUTPUT = $8;
type
PRegFilterPins2 = ^TRegFilterPins2;
TRegFilterPins2 = record
dwFlags: DWORD;
cInstances: UINT;
nMediaTypes: UINT;
lpMediaType: PRefInTypes;
lpMedium: PRegPinMedium;
clsPinCategory: PGUID;
end;
TRegFilter2 = record
dwVersion: DWORD;
dwMerit: DWORD;
case Integer of
0: (
cPins: ULONG;
cPins2: ULONG;
);
1: (
rgPins: PRegFilterPins;
rgPins2: PRegFilterPins2;
);
end;
IFilterMapper2 = interface(IUnknown)
['{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}']
function CreateCategory(const clsidCategory: TGUID; dwCategoryMerit: DWORD;
Description: LPCWSTR): HResult; stdcall;
function UnregisterFilter(const pclsidCategory: TGUID;
szInstance: PWCHAR; const Filter: TGUID): HResult; stdcall;
function RegisterFilter(const clsidFilter: TGUID; Name: LPCWSTR;
out ppMoniker: IMoniker; const pclsidCategory: TGUID;
szInstance: PWCHAR; const prf2: TRegFilter2): HResult; stdcall;
function EnumMatchingFilters(out ppEnum: IEnumMoniker; dwFlags: DWORD;
bExactMatch: BOOL; dwMerit: DWORD; bInputNeeded: BOOL; cInputTypes: DWORD;
const pInputTypes, pPinCategoryIn: TGUID; bRender, bOutputNeeded: BOOL;
cOutputTypes: DWORD; const pMedOut: TRegPinMedium;
const pPinCategoryOut: TGUID): HResult; stdcall;
end;
TQualityMessageType = (
Famine,
Flood
);
TQuality = record
Typ: TQualityMessageType;
Proportion: Longint;
Late: TReference_Time;
TimeStamp: TReference_Time;
end;
IQualityControl = interface(IUnknown)
['{56A868A5-0AD4-11CE-B03A-0020AF0BA770}']
function Notify(pSelf: IBaseFilter; q: TQuality): HResult; stdcall;
function SetSink(piqc: IQualityControl): HResult; stdcall;
end;
const
CK_NOCOLORKEY = $0;
CK_INDEX = $1;
CK_RGB = $2;
type
TColorKey = record
KeyType: DWORD;
PaletteIndex: DWORD;
LowColorValue: COLORREF;
HighColorValue: COLORREF;
end;
const
ADVISE_NONE = 0;
ADVISE_CLIPPING = $1;
ADVISE_PALETTE = $2;
ADVISE_COLORKEY = $4;
ADVISE_POSITION = $8;
ADVISE_ALL = ADVISE_CLIPPING or ADVISE_PALETTE or ADVISE_COLORKEY or ADVISE_POSITION;
type
IOverlayNotify = interface(IUnknown)
['{56A868A0-0AD4-11CE-B03A-0020AF0BA770}']
function OnPaletteChange(dwColors: DWORD; const pPalette): HResult; stdcall;
function OnClipChange(const pSourceRect, pDestinationRect: TRect;
const pRgnData: TRgnData): HResult; stdcall;
function OnColorKeyChange(const pColorKey: TColorKey): HResult; stdcall;
function OnPositionChange(const pSourceRect, pDestinationRect: TRect): HResult; stdcall;
end;
IOverlay = interface(IUnknown)
['{56A868A1-0AD4-11CE-B03A-0020AF0BA770}']
function GetPalette(var pdwColors: DWORD; var ppPalette): HResult; stdcall;
function SetPalette(dwColors: DWORD; const pPalette): HResult; stdcall;
function GetDefaultColorKey(var pColorKey: TColorKey): HResult; stdcall;
function GetColorKey(var pColorKey: TColorKey): HResult; stdcall;
function SetColorKey(const pColorKey: TColorKey): HResult; stdcall;
function GetWindowHandle(var pHwnd: HWND): HResult; stdcall;
function GetClipList(var pSourceRect, pDestinationRect: TRect;
var ppRgnData: PRgnData): HResult; stdcall;
function GetVideoPosition(var pSourceRect, pDestinationRect: TRect): HResult; stdcall;
function Advise(pOverlayNotify: IOverlayNotify; dwInterests: DWORD): HResult; stdcall;
function Unadvise: HResult; stdcall;
end;
IMediaEventSink = interface(IUnknown)
['{56A868A2-0AD4-11CE-B03A-0020AF0BA770}']
function Notify(EventCode, EventParam1, EventParam2: Longint): HResult; stdcall;
end;
IFileSourceFilter = interface(IUnknown)
['{56A868A6-0AD4-11CE-B03A-0020AF0BA770}']
function Load(pszFileName: PWCHAR; const pmt: TAM_Media_Type): HResult; stdcall;
function GetCurFile(var ppszFileName: POLESTR; out pmt: TAM_Media_Type): HResult; stdcall;
end;
IFileSinkFilter = interface(IUnknown)
['{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}']
function SetFileName(pszFileName: POLESTR; const pmt: TAM_Media_Type): HResult; stdcall;
function GetCurFile(var ppszFileName: POLESTR; out pmt: TAM_Media_Type): HResult; stdcall;
end;
IFileSinkFilter2 = interface(IFileSinkFilter)
['{00855B90-CE1B-11D0-BD4F-00A0C911CE86}']
function SetMode(dwFlags: DWORD): HResult; stdcall;
function GetMode(var pdwFlags: DWORD): HResult; stdcall;
end;
TAM_FileSink_Flags = (
AM_FILE_INVALID_0,
AM_FILE_OVERWRITE
);
PAsyncIOReq = ^TAsyncIOReq;
TAsyncIOReq = record
engine: array[0..3] of DWORD;
lpv: Pointer;
cb: DWORD;
dwError: DWORD;
cbDone: DWORD;
liPos: TLargeInteger;
hEvent: DWORD;
dwUser: DWORD;
end;
IFileAsyncIO = interface(IUnknown)
['{56A868A7-0AD4-11CE-B03A-0020AF0BA770}']
function QueryAlignment(var pdwAlign: DWORD): HResult; stdcall;
function Read(const pReq: TAsyncIOReq): HResult; stdcall;
function Write(const pReq: TAsyncIOReq): HResult; stdcall;
function WaitForNext(var ppReq: PAsyncIOReq;
dwTimeout: DWORD): HResult; stdcall;
function WaitForSpecific(var pReq: TAsyncIOReq;
dwTimeout: DWORD): HResult; stdcall;
function DiscardPending: HResult; stdcall;
function Flush: HResult; stdcall;
end;
IGraphBuilder = interface(IFilterGraph)
['{56A868A9-0AD4-11CE-B03A-0020AF0BA770}']
function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
function Render(ppinOut: IPin): HResult; stdcall;
function RenderFile(lpcwstrFile, lpcwstrPlayList: LPCWSTR): HResult; stdcall;
function AddSourceFilter(lpcwstrFileName, lpcwstrFilterName: LPCWSTR;
out ppFilter: IBaseFilter): HResult; stdcall;
function SetLogFile(hFile: THandle): HResult; stdcall;
function Abort: HResult; stdcall;
function ShouldOperationContinue: HResult; stdcall;
end;
IAMCopyCaptureFileProgress = interface;
ICaptureGraphBuilder = interface(IUnknown)
['{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}']
function SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;
function GetFiltergraph(out ppfg: IGraphBuilder): HResult; stdcall;
function SetOutputFileName(const pType: TGUID; lpstrFile: PWCHAR;
out ppf: IBaseFilter; out ppSink: IFileSinkFilter): HResult; stdcall;
function FindInterface(const pCategory: TGUID; pf: IBaseFilter;
const riid: TGUID; out ppint): HResult; stdcall;
function RenderStream(const pCategory: TGUID; pSource: IUnknown;
pfCompressor, pfRenderer: IBaseFilter): HResult; stdcall;
function ControlStream(const pCategory: TGUID; pFilter: IBaseFilter;
const pstart, pstop: TReference_Time; wStartCookie, wStopCookie: WORD): HResult; stdcall;
function AllocCapFile(lpstr: PWCHAR; dwlSize: LONGLONG): HResult; stdcall;
function CopyCaptureFile(lpwstrOld, lpwstrNew: PWCHAR; fAllowEscAbort: Integer;
pCallback: IAMCopyCaptureFileProgress): HResult; stdcall;
end;
IAMCopyCaptureFileProgress = interface(IUnknown)
['{670D1D20-A068-11D0-B3F0-00AA003761C5}']
function Progress(iProgress: Integer): HResult; stdcall;
end;
const
AM_RENDEREX_RENDERTOEXISTINGRENDERERS = $01;
type
IFilterGraph2 = interface(IGraphBuilder)
['{36B73882-C2C8-11CF-8B46-00805F6CEF60}']
function AddSourceFilterForMoniker(pMoniker: IMoniker; pCtx: IBindCtx;
lpcwstrFilterName: LPCWSTR; out ppFilter: IBaseFilter): HResult; stdcall;
function ReconnectEx(ppin: IPin; const pmt: TAM_Media_Type): HResult; stdcall;
function RenderEx(pPinOut: IPin; dwFlags: DWORD; pvContext: Pointer): HResult; stdcall;
end;
IStreamBuilder = interface(IUnknown)
['{56A868BF-0AD4-11CE-B03A-0020AF0BA770}']
function Render(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
function Backout(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
end;
IAsyncReader = interface(IUnknown)
['{56A868AA-0AD4-11CE-B03A-0020AF0BA770}']
function RequestAllocator(pPreferred: IMemAllocator;
const pProps: TAllocator_Properties; out ppActual: IMemAllocator): HResult; stdcall;
function Request(pSample: IMediaSample; dwUser: DWORD): HResult; stdcall;
function WaitForNext(dwTimeout: DWORD; out ppSample: IMediaSample;
var pdwUser: DWORD): HResult; stdcall;
function SyncReadAligned(pSample: IMediaSample): HResult; stdcall;
function SyncRead(llPosition: LONGLONG; lLength: Longint; var pBuffer): HResult; stdcall;
function Length(var pTotal, pAvailable: LONGLONG): HResult; stdcall;
function BeginFlush: HResult; stdcall;
function EndFlush: HResult; stdcall;
end;
IGraphVersion = interface(IUnknown)
['{56A868AB-0AD4-11CE-B03A-0020AF0BA770}']
function QueryVersion(var pVersion: Longint): HResult; stdcall;
end;
IResourceConsumer = interface(IUnknown)
['{56A868AD-0AD4-11CE-B03A-0020AF0BA770}']
function AcquireResource(idResource: Longint): HResult; stdcall;
function ReleaseResource(idResource: Longint): HResult; stdcall;
end;
IResourceManager = interface(IUnknown)
['{56A868AC-0AD4-11CE-B03A-0020AF0BA770}']
function Register(pName: LPCWSTR; cResource: Longint;
var plToken: Longint): HResult; stdcall;
function RegisterGroup(pName: LPCWSTR; cResource: Longint;
const palTokens: Longint; var plToken: Longint): HResult; stdcall;
function RequestResource(idResource: Longint; pFocusObject: IUnknown;
pConsumer: IResourceConsumer): HResult; stdcall;
function NotifyAcquire(idResource: Longint; pConsumer: IResourceConsumer;
hr: HResult): HResult; stdcall;
function NotifyRelease(idResource: Longint; pConsumer: IResourceConsumer;
bStillWant: BOOL): HResult; stdcall;
function CancelRequest(idResource: Longint; pConsumer: IResourceConsumer): HResult; stdcall;
function SetFocus(pFocusObject: IUnknown): HResult; stdcall;
function ReleaseFocus(pFocusObject: IUnknown): HResult; stdcall;
end;
IDistributorNotify = interface(IUnknown)
['{56A868AF-0AD4-11CE-B03A-0020AF0BA770}']
function Stop: HResult; stdcall;
function Pause: HResult; stdcall;
function Run(tStart: TReference_Time): HResult; stdcall;
function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
function NotifyGraphChange: HResult; stdcall;
end;
const
AM_STREAM_INFO_START_DEFINED = $1;
AM_STREAM_INFO_STOP_DEFINED = $2;
AM_STREAM_INFO_DISCARDING = $4;
AM_STREAM_INFO_STOP_SEND_EXTRA = $10;
type
{TAM_Stream_Info_Flags = (
AM_STREAM_INFO_INVALID_0,
AM_STREAM_INFO_START_DEFINED,
AM_STREAM_INFO_INVALID_1,
AM_STREAM_INFO_STOP_DEFINED,
AM_STREAM_INFO_INVALID_3,
AM_STREAM_INFO_DISCARDING,
AM_STREAM_INFO_INVALID_4,
AM_STREAM_INFO_INVALID_5,
AM_STREAM_INFO_INVALID_6,
AM_STREAM_INFO_INVALID_7,
AM_STREAM_INFO_INVALID_8,
AM_STREAM_INFO_INVALID_9,
AM_STREAM_INFO_INVALID_10,
AM_STREAM_INFO_INVALID_11,
AM_STREAM_INFO_INVALID_12,
AM_STREAM_INFO_INVALID_13,
AM_STREAM_INFO_INVALID_14,
AM_STREAM_INFO_INVALID_15,
AM_STREAM_INFO_STOP_SEND_EXTRA
);
}
TAM_Stream_Info = record
tStart: TReference_Time;
tStop: TReference_Time;
dwStartCookie: DWORD;
dwStopCookie: DWORD;
dwFlags: DWORD;
end;
IAMStreamControl = interface(IUnknown)
['{36b73881-c2c8-11cf-8b46-00805f6cef60}']
function StartAt(const ptStart: TReference_Time; dwCookie: DWORD): HResult; stdcall;
function StopAt(const ptStop: TReference_Time; bSendExtra: BOOL;
dwCookie: DWORD): HResult; stdcall;
function GetInfo(out pInfo: TAM_Stream_Info): HResult; stdcall;
end;
ISeekingPassThru = interface(IUnknown)
['{36B73883-C2C8-11CF-8B46-00805F6CEF60}']
function Init(bSupportRendering: BOOL; pPin: IPin): HResult; stdcall;
end;
TVideo_Stream_Config_Caps = record
guid: TGUID;
VideoStandard: ULONG;
InputSize: TSize;
MinCroppingSize: TSize;
MaxCroppingSize: TSize;
CropGranularityX: Integer;
CropGranularityY: Integer;
CropAlignX: Integer;
CropAlignY: Integer;
MinOutputSize: TSize;
MaxOutputSize: TSize;
OutputGranularityX: Integer;
OutputGranularityY: Integer;
StretchTapsX: Integer;
StretchTapsY: Integer;
ShrinkTapsX: Integer;
ShrinkTapsY: Integer;
MinFrameInterval: LONGLONG;
MaxFrameInterval: LONGLONG;
MinBitsPerSecond: Longint;
MaxBitsPerSecond: Longint;
end;
TAudio_Stream_Config_Caps = record
guid: TGUID;
MinimumChannels: ULONG;
MaximumChannels: ULONG;
ChannelsGranularity: ULONG;
MinimumBitsPerSample: ULONG;
MaximumBitsPerSample: ULONG;
BitsPerSampleGranularity: ULONG;
MinimumSampleFrequency: ULONG;
MaximumSampleFrequency: ULONG;
SampleFrequencyGranularity: ULONG;
end;
IAMStreamConfig = interface(IUnknown)
['{C6E13340-30AC-11d0-A18C-00A0C9118956}']
function SetFormat(const pmt: TAM_Media_Type): HResult; stdcall;
function GetFormat(var ppmt: PAM_Media_Type): HResult; stdcall;
function GetNumberOfCapabilities(var piCount, piSize: Integer): HResult; stdcall;
function GetStreamCaps(iIndex: Integer; var ppmt: PAM_Media_Type;
var pSCC): HResult; stdcall;
end;
TInterleavingMode = (
INTERLEAVE_NONE,
INTERLEAVE_CAPTURE,
INTERLEAVE_FULL
);
IConfigInterleaving = interface(IUnknown)
['{BEE3D220-157B-11d0-BD23-00A0C911CE86}']
function put_Mode(mode: TInterleavingMode): HResult; stdcall;
function get_Mode(var pMode: TInterleavingMode): HResult; stdcall;
function put_Interleaving(const prtInterleave, prtPreroll: TReference_Time): HResult; stdcall;
function get_Interleaving(var prtInterleave, prtPreroll: TReference_Time): HResult; stdcall;
end;
IConfigAviMux = interface(IUnknown)
['{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}']
function SetMasterStream(iStream: Longint): HResult; stdcall;
function GetMasterStream(var pStream: Longint): HResult; stdcall;
function SetOutputCompatibilityIndex(fOldIndex: BOOL): HResult; stdcall;
function GetOutputCompatibilityIndex(var pfOldIndex: BOOL): HResult; stdcall;
end;
const
CompressionCaps_CanQuality = $1;
CompressionCaps_CanCrunch = $2;
CompressionCaps_CanKeyFrame = $4;
CompressionCaps_CanBFrame = $8;
CompressionCaps_CanWindow = $10;
type
IAMVideoCompression = interface(IUnknown)
['{C6E13343-30AC-11d0-A18C-00A0C9118956}']
function put_KeyFrameRate(KeyFrameRate: Longint): HResult; stdcall;
function get_KeyFrameRate(pKeyFrameRate: Longint): HResult; stdcall;
function put_PFramesPerKeyFrame(PFramesPerKeyFrame: Longint): HResult; stdcall;
function get_PFramesPerKeyFrame(var pPFramesPerKeyFrame: Longint): HResult; stdcall;
function put_Quality(Quality: double): HResult; stdcall;
function get_Quality(var pQuality: double): HResult; stdcall;
function put_WindowSize(WindowSize: LONGLONG): HResult; stdcall;
function get_WindowSize(var pWindowSize: LONGLONG): HResult; stdcall;
function GetInfo(pszVersion: PWCHAR; var pcbVersion: Integer;
pszDescription: LPWSTR; var pcbDescription: Integer;
var pDefaultKeyFrameRate, pDefaultPFramesPerKey: Longint;
var pDefaultQuality: double; pCapabilities: Longint): HResult; stdcall;
function OverrideKeyFrame(FrameNumber: Longint): HResult; stdcall;
function OverrideFrameSize(FrameNumber, Size: Longint): HResult; stdcall;
end;
const
VfwCaptureDialog_Source = $1;
VfwCaptureDialog_Format = $2;
VfwCaptureDialog_Display = $4;
VfwCompressDialog_Config = $1;
VfwCompressDialog_About = $2;
type
IAMVfwCaptureDialogs = interface(IUnknown)
['{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}']
function HasDialog(iDialog: Integer): HResult; stdcall;
function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
function SendDriverMessage(iDialog: Integer; uMsg: Integer;
dw1, dw2: Longint): HResult; stdcall;
end;
IAMVfwCompressDialogs = interface(IUnknown)
['{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}']
function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
function GetState(var pState; var pcbState: Integer): HResult; stdcall;
function SetState(const pState; cbState: Integer): HResult; stdcall;
function SendDriverMessage(uMsg: Integer; dw1, dw2: Longint): HResult; stdcall;
end;
IAMDroppedFrames = interface(IUnknown)
['{C6E13344-30AC-11d0-A18C-00A0C9118956}']
function GetNumDropped(var plDropped: Longint): HResult; stdcall;
function GetNumNotDropped(var plNotDropped: Longint): HResult; stdcall;
function GetDroppedInfo(lSize: Longint; var plArray: Longint;
var plNumCopied: Longint): HResult; stdcall;
function GetAverageFrameSize(var plAverageSize: Longint): HResult; stdcall;
end;
const
AMF_AUTOMATICGAIN = -1;
type
IAMAudioInputMixer = interface(IUnknown)
['{54C39221-8380-11d0-B3F0-00AA003761C5}']
function put_Enable(fEnable: BOOL): HResult; stdcall;
function get_Enable(var pfEnable: BOOL): HResult; stdcall;
function put_Mono(fMono: BOOL): HResult; stdcall;
function get_Mono(var pfMono: BOOL): HResult; stdcall;
function put_MixLevel(Level: double): HResult; stdcall;
function get_MixLevel(var pLevel: double): HResult; stdcall;
function put_Pan(Pan: double): HResult; stdcall;
function get_Pan(var pPan: double): HResult; stdcall;
function put_Loudness(fLoudness: BOOL): HResult; stdcall;
function get_Loudness(var pfLoudness: BOOL): HResult; stdcall;
function put_Treble(Treble: double): HResult; stdcall;
function get_Treble(var pTreble: double): HResult; stdcall;
function get_TrebleRange(var pRange: double): HResult; stdcall;
function put_Bass(Bass: double): HResult; stdcall;
function get_Bass(var pBass: double): HResult; stdcall;
function get_BassRange(var pRange: double): HResult; stdcall;
end;
IAMBufferNegotiation = interface(IUnknown)
['{56ED71A0-AF5F-11D0-B3F0-00AA003761C5}']
function SuggestAllocatorProperties(const pprop: TAllocator_Properties): HResult; stdcall;
function GetAllocatorProperties(var pprop: TAllocator_Properties): HResult; stdcall;
end;
const
AnalogVideo_None = 0;
AnalogVideo_NTSC_M = $1;
AnalogVideo_NTSC_M_J = $2;
AnalogVideo_NTSC_433 = $4;
AnalogVideo_PAL_B = $10;
AnalogVideo_PAL_D = $20;
AnalogVideo_PAL_G = $40;
AnalogVideo_PAL_H = $80;
AnalogVideo_PAL_I = $100;
AnalogVideo_PAL_M = $200;
AnalogVideo_PAL_N = $400;
AnalogVideo_PAL_60 = $800;
AnalogVideo_SECAM_B = $1000;
AnalogVideo_SECAM_D = $2000;
AnalogVideo_SECAM_G = $4000;
AnalogVideo_SECAM_H = $8000;
AnalogVideo_SECAM_K = $10000;
AnalogVideo_SECAM_K1 = $20000;
AnalogVideo_SECAM_L = $40000;
AnalogVideo_SECAM_L1 = $80000;
AnalogVideo_NTSC_Mask = $00000007;
AnalogVideo_PAL_Mask = $00000FF0;
AnalogVideo_SECAM_Mask = $000FF000;
type
TTunerInputType =(
TunerInputCable,
TunerInputAntenna
);
TVideoCopyProtectionType = (
VideoCopyProtectionMacrovisionBasic,
VideoCopyProtectionMacrovisionCBI
);
TPhysicalConnectorType = (
PhysConn_Video_Tuner,
PhysConn_Video_Composite,
PhysConn_Video_SVideo,
PhysConn_Video_RGB,
PhysConn_Video_YRYBY,
PhysConn_Video_SerialDigital,
PhysConn_Video_ParallelDigital,
PhysConn_Video_SCSI,
PhysConn_Video_AUX,
PhysConn_Video_1394,
PhysConn_Video_USB,
PhysConn_Video_VideoDecoder,
PhysConn_Video_VideoEncoder,
PhysConn_Video_SCART,
PhysConn_Video_Black,
PhysConn_Audio_Tuner,
PhysConn_Audio_Line,
PhysConn_Audio_Mic,
PhysConn_Audio_AESDigital,
PhysConn_Audio_SPDIFDigital,
PhysConn_Audio_SCSI,
PhysConn_Audio_AUX,
PhysConn_Audio_1394,
PhysConn_Audio_USB,
PhysConn_Audio_AudioDecoder
);
IAMAnalogVideoDecoder = interface(IUnknown)
['{C6E13350-30AC-11d0-A18C-00A0C9118956}']
function get_AvailableTVFormats(var lAnalogVideoStandard: Longint): HResult; stdcall;
function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
function get_TVFormat(var plAnalogVideoStandard: Longint): HResult; stdcall;
function get_HorizontalLocked(var plLocked: Longint): HResult; stdcall;
function put_VCRHorizontalLocking(lVCRHorizontalLocking: Longint): HResult; stdcall;
function get_VCRHorizontalLocking(var plVCRHorizontalLocking: Longint): HResult; stdcall;
function get_NumberOfLines(var plNumberOfLines: Longint): HResult; stdcall;
function put_OutputEnable(lOutputEnable: LongBool): HResult; stdcall;
function get_OutputEnable(var plOutputEnable: LongBool): HResult; stdcall;
end;
TVideoProcAmpProperty = (
VideoProcAmp_Brightness,
VideoProcAmp_Contrast,
VideoProcAmp_Hue,
VideoProcAmp_Saturation,
VideoProcAmp_Sharpness,
VideoProcAmp_Gamma,
VideoProcAmp_ColorEnable,
VideoProcAmp_WhiteBalance,
VideoProcAmp_BacklightCompensation
);
TVideoProcAmpFlags = (
VideoProcAmp_Flags_Manual,
VideoProcAmp_Flags_Auto
);
IAMVideoProcAmp = interface(IUnknown)
['{C6E13360-30AC-11d0-A18C-00A0C9118956}']
function GetRange(Property_: TVideoProcAmpProperty;
var pMin, pMax, pSteppingDelta, pDefault, pCapsFlags: TVideoProcAmpFlags): HResult; stdcall;
function Set_(Property_: TVideoProcAmpProperty; lValue: Longint;
Flags: TVideoProcAmpFlags): HResult; stdcall;
function Get(Property_: TVideoProcAmpProperty; var lValue: Longint;
var Flags: TVideoProcAmpFlags): HResult; stdcall;
end;
TCameraControlProperty = (
CameraControl_Pan,
CameraControl_Tilt,
CameraControl_Roll,
CameraControl_Zoom,
CameraControl_Exposure,
CameraControl_Iris,
CameraControl_Focus
);
TCameraControlFlags = (
CameraControl_Flags_Manual,
CameraControl_Flags_Auto
);
IAMCameraControl = interface(IUnknown)
['{C6E13370-30AC-11d0-A18C-00A0C9118956}']
function GetRange(Property_: TCameraControlProperty;
var pMin, pMax, pSteppingDelta, pDefault, pCapsFlags: Longint): HResult; stdcall;
function Set_(Property_: TCameraControlProperty; lValue: Longint;
Flags: TCameraControlFlags): HResult; stdcall;
function Get(Property_: TCameraControlProperty; var lValue: Longint;
var Flags: TCameraControlFlags): HResult; stdcall;
end;
IAMCrossbar = interface(IUnknown)
['{C6E13380-30AC-11d0-A18C-00A0C9118956}']
function get_PinCounts(var OutputPinCount, InputPinCount: Longint): HResult; stdcall;
function CanRoute(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
function Route(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
function get_IsRoutedTo(OutputPinIndex: Longint;
var InputPinIndex: Longint): HResult; stdcall;
function get_CrossbarPinInfo(IsInputPin: BOOL; PinIndex: Longint;
var PinIndexRelated, PhysicalType: Longint): HResult; stdcall;
end;
const
AMTUNER_SUBCHAN_NO_TUNE = -2;
AMTUNER_SUBCHAN_DEFAULT = -1;
AMTUNER_HASNOSIGNALSTRENGTH = -1;
AMTUNER_NOSIGNAL = 0;
AMTUNER_SIGNALPRESENT = 1;
AMTUNER_MODE_DEFAULT = 0;
AMTUNER_MODE_TV = $1;
AMTUNER_MODE_FM_RADIO = $2;
AMTUNER_MODE_AM_RADIO = $4;
AMTUNER_MODE_DSS = $8;
type
TAMTunerModeType = DWORD;
TAMTunerEventType = (
AMTUNER_EVENT_CHANGED
);
//AMTUNER_EVENT_CHANGED = $1;
IAMTunerNotification = interface;
IAMTuner = interface(IUnknown)
['{211A8761-03AC-11d1-8D13-00AA00BD8339}']
function put_Channel(lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
function get_Channel(var lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
function ChannelMinMax(var lChannelMin, lChannelMax): HResult; stdcall;
function put_CountryCode(lCountryCode: Longint): HResult; stdcall;
function get_CountryCode(var lCountryCode: Longint): HResult; stdcall;
function put_TuningSpace(lTuningSpace: Longint): HResult; stdcall;
function get_TuningSpace(var lTuningSpace: Longint): HResult; stdcall;
function Logon(hCurrentUser: THandle): HResult; stdcall;
function Logout: HResult; stdcall;
function SignalPresent(var plSignalStrength: Longint): HResult; stdcall;
function put_Mode(lMode: TAMTunerModeType): HResult; stdcall;
function get_Mode(var plMode: TAMTunerModeType): HResult; stdcall;
function GetAvailableModes(var plModes: Longint): HResult; stdcall;
function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
lEvents: Longint): HResult; stdcall;
function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
end;
IAMTunerNotification = interface(IUnknown)
['{211A8760-03AC-11d1-8D13-00AA00BD8339}']
function OnEvent(Event: TAMTunerEventType): HResult; stdcall;
end;
IAMTVTuner = interface(IAMTuner)
['{211A8766-03AC-11d1-8D13-00AA00BD8339}']
function get_AvailableTVFormats(var lAnalogVideoStandard: Longint): HResult; stdcall;
function get_TVFormat(var plAnalogVideoStandard: Longint): HResult; stdcall;
function AutoTune(lChannel: Longint; var plFoundSignal: Longint): HResult; stdcall;
function StoreAutoTune: HResult; stdcall;
function get_NumInputConnections(var plNumInputConnections: Longint): HResult; stdcall;
function put_InputType(lIndex: Longint; InputType: TTunerInputType): HResult; stdcall;
function get_InputType(lIndex: Longint; var InputType: TTunerInputType): HResult; stdcall;
function put_ConnectInput(lIndex: Longint): HResult; stdcall;
function get_ConnectInput(var plIndex: Longint): HResult; stdcall;
function get_VideoFrequency(var lFreq: Longint): HResult; stdcall;
function get_AudioFrequency(var lFreq: Longint): HResult; stdcall;
end;
IBPCSatelliteTuner = interface(IAMTuner)
['{211A8765-03AC-11d1-8D13-00AA00BD8339}']
function get_DefaultSubChannelTypes(var plDefaultVideoType, plDefaultAudioType: Longint): HResult; stdcall;
function put_DefaultSubChannelTypes(lDefaultVideoType, lDefaultAudioType: Longint): HResult; stdcall;
function IsTapingPermitted: HResult; stdcall;
end;
const
AMTVAUDIO_MODE_MONO = $1;
AMTVAUDIO_MODE_STEREO = $2;
AMTVAUDIO_MODE_LANG_A = $10;
AMTVAUDIO_MODE_LANG_B = $20;
AMTVAUDIO_MODE_LANG_C = $40;
type
TAMTVAudioEventType = (
AMTVAUDIO_EVENT_CHANGED
);
IAMTVAudio = interface(IUnknown)
['{83EC1C30-23D1-11d1-99E6-00A0C9560266}']
function GetHardwareSupportedTVAudioModes(var plModes: Longint): HResult; stdcall;
function GetAvailableTVAudioModes(var plModes: Longint): HResult; stdcall;
function get_TVAudioMode(var plMode: Longint): HResult; stdcall;
function put_TVAudioMode(lMode: Longint): HResult; stdcall;
function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
lEvents: Longint): HResult; stdcall;
function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
end;
IAMTVAudioNotification = interface(IUnknown)
['{83EC1C33-23D1-11D1-99E6-00A0C9560266}']
function OnEvent(Event: TAMTVAudioEventType): HResult; stdcall;
end;
IAMAnalogVideoEncoder = interface(IUnknown)
['{C6E133B0-30AC-11d0-A18C-00A0C9118956}']
function get_AvailableTVFormats(var lAnalogVideoStandard: Longint): HResult; stdcall;
function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
function get_TVFormat(var plAnalogVideoStandard: Longint): HResult; stdcall;
function put_CopyProtection(lVideoCopyProtection: Longint): HResult; stdcall;
function get_CopyProtection(var lVideoCopyProtection: Longint): HResult; stdcall;
function put_CCEnable(lCCEnable: LongBool): HResult; stdcall;
function get_CCEnable(var lCCEnable: LongBool): HResult; stdcall;
end;
TAMProperty_Pin = (
AMPROPERTY_PIN_CATEGORY,
AMPROPERTY_PIN_MEDIUM
);
IMediaPropertyBag = interface(IPropertyBag)
['{6025A880-C0D5-11D0-BD4E-00A0C911CE86}']
function EnumProperty(iProperty: ULONG; var pvarPropertyName,
pvarPropertyValue: Variant): HResult; stdcall;
end;
IPersistMediaPropertyBag = interface(IPersist)
['{5738E040-B67F-11d0-BD4D-00A0C911CE86}']
function InitNew: HResult; stdcall;
function Load(pPropBag: IMediaPropertyBag; pErrorLog: IErrorLog): HResult; stdcall;
function Save(pPropBag: IMediaPropertyBag; fClearDirty, fSaveAllProperties: BOOL): HResult; stdcall;
end;
IAMPhysicalPinInfo = interface(IUnknown)
['{F938C991-3029-11CF-8C44-00AA006B6814}']
function GetPhysicalType(var pType: Longint; var ppszType: POLESTR): HResult; stdcall;
end;
IAMExtDevice = interface(IUnknown)
['{B5730A90-1A2C-11CF-8C23-00AA006B6814}']
function GetCapability(Capability: Longint; var pValue: Longint; pdblValue: double): HResult; stdcall;
function get_ExternalDeviceID(var ppszData: POLESTR): HResult; stdcall;
function get_ExternalDeviceVersion(var ppszData: POLESTR): HResult; stdcall;
function put_DevicePower(PowerMode: Longint): HResult; stdcall;
function get_DevicePower(var pPowerMode: Longint): HResult; stdcall;
function Calibrate(hEvent: THandle; Mode: Longint; var pStatus: Longint): HResult; stdcall;
function put_DevicePort(DevicePort: Longint): HResult; stdcall;
function get_DevicePort(var pDevicePort: Longint): HResult; stdcall;
end;
IAMExtTransport = interface(IUnknown)
['{A03CD5F0-3045-11CF-8C44-00AA006B6814}']
function GetCapability(Capability: Longint; var pValue: Longint; var pdblValue: double): HResult; stdcall;
function put_MediaState(State: Longint): HResult; stdcall;
function get_MediaState(var pState: Longint): HResult; stdcall;
function put_LocalControl(State: Longint): HResult; stdcall;
function get_LocalControl(var pState: Longint): HResult; stdcall;
function GetStatus(StatusItem: Longint; var pValue: Longint): HResult; stdcall;
function GetTransportBasicParameters(Param: Longint; var pValue: Longint; var ppszData: POLESTR): HResult; stdcall;
function SetTransportBasicParameters(Param: Longint; Value: Longint; pszData: POLESTR): HResult; stdcall;
function GetTransportVideoParameters(Param: Longint; var pValue: Longint): HResult; stdcall;
function SetTransportVideoParameters(Param: Longint; Value: Longint): HResult; stdcall;
function GetTransportAudioParameters(Param: Longint; var pValue: Longint): HResult; stdcall;
function SetTransportAudioParameters(Param: Longint; Value: Longint): HResult; stdcall;
function put_Mode(Mode: Longint): HResult; stdcall;
function get_Mode(var pMode: Longint): HResult; stdcall;
function put_Rate(dblRate: double): HResult; stdcall;
function get_Rate(var pdblRate: double): HResult; stdcall;
function GetChase(var pEnabled, pOffset: Longint; var phEvent: THandle): HResult; stdcall;
function SetChase(Enable, Offset: Longint; hEvent: THandle): HResult; stdcall;
function GetBump(var pSpeed, pDuration: Longint): HResult; stdcall;
function SetBump(Speed, Duration: Longint): HResult; stdcall;
function get_AntiClogControl(var pEnabled: Longint): HResult; stdcall;
function put_AntiClogControl(Enable: Longint): HResult; stdcall;
function GetEditPropertySet(EditID: Longint; var pState: Longint): HResult; stdcall;
function SetEditPropertySet(var pEditID: Longint; State: Longint): HResult; stdcall;
function GetEditProperty(EditID, Param: Longint; var pValue: Longint): HResult; stdcall;
function SetEditProperty(EditID, Param, Value: Longint): HResult; stdcall;
function get_EditStart(var pValue: Longint): HResult; stdcall;
function put_EditStart(Value: Longint): HResult; stdcall;
end;
TTimeCode = record
wFrameRate: Word;
wFrameFract: Word;
dwFrames: DWORD;
qw: LONGLONG;
end;
TTimeCode_Sample = record
qwTick: LONGLONG;
timecode: TTimeCode;
dwUser: DWORD;
dwFlags: DWORD;
end;
IAMTimecodeReader = interface(IUnknown)
['{9B496CE1-811B-11CF-8C77-00AA006B6814}']
function GetTCRMode(Param: Longint; var pValue: Longint): HResult; stdcall;
function SetTCRMode(Param: Longint; Value: Longint): HResult; stdcall;
function put_VITCLine(Line: Longint): HResult; stdcall;
function get_VITCLine(var pLine: Longint): HResult; stdcall;
function GetTimecode(var pTimecodeSample: TTimeCode_Sample): HResult; stdcall;
end;
IAMTimecodeGenerator = interface(IUnknown)
['{9B496CE0-811B-11CF-8C77-00AA006B6814}']
function GetTCGMode(Param: Longint; var pValue: Longint): HResult; stdcall;
function SetTCGMode(Param: Longint; Value: Longint): HResult; stdcall;
function put_VITCLine(Line: Longint): HResult; stdcall;
function get_VITCLine(var Line: Longint): HResult; stdcall;
function SetTimecode(const pTimecodeSample: TTimeCode_Sample): HResult; stdcall;
function GetTimecode(var pTimecodeSample: TTimeCode_Sample): HResult; stdcall;
end;
IAMTimecodeDisplay = interface(IUnknown)
['{9B496CE2-811B-11CF-8C77-00AA006B6814}']
function GetTCDisplayEnable(var pState: Longint): HResult; stdcall;
function SetTCDisplayEnable(State: Longint): HResult; stdcall;
function GetTCDisplay(Param: Longint; var pValue: Longint): HResult; stdcall;
function SetTCDisplay(Param, Value: Longint): HResult; stdcall;
end;
IAMDevMemoryAllocator = interface(IUnknown)
['{C6545BF0-E76B-11D0-BD52-00A0C911CE86}']
function GetInfo(var pdwcbTotalFree, pdwcbLargestFree, pdwcbTotalMemory, pdwcbMinimumChunk: DWORD): HResult; stdcall;
function CheckMemory(pBuffer: Pointer): HResult; stdcall;
function Alloc(var ppBuffer: Pointer; var pdwcbBuffer: DWORD): HResult; stdcall;
function Free(pBuffer: Pointer): HResult; stdcall;
function GetDevMemoryObject(out ppUnkInnner: IUnknown; pUnkOuter: IUnknown): HResult; stdcall;
end;
IAMDevMemoryControl = interface(IUnknown)
['{C6545BF1-E76B-11D0-BD52-00A0C911CE86}']
function QueryWriteSync: HResult; stdcall;
function WriteSync: HResult; stdcall;
function GetDevId(var pdwDevId: DWORD): HResult; stdcall;
end;
const
AMSTREAMSELECTINFO_ENABLED = $1;
AMSTREAMSELECTINFO_EXCLUSIVE = $2;
AMSTREAMSELECTENABLE_ENABLE = $1;
AMSTREAMSELECTENABLE_ENABLEALL = $2;
type
IAMStreamSelect = interface(IUnknown)
['{C1960960-17F5-11D1-ABE1-00A0C905F375}']
function Count(var pcStreams: DWORD): HResult; stdcall;
function Info(lIndex: Longint; var ppmt: PAM_Media_Type;
var pdwFlags: DWORD; var plcid: LCID; var pdwGroup: DWORD;
var ppszName: PWCHAR; out ppObject: IUnknown; out ppUnk : IUnknown): HResult; stdcall;
function Enable(lIndex: Longint; dwFlags: DWORD): HResult; stdcall;
end;
IAMovie = interface(IFilterGraph)
['{359ACE10-7688-11CF-8B23-00805F6CEF60}']
function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
function Render(ppinOut: IPin): HResult; stdcall;
function Run: HResult; stdcall;
function Pause: HResult; stdcall;
function Stop: HResult; stdcall;
function GetState(msTimeout: Longint; var pfs: TFilter_State): HResult; stdcall;
function RenderFile(strFilename: LPCWSTR): HResult; stdcall;
function AddSourceFilter(strFilename: LPCWSTR; out ppUnk: IBaseFilter): HResult; stdcall;
function GetEventHandle(out hEvent: THandle): HResult; stdcall;
function GetEvent(var lEventCode, lParam1, lParam2: Longint; msTimeout: Longint): HResult; stdcall;
function WaitForCompletion(msTimeout: Longint; var pEvCode: Longint): HResult; stdcall;
function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
function get_Duration(var plength: TRefTime): HResult; stdcall;
function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
function get_CurrentPosition(var pllTime: TRefTime): HResult; stdcall;
function get_StopTime(var pllTime: TRefTime): HResult; stdcall;
function put_StopTime(llTime: TRefTime): HResult; stdcall;
function get_PrerollTime(var pllTime: TRefTime): HResult; stdcall;
function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
function put_Rate(dRate: double): HResult; stdcall;
function get_Rate(var pdRate: double): HResult; stdcall;
function RemoveAllFilters: HResult; stdcall;
function Play: HResult; stdcall;
function PlayFile(strFilename: LPCWSTR): HResult; stdcall;
function EnumFiltersByInterface(const riid: TGUID;
out ppEnum: IEnumFilters): HResult; stdcall;
function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
function EnumPinsIn(out ppEnum: IEnumPins): HResult; stdcall;
function EnumPinsOut(out ppEnum: IEnumPins): HResult; stdcall;
function RenderAll: HResult; stdcall;
function RenderNewFile(strFilename: LPCWSTR): HResult; stdcall;
function FreeEventParams(lEvCode, lParam1, lParam2: Longint): HResult; stdcall;
end;
const
CDEF_CLASS_DEFAULT = $1000;
CDEF_BYPASS_CLASS_MANAGER = $2000;
type
ICreateDevEnum = interface(IUnknown)
['{29840822-5B84-11D0-BD3B-00A0C911CE86}']
function CreateClassEnumerator(const clsidDeviceClass: TGUID;
out ppEnumMoniker: IEnumMoniker; dwFlags: DWORD): HResult; stdcall;
end;
TDVD_Domain = (
DVD_DOMAIN_FirstPlay,
DVD_DOMAIN_VideoManagerMenu,
DVD_DOMAIN_VideoTitleSetMenu,
DVD_DOMAIN_Title,
DVD_DOMAIN_Stop
);
TDVD_Menu_ID = (
DVD_MENU_INVALID_0,
DVD_MENU_INVALID_1,
DVD_MENU_Title,
DVD_MENU_Root,
DVD_MENU_Subpicture,
DVD_MENU_Audio,
DVD_MENU_Angle,
DVD_MENU_Chapter
);
TDVD_Disc_Side = (
DVD_SIDE_INVALID_0,
DVD_SIDE_A,
DVD_SIDE_B
);
TDVD_PREFERRED_Display_Mode = (
DISPLAY_CONTENT_DEFAULT,
DISPLAY_16x9,
DISPLAY_4x3_PANSCAN_PREFERRED,
DISPLAY_4x3_LETTERBOX_PREFERRED
);
TDVD_REGISTER = Word;
TGPRMArray = array[0..15] of TDVD_REGISTER;
TSPRMArray = array[0..23] of TDVD_REGISTER;
TDVD_ATR = record
ulCAT: ULONG;
pbATRI: array[0..767] of Byte;
end;
TDVD_VideoATR = array[0..1] of Byte;
TDVD_AudioATR = array[0..7] of Byte;
TDVD_SubpictureATR = array[0..5] of Byte;
TDVD_FrameRate = (
DVD_FPS_INVALID_0,
DVD_FPS_25,
DVD_FPS_INVALID_2,
DVD_FPS_30NonDrop
);
TDVD_TimeCode = record
Hours1: ULONG; // Hours
Hours10: ULONG; // Tens of Hours
Minutes1: ULONG; // Minutes
Minutes10: ULONG; // Tens of Minutes
Seconds1: ULONG; // Seconds
Seconds10: ULONG; // Tens of Seconds
Frames1: ULONG; // Frames
Frames10: ULONG; // Tens of Frames
FrameRateCode: ULONG; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop
end;
TDVD_Playback_Location = record
TitleNum: ULONG;
ChapterNum: ULONG;
TimeCode: ULONG;
end;
TVALID_UOP_SOMTHING_OR_OTHER = DWORD;
const
DVD_PARENTAL_LEVEL_8 = $8000;
DVD_PARENTAL_LEVEL_7 = $4000;
DVD_PARENTAL_LEVEL_6 = $2000;
DVD_PARENTAL_LEVEL_5 = $1000;
DVD_PARENTAL_LEVEL_4 = $0800;
DVD_PARENTAL_LEVEL_3 = $0400;
DVD_PARENTAL_LEVEL_2 = $0200;
DVD_PARENTAL_LEVEL_1 = $0100;
type
IDvdControl = interface(IUnknown)
['{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}']
function TitlePlay(uiTitle: ULONG): HResult; stdcall;
function ChapterPlay(uiTitle: ULONG; uiChapter: ULONG): HResult; stdcall;
function TimePlay(uiTitle: ULONG; bcdTime: ULONG): HResult; stdcall;
function StopForResume: HResult; stdcall;
function GoUp: HResult; stdcall;
function TimeSearch(bcdTime: ULONG): HResult; stdcall;
function ChapterSearch(Chapter: ULONG): HResult; stdcall;
function PrevPGSearch: HResult; stdcall;
function TopPGSearch: HResult; stdcall;
function NextPGSearch: HResult; stdcall;
function ForwardScan(dwSpeed: double): HResult; stdcall;
function BackwardScan(dwSpeed: double): HResult; stdcall;
function MenuCall(MenuID: TDVD_Menu_ID): HResult; stdcall;
function Resume: HResult; stdcall;
function UpperButtonSelect: HResult; stdcall;
function LowerButtonSelect: HResult; stdcall;
function LeftButtonSelect: HResult; stdcall;
function RightButtonSelect: HResult; stdcall;
function ButtonActivate: HResult; stdcall;
function ButtonSelectAndActivate(uiButton: ULONG): HResult; stdcall;
function StillOff: HResult; stdcall;
function PauseOn: HResult; stdcall;
function PauseOff: HResult; stdcall;
function MenuLanguageSelect(Language: LCID): HResult; stdcall;
function AudioStreamChange(nAudio: ULONG): HResult; stdcall;
function SubpictureStreamChange(nSubPicture: ULONG; bDisplay: BOOL): HResult; stdcall;
function AngleChange(ulAngle: ULONG): HResult; stdcall;
function ParentalLevelSelect(ulParentalLevel: ULONG): HResult; stdcall;
function ParentalCountrySelect(wCountry: Word): HResult; stdcall;
function KaraokeAudioPresentationModeChange(ulMode: ULONG): HResult; stdcall;
function VideoModePreferrence(ulPreferredDisplayMode: ULONG): HResult; stdcall;
function SetRoot(pszPath: LPCWSTR): HResult; stdcall;
function MouseActivate(const point: TPoint): HResult; stdcall;
function MouseSelect(const point: TPoint): HResult; stdcall;
function ChapterPlayAutoStop(ulTitle, ulChapter, ulChaptersToPlay: ULONG): HResult; stdcall;
end;
IDvdInfo = interface(IUnknown)
['{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}']
function GetCurrentDomain(var pDomain: TDVD_Domain): HResult; stdcall;
function GetCurrentLocation(var pLocation: TDVD_Playback_Location): HResult; stdcall;
function GetTotalTitleTime(var pTotalTime: ULONG): HResult; stdcall;
function GetCurrentButton(var pnButtonsAvailable, pnCurrentButton: ULONG): HResult; stdcall;
function GetCurrentAngle(var pnAnglesAvailable, pnCurrentAngle: ULONG): HResult; stdcall;
function GetCurrentAudio(var pnStreamsAvailable, pnCurrentStream: ULONG): HResult; stdcall;
function GetCurrentSubpicture(var pnStreamsAvailable, pnCurrentStream: ULONG;
pIsDisabled: BOOL): HResult; stdcall;
function GetCurrentUOPS(var pUOP: TVALID_UOP_SOMTHING_OR_OTHER): HResult; stdcall;
function GetAllSPRMs(var pRegisterArray: TSPRMArray): HResult; stdcall;
function GetAllGPRMs(var pRegisterArray: TGPRMArray): HResult; stdcall;
function GetAudioLanguage(nStream: ULONG; var pLanguage: LCID): HResult; stdcall;
function GetSubpictureLanguage(nStream: ULONG; var pLanguage: LCID): HResult; stdcall;
function GetTitleAttributes(nTitle: ULONG; var pATR: TDVD_ATR): HResult; stdcall;
function GetVMGAttributes(var pATR: TDVD_ATR): HResult; stdcall;
function GetCurrentVideoAttributes(var pATR: TDVD_VideoATR): HResult; stdcall;
function GetCurrentAudioAttributes(var pATR: TDVD_AudioATR): HResult; stdcall;
function GetCurrentSubpictureAttributes(var pATR: TDVD_SubpictureATR): HResult; stdcall;
function GetCurrentVolumeInfo(var pNumOfVol, pThisVolNum: ULONG;
var pSide: TDVD_Disc_Side; var pNumOfTitles: ULONG): HResult; stdcall;
function GetDVDTextInfo(var pTextManager; cbBufSize: ULONG;
var pcbActualSize: ULONG): HResult; stdcall;
function GetPlayerParentalLevel(var pParentalLevel, pCountryCode: ULONG): HResult; stdcall;
function GetNumberOfChapters(ulTitle: ULONG; var pNumberOfChapters: ULONG): HResult; stdcall;
function GetTitleParentalLevels(ulTitle: ULONG; var pParentalLevels: ULONG): HResult; stdcall;
function GetRoot(pRoot: PWCHAR; cbBufSize: ULONG; var pcbActualSize: ULONG): HResult; stdcall;
end;
const
M_DVD_HWDEC_PREFER = $1;
M_DVD_HWDEC_ONLY = $2;
M_DVD_SWDEC_PREFER = $4;
M_DVD_SWDEC_ONLY = $8;
M_DVD_NOVPE = $100;
AM_DVD_STREAM_VIDEO = $1;
AM_DVD_STREAM_AUDIO = $2;
AM_DVD_STREAM_SUBPIC = $4;
type
TAM_DVD_RenderStatus = record
hrVPEStatus: HResult;
bDvdVolInvalid: BOOL;
bDvdVolUnknown: BOOL;
bNoLine21In: BOOL;
bNoLine21Out: BOOL;
iNumStreams: Integer;
iNumStreamsFailed: Integer;
dwFailedStreamsFlag: DWORD;
end;
IDvdGraphBuilder = interface(IUnknown)
['{FCC152B6-F372-11d0-8E00-00C04FD7C08B}']
function GetFiltergraph(out ppGB: IGraphBuilder): HResult; stdcall;
function GetDvdInterface(const riid: TGUID; out ppvIF): HResult; stdcall;
function RenderDvdVideoVolume(lpcwszPathName: LPCWSTR; dwFlags: DWORD;
var pStatus: TAM_DVD_RenderStatus): HResult; stdcall;
end;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: mmstream.h
*
***************************************************************************)
const
IID_IMultiMediaStream: TGUID = '{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}';
IID_IMediaStream: TGUID = '{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}';
IID_IStreamSample: TGUID = '{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}';
const
MS_S_PENDING = $80040401;
MS_S_NOUPDATE = $80040402;
MS_S_ENDOFSTREAM = $80040403;
MS_E_SAMPLEALLOC = $00040001;
MS_E_PURPOSEID = $00040002;
MS_E_NOSTREAM = $00040003;
MS_E_NOSEEKING = $00040004;
MS_E_INCOMPATIBLE = $00040005;
MS_E_BUSY = $00040006;
MS_E_NOTINIT = $00040007;
MS_E_SOURCEALREADYDEFINED = $00040008;
MS_E_INVALIDSTREAMTYPE = $00040009;
MS_E_NOTRUNNING = $0004000A;
MSPID_PrimaryVideo: TGUID = (D1:$A35FF56A;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
MSPID_PrimaryAudio: TGUID = (D1:$A35FF56B;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
type
PAPCFUNC = procedure(dwParam: DWORD); stdcall;
TStream_Time = LONGLONG;
MSPID = TGUID;
TStream_Type = (
STREAMTYPE_READ,
STREAMTYPE_WRITE,
STREAMTYPE_TRANSFORM
);
TStream_State = (
STREAMSTATE_STOP,
STREAMSTATE_RUN
);
TCompletion_Status_Flags = (
COMPSTAT_INVALID_0,
COMPSTAT_NOUPDATEOK,
COMPSTAT_WAIT,
COMPSTAT_INVALID_3,
COMPSTAT_ABORT
);
const
MMSSF_HASCLOCK = $1;
MMSSF_SUPPORTSEEK = $2;
MMSSF_ASYNCHRONOUS = $4;
SSUPDATE_ASYNC = $1;
SSUPDATE_CONTINUOUS = $2;
type
IMediaStream = interface;
IStreamSample = interface;
IMultiMediaStream = interface(IUnknown)
['{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}']
function GetInformation(var pdwFlags: DWORD; var pStreamType: TStream_Type): HResult; stdcall;
function GetMediaStream(const idPurpose: MSPID;
out ppMediaStream: IMediaStream): HResult; stdcall;
function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream): HResult; stdcall;
function GetState(var pCurrentState: TStream_State): HResult; stdcall;
function SetState(NewState: TStream_State): HResult; stdcall;
function GetTime(var pCurrentTime: TStream_Time): HResult; stdcall;
function GetDuration(var pDuration: TStream_Time): HResult; stdcall;
function Seek(SeekTime: TStream_Time): HResult; stdcall;
function GetEndOfStreamEventHandle(var phEOS: THandle): HResult; stdcall;
end;
IMediaStream = interface(IUnknown)
['{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}']
function GetMultiMediaStream(out ppMultiMediaStream: IMultiMediaStream): HResult; stdcall;
function GetInformation(var pPurposeId: MSPID; var pType: TStream_Type): HResult; stdcall;
function SetSameFormat(pStreamThatHasDesiredFormat: IMediaStream;
dwFlags: DWORD): HResult; stdcall;
function AllocateSample(dwFlags: DWORD; out ppSample: IStreamSample): HResult; stdcall;
function CreateSharedSample(pExistingSample: IStreamSample; dwFlags: DWORD;
out ppNewSample: IStreamSample): HResult; stdcall;
function SendEndOfStream(dwFlags: DWORD): HResult; stdcall;
end;
IStreamSample = interface(IUnknown)
['{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}']
function GetMediaStream(out ppMediaStream: IMediaStream): HResult; stdcall;
function GetSampleTimes(var pStartTime, pEndTime,
pCurrentTime: TStream_Time): HResult; stdcall;
function SetSampleTimes(var pStartTime, pEndTime: TStream_Time): HResult; stdcall;
function Update(dwFlags: DWORD; hEvent: THandle; pfnAPC: PAPCFUNC;
dwAPCData: DWORD): HResult; stdcall;
function CompletionStatus(dwFlags: DWORD; dwMilliseconds: DWORD): HResult; stdcall;
end;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: amstream.h
*
***************************************************************************)
const
IID_IDirectShowStream: TGUID = '{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}';
IID_IAMMultiMediaStream: TGUID = '{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}';
IID_IAMMediaStream: TGUID = '{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}';
IID_IMediaStreamFilter: TGUID = '{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}';
IID_IDirectDrawMediaSampleAllocator: TGUID = '{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}';
IID_IDirectDrawMediaSample: TGUID = '{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}';
IID_IAMMediaTypeStream: TGUID = '{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}';
IID_IAMMediaTypeSample: TGUID = '{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}';
const
AMMSF_NOGRAPHTHREAD = $1;
AMMSF_ADDDEFAULTRENDERER = $1;
AMMSF_CREATEPEER = $2;
AMMSF_RENDERTYPEMASK = $3;
AMMSF_RENDERTOEXISTING = 0;
AMMSF_RENDERALLSTREAMS = $1;
AMMSF_NORENDER = $2;
AMMSF_NOCLOCK = $4;
AMMSF_RUN = $8;
type
TOutput_State = (
Disabled,
ReadData,
RenderData
);
IDirectShowStream = interface(IDispatch)
['{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}']
function get_FileName(var pVal: TBSTR): HResult; stdcall;
function put_FileName(newVal: TBSTR): HResult; stdcall;
function get_Video(var pVal: TOutput_State): HResult; stdcall;
function put_Video(newVal: TOutput_State): HResult; stdcall;
function get_Audio(var pVal: TOutput_State): HResult; stdcall;
function put_Audio(newVal: TOutput_State): HResult; stdcall;
end;
IMediaStreamFilter = interface;
IAMMultiMediaStream = interface(IMultiMediaStream)
['{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}']
function Initialize(StreamType: TStream_Type; dwFlags: DWORD;
pFilterGraph: IGraphBuilder): HResult; stdcall;
function GetFilterGraph(out ppGraphBuilder: IGraphBuilder): HResult; stdcall;
function GetFilter(out ppFilter: IMediaStreamFilter): HResult; stdcall;
function AddMediaStream(pStreamObject: IUnknown; const PurposeId: MSPID;
dwFlags: DWORD; out ppNewStream: IMediaStream): HResult; stdcall;
function OpenFile(pszFileName: LPCWSTR; dwFlags: DWORD): HResult; stdcall;
function OpenMoniker(pCtx: IBindCtx; pMoniker: IMoniker; dwFlags: DWORD): HResult; stdcall;
function Render(dwFlags: DWORD): HResult; stdcall;
end;
IAMMediaStream = interface(IMediaStream)
['{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}']
function Initialize(pSourceObject: IUnknown; dwFlags: DWORD;
const PurposeId: MSPID; StreamType: TStream_Type): HResult; stdcall;
function SetState(State: TFilter_State): HResult; stdcall;
function JoinAMMultiMediaStream(pAMMultiMediaStream: IAMMultiMediaStream): HResult; stdcall;
function JoinFilter(pMediaStreamFilter: IMediaStreamFilter): HResult; stdcall;
function JoinFilterGraph(pFilterGraph: IFilterGraph): HResult; stdcall;
end;
IMediaStreamFilter = interface(IBaseFilter)
['{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}']
function AddMediaStream(pAMMediaStream: IAMMediaStream): HResult; stdcall;
function GetMediaStream(const idPurpose: MSPID;
out ppMediaStream: IMediaStream): HResult; stdcall;
function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream): HResult; stdcall;
function SupportSeeking(bRenderer: BOOL): HResult; stdcall;
function ReferenceTimeToStreamTime(var pTime: TReference_Time): HResult; stdcall;
function GetCurrentStreamTime(var pCurrentStreamTime: TReference_Time): HResult; stdcall;
function WaitUntil(WaitStreamTime: TReference_Time): HResult; stdcall;
function Flush(bCancelEOS: BOOL): HResult; stdcall;
function EndOfStream: HResult; stdcall;
end;
IDirectDrawMediaSampleAllocator = interface(IUnknown)
['{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}']
function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
end;
IDirectDrawMediaSample = interface(IUnknown)
['{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}']
function GetSurfaceAndReleaseLock(out ppDirectDrawSurface: IDirectDrawSurface;
var pRect: TRect): HResult; stdcall;
function LockMediaSamplePointer: HResult; stdcall;
end;
IAMMediaTypeSample = interface;
IAMMediaTypeStream = interface(IMediaStream)
['{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}']
function GetFormat(out pMediaType: TAM_Media_Type; dwFlags: DWORD): HResult; stdcall;
function SetFormat(const pMediaType: TAM_Media_Type; dwFlags: DWORD): HResult; stdcall;
function CreateSample(lSampleSize: Longint; pbBuffer: Pointer;
dwFlags: DWORD; pUnkOuter: IUnknown; out ppAMMediaTypeSample: IAMMediaTypeSample): HResult; stdcall;
function GetStreamAllocatorRequirements(var pProps: TAllocator_Properties): HResult; stdcall;
function SetStreamAllocatorRequirements(const pProps: TAllocator_Properties): HResult; stdcall;
end;
IAMMediaTypeSample = interface(IStreamSample)
['{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}']
function SetPointer(pBuffer: Pointer; lSize: Longint): HResult; stdcall;
function GetPointer(var ppBuffer: Pointer): HResult; stdcall;
function GetSize: Longint; stdcall;
function GetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
function SetTime(var pTimeStart, pTimeEnd: TReference_Time): HResult; stdcall;
function IsSyncPoint: HResult; stdcall;
function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
function IsPreroll: HResult; stdcall;
function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
function GetActualDataLength: Longint; stdcall;
function SetActualDataLength(l: Longint): HResult; stdcall;
function GetMediaType(var ppMediaType: PAM_Media_Type): HResult; stdcall;
function SetMediaType(const pMediaType: TAM_Media_Type): HResult; stdcall;
function IsDiscontinuity: HResult; stdcall;
function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
function GetMediaTime(var pTimeStart, pTimeEnd: LONGLONG): HResult; stdcall;
function SetMediaTime(var pTimeStart, pTimeEnd: LONGLONG): HResult; stdcall;
end;
const
{
EXTERN_C const IID LIBID_DirectShowStreamLib;
EXTERN_C const CLSID CLSID_AMMultiMediaStream;
}
CLSID_AMMultiMediaStream: TGUID = '{49C47CE5-9BA4-11D0-8212-00C04FC32C45}';
CLSID_AMDirectDrawStream: TGUID = (D1:$49C47CE4;D2:$9BA4;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
CLSID_AMAudioStream: TGUID = (D1:$8496E040;D2:$AF4C;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
CLSID_AMAudioData: TGUID = (D1:$F2468580;D2:$AF8A;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
CLSID_AMMediaTypeStream: TGUID = (D1:$CF0F2F7C;D2:$F7BF;D3:$11D0;D4:($90,$0D,$00,$C0,$4F,$D9,$18,$9D));
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: ddstream.h
*
***************************************************************************)
const
DDSFF_PROGRESSIVERENDER = $1;
IID_IDirectDrawMediaStream: TGUID = '{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}';
IID_IDirectDrawStreamSample: TGUID = '{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}';
type
IDirectDrawStreamSample = interface;
IDirectDrawMediaStream = interface(IMediaStream)
['{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}']
function GetFormat(var pDDSDCurrent: TDDSURFACEDESC;
out ppDirectDrawPalette: IDirectDrawPalette;
var pDDSDDesired: TDDSURFACEDESC; var pdwFlags: DWORD): HResult; stdcall;
function SetFormat(const pDDSurfaceDesc: TDDSURFACEDESC;
pDirectDrawPalette: IDirectDrawPalette): HResult; stdcall;
function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
function SetDirectDraw(pDirectDraw: IDirectDraw): HResult; stdcall;
function CreateSample(pSurface: IDirectDrawSurface; const pRect: TRect;
dwFlags: DWORD; out ppSample: IDirectDrawStreamSample): HResult; stdcall;
function GetTimePerFrame(var pFrameTime: TStream_Time): HResult; stdcall;
end;
IDirectDrawStreamSample = interface(IStreamSample)
['{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}']
function GetSurface(out ppDirectDrawSurface: IDirectDrawSurface;
var pRect: TRect): HResult; stdcall;
function SetRect(const pRect: TRect): HResult; stdcall;
end;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: austream.h
*
***************************************************************************)
const
IID_IAudioMediaStream: TGUID = '{F7537560-A3BE-11D0-8212-00C04FC32C45}';
IID_IAudioStreamSample: TGUID = '{345FEE00-ABA5-11D0-8212-00C04FC32C45}';
IID_IMemoryData: TGUID = '{327FC560-AF60-11D0-8212-00C04FC32C45}';
IID_IAudioData: TGUID = '{54C719C0-AF60-11D0-8212-00C04FC32C45}';
type
IAudioStreamSample = interface;
IAudioData = interface;
IAudioMediaStream = interface(IMediaStream)
['{F7537560-A3BE-11D0-8212-00C04FC32C45}']
function GetFormat(var pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
function CreateSample(pAudioData: IAudioData; dwFlags: DWORD;
out ppSample: IAudioStreamSample): HResult; stdcall;
end;
IAudioStreamSample = interface(IStreamSample)
['{345FEE00-ABA5-11D0-8212-00C04FC32C45}']
function GetAudioData(out ppAudio: IAudioData): HResult; stdcall;
end;
IMemoryData = interface(IUnknown)
['{327FC560-AF60-11D0-8212-00C04FC32C45}']
function SetBuffer(cbSize: DWORD; pbData: Pointer; dwFlags: DWORD): HResult; stdcall;
function GetInfo(var pdwLength: DWORD; var ppbData: Pointer;
var pcbActualData: DWORD): HResult; stdcall;
function SetActual(cbDataValid: DWORD): HResult; stdcall;
end;
IAudioData = interface(IMemoryData)
['{54C719C0-AF60-11D0-8212-00C04FC32C45}']
function GetFormat(var pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
end;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: mpconfig.h
*
***************************************************************************)
const
IID_IMixerPinConfig: TGUID = (D1:$593CDDE1;D2:$0759;D3:$11D1;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
type
TAM_Aspect_Ratio_Mode = (
AM_ARMODE_STRETCHED, // don't do any aspect ratio correction
AM_ARMODE_LETTER_BOX, // letter box the video, paint background color in the excess region
AM_ARMODE_CROP, // crop the video to the right aspect ratio
AM_ARMODE_STRETCHED_AS_PRIMARY
);
IMixerPinConfig = interface(IUnknown)
['{593CDDE1-0759-11D1-9E69-00C04FD7C15B}']
function SetRelativePosition(dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
function GetRelativePosition(var dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
function SetZOrder(dwZOrder: DWORD): HResult; stdcall;
function GetZOrder(var dwZOrder: DWORD): HResult; stdcall;
function SetColorKey(const pColorKey: TColorKey): HResult; stdcall;
function GetColorKey(var pColorKey: TColorKey; var pColor: DWORD): HResult; stdcall;
function SetBlendingParameter(dwBlendingParameter: DWORD): HResult; stdcall;
function GetBlendingParameter(var dwBlendingParameter: DWORD): HResult; stdcall;
function SetAspectRatioMode(amAspectRatioMode: TAM_Aspect_Ratio_Mode): HResult; stdcall;
function GetAspectRatioMode(var amAspectRatioMode: TAM_Aspect_Ratio_Mode): HResult; stdcall;
function SetStreamTransparent(bStreamTransparent: BOOL): HResult; stdcall;
function GetStreamTransparent(var bStreamTransparent: BOOL): HResult; stdcall;
end;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: control.h
*
***************************************************************************)
const
LIBID_QuartzTypeLib: TGUID = (D1:$56A868B0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IAMCollection: TGUID = (D1:$56A868B9;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IMediaControl: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IMediaEvent: TGUID = (D1:$56A868B6;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IMediaEventEx: TGUID = (D1:$56A868C0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IMediaPosition: TGUID = (D1:$56A868B2;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IBasicAudio: TGUID = (D1:$56A868B3;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IVideoWindow: TGUID = (D1:$56A868B4;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IBasicVideo: TGUID = (D1:$56A868B5;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IDeferredCommand: TGUID = (D1:$56A868B8;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IQueueCommand: TGUID = (D1:$56A868B7;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
CLSID_FilgraphManager: TGUID = (D1:$E436EBB3;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
IID_IFilterInfo: TGUID = (D1:$56A868BA;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IRegFilterInfo: TGUID = (D1:$56A868BB;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IMediaTypeInfo: TGUID = (D1:$56A868BC;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IPinInfo: TGUID = (D1:$56A868BD;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
type
OAEVENT = Longint;
OAHWND = Longint;
OAFilterState = Longint;
(* Definition of interface: IAMCollection *)
IAMCollection = interface(IDispatch)
['{56A868B9-0AD4-11CE-B03A-0020AF0BA770}']
(* IAMCollection methods *)
function get_Count(var plCount: Longint): HResult; stdcall;
function Item(lItem: Longint; out ppUnk: IUnknown): HResult; stdcall;
function get__NewEnum(out ppUnk: IUnknown): HResult; stdcall;
end;
(* Definition of interface: IMediaControl *)
IMediaControl = interface(IDispatch)
['{56A868B1-0AD4-11CE-B03A-0020AF0BA770}']
(* IMediaControl methods *)
function Run: HResult; stdcall;
function Pause: HResult; stdcall;
function Stop: HResult; stdcall;
function GetState(msTimeout: Longint; var pfs: OAFilterState): HResult; stdcall;
function RenderFile(strFilename: TBSTR): HResult; stdcall;
function AddSourceFilter(strFilename: TBSTR; ppUnk: IDispatch): HResult; stdcall;
function get_FilterCollection(out ppUnk: IDispatch): HResult; stdcall;
function get_RegFilterCollection(out ppUnk: IDispatch): HResult; stdcall;
function StopWhenReady: HResult; stdcall;
end;
(* Definition of interface: IMediaEvent *)
IMediaEvent = interface(IDispatch)
['{56A868B6-0AD4-11CE-B03A-0020AF0BA770}']
(* IMediaEvent methods *)
function GetEventHandle(var hEvent: OAEVENT): HResult; stdcall;
function GetEvent(var lEventCode: Longint; var lParam1, lParam2: Longint;
msTimeout: Longint): HResult; stdcall;
function WaitForCompletion(msTimeout: Longint; var pEvCode: Longint): HResult; stdcall;
function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
function FreeEventParams(lEvCode: Longint; lParam1, lParam2: Longint): HResult; stdcall;
end;
(* Definition of interface: IMediaEventEx *)
IMediaEventEx = interface(IMediaEvent)
['{56A868C0-0AD4-11CE-B03A-0020AF0BA770}']
(* IMediaEventEx methods *)
function SetNotifyWindow(hwnd: OAHWND; lMsg: Longint;
lInstanceData: Longint): HResult; stdcall;
function SetNotifyFlags(lNoNotifyFlags: Longint): HResult; stdcall;
function GetNotifyFlags(var lplNoNotifyFlags: Longint): HResult; stdcall;
end;
(* Definition of interface: IMediaPosition *)
IMediaPosition = interface(IDispatch)
['{56A868B2-0AD4-11CE-B03A-0020AF0BA770}']
(* IMediaPosition methods *)
function get_Duration(var plength: TRefTime): HResult; stdcall;
function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
function get_CurrentPosition(var pllTime: TRefTime): HResult; stdcall;
function get_StopTime(var pllTime: TRefTime): HResult; stdcall;
function put_StopTime(llTime: TRefTime): HResult; stdcall;
function get_PrerollTime(var pllTime: TRefTime): HResult; stdcall;
function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
function put_Rate(dRate: double): HResult; stdcall;
function get_Rate(var pdRate: double): HResult; stdcall;
function CanSeekForward(var pCanSeekForward: Longint): HResult; stdcall;
function CanSeekBackward(var pCanSeekBackward: Longint): HResult; stdcall;
end;
(* Definition of interface: IBasicAudio *)
IBasicAudio = interface(IDispatch)
['{56A868B3-0AD4-11CE-B03A-0020AF0BA770}']
(* IBasicAudio methods *)
function put_Volume(lVolume: Longint): HResult; stdcall;
function get_Volume(var plVolume: Longint): HResult; stdcall;
function put_Balance(lBalance: Longint): HResult; stdcall;
function get_Balance(var plBalance: Longint): HResult; stdcall;
end;
(* Definition of interface: IVideoWindow *)
IVideoWindow = interface(IDispatch)
['{56A868B4-0AD4-11CE-B03A-0020AF0BA770}']
(* IVideoWindow methods *)
function put_Caption(strCaption: TBSTR): HResult; stdcall;
function get_Caption(var strCaption: TBSTR): HResult; stdcall;
function put_WindowStyle(WindowStyle: Longint): HResult; stdcall;
function get_WindowStyle(var WindowStyle: Longint): HResult; stdcall;
function put_WindowStyleEx(WindowStyleEx: Longint): HResult; stdcall;
function get_WindowStyleEx(var WindowStyleEx: Longint): HResult; stdcall;
function put_AutoShow(AutoShow: LongBool): HResult; stdcall;
function get_AutoShow(var AutoShow: LongBool): HResult; stdcall;
function put_WindowState(WindowState: Longint): HResult; stdcall;
function get_WindowState(var WindowState: Longint): HResult; stdcall;
function put_BackgroundPalette(BackgroundPalette: Longint): HResult; stdcall;
function get_BackgroundPalette(var pBackgroundPalette: Longint): HResult; stdcall;
function put_Visible(Visible: LongBool): HResult; stdcall;
function get_Visible(var pVisible: LongBool): HResult; stdcall;
function put_Left(Left: Longint): HResult; stdcall;
function get_Left(var pLeft: Longint): HResult; stdcall;
function put_Width(Width: Longint): HResult; stdcall;
function get_Width(var pWidth: Longint): HResult; stdcall;
function put_Top(Top: Longint): HResult; stdcall;
function get_Top(var pTop: Longint): HResult; stdcall;
function put_Height(Height: Longint): HResult; stdcall;
function get_Height(var pHeight: Longint): HResult; stdcall;
function put_Owner(Owner: OAHWND): HResult; stdcall;
function get_Owner(var Owner: OAHWND): HResult; stdcall;
function put_MessageDrain(Drain: OAHWND): HResult; stdcall;
function get_MessageDrain(var Drain: OAHWND): HResult; stdcall;
function get_BorderColor(var Color: Longint): HResult; stdcall;
function put_BorderColor(Color: Longint): HResult; stdcall;
function get_FullScreenMode(var FullScreenMode: LongBool): HResult; stdcall;
function put_FullScreenMode(FullScreenMode: LongBool): HResult; stdcall;
function SetWindowForeground(Focus: Longint): HResult; stdcall;
function NotifyOwnerMessage(hwnd: Longint; uMsg, wParam, lParam: Longint): HResult; stdcall;
function SetWindowPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
function GetWindowPosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
function GetMinIdealImageSize(var pWidth, pHeight: Longint): HResult; stdcall;
function GetMaxIdealImageSize(var pWidth, pHeight: Longint): HResult; stdcall;
function GetRestorePosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
function HideCursor(HideCursor: LongBool): HResult; stdcall;
function IsCursorHidden(var CursorHidden: LongBool): HResult; stdcall;
end;
(* Definition of interface: IBasicVideo *)
IBasicVideo = interface(IDispatch)
['{56A868B5-0AD4-11CE-B03A-0020AF0BA770}']
(* IBasicVideo methods *)
function get_AvgTimePerFrame(var pAvgTimePerFrame: TRefTime): HResult; stdcall;
function get_BitRate(var pBitRate: Longint): HResult; stdcall;
function get_BitErrorRate(var pBitErrorRate: Longint): HResult; stdcall;
function get_VideoWidth(var pVideoWidth: Longint): HResult; stdcall;
function get_VideoHeight(var pVideoHeight: Longint): HResult; stdcall;
function put_SourceLeft(SourceLeft: Longint): HResult; stdcall;
function get_SourceLeft(var pSourceLeft: Longint): HResult; stdcall;
function put_SourceWidth(SourceWidth: Longint): HResult; stdcall;
function get_SourceWidth(var pSourceWidth: Longint): HResult; stdcall;
function put_SourceTop(SourceTop: Longint): HResult; stdcall;
function get_SourceTop(var pSourceTop: Longint): HResult; stdcall;
function put_SourceHeight(SourceHeight: Longint): HResult; stdcall;
function get_SourceHeight(var pSourceHeight: Longint): HResult; stdcall;
function put_DestinationLeft(DestinationLeft: Longint): HResult; stdcall;
function get_DestinationLeft(var pDestinationLeft: Longint): HResult; stdcall;
function put_DestinationWidth(DestinationWidth: Longint): HResult; stdcall;
function get_DestinationWidth(var pDestinationWidth: Longint): HResult; stdcall;
function put_DestinationTop(DestinationTop: Longint): HResult; stdcall;
function get_DestinationTop(var pDestinationTop: Longint): HResult; stdcall;
function put_DestinationHeight(DestinationHeight: Longint): HResult; stdcall;
function get_DestinationHeight(var pDestinationHeight: Longint): HResult; stdcall;
function SetSourcePosition(Left, Top, Width, Height: Longint): HResult; stdcall;
function GetSourcePosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
function SetDefaultSourcePosition: HResult; stdcall;
function SetDestinationPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
function GetDestinationPosition(var pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
function SetDefaultDestinationPosition: HResult; stdcall;
function GetVideoSize(var pWidth, Height: Longint): HResult; stdcall;
function GetVideoPaletteEntries(StartIndex, Entries: Longint;
var pRetrieved: Longint; var pPalette): HResult; stdcall;
function GetCurrentImage(var BufferSize: Longint; var pDIBImage): HResult; stdcall;
function IsUsingDefaultSource: HResult; stdcall;
function IsUsingDefaultDestination: HResult; stdcall;
end;
(* Definition of interface: IDeferredCommand *)
IDeferredCommand = interface(IDispatch)
['{56A868B8-0AD4-11CE-B03A-0020AF0BA770}']
(* IDeferredCommand methods *)
function Cancel: HResult; stdcall;
function Confidence(var pConfidence: Longint): HResult; stdcall;
function Postpone(newtime: TRefTime): HResult; stdcall;
function GetHResult(var phrResult: HResult): HResult; stdcall;
end;
(* Definition of interface: IQueueCommand *)
IQueueCommand = interface(IUnknown)
['{56A868B7-0AD4-11CE-B03A-0020AF0BA770}']
(* IQueueCommand methods *)
function InvokeAtStreamTime(out pCmd: IDeferredCommand; time: TRefTime;
const iid: TGUID; dispidMethod: Longint; wFlags: SmallInt;
cArgs: Longint; const pDispParams: Variant; var pvarResult: Variant;
var puArgErr: SmallInt): HResult; stdcall;
function InvokeAtPresentationTime(out pCmd: IDeferredCommand;
time: TRefTime; const iid: TGUID; dispidMethod: Longint;
wFlags: SmallInt; cArgs: Longint; const pDispParams: Variant;
var pvarResult: Variant; var puArgErr: SmallInt): HResult; stdcall;
end;
(* Definition of interface: IFilterInfo *)
IFilterInfo = interface(IDispatch)
['{56A868BA-0AD4-11CE-B03A-0020AF0BA770}']
(* IFilterInfo methods *)
function FindPin(strPinID: TBSTR; out ppUnk: IDispatch): HResult; stdcall;
function get_Name(var strName: TBSTR): HResult; stdcall;
function get_VendorInfo(var strVendorInfo: TBSTR): HResult; stdcall;
function get_Filter(out ppUnk: IUnknown): HResult; stdcall;
function get_Pins(out ppUnk: IDispatch): HResult; stdcall;
function get_IsFileSource(var pbIsSource: LongBool): HResult; stdcall;
function get_Filename(var pstrFilename: TBSTR): HResult; stdcall;
function put_Filename(strFilename: TBSTR): HResult; stdcall;
end;
(* Definition of interface: IRegFilterInfo *)
IRegFilterInfo = interface(IDispatch)
['{56A868BB-0AD4-11CE-B03A-0020AF0BA770}']
(* IRegFilterInfo methods *)
function get_Name(var strName: TBSTR): HResult; stdcall;
function Filter(out ppUnk: IDispatch): HResult; stdcall;
end;
(* Definition of interface: IMediaTypeInfo *)
IMediaTypeInfo = interface(IDispatch)
['{56A868BC-0AD4-11CE-B03A-0020AF0BA770}']
(* IMediaTypeInfo methods *)
function get_Type(var strType: TBSTR): HResult; stdcall;
function get_Subtype(var strType: TBSTR): HResult; stdcall;
end;
(* Definition of interface: IPinInfo *)
IPinInfo = interface(IDispatch)
['{56A868BD-0AD4-11CE-B03A-0020AF0BA770}']
(* IPinInfo methods *)
function get_Pin(out ppUnk: IUnknown): HResult; stdcall;
function get_ConnectedTo(out ppUnk: IDispatch): HResult; stdcall;
function get_ConnectionMediaType(out ppUnk: IDispatch): HResult; stdcall;
function get_FilterInfo(out ppUnk: IDispatch): HResult; stdcall;
function get_Name(var ppUnk: TBSTR): HResult; stdcall;
function get_Direction(var ppDirection: Longint): HResult; stdcall;
function get_PinID(var strPinID: TBSTR): HResult; stdcall;
function get_MediaTypes(out ppUnk: IDispatch): HResult; stdcall;
function Connect(pPin: IUnknown): HResult; stdcall;
function ConnectDirect(pPin: IUnknown): HResult; stdcall;
function ConnectWithType(pPin: IUnknown; pMediaType: IDispatch): HResult; stdcall;
function Disconnect: HResult; stdcall;
function Render: HResult; stdcall;
end;
(*==========================================================================;
*
* Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
*
* File: qnetwork.h
*
***************************************************************************)
const
LIBID_QuartzNetTypeLib: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
IID_IAMNetShowConfig: TGUID = (D1:$FA2AA8F1;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
IID_IAMChannelInfo: TGUID = (D1:$FA2AA8F2;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
IID_IAMNetworkStatus: TGUID = (D1:$FA2AA8F3;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
IID_IAMExtendedSeeking: TGUID = (D1:$FA2AA8F9;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
IID_IAMNetShowExProps: TGUID = (D1:$FA2AA8F5;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
IID_IAMExtendedErrorInfo: TGUID = (D1:$FA2AA8F6;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
IID_IAMMediaContent: TGUID = (D1:$FA2AA8EF;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
type
TAMExtendedSeekingCapabilities = (
AM_EXSEEK_INVALID_0,
AM_EXSEEK_CANSEEK,
AM_EXSEEK_CANSCAN,
AM_EXSEEK_INVALID_3,
AM_EXSEEK_MARKERSEEK,
AM_EXSEEK_INVALID_5,
AM_EXSEEK_INVALID_6,
AM_EXSEEK_INVALID_7,
AM_EXSEEK_SCANWITHOUTCLOCK,
AM_EXSEEK_INVALID_9,
AM_EXSEEK_INVALID_10,
AM_EXSEEK_INVALID_11,
AM_EXSEEK_INVALID_12,
AM_EXSEEK_INVALID_13,
AM_EXSEEK_INVALID_14,
AM_EXSEEK_INVALID_15,
AM_EXSEEK_NOSTANDARDREPAINT
);
TDate = record
da_year: Integer; // Year - 1980
da_day: Byte; // Day of the month
da_mon: Byte; // Month (1 = Jan)
end;
(* Definition of interface: IAMNetShowConfig *)
IAMNetShowConfig = interface(IDispatch)
['{FA2AA8F1-8B62-11D0-A520-000000000000}']