Click here to Skip to main content
15,921,113 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
I have an application which creates a graph, adds the VMR9 renderer, and then uses the "IFilterGraph2.renderFile" method to add a video source and automatically connect the PINs to renderer.

The "Intelligent Connect" algorithm produces the sequence:

[File Source] -> [AVI Splitter] -> [MJPEG Decompressor] -> [Color Space Converter]-> [VMR9]

This works fine on XP and on Windows 7 platforms - until I try it on a my newest target laptop (also a Windows 7 unit). On that one machine, the VMR9 renderer will not automatically connect to any file source (but the other renderes will....)

I have tried to verify the proposed graph using "GraphStudioNext" and GSPOT. Those utilities simply crash when trying to automatically connect this graph.

Graph Studio will run the entire graph if I connect everything up to the "Color Space" filter, and then connect the Color Space Filter to VMR9 by specification. Unfortunately that is not an option that I have open in the application code itself.

Has anyone out there solved this kind of problem? Any suggestions as to where to look for a solution?
Posted

Are all required filters installed on the (new) target machine?
Have you tried creating a graph file in GraphEdit and load it in your code?
 
Share this answer
 
Comments
vertex4343 5-Sep-12 10:47am    
All required filters are installed on the target machine - plus about 40 new ones, whose purpose I do not know.

The application uses a library of several hundred video files in different formats, codecs, and decompressors. There are probably about 20-30 different graphs that can be instantiated. The application depends very much on the "Intelligent Connect" feature of DirectShow.

It works on XP. It works on one Windows 7 box, but not another Windows 7 box (Both OEM installations).

Any ideas on what to look for are appreciated.
Eduard Keilholz 5-Sep-12 13:33pm    
The only thing I can comup with, is different versions of DX, but i'm sure you've checked that...
I have received an answer which solves this problem. Thank you T.B.!


The problem was caused by a non-functional 3rd party DirectShow filter (a video decompressor) which had been installed on the target machine with a MERIT_PREFERRED rating.

The failing component was identified by enabling the DirectShow Logfile with a call to IFilterGraph.SetLogFile(.....). The very last line of the file included the GUID of the component as it was first loaded.

The component was then identified and confirmed using the DSFMgr utility from SoftTella. They have a very nice display of all the DirectShow filters which can be sorted by GUID.

The log file was created with "FILE_WRITE_THROUGH" so that every line would be flushed. This was necessary as the crash left no trace information and the log file would not otherwise be saved.

The effective solution was to reduce the rating of the offending Decompressors to MERIT_DO_NOT_USE. There were several of them, all from the same 3rd party vendor.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900