我正在查看Frank Shearar的演示程序,无法构建演示程序。我修复了对“丢失文件”的所有引用,而我尝试修复的最后错误与类中的界面差异以及它们现在的使用方式有关...

Self.CalleeMedia := TIdSDPMultimediaSession.Create(Self.Profile);




Self.CalleeMedia := TIdSDPMultimediaSession.Create(Self.Profile, ???, ???);


我知道界面现在看起来像....

constructor TIdSDPMultimediaSession.Create(Profile: TIdRTPProfile;
  Factory: TIdSdpMediaStreamFactory; ExecutionContext: TIdTimerQueue);


我可以添加...

x := TIdSdpMediaStreamFactory.Create;
y := TIdTimerQueue.Create;


并传递这些?或在两种情况下均为零。在构建演示程序时,我在其他一些地方也遇到类似的错误。我是否只需要创建所需的其他对象?如果不是,还需要其他哪些步骤?任何帮助我入门的帮助都很好。

谢谢,

最佳答案

我怀疑我只是忘了根据SDP API的界面更新演示!

在实例化TIdSdpMediaStreamFactory之前创建TIdTimerQueueTIdSDPMultimediaSession

特别要看一下test\TestIdSdp.pas中如何设置测试用例:

procedure TestTIdSDPMultimediaSession.SetUp;
begin
  inherited SetUp;

  Self.Factory     := TMockMediaStreamFactory.Create;
  Self.Profile     := TIdAudioVisualProfile.Create;
  Self.Timer       := TIdThreadedTimerQueue.Create(false);
  Self.MS          := TIdSDPMultimediaSession.Create(Self.Profile, Self.Factory, Self.Timer);
  Self.PortBlocker := TIdMockRTPPeer.Create;

  // We only instantiate Server so that we know that GStack points to an
  // instantiated stack.
  Self.Server := TIdUdpServer.Create(nil);
end;

关于delphi - Frank Shearar SIP组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8177800/

10-11 19:11