最近又更新了一下DirectShow头文件,以下接口用于简单的多媒体播放还是OK的,如果再深入其他接口,再添加。
Win32汇编COM调用DirectShow接口部分定义:
;//------------------------------------------------------------------------------
;//
;// By G-Spider 2010
;//
;// Copyright (c) 2010 - 2011. All rights reserved.
;//------------------------------------------------------------------------------
CLSID_FilterGraph GUID <0e436ebb3h, 524fh, 11ceh, <9fh, 53h, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
;// Get the interface for DirectShow's GraphBuilder
IID_IGraphBuilder GUID <56a868a9h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h ,70h>>
;// QueryInterface for DirectShow interfaces
IID_IMediaControl GUID <56a868b1h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
IID_IMediaEventEx GUID <56a868c0h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
IID_IMediaSeeking GUID <36b73880h, 0c2c8h, 11cfh, <8bh, 46h, 00h, 80h, 5fh, 6ch, 0efh, 60h>>
IID_IMediaPosition GUID <56a868b2h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
;// Query for video interfaces, which may not be relevant for audio files
IID_IBasicVideo GUID <56a868b5h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
IID_IVideoWindow GUID <56a868b4h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
;// Query for audio interfaces, which may not be relevant for video-only files
IID_IBasicAudio GUID <56a868b3h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
IID_IQualityControl GUID <56a868a5h, 0ad4h, 11ceh, <0b0h, 3ah, 00h, 20h, 0afh, 0bh, 0a7h, 70h>>
pcomethod1 TYPEDEF PROTO :DWORD
pcomethod2 TYPEDEF PROTO :DWORD, :DWORD
pcomethod3 TYPEDEF PROTO :DWORD, :DWORD, :DWORD
pcomethod4 TYPEDEF PROTO :DWORD, :DWORD, :DWORD, :DWORD
pcomethod5 TYPEDEF PROTO :DWORD, :DWORD, :DWORD, :DWORD , :DWORD
pcomethod6 TYPEDEF PROTO :DWORD, :DWORD, :DWORD, :DWORD , :DWORD ,:DWORD
pcomethod7 TYPEDEF PROTO :DWORD, :DWORD, :DWORD, :DWORD , :DWORD ,:DWORD ,:DWORD
pcomethod8 TYPEDEF PROTO :DWORD, :DWORD, :DWORD, :DWORD , :DWORD ,:DWORD ,:DWORD ,:DWORD
pcomethod9 TYPEDEF PROTO :DWORD, :DWORD, :DWORD, :DWORD , :DWORD ,:DWORD ,:DWORD ,:DWORD ,:DWORD
comethod1 TYPEDEF PTR pcomethod1
comethod2 TYPEDEF PTR pcomethod2
comethod3 TYPEDEF PTR pcomethod3
comethod4 TYPEDEF PTR pcomethod4
comethod5 TYPEDEF PTR pcomethod5
comethod6 TYPEDEF PTR pcomethod6
comethod7 TYPEDEF PTR pcomethod7
comethod8 TYPEDEF PTR pcomethod8
comethod9 TYPEDEF PTR pcomethod9
POINTD STRUCT
x DWORD ?
y DWORD ?
_Width DWORD ?
_Height DWORD ?
POINTD ENDS
Quality STRUCT
_Type DWORD ? ;0:当前发送数据太慢或1:发送太快
Proportion DWORD ?
Late QWORD ?
TimeStamp QWORD ?
Quality ENDS
;-----------------------------------------------------------------
;-----------------------------------------------------------------
IUnknown STRUCT
QueryInterface comethod3 ?
AddRef comethod1 ?
Release comethod1 ?
IUnknown ENDS
;-----------------------------------------------------------------
IGraphBuilderVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
; IGraphBuilder methods
AddFilter comethod3 ?
RemoveFilter comethod2 ?
EnumFilters comethod2 ?
FindFilterByName comethod3 ?
ConnectDirect comethod4 ?
Reconnect comethod2 ?
Disconnect comethod2 ?
SetDefaultSyncSource comethod1 ?
Connect comethod3 ?
Render comethod2 ?
RenderFile comethod3 ?
AddSourceFilter comethod4 ?
SetLogFile comethod2 ?
Abort comethod1 ?
ShouldOperationContinue comethod1 ?
IGraphBuilderVtbl ENDS
IGraphBuilder STRUCT
lpVtbl DWORD ?;->IGraphBuilderVtbl
IGraphBuilder ENDS
;-----------------------------------------------------------------
IMediaControlVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
;---------------
GetTypeInfoCount comethod2 ?
GetTypeInfo comethod4 ?
GetIDsOfNames comethod6 ?
_Invoke comethod9 ?
;---------------
;IMediaControl methods
Run comethod1 ?
_Pause comethod1 ?
Stop comethod1 ?
GetState comethod3 ?
RenderFile comethod2 ?
AddSourceFilter comethod3 ?
get_FilterCollection comethod2 ?
get_RegFilterCollection comethod2 ?
StopWhenReady comethod1 ?
IMediaControlVtbl ENDS
IMediaControl STRUCT
lpVtbl DWORD ?;->IMediaControlVtbl
IMediaControl ENDS
;-----------------------------------------------------------------
IMediaEventExVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
;---------------
GetTypeInfoCount comethod2 ?
GetTypeInfo comethod4 ?
GetIDsOfNames comethod6 ?
_Invoke comethod9 ?
;---------------
; IMediaEventEx methods
GetEventHandle comethod2 ?
GetEvent comethod5 ?
WaitForCompletion comethod3 ?
CancelDefaultHandling comethod2 ?
RestoreDefaultHandling comethod2 ?
FreeEventParams comethod4 ?
SetNotifyWindow comethod4 ?
SetNotifyFlags comethod2 ?
GetNotifyFlags comethod2 ?
IMediaEventExVtbl ENDS
IMediaEventEx STRUCT
lpVtbl DWORD ?;->IMediaEventExVtbl
IMediaEventEx ENDS
;-----------------------------------------------------------------
IMediaSeekingVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
; IMediaSeeking methods
;---------------
GetCapabilities comethod2 ?
CheckCapabilities comethod2 ?
IsFormatSupported comethod2 ?
QueryPreferredFormat comethod2 ?
GetTimeFormat comethod2 ?
IsUsingTimeFormat comethod2 ?
SetTimeFormat comethod2 ?
GetDuration comethod2 ?
GetStopPosition comethod2 ?
GetCurrentPosition comethod2 ?
ConvertTimeFormat comethod5 ?
SetPositions comethod5 ?
GetPositions comethod3 ?
GetAvailable comethod3 ?
SetRate comethod2 ?
GetRate comethod2 ?
GetPreroll comethod2 ?
IMediaSeekingVtbl ENDS
IMediaSeeking STRUCT
lpVtbl DWORD ?;->IMediaSeekingVtbl
IMediaSeeking ENDS
;-----------------------------------------------------------------
IMediaPositionVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
;---------------
GetTypeInfoCount comethod2 ?
GetTypeInfo comethod4 ?
GetIDsOfNames comethod6 ?
_Invoke comethod9 ?
;---------------
; IMediaPosition methods
get_Duration comethod2 ?
put_CurrentPosition comethod2 ?
get_CurrentPosition comethod2 ?
get_StopTime comethod2 ?
put_StopTime comethod2 ?
get_PrerollTime comethod2 ?
put_PrerollTime comethod2 ?
put_Rate comethod2 ?
get_Rate comethod2 ?
CanSeekForward comethod2 ?
CanSeekBackward comethod2 ?
IMediaPositionVtbl ENDS
IMediaPosition STRUCT
lpVtbl DWORD ?;->IMediaPositionVtbl
IMediaPosition ENDS
;-----------------------------------------------------------------
IBasicAudioVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
;---------------
GetTypeInfoCount comethod2 ?
GetTypeInfo comethod4 ?
GetIDsOfNames comethod6 ?
_Invoke comethod9 ?
;---------------
; IBasicAudio methods
put_Volume comethod2 ?
get_Volume comethod2 ?
put_Balance comethod2 ?
get_Balance comethod2 ?
IBasicAudioVtbl ENDS
IBasicAudio STRUCT
lpVtbl DWORD ?;->IBasicAudioVtbl
IBasicAudio ENDS
;-----------------------------------------------------------------
IBasicVideoVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
;---------------
GetTypeInfoCount comethod2 ?
GetTypeInfo comethod4 ?
GetIDsOfNames comethod6 ?
_Invoke comethod9 ?
;---------------
; IBasicVideo methods
get_AvgTimePerFrame comethod2 ?
get_BitRate comethod2 ?
get_BitErrorRate comethod2 ?
get_VideoWidth comethod2 ?
get_VideoHeight comethod2 ?
put_SourceLeft comethod2 ?
get_SourceLeft comethod2 ?
put_SourceWidth comethod2 ?
get_SourceWidth comethod2 ?
put_SourceTop comethod2 ?
get_SourceTop comethod2 ?
put_SourceHeight comethod2 ?
get_SourceHeight comethod2 ?
put_DestinationLeft comethod2 ?
get_DestinationLeft comethod2 ?
put_DestinationWidth comethod2 ?
get_DestinationWidth comethod2 ?
put_DestinationTop comethod2 ?
get_DestinationTop comethod2 ?
put_DestinationHeight comethod2 ?
get_DestinationHeight comethod2 ?
SetSourcePosition comethod5 ?
GetSourcePosition comethod5 ?
SetDefaultSourcePosition comethod1 ?
SetDestinationPosition comethod5 ?
GetDestinationPosition comethod5 ?
SetDefaultDestinationPosition comethod1 ?
GetVideoSize comethod3 ?
GetVideoPaletteEntries comethod5 ?
GetCurrentImage comethod3 ?
IsUsingDefaultSource comethod1 ?
IsUsingDefaultDestination comethod1 ?
IBasicVideoVtbl ENDS
IBasicVideo STRUCT
lpVtbl DWORD ?;->IBasicVideoVtbl
IBasicVideo ENDS
;-----------------------------------------------------------------
IVideoWindowVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
;---------------
GetTypeInfoCount comethod2 ?
GetTypeInfo comethod4 ?
GetIDsOfNames comethod6 ?
_Invoke comethod9 ?
;---------------
; IVideoWindow methods
put_Caption comethod2 ?
get_Caption comethod2 ?
put_WindowStyle comethod2 ?
get_WindowStyle comethod2 ?
put_WindowStyleEx comethod2 ?
get_WindowStyleEx comethod2 ?
put_AutoShow comethod2 ?
get_AutoShow comethod2 ?
put_WindowState comethod2 ?
get_WindowState comethod2 ?
put_BackgroundPalette comethod2 ?
get_BackgroundPalette comethod2 ?
put_Visible comethod2 ?
get_Visible comethod2 ?
put_Left comethod2 ?
get_Left comethod2 ?
put_Width comethod2 ?
get_Width comethod2 ?
put_Top comethod2 ?
get_Top comethod2 ?
put_Height comethod2 ?
get_Height comethod2 ?
put_Owner comethod2 ?
get_Owner comethod2 ?
put_MessageDrain comethod2 ?
get_MessageDrain comethod2 ?
get_BorderColor comethod2 ?
put_BorderColor comethod2 ?
get_FullScreenMode comethod2 ?
put_FullScreenMode comethod2 ?
SetWindowForeground comethod2 ?
NotifyOwnerMessage comethod5 ?
SetWindowPosition comethod5 ?
GetWindowPosition comethod5 ?
GetMinIdealImageSize comethod3 ?
GetMaxIdealImageSize comethod3 ?
GetRestorePosition comethod5 ?
HideCursor comethod2 ?
IsCursorHidden comethod2 ?
IVideoWindowVtbl ENDS
IVideoWindow STRUCT
lpVtbl DWORD ?;->IVideoWindowVtbl
IVideoWindow ENDS
;-----------------------------------------------------------------
IQualityControlVtbl STRUCT
; IUnknown methods
Unknown IUnknown <>
; IQualityControl methods
Notify comethod3 ?
SetSink comethod2 ?
IQualityControlVtbl ENDS
IQualityControl STRUCT
lpVtbl DWORD ?;->IQualityControlVtbl
IQualityControl ENDS