Hi,
I am wondering what would be the best way to handle programs which rely on the Video Mixing Renderer 7 (quartz.dll) as it's supposed to be available on XP and later, but Wine contains only an implementation of version 9.
The program I am speaking of is Silverlight which uses the VMR 7 Interface to create a filter graph and then queries for the IAMCertifiedOutputProtection interface. I am currently using a hack fix to get around this by returning a VMR9 instance when a VMR7 is requested and implementing the missing subinterfaces (which are only part of VMR7). This solution is clearly not perfect and I am searching for a better way to get around this issue.
The most similar way to Windows would be to completely rewrite the current implementation of the VMR9 as VMR7 using DirectDraw, which would take a lot of time and most probably end up in having a lot of duplicate code. I am wondering whether using d3d9 for VMR7 would also be an acceptable solution. We could move all the d3d9 related stuff to a separate file so that VMR7.c and VMR9.c only offer the version specific interfaces and use the same code internally. This shouldn't be a big problem since the differences between the VMR7 and VMR9 interfaces are often only very small. Though it would not completely fit the behavior of windows.
I am open for other ideas on how to solve the problem, but as Silverlight does not even use the VMR7 object for playing the video but only to check for the graphic driver certificate I don't think it would justify to rewrite everything using Direct Draw if there are no other programs needing this interface.
Best Regards, Michael Müller