예제 #1
0
 static void PCOnIceConnectionChange(IntPtr ptr, RTCIceConnectionState state)
 {
     WebRTC.Sync(ptr, () =>
     {
         if (WebRTC.Table[ptr] is RTCPeerConnection connection)
         {
             connection.OnIceConnectionChange?.Invoke(state);
         }
     });
 }
    private void OnIceConnectionChange(RTCPeerConnection pc, RTCIceConnectionState state)
    {
        Debug.Log($"{GetName(pc)} IceConnectionState: {state}");

        if (state == RTCIceConnectionState.Connected || state == RTCIceConnectionState.Completed)
        {
            StartCoroutine(CheckStats(pc));
            foreach (var sender in _pc1.GetSenders())
            {
                ChangeFramerate(sender, (uint)Application.targetFrameRate);
            }
        }
    }
예제 #3
0
        void OnIceConnectionChange(string connectionId, RTCIceConnectionState state)
        {
            switch (state)
            {
            case RTCIceConnectionState.Connected:
                onConnect?.Invoke(connectionId);
                break;

            case RTCIceConnectionState.Disconnected:
                onDisconnect?.Invoke(connectionId);
                break;
            }
        }
예제 #4
0
        private string StatusTextForState(RTCIceConnectionState state)
        {
            switch (state)
            {
            case RTCIceConnectionState.New:
            case RTCIceConnectionState.Checking:
                return("Connecting...");

            case RTCIceConnectionState.Connected:
            case RTCIceConnectionState.Completed:
            case RTCIceConnectionState.Failed:
            case RTCIceConnectionState.Disconnected:
            case RTCIceConnectionState.Closed:
            case RTCIceConnectionState.Count:
                return("");
            }
            return("");
        }
예제 #5
0
        private void OnIceConnectionChange(RTCIceConnectionState state)
        {
            switch (state)
            {
            case RTCIceConnectionState.New:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: New", host);
                break;

            case RTCIceConnectionState.Checking:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Checking", host);
                break;

            case RTCIceConnectionState.Closed:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Closed", host);
                break;

            case RTCIceConnectionState.Completed:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Completed", host);
                break;

            case RTCIceConnectionState.Connected:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Connected", host);
                break;

            case RTCIceConnectionState.Disconnected:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Disconnected", host);
                break;

            case RTCIceConnectionState.Failed:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Failed", host);
                break;

            case RTCIceConnectionState.Max:
                DebugUtility.Log(LoggerTags.Online, "{0} IceConnectionState: Max", host);
                break;

            default:
                break;
            }
        }
예제 #6
0
    private void OnIceConnectionChange(RTCPeerConnection pc, RTCIceConnectionState state)
    {
        switch (state)
        {
        case RTCIceConnectionState.New:
            Debug.Log($"{GetName(pc)} IceConnectionState: New");
            break;

        case RTCIceConnectionState.Checking:
            Debug.Log($"{GetName(pc)} IceConnectionState: Checking");
            break;

        case RTCIceConnectionState.Closed:
            Debug.Log($"{GetName(pc)} IceConnectionState: Closed");
            break;

        case RTCIceConnectionState.Completed:
            Debug.Log($"{GetName(pc)} IceConnectionState: Completed");
            break;

        case RTCIceConnectionState.Connected:
            Debug.Log($"{GetName(pc)} IceConnectionState: Connected");
            break;

        case RTCIceConnectionState.Disconnected:
            Debug.Log($"{GetName(pc)} IceConnectionState: Disconnected");
            break;

        case RTCIceConnectionState.Failed:
            Debug.Log($"{GetName(pc)} IceConnectionState: Failed");
            break;

        case RTCIceConnectionState.Max:
            Debug.Log($"{GetName(pc)} IceConnectionState: Max");
            break;

        default:
            throw new ArgumentOutOfRangeException(nameof(state), state, null);
        }
    }
예제 #7
0
    void OnIceConnectionChange(RTCPeerConnection pc, RTCIceConnectionState state)
    {
        switch (state)
        {
        case RTCIceConnectionState.New:
            Debug.Log($"{GetName(pc)} IceConnectionState: New");
            break;

        case RTCIceConnectionState.Checking:
            Debug.Log($"{GetName(pc)} IceConnectionState: Checking");
            break;

        case RTCIceConnectionState.Closed:
            Debug.Log($"{GetName(pc)} IceConnectionState: Closed");
            break;

        case RTCIceConnectionState.Completed:
            Debug.Log($"{GetName(pc)} IceConnectionState: Completed");
            break;

        case RTCIceConnectionState.Connected:
            Debug.Log($"{GetName(pc)} IceConnectionState: Connected");
            break;

        case RTCIceConnectionState.Disconnected:
            Debug.Log($"{GetName(pc)} IceConnectionState: Disconnected");
            break;

        case RTCIceConnectionState.Failed:
            Debug.Log($"{GetName(pc)} IceConnectionState: Failed");
            break;

        case RTCIceConnectionState.Max:
            Debug.Log($"{GetName(pc)} IceConnectionState: Max");
            break;

        default:
            break;
        }
    }
예제 #8
0
 void Pc1OnIceConnectinChange(RTCIceConnectionState state)
 {
     OnIceConnectionChange(pc1, state);
 }
 public override void DidChangeIceConnectionState(RTCPeerConnection peerConnection, RTCIceConnectionState newState)
 {
     _listener?.OnIceConnectionChange(newState.ToNet());
 }
예제 #10
0
 public void DidIceConnectionStateChanged(RTCIceConnectionState iceConnectionState)
 {
     System.Diagnostics.Debug.WriteLine($"{nameof(DidIceConnectionStateChanged)}");
 }
        static void IceConnectionChangeCallback(IntPtr userData, RTCIceConnectionState state)
        {
            var source = GCHandleHelper.FromIntPtr <PeerConnectionObserver>(userData);

            source?.IceConnectionStateChanged?.Invoke(source, new EventArgs <RTCIceConnectionState>(state));
        }
예제 #12
0
 private void OnIceConnectionChange(RTCIceConnectionState state)
 {
     Debug.Log($"IceConnection state changed to {state}");
 }
예제 #13
0
        public IEnumerator PeerConnectionStateChange()
        {
            RTCConfiguration config = default;

            config.iceServers = new[] { new RTCIceServer {
                                            urls = new[] { "stun:stun.l.google.com:19302" }
                                        } };
            var peer1 = new RTCPeerConnection(ref config);
            var peer2 = new RTCPeerConnection(ref config);

            RTCPeerConnectionState state1    = default;
            RTCPeerConnectionState state2    = default;
            RTCIceConnectionState  iceState1 = default;
            RTCIceConnectionState  iceState2 = default;

            peer1.OnIceCandidate          = candidate => { peer2.AddIceCandidate(candidate); };
            peer2.OnIceCandidate          = candidate => { peer1.AddIceCandidate(candidate); };
            peer1.OnConnectionStateChange = state => { state1 = state; };
            peer2.OnConnectionStateChange = state => { state2 = state; };
            peer1.OnIceConnectionChange   = state => { iceState1 = state; };
            peer2.OnIceConnectionChange   = state => { iceState2 = state; };

            Assert.That(state1, Is.EqualTo(RTCPeerConnectionState.New));
            Assert.That(state2, Is.EqualTo(RTCPeerConnectionState.New));

            var obj    = new GameObject("audio");
            var source = obj.AddComponent <AudioSource>();

            source.clip = AudioClip.Create("test", 480, 2, 48000, false);
            AudioStreamTrack track1 = new AudioStreamTrack(source);

            peer1.AddTrack(track1);

            var op1 = peer1.CreateOffer();

            yield return(op1);

            var desc = op1.Desc;
            var op2  = peer1.SetLocalDescription(ref desc);

            yield return(op2);

            var op3 = peer2.SetRemoteDescription(ref desc);

            yield return(op3);

            var op4 = peer2.CreateAnswer();

            yield return(op4);

            desc = op4.Desc;
            var op5 = peer2.SetLocalDescription(ref desc);

            yield return(op5);

            var op6 = peer1.SetRemoteDescription(ref desc);

            yield return(op6);

            var op7 = new WaitUntilWithTimeout(() =>
                                               state1 == RTCPeerConnectionState.Connected &&
                                               state2 == RTCPeerConnectionState.Connected, 5000);

            yield return(op7);

            Assert.That(op7.IsCompleted, Is.True);

            var op8 = new WaitUntilWithTimeout(() =>
                                               (iceState1 == RTCIceConnectionState.Connected || iceState1 == RTCIceConnectionState.Completed) &&
                                               (iceState2 == RTCIceConnectionState.Connected || iceState2 == RTCIceConnectionState.Completed)
                                               , 5000);

            yield return(op8);

            Assert.That(op8.IsCompleted, Is.True);

            peer1.Close();

            var op9 = new WaitUntilWithTimeout(() =>
                                               state1 == RTCPeerConnectionState.Closed &&
                                               iceState2 == RTCIceConnectionState.Disconnected, 5000);

            yield return(op9);

            Assert.That(op9.IsCompleted, Is.True);

            track1.Dispose();
            peer2.Close();
            Object.DestroyImmediate(source.clip);
            Object.DestroyImmediate(obj);
        }
 public static IceConnectionState ToNet(this RTCIceConnectionState self)
 {
     return((IceConnectionState)self);
 }
