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(); }
//{ // 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)); }
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()))); } }
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()))); } }
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 }); }
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(); }
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 }))); }