?? dshow.pas
字號:
(*==========================================================================;
*
* 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+}
{ $WEAKPACKAGEUNIT}
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;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -