⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmfbridgelib_tlb.pas

📁 delphi版的无缝播放器
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  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 + -