Log in

View Full Version : Directshow filter pb


shumisha
10th May 2005, 10:24
Hello there!

I am having trouble with playing some mpeg2 files. Here is the story : I have done a Powerpoint front-end to a small number of mpeg2 video files. When using this powerpoint front-end on my own PC, everything is OK, videos play just fine. When moved to other PCs, it does not work : the film is not displayed, it looks like the video player jumps directly to the end of the file, even though the film duration is correctly displayed.
I tried on a dozen PCs, it has worked about 50% of the times. These PCs have various config. : 2000, XP, XP SP2, graphic boards nvidia, ATI, various versions of directx, various mpeg2 filters (nero, pinnacle, Powerdvd). I could not find any relationship between "it works" and a specific configuration.
Let's also mention that in all cases, Windows Media Player reads all files perfectly. It's only when using Media Player that I have the problem, whether directly (running mplay32.exe) or when the mpeg2 file is embedded in Powerpoint.

Using Gspot, Filmerit and Graphedit, I could find a difference between a "good" PC and a "bad" one, related to the MPEG 2 Splitter (mpg2splt.ax).
- on a PC where the mpeg2 files can be read with mplay32.exe, this filter appears as MPEG2-Splitter, and it Pin 0 output type is set to Video
- on a PC where this does not work, the filter appears as MPEG2-Demultiplexer. Output type for Pin 0 is Mpeg 1, which I think is the problem.
Both PC are Win XP SP2 under directX 9.0c.

Now the question is : why is this, and how do I fix it ???

I already tried, with little hope, to copy mpg2splt.ax from one PC to the other, to no avail. Any lead to a possible solution will be very much welcomed!

Thanks for any help

wenxibo
30th March 2006, 10:34
Hi, I had the same problem, and had spent 2weeks to find the reason of it. After hundreds of test and analysis, I found this issue occured by the merit of MPEG-2 Splitter and MPEG-2 Demultiplex in directshow. here is the detail content:
http://www.easympeg.com/phpBB/viewtopic.php?p=11#11

the best way to fix it is set the merit of MPEG-2 Splitter higher than MPEG-2 Demultiplex, if you have not tools to set the merit of filters, please goto http://www.easympeg.com to download EasyMPEG MX, it has a feature to raise merit of MPEG-2 Splitter automatically.

shumisha
30th March 2006, 11:03
Thanks a bunch for getting through all this trouble to find a fix to this problem, and thank you for posting your findings also on Doom9.
I whish there was a way to force Powerpoint to read files another way, because in my case, I may not have access to the machines were the presentations are running DVD shipped to customer for example), and so am unable to change merits.
But still good to know, and I can change on local machines.

Thanks again

wenxibo
30th March 2006, 15:13
Another method is make your mpeg2 file with invalid parameter. I had explained it in my document, MPEG-2 Demultiplex filter is more demanding than MPEG-2 Splitter, a mpeg file with a small error(e.g illegal PTS time) will cause MPEG-2 Demultiplex failed to demultiplex, but MPEG-2 Splitter can work with that file.
The simple way is change the SCR time of your first packet in your file, by default, it should be zero and be encoded as "440004000401" (after 000001BA) , you can change it to max value 0x1FFFFFFFF(SCR is 33bits) which is "7FFFFFFFFC01" . Now this file will be recognized illegal by MPEG-2 Demultiplex, but MPEG-2 Splitter demultiplex it without any problem, and you don't need to change merit.
Don't worry about the synchronic effect, SCR is only a reference time .

wenxibo
30th March 2006, 15:22
Sorry, I forget to tell you that you must use hex-edit tools to edit and change the SCR time of your file manually.
And I can write a small software to do that if you like.

shumisha
30th March 2006, 15:37
That's a bit too much for me right now!! I think I'll let it like that for now..
Thanks again

wenxibo
31st March 2006, 15:45
I made the program here
http://www.easympeg.com/download/ChangeSCR.exe

you can download it and try.