rse
13th January 2008, 23:34
Hi!
Iīm programming my own media player with Lazarus using DShow without any manipulation of the filter graph. Mostly either the graph cannot be built or it plays fine, but sometimes it can be built but doesnīt play anyways. For example a m3u-file will build a graph but wonīt play. The only filter in the chain is the ram source filter, no output, nothing. Problem is: The filter chain has a length, but it wonīt progress so that it never comes to an end.
I want to detect such behavior and kick this file from the playlist, like the files that wonīt build a filterchain at all. But how can I detect it? I can only think of one thing: Testing the filter chain for output-devices like "Video Renderer", "Default DirectSound Device" or "DSound Renderer". There is only one catch: How can I be sure to detect _any_ output filter that outputs sound or video? There may be others probably. Probably they have other names in other language windows systems (which could be no problem if I tested for the CLSID instead...). If so, I would probably kick an otherwise working file. Do you have any suggestions?
Iīm programming my own media player with Lazarus using DShow without any manipulation of the filter graph. Mostly either the graph cannot be built or it plays fine, but sometimes it can be built but doesnīt play anyways. For example a m3u-file will build a graph but wonīt play. The only filter in the chain is the ram source filter, no output, nothing. Problem is: The filter chain has a length, but it wonīt progress so that it never comes to an end.
I want to detect such behavior and kick this file from the playlist, like the files that wonīt build a filterchain at all. But how can I detect it? I can only think of one thing: Testing the filter chain for output-devices like "Video Renderer", "Default DirectSound Device" or "DSound Renderer". There is only one catch: How can I be sure to detect _any_ output filter that outputs sound or video? There may be others probably. Probably they have other names in other language windows systems (which could be no problem if I tested for the CLSID instead...). If so, I would probably kick an otherwise working file. Do you have any suggestions?