Introduction To GraphEdit
GraphEdit is a simple tool that will give you a visual for building and testing filter graphs. This is part of the DirectX SDK but can be found on may websites (However, it's not exactly legal to redistribute it). A Filter Graph is basically a collection of filters used to either render, compress, or convert media files. If you are interested in troubleshooting DirectShow playback in Windows Media Player, this is the best and coolest thing you will ever find. This is a very simple introduction to view a filter graph being built, GraphEdit is so powerful that I could not start to explain all of what you can do (And I can't even do that much). To really understand this you will want to grab a copy of GraphEdit, either from the DirectX SDK or from the web. I have tried to get Microsoft to post just GraphEdit in the Download Center, but that never got anywhere.
So, here's a basic start to using GraphEdit. We will be looking at the filter graph for a DivX encoded video with MP3 audio. To view the graph just open GraphEdit and drag your AVI into the window. You will see a graph created. If all goes right, mots people will see the audio and video stream being spilt by AVI Splitter. From here you will have the video out of the AVI Splitter go to whatever video decoder you have installed and registered. Mine, for example, connects to ffdshow. That will then goto your default Video Renderer. That's just the video however. Now you have audio to deal with. Since my video just has an MPEG-1 Layer 3 stream (MP3) the audio splits off to default MP3 decoder in Windows then to DirectSound. This is the process used by Windows Media Player, Zoom Player, and just about every other media player in Windows.
Now, the fun part! Say you don't want ffdshow to decode the video stream, you would rather give that to DivX 5 decoders. You can change this in the graph by deleting the ffdshow filter and then inserting the DivX decoder from Graph | Insert Filter | DirectShow Filters. Now connect the AVI Splitter to the DivX decoder and then the DivX decoder to your Video Renderer. Render the file. It will still playback, just using a different video decoder. You can change up the audio too. Maybe you want the Ac3Filter to decode the stream.
This is very basic, you can really get into much more interesting stuff! I will likely write about a few of those things later. You can do things like convert DVR-MS to other formats (DivX, XviD, 3ivX, etc), you can capture streaming video and audio and save it, capture FM radio from a TV Tuner card, capture video, and so on. All of this and more!
DivX AVI Decode Filter Graph
WMV Decode Filter Graph