Exemplo n.º 1
0
 protected override HRESULT OnInitInterfaces()
 {
     m_evStop.Reset();
     HRESULT hr;
     {
         hr = (HRESULT)MFHelper.DXVA2CreateDirect3DDeviceManager9(out m_DeviceResetToken, out m_DeviceManager);
         hr.Assert();
         if (hr.Succeeded)
         {
             hr = (HRESULT)m_DeviceManager.ResetDevice(Marshal.GetObjectForIUnknown(m_Device.ComPointer), m_DeviceResetToken);
             hr.Assert();
         }
         m_Caller = new Wrapper(this);
     }
     m_Renderer = new EVRRenderer();
     bool bAllocatorUsed = false;
     IMFVideoRenderer _renderer = (IMFVideoRenderer)m_Renderer.QueryInterface(typeof(IMFVideoRenderer));
     hr = (HRESULT)_renderer.InitializeRenderer(null, (IMFVideoPresenter)this);
     hr.Assert();
     bAllocatorUsed = hr.Succeeded;
     m_Renderer.FilterGraph = m_GraphBuilder;
     hr = base.OnInitInterfaces();
     if (!bAllocatorUsed && m_VideoControl != null)
     {
         IMFGetService _service = (IMFGetService)m_Renderer.QueryInterface(typeof(IMFGetService));
         IntPtr _object;
         hr = (HRESULT)_service.GetService(MFServices.MR_VIDEO_RENDER_SERVICE, typeof(IMFVideoDisplayControl).GUID, out _object);
         hr.Assert();
         IMFVideoDisplayControl _display = (IMFVideoDisplayControl)Marshal.GetObjectForIUnknown(_object);
         hr = (HRESULT)_display.SetVideoWindow(m_VideoControl.Handle);
         hr.Assert();
         DsRect _rect = new DsRect(m_VideoControl.ClientRectangle);
         hr = (HRESULT)_display.SetVideoPosition(new MFVideoNormalizedRect(), _rect);
         hr.Assert();
     }
     return hr;
 }
Exemplo n.º 2
0
 protected override HRESULT OnCloseInterfaces()
 {
     m_evStop.Set();
     if (m_Renderer)
     {
         m_Renderer.Dispose();
         m_Renderer = null;
     }
     HRESULT hr = base.OnCloseInterfaces();
     if (m_Caller != null) m_Caller.Dispose();
     if (m_scheduler != null)
     {
         m_scheduler.StopScheduler();
     }
     if (m_SamplePool != null)
     {
         m_SamplePool.Clear();
     }
     return hr;
 }