I'm attempting to build a graph using the directshow SDK. When I call GraphBuilder.AddSourceFilter, I get the error 0x800C000D
private IGraphBuilder graphBuilder = null;
private IBaseFilter sourceFilter = null;
int hr = 0;
graphBuilder = (IGraphBuilder)new FilterGraph();
hr = graphBuilder.AddSourceFilter(filename, @"Source1", out sourceFilter);
After which hr returns the error code mentioned above and an exception is thrown. Fearing I had an incorrect filename, I tried these:
udp://224.1.1.13:9005/10.10.1.3
udp://224.1.1.13:9005/0.0.0.0
udp://224.1.1.13:9005
The stream is available and transmitting and I have confirmed so with VLC using the address udp://224.1.1.13:9005
I am pretty inexperienced with DirectShow graph building, so I'm wondering if I'm missing something basic. I'v gone over the msdn documentation for graphbuilding, but I've heard that the process is a lot more nuanced than ms lets on.
0x800C000D
is PST_E_UNKNOWN_EXCEPTION
, and is a rare deprecated PStore failure code. The problem is that filter lookup/instantiation fails somewhere too deep. There is no stock DirectShow filter to handle udp://
streams (supposedly RTP/RTSP). VLC handles them using its own code.
You typically need specific third party filter to render these URLs, and this filter might also need to be added directly via AddFilter
rather then relying on AddSourceFilter
to pick it up through public protocol registrations.
User contributions licensed under CC BY-SA 3.0