Esempio n. 1
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())));
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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
            })));
        }
Esempio n. 5
0
 public static MediaKind ToMediaSoup(this MediaStreamTrackKind kind) =>
 kind switch
 {