public bool Setup(IVideoSource source) { tracer.Debug("D3DImageControl::Setup(...)"); bool result = false; Debug.Assert(d3dRenderer != null, "d3dRenderer !=null"); //Debug.Assert(DataContext != null, "DataContext !=null"); if (DataContext == null) { DataContext = d3dRenderer; } videoSource = source; if (videoSource != null) { d3dProvider = new D3D11RendererProvider(); //renderer = new D3DImageRenderer(); var texture = videoSource.SharedTexture; if (texture != null) { d3dProvider.Init(texture); // //renderer.Setup(texture); // d3DImageControl.DataContext = renderer; //// renderer.Run(d3dProvider); result = true; } } return(result); }
public void Close() { if (d3dProvider != null) { d3dProvider.Close(); d3dProvider = null; } if (d3dRenderer != null) { d3dRenderer.Shutdown(); } if (VideoReceiver != null) { VideoReceiver.UpdateBuffer -= VideoReceiver_UpdateBuffer; VideoReceiver.Stop(); VideoReceiver = null; } if (AudioReceiver != null) { AudioReceiver.Stop(); AudioReceiver = null; } if (factory != null) { factory.Closed -= Factory_Closed; factory.Abort(); factory = null; } //state = ClientState.Disconnected; }
private void SetupVideo(ScreencastChannelInfo videoChannelInfo) { tracer.Verb("ScreenCastControl::SetupVideo(...)"); //logger.Debug("SetupVideo(...)"); var videoInfo = videoChannelInfo.MediaInfo as VideoChannelInfo; if (videoInfo == null) { return; } var videoAddr = videoChannelInfo.Address; if (videoChannelInfo.Transport == TransportMode.Tcp) { videoAddr = ServerAddr; } var videoPort = videoChannelInfo.Port; var inputPars = new VideoEncoderSettings { //Resolution = videoInfo.Resolution, Width = videoInfo.Resolution.Width, Height = videoInfo.Resolution.Height, FrameRate = new MediaRatio(videoInfo.Fps, 1), }; var outputPars = new VideoEncoderSettings { //Resolution = videoInfo.Resolution, Width = videoInfo.Resolution.Width, Height = videoInfo.Resolution.Height, //AspectRatio = new MediaRatio(1, 1), //Resolution = new System.Drawing.Size(1920, 1080); FrameRate = new MediaRatio(videoInfo.Fps, 1), }; var networkPars = new NetworkSettings { LocalAddr = videoAddr, LocalPort = videoPort, TransportMode = videoChannelInfo.Transport, SSRC = videoChannelInfo.SSRC, }; VideoReceiver = new VideoReceiver(); VideoReceiver.UpdateBuffer += VideoReceiver_UpdateBuffer; VideoReceiver.Setup(inputPars, outputPars, networkPars); d3dProvider = new D3D11RendererProvider(); d3dProvider.Init(VideoReceiver.sharedTexture); //d3dRenderer.Setup(VideoReceiver.sharedTexture); }