?? dspack.pas
字號:
ceFileRendering,
ceFileRendered,
ceDVDRendering,
ceDVDRendered,
ceActive
);
{@exclude}
IEvent = interface
['{6C0DCD7B-1A98-44EF-A6D5-E23CBC24E620}']
{ FilterGraph events. }
procedure GraphEvent(Event, Param1, Param2: integer);
{ Control Events. }
procedure ControlEvent(Event: TControlEvent; Param: integer = 0);
end;
// *****************************************************************************
// TFilterGraph
// *****************************************************************************
{ This component is the central component in DirectShow, the Filter Graph
handle synchronization, event notification, and other aspects of the
controlling the filter graph. }
TFilterGraph = class(TComponent, IAMGraphBuilderCallback, IAMFilterGraphCallback,
IServiceProvider)
private
FActive : boolean;
FAutoCreate : boolean;
FHandle : THandle; // to capture events
FMode : TGraphMode;
FVolume : integer;
FBalance : integer;
FRate : Double;
FLinearVolume : Boolean;
FFilters: TInterfaceList;
FGraphEvents: TInterfaceList;
// builders
FFilterGraph : IGraphBuilder;
FCaptureGraph : ICaptureGraphBuilder2;
FDVDGraph : IDvdGraphBuilder;
// events interface
FMediaEventEx : IMediaEventEx;
// Graphedit
FGraphEdit : boolean;
FGraphEditID : Integer;
// Log File
FLogFileName: String;
FLogFile: TFileStream;
FOnActivate: TNotifyEvent;
// All Events Code
FOnDSEvent : TOnDSEvent;
// Generic Graph Events
FOnGraphBufferingData : TOnGraphBufferingData;
FOnGraphClockChanged : TNotifyEvent;
FOnGraphComplete : TOnGraphComplete;
FOnGraphDeviceLost : TOnGraphDeviceLost;
FOnGraphEndOfSegment : TOnGraphEndOfSegment;
FOnGraphErrorStillPlaying : TOnDSResult;
FOnGraphErrorAbort : TOnDSResult;
FOnGraphFullscreenLost : TOnGraphFullscreenLost;
FOnGraphChanged : TNotifyEvent;
FOnGraphOleEvent : TOnGraphOleEvent;
FOnGraphOpeningFile : TOnGraphOpeningFile;
FOnGraphPaletteChanged : TNotifyEvent;
FOnGraphPaused : TOnDSResult;
FOnGraphQualityChange : TNotifyEvent;
FOnGraphSNDDevInError : TOnGraphSNDDevError;
FOnGraphSNDDevOutError : TOnGraphSNDDevError;
FOnGraphStepComplete : TNotifyEvent;
FOnGraphStreamControlStarted : TOnGraphStreamControl;
FOnGraphStreamControlStopped : TOnGraphStreamControl;
FOnGraphStreamErrorStillPlaying : TOnGraphStreamError;
FOnGraphStreamErrorStopped : TOnGraphStreamError;
FOnGraphUserAbort : TNotifyEvent;
FOnGraphVideoSizeChanged : TOnGraphVideoSizeChanged;
FOnGraphTimeCodeAvailable : TOnGraphTimeCodeAvailable;
FOnGraphEXTDeviceModeChange : TOnGraphEXTDeviceModeChange;
FOnGraphClockUnset : TNotifyEvent;
FOnGraphVMRRenderDevice : TOnGraphVMRRenderDevice;
FOnDVDAudioStreamChange : TOnDVDAudioStreamChange;
FOnDVDCurrentTime : TOnDVDCurrentTime;
FOnDVDTitleChange : TOnDVDTitleChange;
FOnDVDChapterStart : TOnDVDChapterStart;
FOnDVDAngleChange : TOnDVDChange;
FOnDVDValidUOPSChange : TOnDVDValidUOPSChange;
FOnDVDButtonChange : TOnDVDChange;
FOnDVDChapterAutoStop : TNotifyEvent;
FOnDVDStillOn : TOnDVDStillOn;
FOnDVDStillOff : TNotifyEvent;
FOnDVDSubpictureStreamChange : TOnDVDSubpictureStreamChange;
FOnDVDNoFP_PGC : TNotifyEvent;
FOnDVDPlaybackRateChange : TOnDVDPlaybackRateChange;
FOnDVDParentalLevelChange : TOnDVDParentalLevelChange;
FOnDVDPlaybackStopped : TNotifyEvent;
FOnDVDAnglesAvailable : TOnDVDAnglesAvailable;
FOnDVDPlayPeriodAutoStop : TNotifyEvent;
FOnDVDButtonAutoActivated : TOnDVDButtonAutoActivated;
FOnDVDCMDStart : TOnDVDCMD;
FOnDVDCMDEnd : TOnDVDCMD;
FOnDVDDiscEjected : TNotifyEvent;
FOnDVDDiscInserted : TNotifyEvent;
FOnDVDCurrentHMSFTime : TOnDVDCurrentHMSFTime;
FOnDVDKaraokeMode : TOnDVDKaraokeMode;
// DVD Warning
FOnDVDWarningInvalidDVD1_0Disc : TNotifyEvent;//=1,
FOnDVDWarningFormatNotSupported : TNotifyEvent;//=2,
FOnDVDWarningIllegalNavCommand : TNotifyEvent;//=3
FOnDVDWarningOpen : TNotifyEvent;//=4
FOnDVDWarningSeek : TNotifyEvent;//=5
FOnDVDWarningRead : TNotifyEvent;//=6
// DVDDomain
FOnDVDDomainFirstPlay : TNotifyEvent;
FOnDVDDomainVideoManagerMenu : TNotifyEvent;
FOnDVDDomainVideoTitleSetMenu : TNotifyEvent;
FOnDVDDomainTitle : TNotifyEvent;
FOnDVDDomainStop : TNotifyEvent;
// DVDError
FOnDVDErrorUnexpected : TNotifyEvent;
FOnDVDErrorCopyProtectFail : TNotifyEvent;
FOnDVDErrorInvalidDVD1_0Disc : TNotifyEvent;
FOnDVDErrorInvalidDiscRegion : TNotifyEvent;
FOnDVDErrorLowParentalLevel : TNotifyEvent;
FOnDVDErrorMacrovisionFail : TNotifyEvent;
FOnDVDErrorIncompatibleSystemAndDecoderRegions : TNotifyEvent;
FOnDVDErrorIncompatibleDiscAndDecoderRegions : TNotifyEvent;
FOnSelectedFilter: TOnSelectedFilter;
FOnCreatedFilter: TOnCreatedFilter;
FOnUnableToRender: TOnUnableToRender;
procedure HandleEvents;
procedure WndProc(var Msg: TMessage);
procedure SetActive(Activate: boolean);
procedure SetGraphMode(Mode: TGraphMode);
procedure SetGraphEdit(enable: boolean);
procedure ClearOwnFilters;
procedure AddOwnFilters;
procedure GraphEvents(Event, Param1, Param2: integer);
procedure ControlEvents(Event: TControlEvent; Param: integer = 0);
procedure SetLogFile(FileName: String);
function GetState: TGraphState;
procedure SetState(Value: TGraphState);
procedure SetVolume(Volume: Integer);
procedure SetBalance(Balance: integer);
function GetSeekCaps: TSeekingCaps;
procedure SetRate(Rate: double);
function GetDuration: integer;
procedure SetLinearVolume(aEnabled: Boolean);
procedure UpdateGraph;
// IAMGraphBuilderCallback
function SelectedFilter(pMon: IMoniker): HResult; stdcall;
function CreatedFilter(pFil: IBaseFilter): HResult; stdcall;
// IAMFilterGraphCallback
function UnableToRender(ph1, ph2: integer; pPin: IPin): HResult; // thiscall
protected
{@exclude}
procedure DoEvent(Event, Param1, Param2: Integer); virtual;
{@exclude}
procedure InsertFilter(AFilter: IFilter);
{@exclude}
procedure RemoveFilter(AFilter: IFilter);
{@exclude}
procedure InsertEventNotifier(AEvent: IEvent);
{@exclude}
procedure RemoveEventNotifier(AEvent: IEvent);
{@exclude}
function QueryService(const rsid, iid: TGuid; out Obj): HResult; stdcall;
public
{ Retrieve the total duration of a stream. }
property Duration: Integer read GetDuration;
{ Retrieve/Set the rate. }
property Rate: Double read fRate write SetRate;
{ Retrieve the seeking capabilities. }
property SeekCapabilities: TSeekingCaps read GetSeekCaps;
{ The volume balance. }
property Balance: integer read fBalance write SetBalance;
{ The volume. }
property Volume: integer read fVolume write SetVolume;
{ Current state of the filter graph. }
property State: TGraphState read GetState write SetState;
{ TFilterGraph constructor. }
constructor Create(AOwner: TComponent); override;
{ TFilterGraph destructor. }
destructor Destroy; override;
{ @exclude}
procedure Loaded; override;
{ Retrieve an Interface from the current Graph.<br>
<b>ex: </b> (FilterGraph <b>as</b> IGraphBuilder).RenderFile('C:\speedis.avi', <b>nil</b>);<br>
<b>Remark: </b> The interfaces you can Query depend of the @link(Mode) you
have defined.<br>
<b>gmNormal: </b>IAMGraphStreams, IAMStats, IBasicAudio, IBasicVideo,
IBasicVideo2, IFilterChain, IFilterGraph, IFilterGraph2,
IFilterMapper2, IGraphBuilder, IGraphConfig, IGraphVersion,
IMediaControl, IMediaEvent, IMediaEventEx, IMediaEventSink,
IMediaFilter, IMediaPosition, IMediaSeeking, IQueueCommand,
IRegisterServiceProvider, IResourceManager, IServiceProvider,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -