public static Webrtc.RTCConfiguration ToNative(this RTCConfiguration configuration)
        {
            RTCIceServer[] iceServers          = configuration.IceServers ?? new RTCIceServer[] { };
            var            nativeConfiguration = new Webrtc.RTCConfiguration();

            if (configuration.BundlePolicy.HasValue)
            {
                nativeConfiguration.BundlePolicy = ((RTCBundlePolicy)configuration.BundlePolicy).ToNative();
            }
            if (configuration.Certificates is not null)
            {
                nativeConfiguration.Certificate = (Webrtc.RTCCertificate)
                                                      (configuration.Certificates?.ElementAt(0).NativeObject);
            }
            if (configuration.IceCandidatePoolSize.HasValue)
            {
                nativeConfiguration.IceCandidatePoolSize = (int)configuration.IceCandidatePoolSize;
            }
            nativeConfiguration.IceServers = iceServers.Select(server => server.ToNative()).ToArray();
            if (configuration.IceTransportPolicy.HasValue)
            {
                nativeConfiguration.IceTransportPolicy = ((RTCIceTransportPolicy)configuration.IceTransportPolicy).ToNative();
            }
            if (configuration.RtcpMuxPolicy.HasValue)
            {
                nativeConfiguration.RtcpMuxPolicy = ((RTCRtcpMuxPolicy)configuration.RtcpMuxPolicy).ToNative();
            }
            if (configuration.SdpSemantics.HasValue)
            {
                nativeConfiguration.SdpSemantics = ((SdpSemantics)configuration.SdpSemantics).ToNative();
            }
            return(nativeConfiguration);
        }
 public static RTCConfiguration FromNative(this Webrtc.RTCConfiguration nativeConfiguration) =>
 new RTCConfiguration
 {
     BundlePolicy = nativeConfiguration.BundlePolicy.FromNative(),
     Certificates = new IRTCCertificate[]
     { RTCCertificate.Create(nativeConfiguration.Certificate) },
     IceCandidatePoolSize = (byte)nativeConfiguration.IceCandidatePoolSize,
     IceServers           = nativeConfiguration.IceServers.Select(nativeServer => nativeServer.FromNative()).ToArray(),
     IceTransportPolicy   = nativeConfiguration.IceTransportPolicy.FromNative(),
     RtcpMuxPolicy        = nativeConfiguration.RtcpMuxPolicy.FromNative()
 };
Exemple #3
0
        private RTCPeerConnection(RTCConfiguration configuration)
        {
#if false
            var rtcConfig = new Webrtc.RTCConfiguration();
            rtcConfig.IceServers = new Webrtc.RTCIceServer[]
            {
                new Webrtc.RTCIceServer(new []
                {
                    "stun:stun.stunprotocol.org:3478",
                    "stun:stun.l.google.com:19302"
                })
            };
            var mediaConstraints = new Webrtc.RTCMediaConstraints(null, null);
            NativeObject = WebRTCme.WebRtc.NativePeerConnectionFactory.PeerConnectionWithConfiguration(rtcConfig, mediaConstraints, this);
#endif
#if true
            var nativeConfiguration = configuration.ToNative();
            var nativeConstraints   = new Webrtc.RTCMediaConstraints(null, null); //NativeDefaultRTCMediaConstraints;
            NativeObject = WebRTCme.WebRtc.NativePeerConnectionFactory.PeerConnectionWithConfiguration(
                nativeConfiguration,
                nativeConstraints,
                this);
#endif
        }