📄 gmfbridgelib_tlb.pas
字号:
published
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
property Server: TGMFBridgeControllerProperties read GetServerProperties;
{$ENDIF}
property OnEndOfSegment: TNotifyEvent read FOnEndOfSegment write FOnEndOfSegment;
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
// *********************************************************************//
// OLE Server Properties Proxy Class
// Server Object : TGMFBridgeController
// (This object is used by the IDE's Property Inspector to allow editing
// of the properties of this server)
// *********************************************************************//
TGMFBridgeControllerProperties = class(TPersistent)
private
FServer: TGMFBridgeController;
function GetDefaultInterface: IGMFBridgeController;
constructor Create(AServer: TGMFBridgeController);
protected
public
property DefaultInterface: IGMFBridgeController read GetDefaultInterface;
published
end;
{$ENDIF}
procedure Register;
resourcestring
dtlServerPage = 'ActiveX';
dtlOcxPage = 'ActiveX';
implementation
uses ComObj;
class function CoGMFBridgeController.Create: IGMFBridgeController;
begin
Result := CreateComObject(CLASS_GMFBridgeController) as IGMFBridgeController;
end;
class function CoGMFBridgeController.CreateRemote(const MachineName: string): IGMFBridgeController;
begin
Result := CreateRemoteComObject(MachineName, CLASS_GMFBridgeController) as IGMFBridgeController;
end;
procedure TGMFBridgeController.InitServerData;
const
CServerData: TServerData = (
ClassID: '{08E3287F-3A5C-47E9-8179-A9E9221A5CDE}';
IntfIID: '{8C4D8054-FCBA-4783-865A-7E8B3C814011}';
EventIID: '{0732D4D6-96F5-46F6-B687-1DB7CD36D413}';
LicenseKey: nil;
Version: 500);
begin
ServerData := @CServerData;
end;
procedure TGMFBridgeController.Connect;
var
punk: IUnknown;
begin
if FIntf = nil then
begin
punk := GetServer;
ConnectEvents(punk);
Fintf:= punk as IGMFBridgeController;
end;
end;
procedure TGMFBridgeController.ConnectTo(svrIntf: IGMFBridgeController);
begin
Disconnect;
FIntf := svrIntf;
ConnectEvents(FIntf);
end;
procedure TGMFBridgeController.DisConnect;
begin
if Fintf <> nil then
begin
DisconnectEvents(FIntf);
FIntf := nil;
end;
end;
function TGMFBridgeController.GetDefaultInterface: IGMFBridgeController;
begin
if FIntf = nil then
Connect;
Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
Result := FIntf;
end;
constructor TGMFBridgeController.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
FProps := TGMFBridgeControllerProperties.Create(Self);
{$ENDIF}
end;
destructor TGMFBridgeController.Destroy;
begin
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
FProps.Free;
{$ENDIF}
inherited Destroy;
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
function TGMFBridgeController.GetServerProperties: TGMFBridgeControllerProperties;
begin
Result := FProps;
end;
{$ENDIF}
procedure TGMFBridgeController.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
begin
case DispID of
-1: Exit; // DISPID_UNKNOWN
1: if Assigned(FOnEndOfSegment) then
FOnEndOfSegment(Self);
end; {case DispID}
end;
procedure TGMFBridgeController.AddStream(bVideo: Integer; AllowedTypes: eFormatType;
bDiscardUnconnected: Integer);
begin
DefaultInterface.AddStream(bVideo, AllowedTypes, bDiscardUnconnected);
end;
function TGMFBridgeController.InsertSinkFilter(const pGraph: IUnknown): IUnknown;
begin
Result := DefaultInterface.InsertSinkFilter(pGraph);
end;
function TGMFBridgeController.InsertSourceFilter(const pUnkSourceGraphSinkFilter: IUnknown;
const pRenderGraph: IUnknown): IUnknown;
begin
Result := DefaultInterface.InsertSourceFilter(pUnkSourceGraphSinkFilter, pRenderGraph);
end;
function TGMFBridgeController.CreateSourceGraph(const strFile: WideString; const pGraph: IUnknown): IUnknown;
begin
Result := DefaultInterface.CreateSourceGraph(strFile, pGraph);
end;
function TGMFBridgeController.CreateRenderGraph(const pSourceGraphSinkFilter: IUnknown;
const pRenderGraph: IUnknown): IUnknown;
begin
Result := DefaultInterface.CreateRenderGraph(pSourceGraphSinkFilter, pRenderGraph);
end;
procedure TGMFBridgeController.BridgeGraphs(const pSourceGraphSinkFilter: IUnknown;
const pRenderGraphSourceFilter: IUnknown);
begin
DefaultInterface.BridgeGraphs(pSourceGraphSinkFilter, pRenderGraphSourceFilter);
end;
procedure TGMFBridgeController.SetNotify(hwnd: LONG_PTR; msg: Integer);
begin
DefaultInterface.SetNotify(hwnd, msg);
end;
procedure TGMFBridgeController.SetBufferMinimum(nMillisecs: Integer);
begin
DefaultInterface.SetBufferMinimum(nMillisecs);
end;
function TGMFBridgeController.GetSegmentTime: Double;
begin
Result := DefaultInterface.GetSegmentTime;
end;
procedure TGMFBridgeController.NoMoreSegments;
begin
DefaultInterface.NoMoreSegments;
end;
function TGMFBridgeController.GetSegmentOffset: Double;
begin
Result := DefaultInterface.GetSegmentOffset;
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
constructor TGMFBridgeControllerProperties.Create(AServer: TGMFBridgeController);
begin
inherited Create;
FServer := AServer;
end;
function TGMFBridgeControllerProperties.GetDefaultInterface: IGMFBridgeController;
begin
Result := FServer.DefaultInterface;
end;
{$ENDIF}
procedure Register;
begin
RegisterComponents(dtlServerPage, [TGMFBridgeController]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -