I've been thinking (waits for the applause to die down). DirectShow is similar in style and architecture to GStreamer right? They both use graphs of connected elements. Would it be possible to use GStreamer to implement Quartz?
/me applauds..
Tom, add Mike as the new Quartz maintainer :-)
Actually, we may use this solution, but I really never looked at it to see if it's doable. It could be, but on the other hand, one could say 'Win32 GUI is similar in style to GTK+, you have buttons and sliders and widgets, so let's use GTK+ to do Win32 GUI elements' :-)
Moreover, when you see this :
trace:quartz:Graphbuilder_RenderFile(0x403c3680/0x403c3680)->(L"r:\sshock2\cutscenes\cs1.avi" (0x40682a80), (null) ((nil))): stub !!! trace:quartz:Graphbuilder_FindFilterByName (0x403c3680/0x403c3680)->(L"LG Video Renderer" (0x4068294c), 0x4068262c): stub !!!
You see that the application expects to have their own renderer to be used... So it complicates a bit all the stuff if GStreamer chooses one for us which is not the one the application expects.
Finally, the hard part is not (I think) how to implement it, but how DShow works (there are hundreds of COM interfaces / objects and most is constructed 'automagically' by 'Graphbuilder_RenderFile'). Once we have the logic in place to build this graph the same way Windows applcations expects us to build it, then we will have done most of the work I think and the rest is only code stealing :-)
Lionel