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