views:

30

answers:

1

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

+3  A: 

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.

Thanks user434507. That explains a lot. A simple push-type file source is attracting. I will try to find some example or documentations on how to write such a filter. If you know any, could you please post the link?
fzhang
I found "DVBPortal HDTV Pump Filter" http://www.dvbportal.de/projects/hdtvpump/index.html. Using it as the source filter makes MPEG-TS videos acceptable to MPEG-2 Demux.
fzhang
Another question. I assume DirectShow in Windows 7 haven't provided a source filter, that can read MPEG-TS videos and pushes them out. Am I right?
fzhang