コード例 #1
0
        public EVRRenderer(IPvpPresenterHook pvpPresenterHook)
        {
            _pvpPresenterHook = pvpPresenterHook;
            _renderer         = MediaEngine.Renderer.EVR;

            _rcSrc = new MFVideoNormalizedRect {
                left = _rcSrc.top = 0.0f, right = _rcSrc.bottom = 1.0f
            };

            _rcDest = new GDI.RECT {
                left = _rcDest.top = 0
            };
        }
コード例 #2
0
        private void SetMediaWindowState(bool active)
        {
            if (active)
            {
                _mediaWindow = new MediaWindow2();
                if (_border != null && _d3dImage != null)
                {
                    _border.Child = _d3dImage;
                }
                //_hwndHost = new MediaWindowHwndHost();
                //_hwndHost.MessageHook += new System.Windows.Interop.HwndSourceHook(_hwndHost_MessageHook);
                //if (_border != null)
                //    _border.Child = _hwndHost;
            }
            else
            {
                if (_border != null)
                {
                    var rect = new Rectangle {
                        StrokeThickness = 0.0
                    };

                    var binding = new Binding("LogoBrush")
                    {
                        Source = this, Mode = BindingMode.OneWay
                    };
                    rect.SetBinding(Shape.FillProperty, binding);

                    binding = new Binding("LogoMaxWidth")
                    {
                        Source = this, Mode = BindingMode.OneWay
                    };
                    rect.SetBinding(FrameworkElement.MaxWidthProperty, binding);

                    binding = new Binding("LogoMaxHeight")
                    {
                        Source = this, Mode = BindingMode.OneWay
                    };
                    rect.SetBinding(FrameworkElement.MaxHeightProperty, binding);

                    _border.Child = rect;
                }

                //if (_hwndHost != null)
                //{
                //    _hwndHost.MessageHook -= new System.Windows.Interop.HwndSourceHook(_hwndHost_MessageHook);
                //    _hwndHost.Dispose();
                //    _hwndHost = null;
                //}

                if (_pvpPresenterHook != null)
                {
                    _pvpPresenterHook.Dispose();
                    _pvpPresenterHook = null;
                }

                if (_evrRenderer != null)
                {
                    _evrRenderer.Dispose(); // it should have been already disposed by the engine
                    _evrRenderer = null;
                }

                if (_mediaWindow != null)
                {
                    _mediaWindow.Dispose(); // it should have been already disposed by the engine
                    _mediaWindow = null;
                }
            }
        }