0x800C000D error when using AddSourceFilter in the directshow SDK

1

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.

c#
directshow
directshow.net
asked on Stack Overflow Jun 27, 2013 by OneSmallDrop • edited Jun 27, 2013 by Roman R.

1 Answer

1

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.

answered on Stack Overflow Jun 27, 2013 by Roman R.

User contributions licensed under CC BY-SA 3.0