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:
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
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.