How to overcome DirectShow filter problems

Introduction

This KB article applies to you if you cannot convert MPG/VOB/DivX files to WMV9 using Windows Media Encoder 9, because WME9 encounters an error and crashes.

WME is not Responding!

By system default Windows Media Encoder does not crash when you are trying to convert file. Windows Media Encoder becomes not responding because you have installed non-standard video codecs which causes Windows Media Encoder to crash.

This guide will familiarize you with GraphEdit and regsvr32 usage. For demonstration purposes this guide will be using a DivX file.

To solve the problem you will need

This tool package includes GraphEdit which is a visual tool for building and testing filter graphs. It is provided as an executable with the DirectX SDK. With GraphEdit, you can quickly build and test filter graphs to see if they function as you expect. You can even view a filter graph created by an application running in another process.

It also includes regsvrGUI to register/unregister directshow filters. This tool will log all your actions of registering and unregistering filters. So if you want to go back to your previous configuration you can easily do so by looking at the log.

Important information before proceeding

The quartz.dll contains most of DirectShow's default filters. It is the core of DirectShow itself. Only a few filters reside outside of it. The MPEG2/DVD related ones in mpg2splt.ax and qdvd.dll; the digital TV filters are in a bunch of DLLs; the Windows Media filters are in qasf.dll; the DES ones in qedit.dll; the DV filters are in qdv.dll; the video capture filters, including the AviMux are in qcap.dll). -- Alessandro Angeli [MVP::DigitalMedia]

During the following procedures do not unregister any filter that belongs to any of the files mentioned above.

Use them for your DirectShow configuration whenever it is chosen by DirectShow.

quartz.dll

Several filters of quartz.dll which you will identify as follows:

mpg2splt.ax

During the following procedures do not unregister any filter that belongs to \System32\mpg2splt.ax

Use them for your DirectShow configuration whenever it is chosen by DirectShow

Several filters of mpg2splt.ax which you will identify as follows:

It is expected that you have uninstalled all the codec packs by now. If not, please uninstall any codec pack you have and come back.

Configuring DirectShow filters for DivX/XviD/3ivX

Open GraphEdit

File > Render Media File and Open a DivX movie file

If you still have installed Codec Packs or the old filters were not installed properly, yours will look something like below.

Stuffed up DirectShow Graph for DivX

For example, assume that your WME crash when Morgan Stream Switcher or MatrixMixer is used by AVI files. Most of the time, uninstalling software that include DirectShow filters do not always unregister its DirectShow filters and they remain registered. Now you have to manually unregister these DirectShow filters.

Go to Graph > Insert Filters

Scroll down to DirectShow filters

DirectShow Filters Morgan Stream Switcher

Locate the DirectShow filter that you need to unregister (in this example: Morgan Stream Switcher)

Use regsvrGUI to unregister the filter (in this example: C:\Windows\System32\mmswitch.ax)

Unregistering Morgan Stream Switcher

In GraphEdit > File > New or Press Control + N

Render the same media file and see the difference

Fixing DivX Decoding. Almost done.

Follow the above steps until you unregister all other 3rd party DirectShow filters

In my case, I will continue the above steps until I remove Matrix Mixer

Once I unregister MatrixMixer, it will disappear too.

Go back to GraphEdit

Locate the DirectShow filter that you need to unregister (in this example: Matrix Mixer)

Use regsvrGUI to unregister the filter (in this example: C:\Windows\System32\matrix_mixer.ax)

Unregistering Matrix Mixer

Tip: You can use GSpot to see a list of all your video and audio codecs installed. It also provides information about their file locations.

In GraphEdit > File > New

Render the same media file and see the difference

DivX Decoding Fixed

Now you have configured direct show filters to play back DivX/XviD files properly.

In this example The audio and video of The American Wedding XviD.avi is splitted using Windows' default Avi Splitter (quartz.dll). Video is decoded using the standard DivX Decoder Filter (divxdec.ax). Audio is decoded using a standard filter: Fraunhofer-Gesellschaft IIS MPEG Layer-3 Decoder (l3codecx.ax).  I didn't try to unregister that and use a Windows Default filter (e.g. ACM Wrapper) because it is obvious that the Fraunhofer-Gesellschaft IIS MPEG Layer-3 Decoder is a well recognized standard filter.

In this example the Video is further filtered through AVI Decompressor (quartz.dll). It may or may not happen in your case. Since it is a Windows Default filter, do NOT try to unregister it.

In my other system, Fraunhofer-Gesellschaft IIS MPEG Layer-3 Decoder is not installed and the Audio for same file is now filtered through ACM Wrapper (quartz.dll). So everything you see in these diagrams are fully depended on what you have installed in your system. 

DivX Decoding Fixed

Now, try to convert a DivX AVI file in WME9.

If WME works without crashing you are done!

You are using all the proper codecs.

Now follow the same procedure for configuring MPEG1

Configuring DirectShow filters for MPEG1

File > Render Media File and Open a MPEG1 movie file

The rest should be self explanatory for you.

If you are unable to convert MPEG to WMV using WME9 Then

In this example:

Remove MainConcept MPEG Splitter

MainConcept MPEG Splitter

Follow the procedure until you finish up with a configuration looks like below (which uses Windows Default filters or at least error-free standard 3rd party filters)

MPEG1 Decoding Fixed

Configuring DirectShow filters for MPEG2

In the following configuration, I use mp2split.ax to split the raw file and then InterVideo WinDVD decoders for Audio and Video to render them

mp2split.ax

Suggested DirectShow configurations

Please refer to Windows Media Compatible Direct Show Configurations as well.

for MPEG1

All default DirectShow filters (preferred)

for MPEG1

for MPEG2

Note: The InterVideo Audio Decoder will not enable WME to detect 6 channels in the VOB file.
See related articles: Converting VOB directly to WMV with 6 Channels

Windows Default MPEG2 Splitter (mpg2splt.ax) with InterVideo WinDVD 5 Audio and Video Decoders (preferred)

Since you are using InterVideo Audio Decoder be sure you to configure it for 6 channels

for MPEG2

All the default filters, including the MPEG2 splitters, are usually the best choice. If your system will not accept VOB files in Windows Media Encoder or you notice that Windows Media Encoder is extremely slower than before, then go with the default splitter (mpg2splt.ax) and InterVideo decoders as in the first suggested configuration.

for WMV

WMV is less vulnerable to DirectShow filter changes, therefore you will most of the time get the configuration as below.
However, if you have Morgan StreamSwitcher and/or MatrixMixer, you will get a different configuration which is highly NOT recommended if you are using Windows Media Encoder to convert DivX/XviD/3ivX/*ivX files.

for WMV

for DivX/XviD/3ivX

Only 3ivX D4 4.5 from www.3ivx.com is installed

for DivX/XviD/3ivX

Example of recommeneded DirectShow Filter Configurations

Here is a recommended way of how your WMV, XviD, MPEG2 and MPEG1 should be rendered after you have successfully configured the DirectShow filters. By the end of this guide hopefully you will be having a simliar DirectShow Filter configuration.

Notice that the key is to use Windows Default filters whenever it is possible. Follow this knowledgebase article to become familiar with GraphEdit and learn to configure the decoders on your own.

Example of recommeneded DirectShow Filter Configurations

Thanks goes to Alessandro Angeli [MVP::DigitalMedia] at microsoft.public.windowsmedia.encoder for sharing his excellent suggestions. :-)

Feedback

http://www.whatisnew.com/dailynews/showthread.php?t=522

Home
Knowledgebase
Guides
Downloads
Forums
Contact Us

xhtml css