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