Пример #1
0
        public static void CofigureWebRtcLib(CoreDispatcher uiDispatcher)
        {
            IEventQueue queue         = EventQueueMaker.Bind(uiDispatcher);
            var         configuration = new WebRtcLibConfiguration();

            configuration.Queue = queue;
            configuration.AudioCaptureFrameProcessingQueue = EventQueue.GetOrCreateThreadQueueByName("AudioCaptureProcessingQueue");
            configuration.AudioRenderFrameProcessingQueue  = EventQueue.GetOrCreateThreadQueueByName("AudioRenderProcessingQueue");
            configuration.VideoFrameProcessingQueue        = EventQueue.GetOrCreateThreadQueueByName("VideoFrameProcessingQueue");

            WebRtcLib.Setup(configuration);

            Initialized?.Invoke(true);
        }
Пример #2
0
        public static void SetupRTC(CoreDispatcher dispatcher)
        {
            Logger.Debug("Initializer", "SetpRTC");
            var queue = EventQueueMaker.Bind(dispatcher);
            var conf  = new WebRtcLibConfiguration
            {
                Queue = queue,
                AudioCaptureFrameProcessingQueue = EventQueue.GetOrCreateThreadQueueByName("AudioCaptureProcessingQueue"),
                AudioRenderFrameProcessingQueue  = EventQueue.GetOrCreateThreadQueueByName("AudioRenderProcessingQueue"),
                VideoFrameProcessingQueue        = EventQueue.GetOrCreateThreadQueueByName("VideoFrameProcessingQueue"),
                CustomAudioQueue = EventQueue.GetOrCreateThreadQueueByName("CustomAudioQueue"),
                CustomVideoQueue = EventQueue.GetOrCreateThreadQueueByName("CustomVideoQueue"),
            };

            WebRtcLib.Setup(conf);
        }
Пример #3
0
        public async Task Initialize(ConductorConfig config)
        {
            if (config == null)
            {
                throw new ArgumentException("Config cannot be null");
            }

            this.identity = config.Identity;

            this.coreDispatcher =
                config.CoreDispatcher ?? throw new ArgumentException(
                          "Core dispatcher cannot be null");

            if (config.Signaller != null)
            {
                this.signaller = new WebRtcSignaller(config.Signaller);

                this.signaller.ReceivedIceCandidate += this.signaller_ReceivedIceCandidate;
                this.signaller.ReceivedAnswer       += this.signaller_ReceivedAnswer;
                this.signaller.ReceivedOffer        += this.signaller_ReceivedOffer;
            }

            this.localVideo  = config.LocalVideo;
            this.remoteVideo = config.RemoteVideo;

            var allowed = await this.requestAccessForMediaCapture();

            if (!allowed)
            {
                throw new UnauthorizedAccessException("Can't access media");
            }

            await Task.Run(() =>
            {
                var configuration   = new WebRtcLibConfiguration();
                var queue           = EventQueueMaker.Bind(this.coreDispatcher);
                configuration.Queue = queue;
                configuration.AudioCaptureFrameProcessingQueue = EventQueue.GetOrCreateThreadQueueByName("AudioCaptureProcessingQueue");
                configuration.AudioRenderFrameProcessingQueue  = EventQueue.GetOrCreateThreadQueueByName("AudioRenderProcessingQueue");
                configuration.VideoFrameProcessingQueue        = EventQueue.GetOrCreateThreadQueueByName("VideoFrameProcessingQueue");
                WebRtcLib.Setup(configuration);
            });
        }
Пример #4
0
        /// <summary>
        /// Asynchronously initialize the object.
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public async Task Initialize(Config config)
        {
            if (config == null)
            {
                throw new ArgumentException("Config cannot be null");
            }

            // required elements
            this.Dispatcher = config.CoreDispatcher ?? throw new ArgumentException(
                                        "Core Dispatcher cannot be null."
                                        );

            this.Signaller = config.Signaller ?? throw new ArgumentException(
                                       "Signaller cannot be null."
                                       );

            this.Signaller.MessageHandlers["Register"]     += this.ReceivedRegistration;
            this.Signaller.MessageHandlers["Offer"]        += this.ReceivedOffer;
            this.Signaller.MessageHandlers["Answer"]       += this.ReceivedAnswer;
            this.Signaller.MessageHandlers["IceCandidate"] += this.ReceivedIceCandidate;
            this.Signaller.MessageHandlers["Shutdown"]     += this.ReceivedShutdown;

            this.LocalVideo  = config.LocalVideo;
            this.RemoteVideo = config.RemoteVideo;

            if (!await this.RequestAccessForMediaCapture())
            {
                throw new UnauthorizedAccessException("Can't access media.");
            }

            await Task.Run(() =>
            {
                var configuration   = new WebRtcLibConfiguration();
                var queue           = EventQueueMaker.Bind(this.Dispatcher);
                configuration.Queue = queue;
                configuration.AudioCaptureFrameProcessingQueue = EventQueue.GetOrCreateThreadQueueByName("AudioCaptureProcessingQueue");
                configuration.AudioRenderFrameProcessingQueue  = EventQueue.GetOrCreateThreadQueueByName("AudioRenderProcessingQueue");
                configuration.VideoFrameProcessingQueue        = EventQueue.GetOrCreateThreadQueueByName("VideoFrameProcessingQueue");
                WebRtcLib.Setup(configuration);
            });
        }
Пример #5
0
        public static void Initialize(CoreDispatcher dispatcher)
        {
            Settings.ApplyDefaults();

            OrtcLib.Setup(EventQueueMaker.Bind(dispatcher));
        }