Wednesday, September 05, 2007 10:36 PMHello all,
I've been mulling through this topic trying to get a grasp of the situation for a few days now and I think I know the problem. I just don't know what I can do about it at this point. First, some background:
For work I built a system to play streaming windows media files inside of the 3d environment. This works great in versions of Windows up to XP, but since the release of Vista it has never worked. While the path involved in loading, organizing and displaying in that environment was pretty long, none of that seems to be having issues. The root cause of the problems I've found is Vista's inability to play wma/wmv/asf files that are streamed from the web, at least running through the filtergraph path. Unfortunately I can't find any streaming asf files floating around on the web, but I'm quite certain that it isn't the specific file.
I have two laptops on my desk right now, one running XP and another running Vista. Both have GraphEdit. When I open a mms: url on the Vista machine it builds a graph with ASF ICM Handler and ASF ACM Handler which are both needed to connect the loader/parser (http://msdn2.microsoft.com/en-us/library/ms788131.aspx) when the file is streaming. When the file is local it doesn't need these two filters. Now on Vista the same mms: refuses to load, and the two ASF handlers are not available filters for the graph. Looking on the XP machine these filters are stored in dxmasf.dll, which is shrunk to 4k on the Vista machine. It appears to me that these filters were removed from Vista, and seem to be core enough technology that I can't unassociate the dlls to try substituting older versions.
So now Windows Media content is handled in a filtergraph differently than other content. While most other files are loaded through File Source (Async.) or (URL) and then parsed by a seperate filter, the default Windows Media loader is also the parser. I read on these boards that GDCL WMV/WMA Parser is a useful filter to try, so I grabbed it and it does let me load local WMV files using File Source (Async.). However, it's unable to handle content from File Source (URL). How I tested this was I went into the registry and changed the default filter for MMS files and used Render URL in GraphEdit, which then failed. Changing the local wmv association, however, succeeded.
So the real problem here is I'm unable to stream Windows Media files without using ASF ACM Handler and ASF ICM Handler in the filtergraph. Now I've heard a report I've been unable to look into (but that's my next step) that installing quicktime for windows and installing the Windows Media for quicktime patch will get around this, but I haven't been able to open the .dmg file without a mac handy. I'm curious if either new filters were written or the old filters were added back through this.
I don't think I'm the only person experiencing this problem, I believe
is also dealing with the same issue. Any help is appreciated. Thanks!
Thursday, September 06, 2007 9:04 AM
You can modify the GDCL parser (which is available in source form) to enable support for streaming. Instead of an input pin, implement IFileSourceFilter. In the Load method, use the code from CompleteConnect but instead of OpenStream, just call Open.
Wednesday, December 12, 2007 11:14 AM
I too have the same problem. I tried to modify the GDCL parser, but I don't know how to implement the IFileSourceFilter.
I tried to implement this CompleConnect method, but an error occurs saying "Open is not a member of IWMReaderAdvanced2". How to implent this IFileSourceFilter? Please provide some sample code. Please help.
Thursday, December 13, 2007 10:20 AMJust use IWMReader Open instead of querying for IWMReaderAdvanced2.
Saturday, March 15, 2008 5:59 AM
I fixed that error.
But I don't know how to implement IFileSourceFilter? Please provide some help how to implement IFileSourceFilter?
Monday, March 17, 2008 1:46 PM
I'm also having the same problem.
Does anyone know how to solve this?
Wednesday, May 07, 2008 9:22 PMEven I have that problem. I'm unable to build the graph with Vista and streamed wmv.
I use a particular software player that build the graph on the fly and doesn't work.
I able to play a wmv streamed file only with Windows Media Player 11.
Maybe, can someone post me the modified GDCL parser? I don't know how I can compile it in a working dll that can be automatically picked up by the DirectShow chain manager...
Thursday, July 22, 2010 6:07 AMDoes taking ownership of dxmasf.dll and replacing it with the one from XP make it work?
Thursday, July 22, 2010 7:47 AM
Does taking ownership of dxmasf.dll and replacing it with the one from XP make it work?Is not it a violation of EULA?