locked
EVR and DirectX 10 RRS feed

  • Question

  • Hi,

    I try to write custom muxer and presenter for EVR.

    Now I have DirectX10 application that required some video processing features. I write skeleton for using media foundation, but if I set IID_ID3D10Device interface in responce to call to IVideoDeviceID::GetDeviceID, I return error while building topology, if I set IID_IDirect3DDevice9 in this call topology build's ok.

    Question: Can I use DirectX 10 with EVR? If yes, how I do it? I have application already... If not, how I can get video processing features with DirectX10?

    Regards,
    Artyom.

    Sunday, May 17, 2009 8:12 PM

Answers

  • The short answer is that currently Media Foundation and DXVA only work with DirectX 9.

    The longer one is that it is possible, but tricky, to share textures between DirectX 9 and 10 engines using ID3D10Device::OpenSharedResource() [msdn] [XNA forum]. The problem is that the two engines are not synchronized, so one might not be done with the texture when the other one starts using it. One workaround to force a "flush" would be to lock the texture (locking only a small rectangle to avoid wasting bandwidth). It looks like ID3D10Device::Flush() [msdn] might also be used on the DirectX 10 side.

    The DirectX team is working on this issue and, if it is possible, I would wait for them to publish an official way to handle this.

    Matthieu

    • Marked as answer by The March Hare Friday, November 13, 2009 7:29 PM
    Tuesday, July 7, 2009 5:22 PM
  • See Mike's response in this thread:



    Please use Vote As Helpful (green up arrow at top-left of posts) and Mark As Answer where appropriate.
    My dshow site is http://tmhare.mvps.org.
    • Marked as answer by The March Hare Friday, November 13, 2009 7:29 PM
    Tuesday, November 10, 2009 8:51 PM

All replies

  • Good question,
    I'm experiencing this too. It seems that both VMR9 and EVR only support DirectX9
    Can somebody from Microsoft comment on this??

    Regards

    Erwin
    Thursday, July 2, 2009 5:12 PM
  • The short answer is that currently Media Foundation and DXVA only work with DirectX 9.

    The longer one is that it is possible, but tricky, to share textures between DirectX 9 and 10 engines using ID3D10Device::OpenSharedResource() [msdn] [XNA forum]. The problem is that the two engines are not synchronized, so one might not be done with the texture when the other one starts using it. One workaround to force a "flush" would be to lock the texture (locking only a small rectangle to avoid wasting bandwidth). It looks like ID3D10Device::Flush() [msdn] might also be used on the DirectX 10 side.

    The DirectX team is working on this issue and, if it is possible, I would wait for them to publish an official way to handle this.

    Matthieu

    • Marked as answer by The March Hare Friday, November 13, 2009 7:29 PM
    Tuesday, July 7, 2009 5:22 PM
  • Any update on this?  I have the same issue in my application, I need to use DirectX 10 with EVR.  Right now I am copying each frame from D3D9 to D3D10.

    Thanks.
    Tuesday, November 10, 2009 6:47 PM
  • See Mike's response in this thread:



    Please use Vote As Helpful (green up arrow at top-left of posts) and Mark As Answer where appropriate.
    My dshow site is http://tmhare.mvps.org.
    • Marked as answer by The March Hare Friday, November 13, 2009 7:29 PM
    Tuesday, November 10, 2009 8:51 PM
  • Thanks!

    That's exacty what I need.
    Friday, November 13, 2009 6:11 PM
  • mark
    Friday, August 29, 2014 1:37 AM