Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
        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);
        }