Exemple #1
0
        public PeerConnection(PeerConnectionOptions options)
        {
            Name = options.Name ?? $"PC#{Interlocked.Increment(ref g_LastId)}";

            _nativePtr = Native.CreatePeerConnection(
                options.TurnServers.ToArray(),
                options.TurnServers.Count,
                options.StunServers.ToArray(),
                options.StunServers.Count,
                options.UserName,
                options.PassWord,
                options.CanReceiveAudio,
                options.CanReceiveVideo,
                options.IsDtlsSrtpEnabled);

            Native.Check(_nativePtr != IntPtr.Zero);

            RegisterCallback(out _localDataChannelReadyDelegate, Native.RegisterOnLocalDataChannelReady, RaiseLocalDataChannelReady);
            RegisterCallback(out _dataAvailableDelegate, Native.RegisterOnDataFromDataChannelReady, RaiseDataAvailable);
            RegisterCallback(out _failureMessageDelegate, Native.RegisterOnFailure, RaiseFailureMessage);
            RegisterCallback(out _audioBusReadyDelegate, Native.RegisterOnAudioBusReady, RaiseAudioBusReady);
            RegisterCallback(out _localVideoFrameDelegate, Native.RegisterLocalVideoFrameReady, RaiseLocalVideoFrameReady);
            RegisterCallback(out _remoteVideoFrameDelegate, Native.RegisterRemoteVideoFrameReceived, RaiseRemoteVideoFrameReady);
            RegisterCallback(out _localSdpReadyToSendDelegate, Native.RegisterOnLocalSdpReadyToSend, RaiseLocalSdpReadyToSend);
            RegisterCallback(out _iceCandidateReadyToSendDelegate, Native.RegisterOnIceCandidateReadyToSend, RaiseIceCandidateReadyToSend);
            RegisterCallback(out _signalingStateChangedCallback, Native.RegisterSignalingStateChanged, RaiseSignalingStateChange);
            RegisterCallback(out _connectionStateChangedCallback, Native.RegisterConnectionStateChanged, RaiseConnectionStateChange);
            RegisterCallback(out _videoFrameProcessedCallback, Native.RegisterVideoFrameProcessed, RaiseVideoFrameProcessedDelegate);
            RegisterCallback(out _remoteTrackChangedCallback, Native.RegisterRemoteTrackChanged, RaiseRemoteTrackChanged);
        }
Exemple #2
0
 /// <summary>
 /// Configures all peer connections. Must be called before the first peer connection is created.
 /// </summary>
 public static void Configure(GlobalOptions options)
 {
     Native.Check(Native.Configure(
                      options.UseSignalingThread,
                      options.UseWorkerThread,
                      options.ForceSoftwareVideoEncoder,
                      options.AutoShutdown,
                      options.UseFakeEncoders,
                      options.UseFakeDecoders,
                      options.LogToStandardError,
                      options.LogToDebugOutput,
                      options.MinimumLogLevel != TraceLevel.Off ? OnMessageLogged : null,
                      4 - (int)(options.MinimumLogLevel)
                      ));
 }
Exemple #3
0
 /// <summary>
 /// This shuts down the global webrtc module.
 /// </summary>
 /// <remarks>
 /// Only needed when you disabled auto-shutdown in the <seealso cref="Configure(GlobalOptions)"/> call />,
 /// and can then only be called after all <see cref="PeerConnection"/> instances are disposed.
 /// </remarks>
 public static void Shutdown()
 {
     Native.Check(Native.Shutdown());
 }
Exemple #4
0
 public void CreateAnswer()
 {
     Native.Check(Native.CreateAnswer(_nativePtr));
 }
Exemple #5
0
 public void RemoveDataChannel(string label)
 {
     Native.Check(Native.RemoveDataChannel(_nativePtr, label));
 }
Exemple #6
0
 public void AddDataChannel(DataChannelOptions options)
 {
     Native.Check(Native.AddDataChannel(_nativePtr, options.Label, options.IsOrdered, options.IsReliable));
 }
Exemple #7
0
        internal int AddVideoTrack(VideoEncoderOptions options)
        {
            var id = Native.AddVideoTrack(_nativePtr, options.Label, options.MinBitsPerSecond, options.MaxBitsPerSecond, options.MaxFramesPerSecond);

            return(Native.Check(id));
        }