Ejemplo n.º 1
0
        public void AddTransceiverWithInit()
        {
            var peer      = new RTCPeerConnection();
            var stream    = new MediaStream();
            var direction = RTCRtpTransceiverDirection.SendOnly;
            var width     = 256;
            var height    = 256;
            var format    = WebRTC.GetSupportedRenderTextureFormat(UnityEngine.SystemInfo.graphicsDeviceType);
            var rt        = new RenderTexture(width, height, 0, format);

            rt.Create();
            var track = new VideoStreamTrack(rt);
            var init  = new RTCRtpTransceiverInit()
            {
                direction     = direction,
                sendEncodings = new RTCRtpEncodingParameters[] {
                    new RTCRtpEncodingParameters {
                        maxFramerate = 30
                    }
                },
                streams = new MediaStream[] { stream }
            };
            var transceiver = peer.AddTransceiver(track, init);

            Assert.That(transceiver, Is.Not.Null);
            Assert.That(transceiver.CurrentDirection, Is.Null);
            Assert.That(transceiver.Direction, Is.EqualTo(RTCRtpTransceiverDirection.SendOnly));
            Assert.That(transceiver.Sender, Is.Not.Null);

            var parameters = transceiver.Sender.GetParameters();

            Assert.That(parameters, Is.Not.Null);
            Assert.That(parameters.codecs, Is.Not.Null.And.Empty);
            peer.Dispose();
        }
Ejemplo n.º 2
0
        //{
        //    var sr = (Java.Lang.Double)parameters.ScaleResolutionDownBy;
        //    var mb = (Java.Lang.Integer)(int)parameters.MaxBitrate;
        //    var mf = (Java.Lang.Integer)(int)parameters.MaxFramerate;
        //    var ret = new Webrtc.RtpParameters.Encoding(parameters.Rid, parameters.Active,
        //        sr)
        //    {
        //        MaxBitrateBps = mb,
        //        MaxFramerate = mf
        //    };
        //    return ret;
        //}

        public static Webrtc.RtpTransceiver.RtpTransceiverInit ToNative(this RTCRtpTransceiverInit init)
        {
            RTCRtpEncodingParameters[] initSendEncodings = init.SendEncodings ?? new RTCRtpEncodingParameters[] { };
            var direction     = init.Direction is null ? null : ((RTCRtpTransceiverDirection)init.Direction).ToNative();
            var streamIds     = init.Streams is null ? null : init.Streams.Select(stream => stream.Id).ToList();
            var sendEncodings = initSendEncodings.Select(encodings => encodings.ToNative()).ToList();

            return(new Webrtc.RtpTransceiver.RtpTransceiverInit(direction, streamIds, sendEncodings));
        }
Ejemplo n.º 3
0
 public IRTCRtpTransceiver AddTransceiver(IMediaStreamTrack track, RTCRtpTransceiverInit init)
 {
     if (init is null)
     {
         return(RTCRtpTransceiver.Create(((Webrtc.RTCPeerConnection)NativeObject).AddTransceiverWithTrack(
                                             (Webrtc.RTCMediaStreamTrack)track.NativeObject)));
     }
     else
     {
         return(RTCRtpTransceiver.Create(((Webrtc.RTCPeerConnection)NativeObject).AddTransceiverWithTrack(
                                             (Webrtc.RTCMediaStreamTrack)track.NativeObject, init.ToNative())));
     }
 }
Ejemplo n.º 4
0
 public IRTCRtpTransceiver AddTransceiver(MediaStreamTrackKind kind, RTCRtpTransceiverInit init)
 {
     if (init is null)
     {
         return(RTCRtpTransceiver.Create(((Webrtc.RTCPeerConnection)NativeObject).AddTransceiverOfType(
                                             kind.ToNative())));
     }
     else
     {
         return(RTCRtpTransceiver.Create(((Webrtc.RTCPeerConnection)NativeObject).AddTransceiverOfType(
                                             kind.ToNative(), init.ToNative())));
     }
 }
Ejemplo n.º 5
0
        public static Webrtc.RTCRtpTransceiverInit ToNative(this RTCRtpTransceiverInit init)
        {
            RTCRtpEncodingParameters[] initSendEncodings = init.SendEncodings ?? new RTCRtpEncodingParameters[] { };
            var direction = init.Direction is null ? Webrtc.RTCRtpTransceiverDirection.Inactive :
                            ((RTCRtpTransceiverDirection)init.Direction).ToNative();
            var streamIds     = init.Streams is null ? null : init.Streams.Select(stream => stream.Id).ToArray();
            var sendEncodings = initSendEncodings.Select(encodings => encodings.ToNative()).ToArray();

            return(new Webrtc.RTCRtpTransceiverInit
            {
                Direction = direction,
                StreamIds = streamIds,
                SendEncodings = sendEncodings
            });
        }
Ejemplo n.º 6
0
        public void AddTransceiverWithKindAndInit()
        {
            var peer      = new RTCPeerConnection();
            var stream    = new MediaStream();
            var direction = RTCRtpTransceiverDirection.SendOnly;
            var init      = new RTCRtpTransceiverInit()
            {
                direction     = direction,
                sendEncodings = new RTCRtpEncodingParameters[] {
                    new RTCRtpEncodingParameters {
                        maxFramerate = 30
                    }
                },
                streams = new MediaStream[] { stream }
            };
            var transceiver = peer.AddTransceiver(TrackKind.Video, init);

            Assert.That(transceiver, Is.Not.Null);
            Assert.That(transceiver.CurrentDirection, Is.Null);
            Assert.That(transceiver.Direction, Is.EqualTo(RTCRtpTransceiverDirection.SendOnly));
            Assert.That(transceiver.Sender, Is.Not.Null);

            var parameters = transceiver.Sender.GetParameters();

            Assert.That(parameters, Is.Not.Null);
            Assert.That(parameters.codecs, Is.Not.Null.And.Empty);

            var init2 = new RTCRtpTransceiverInit()
            {
                direction     = null,
                sendEncodings = null,
                streams       = null
            };
            var transceiver2 = peer.AddTransceiver(TrackKind.Video, init2);

            Assert.That(transceiver2, Is.Not.Null);
            Assert.That(transceiver2.CurrentDirection, Is.Null);
            Assert.That(transceiver2.Direction, Is.EqualTo(RTCRtpTransceiverDirection.SendRecv));
            Assert.That(transceiver2.Sender, Is.Not.Null);
            peer.Dispose();
        }
Ejemplo n.º 7
0
        public IRTCRtpTransceiver AddTransceiver(IMediaStreamTrack track, RTCRtpTransceiverInit init)
        {
            object nativeInit = init;

            if (init is not null && init.Streams is not null)
            {
                // Convert Streams to native.
                var nativeStreams = init.Streams.Select(s => ((MediaStream)s).NativeObject).ToArray();
                nativeInit = new
                {
                    init.Direction,
                    init.SendEncodings,
                    nativeStreams
                };
            }
            return(RTCRtpTransceiver.Create(JsRuntime, JsRuntime.CallJsMethod <JsObjectRef>(NativeObject,
                                                                                            "addTransceiver",
                                                                                            new object[]
            {
                ((MediaStreamTrack)track).NativeObject,
                nativeInit
            })));
        }