PDA

View Full Version : MPEG Decoder?


Dan203
13th November 2004, 09:35
Does anyone know how tools such as VirtualDubMod and XMPEG decode MPEG2 files? I have an MPEG file that when played back in Windows Media Player, using anyone of several codecs, works perfectly. However the same video when played back, or transcoded, using XMPEG or VirtualDubMod displays a reproduceable video error. I was hoping that maybe I could figure out how these programs decode MPEG files so that I might upgrade that decoder and eliminate the error.

Dan

fccHandler
13th November 2004, 20:43
I know nothing about XMPEG, but AFAIK the code in VirtualDubMod was copied from my own VirtualDub-MPEG2 (http://fcchandler.home.comcast.net) mod. The source is freely available.

BTW, what is the error?

Dan203
14th November 2004, 17:30
It's a decoder error. The video shows blocks on screen for a second, then about 10 seconds later the video stutters for a second. This appears to be an error in the original source, but other MPEG decoders don't have a problem with it.* For example if I play back the file using Sonic Cineplay it works fine. If I play it back in WMP using the Moonlight Elecard codec it works file. And if re-encode it in TMPGEnc it also works fine. However when I use VirtualDubMod (or VirtualDub MPEG2) I get the error. I even tried installing DGDecode.dll and using an AVS script and I still get the error.

Does anyone know of a DivX/Xvid encoder that uses DirectShow to decode the file before reencoding it?

Dan

* The video was transfered from a TiVo. I tried re-transfering it and the error appeared in the same place. Also out of the 5 DirectShow MPEG2 codecs I tried all but the PowerDVD one could play the video without displaying the error. (Cineplayer, WinDVD, PowerDVD, Moonlight Elecard & Ligos)

stephanV
14th November 2004, 19:07
Originally posted by Dan203


Does anyone know of a DivX/Xvid encoder that uses DirectShow to decode the file before reencoding it?


How about frameserving it with avisynth using DirectShowSource?

fccHandler
14th November 2004, 20:05
Originally posted by Dan203
This appears to be an error in the original source, but other MPEG decoders don't have a problem with it.
My guess is that the DirectShow decoders are somehow able to mask the stream errors, perhaps by dropping frames, interpolating them, or otherwise approximating the missing and/or corrupted data.

Unfortunately, the decoder in VirtualDubMod doesn't do this, so GIGO (http://en.wikipedia.org/wiki/Garbage_in,_garbage_out).

Dan203
15th November 2004, 08:48
Originally posted by stephanV
How about frameserving it with avisynth using DirectShowSource?

Wow that worked! I'm new to AVISynth so I wasn't aware it had that ability. Thanks for the help.

Dan