Пример #1
0
        private void AddVideoRenderer()
        {
            int hr;

            _videoRender = (IBaseFilter) new VideoMixingRenderer();
            Debug.Assert(_videoRender != null);
            hr = _graphBuilder.AddFilter(_videoRender, "VMR7");
            DsError.ThrowExceptionForHR(hr);

            // Configure the video renderer

            if (_hostControl != null)
            {
                IVMRFilterConfig vmrFilterConfig = (IVMRFilterConfig)_videoRender;
                hr = vmrFilterConfig.SetRenderingMode(VMRMode.Windowless);
                DsError.ThrowExceptionForHR(hr);
                _vmrWindowlessControl = (IVMRWindowlessControl)_videoRender;
                hr = _vmrWindowlessControl.SetAspectRatioMode(VMRAspectRatioMode.LetterBox);
                DsError.ThrowExceptionForHR(hr);
                hr = _vmrWindowlessControl.SetVideoClippingWindow(_hostControl.Handle);
                DsError.ThrowExceptionForHR(hr);
                ResizeMoveHandler(null, null);
                _hostControl.Paint  += new PaintEventHandler(PaintHandler);
                _hostControl.Resize += new EventHandler(ResizeMoveHandler);
                _hostControl.Move   += new EventHandler(ResizeMoveHandler);
            }
            else
            {
                throw new Exception("Host control not specified");
            }
        }
        protected override void Initialize(IGraphBuilder pGraphBuilder, IntPtr hMediaWindow)
        {
            // QUERY the VMR interfaces
            try
            {
                _pVMRFilterConfig = (IVMRFilterConfig)BaseFilter;
                _pVMRFilterConfig.SetRenderingMode(VMRMode.VMRMode_Windowless);
                _pVMRWindowlessControl = (IVMRWindowlessControl)BaseFilter;
                _pVMRWindowlessControl.SetVideoClippingWindow(hMediaWindow);

                _pVMRWindowlessControl.SetAspectRatioMode(VMR_ASPECT_RATIO_MODE.VMR_ARMODE_NONE);
            }
            catch (Exception e)
            {
                throw new FilterGraphBuilderException(GraphBuilderError.ConfigureVMR, e);
            }
        }
Пример #3
0
        /// <summary>
        /// Binds a control to the VMR. This will be the surface the VMR renders onto.
        /// </summary>
        /// <param name="hostControl">control to render on</param>
        /// <seealso cref="M:FutureConcepts.Media.Client.StreamViewer.DSGraph.DetachControl"/>
        public void AttachControl(Control hostControl)
        {
            int hr;

            // Configure the video renderer

            if (hostControl != null)
            {
                _hostControl       = hostControl;
                _windowlessControl = (IVMRWindowlessControl)_videoRender;
                hr = _windowlessControl.SetVideoClippingWindow(hostControl.Handle);
                DsError.ThrowExceptionForHR(hr);
                ResizeMoveHandler(null, null);
                _hostControl.Paint  += new PaintEventHandler(PaintHandler);
                _hostControl.Resize += new EventHandler(ResizeMoveHandler);
                _hostControl.Move   += new EventHandler(ResizeMoveHandler);
                Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(DisplayChangedHandler); // for WM_DISPLAYCHANGE
            }
        }
Пример #4
0
 private void ConfigureVMR()
 {
     baseFilter = (IBaseFilter)new VideoMixingRenderer();
     IVMRFilterConfig filterConfig = (IVMRFilterConfig)baseFilter;
     filterConfig.SetNumberOfStreams(1);
     filterConfig.SetRenderingMode(VMRMode.Windowless);
     VMRCtrl = (IVMRWindowlessControl)baseFilter;
     VMRCtrl.SetVideoClippingWindow(winHandle);
     VMRCtrl.SetAspectRatioMode(VMRAspectRatioMode.LetterBox);
     Form1_ResizeMove(null, null);
     graphBuilder.AddFilter(baseFilter, "Video Mixing Renderer");
 }