Example #1
0
        public void Run()
        {
            // Initializes webrtc.
            _webRtcControl = new WebRtcControl("ms-appx:///webrtcConfig.json");
            _webRtcControl.OnInitialized += (() =>
            {
                _webRtcControl.ConnectToServer();
            });

            Conductor.Instance.OnAddRemoteStream += ((evt) =>
            {
                var peerVideoTrack = evt.Stream.GetVideoTracks().FirstOrDefault();
                if (peerVideoTrack != null)
                {
                    MediaSourceReadyDelegate mediaSourceReadyDelegate = (mediaSource) =>
                    {
                        _appCallbacks.SetMediaStreamSource(
                            (MediaStreamSource)mediaSource,
                            VIDEO_FRAME_WIDTH,
                            VIDEO_FRAME_HEIGHT);
                    };

                    SampleTimestampDelegate sampleTimestampDelegate = (id, timestamp) =>
                    {
                        _appCallbacks.OnSampleTimestamp(id, timestamp);
                    };

                    FpsReportRequestedDelegate fpsReportRequestedDelegate = () =>
                    {
                        return(_appCallbacks.OnFpsReportRequested());
                    };

                    Media.CreateMedia().CreateMediaStreamSource(
                        peerVideoTrack,
                        DEFAULT_MEDIA_SOURCE_ID,
                        VIDEO_FRAME_WIDTH,
                        VIDEO_FRAME_HEIGHT,
                        mediaSourceReadyDelegate,
                        sampleTimestampDelegate,
                        fpsReportRequestedDelegate);
                }

                _webRtcControl.IsReadyToDisconnect = true;
            });

            _webRtcControl.Initialize();

            // Starts the main render loop.
            _appCallbacks.Run();
        }