Hi,
I developped an application that plays video through DirectShow with the VMR9 API.
Of course, I want to prevent the user from playing if VMR9 is not present, which I found could be done by classical success of the following code
hr = CoCreateInstance(CLSID_VideoMixingRenderer9, NULL,
CLSCTX_INPROC, IID_IBaseFilter,(LPVOID *)&pBF);
My application is capable of playing video on whatever monitor selected by the user.
It worked fine until I tried to connect a USB graphic device, as I found that it seems relative to the VMR9 capability of the graphic device.
Here are the tests I did so far :
- On a laptop (Windows XP), with this USB device defined as the primary, my application said VMR9 was not installed.
- On the same laptop, with this USB device defined as a desktop extension, my application said VMR9 was installed, probably because my laptop chipset supports it.
Of course, the way it is implemented, the result of the VMR9 capabilities test is global to the system, and it seems it is only considering the checking of the primary device.
So my questions are
- How can I know that a device is VMR9 capable ?
- Moreover, I tried the same tests on a Windows 7 desktop PC and it reports VMR9 installed, whatever the USB device is primary or not. So it is not only related to the hardware as the same USB device works under 7 and not under XP. Would I have to install something else ?
Thanks in advance for advices and comments.