0
votes

Our application uses IGraphBuilder::RenderFile to build filter graph. On Windows 7, this application can play MPEG-PS videos smoothly, but it cannot open/play MPEG-TS(transport stream) videos. IGraphBuilder::RenderFile returns an error code VFW_E_UNSUPPORTED_STREAM.

On my Windows 7, Windows Media Player can open/play those MPEG-TS HDV videos.

My questions are:

  1. Is it possible to load/play MPEG-TS videos by DirectShow on Windows 7, with only filters installed by Windows 7? Because it is best for us not to ask users to install some third-party DirectShow filters.
  2. If it is impossible, is there some popular codecs that can handle MPEG-TS HDV, and also fit in DirectShow at best.

Some more details I've tried:

  • I also tried GraphEdit in Windows SDK. It gave the same error when opening those MPEG-TS videos.

  • If I added one MPEG-TS video as a File Source(Async), its output pin was marked as Major Type: Stream, SubType: GUID_NULL, and cannot be connected to other filters, such as MPEG-2 Demultiplexer.

  • More frustrated, MSDN says MPEG-2 Demultiplexer does demultiplex both of MPEG-2 transport and program streams.

So, it is very likely that I missed something. After days of digging, I am now very desperate on this problem now. Any advices are welcome and appreciated.

Thanks

Fan

1

1 Answers

2
votes

The reason why you can't connect File Source (Async) to MPEG-2 Demux is that the file source operates in pull mode and the MPEG-2 demux only supports TS in push mode.

Haali media splitter can demux MPEG-2 TS. If you don't want to force users to install it, maybe you can write a simple push-type file source filter and insert it manually into your graph.