示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="unmanagedPointer"></param>
        /// <param name="observer">Keep ref only, does not own observer</param>
        internal PeerConnection(IntPtr unmanagedPointer, PeerConnectionObserver observer, RtcThread signallingThread)
        {
            _handle           = new PeerConnectionSafeHandle(unmanagedPointer);
            _signallingThread = signallingThread
                                ?? throw new ArgumentNullException(nameof(signallingThread));
            Observer = observer;
            Id       = Guid.NewGuid();

            if (Debugger.IsAttached)
            {
                var index = Interlocked.Increment(ref _debugIdPtr);
                if (index < _debugIds.Count)
                {
                    Id = _debugIds[index];
                }
            }
        }
 public static extern IntPtr AddTrack(PeerConnectionSafeHandle handle, MediaStreamTrackSafeHandle mediaStreamTrackSafeHandle, string streamId);
 public static extern void RemoveTrack(PeerConnectionSafeHandle handle, RtpSenderSafeHandle rtpSender);
 public static extern void FreeGetTransceiversResult(PeerConnectionSafeHandle handle, IntPtr outputArray);
 public static extern IntPtr AddTransceiver(PeerConnectionSafeHandle handle, [MarshalAs(UnmanagedType.I1)] bool isAudioTransceiver, RtpTransceiverDirection direction);
 public static extern void GetTransceivers(PeerConnectionSafeHandle handle, out IntPtr outputArray, out int outputArraySize);
 public static extern bool AddIceCandidate(PeerConnectionSafeHandle handle, string sdpMid, int mLineIndex, string sdp);
 public static extern void SetLocalSessionDescription(PeerConnectionSafeHandle handle, string type, string sdp, SetSessionDescriptionCallback callback, IntPtr userData);
 public static extern void Close(PeerConnectionSafeHandle native);
 public static extern void CreateOffer(PeerConnectionSafeHandle peerConnectionSafeHandle, CreateSdpResultCallback callback, IntPtr userData);