http://bugs.winehq.org/show_bug.cgi?id=14161
--- Comment #13 from Alexander Dorofeyev alexd4@inbox.lv 2008-07-04 17:29:57 --- I've found out that the problems with Render/RenderFile patch come from the fact that it always calls EnumMatchingFilters with bRender=TRUE on first pass (because !final is TRUE). This prevents EnumMatchingFilters from returning Indeo video decompressor filter (since it's not a renderer) at the point when it should be connecting this filter to Avi Splitter's video pin. So Render cycles through some filters, none of which of course accepts IV50, then it gets to "LG Video Renderer" filter that has been returned from EnumMatchingFilters because it has major type Video and subtype NULL and is a renderer. Render tries to establish connection with LG Video Renderer, which crashes, probably because this is something unexpected for the app.
Not sure what exactly is wrong there. It may be wrong that a filter with MERIT_UNLIKELY - "LG Video Renderer" - was used instead of filter with MERIT_NORMAL - "Indeo video decompressor". It may also make sense to look for a more "perfect" match first, to avoid the kind of situation when it tries to connect MEDIATYPE_Video / IV50 pin to MEDIATYPE_Video / NULL pin of a renderer. Maarten, what do you think? I of course realize that ideally instead of guessing this should be tested, but I don't know how... writing and registering a simple filter implementation for tests is, perhaps, doable, but then it would need a com server dll afaik.