예제 #15
0
 void Pc2OnIceConnectionChange(RTCIceConnectionState state)
 {
     OnIceConnectionChange(pc2, state);
 }
예제 #16
0
 public void DidChangeConnectionState(RTCIceConnectionState state)
 {
     Console.WriteLine("ICE state changed:{0}", state);
     _videoCallView.StatusLabel.Text = StatusTextForState(state);
 }
 public void DidChangeIceConnectionState(RTCPeerConnection peerConnection, RTCIceConnectionState newState)
 {
     Console.WriteLine("ICE state changed: {0} ({1})", newState, (int)newState);
     DispatchQueue.MainQueue.DispatchAsync(() => Delegate?.DidChangeConnectionState(newState));
 }
 public void DidChangeConnectionState(RTCIceConnectionState state)
 {
     Console.WriteLine("ICE state changed: {0} ({1})", state, (int)state);
 }
 public static IceConnectionState ToNativePort(this RTCIceConnectionState platformNative) => (IceConnectionState)platformNative;
예제 #20
0
        public IEnumerator PeerConnectionStateChange()
        {
            RTCConfiguration config = default;

            config.iceServers = new[] { new RTCIceServer {
                                            urls = new[] { "stun:stun.l.google.com:19302" }
                                        } };
            var peer1 = new RTCPeerConnection(ref config);
            var peer2 = new RTCPeerConnection(ref config);

            RTCPeerConnectionState state1    = default;
            RTCPeerConnectionState state2    = default;
            RTCIceConnectionState  iceState1 = default;
            RTCIceConnectionState  iceState2 = default;

            peer1.OnIceCandidate          = candidate => { peer2.AddIceCandidate(candidate); };
            peer2.OnIceCandidate          = candidate => { peer1.AddIceCandidate(candidate); };
            peer1.OnConnectionStateChange = state => { state1 = state; };
            peer2.OnConnectionStateChange = state => { state2 = state; };
            peer1.OnIceConnectionChange   = state => { iceState1 = state; };
            peer2.OnIceConnectionChange   = state => { iceState2 = state; };

            Assert.That(state1, Is.EqualTo(RTCPeerConnectionState.New));
            Assert.That(state2, Is.EqualTo(RTCPeerConnectionState.New));

            MediaStream stream = Audio.CaptureStream();

            peer1.AddTrack(stream.GetTracks().First());

            var op1 = peer1.CreateOffer();

            yield return(op1);

            var desc = op1.Desc;
            var op2  = peer1.SetLocalDescription(ref desc);

            yield return(op2);

            var op3 = peer2.SetRemoteDescription(ref desc);

            yield return(op3);

            var op4 = peer2.CreateAnswer();

            yield return(op4);

            desc = op4.Desc;
            var op5 = peer2.SetLocalDescription(ref desc);

            yield return(op5);

            var op6 = peer1.SetRemoteDescription(ref desc);

            yield return(op6);

            var op7 = new WaitUntilWithTimeout(() =>
                                               state1 == RTCPeerConnectionState.Connected &&
                                               state2 == RTCPeerConnectionState.Connected, 5000);

            yield return(op7);

            Assert.That(op7.IsCompleted, Is.True);

            var op8 = new WaitUntilWithTimeout(() =>
                                               (iceState1 == RTCIceConnectionState.Connected || iceState1 == RTCIceConnectionState.Completed) &&
                                               (iceState2 == RTCIceConnectionState.Connected || iceState2 == RTCIceConnectionState.Completed)
                                               , 5000);

            yield return(op8);

            Assert.That(op8.IsCompleted, Is.True);

            peer1.Close();

            var op9 = new WaitUntilWithTimeout(() =>
                                               state1 == RTCPeerConnectionState.Closed &&
                                               iceState2 == RTCIceConnectionState.Disconnected, 5000);

            yield return(op9);

            Assert.That(op9.IsCompleted, Is.True);

            stream.Dispose();
            peer2.Close();
        }