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 IMediaStreamTrack Create(MediaStreamTrackKind mediaStreamTrackKind, string id, MediaTrackConstraints constraints = null) { Webrtc.MediaStreamTrack nativeMediaStreamTrack = null; Webrtc.MediaSource nativeMediaSource = null; switch (mediaStreamTrackKind) { case MediaStreamTrackKind.Audio: var nativeAudioSource = WebRTCme.WebRtc.NativePeerConnectionFactory.CreateAudioSource( (constraints ?? new MediaTrackConstraints { EchoCancellation = new ConstrainBoolean { Value = false }, AutoGainControl = new ConstrainBoolean { Value = false }, NoiseSuppression = new ConstrainBoolean { Value = false } }).ToNative()); nativeMediaSource = nativeAudioSource; nativeMediaStreamTrack = WebRTCme.WebRtc.NativePeerConnectionFactory .CreateAudioTrack(id, nativeAudioSource); break; case MediaStreamTrackKind.Video: var nativeVideoSource = WebRTCme.WebRtc.NativePeerConnectionFactory.CreateVideoSource(false); nativeMediaSource = nativeVideoSource; nativeMediaStreamTrack = WebRTCme.WebRtc.NativePeerConnectionFactory .CreateVideoTrack(id, nativeVideoSource); break; } var mediaStreamTrack = new MediaStreamTrack(nativeMediaStreamTrack); mediaStreamTrack.SetNativeMediaSource(nativeMediaSource); return(mediaStreamTrack); }
public static IMediaStreamTrack Create(MediaStreamTrackKind mediaStreamTrackKind, string id) { Webrtc.RTCMediaStreamTrack nativeMediaStreamTrack = null; switch (mediaStreamTrackKind) { case MediaStreamTrackKind.Audio: var nativeAudioSource = WebRTCme.WebRtc.NativePeerConnectionFactory.AudioSourceWithConstraints( /*null*/ new Webrtc.RTCMediaConstraints(null, null)); nativeMediaStreamTrack = WebRTCme.WebRtc.NativePeerConnectionFactory .AudioTrackWithSource(nativeAudioSource, id); break; case MediaStreamTrackKind.Video: var nativeVideoSource = WebRTCme.WebRtc.NativePeerConnectionFactory.VideoSource; nativeMediaStreamTrack = WebRTCme.WebRtc.NativePeerConnectionFactory .VideoTrackWithSource(nativeVideoSource, id); break; } return(new MediaStreamTrack(nativeMediaStreamTrack)); }
public IRTCRtpTransceiver AddTransceiver(MediaStreamTrackKind kind, 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[] { kind, nativeInit }))); }
public static MediaKind ToMediaSoup(this MediaStreamTrackKind kind) => kind switch {