The main difference is the compiler that is used for compiling ffdshow.ax. There are four different compilers being used: MSVC71, MSVC80, GCC and ICL10.
The CPU requirements for the builds are as follows:
- Generic builds work on Pentium-MMX/AMD K6 or later.
- ICL10 builds work on Pentium III/Athlon XP or later (SSE required).
- Experimental x64 builds work on Windows XP/Vista x64 Edition in 64bit media players. Install the regular 32bit builds on these 64bit systems for use with 32bit media players.
All builders use the GCC compiler to build libavcodec, which is ffdshow's main library for decoding. This library contains a lot of hand-optimized assembly code (which auto-detects the CPU's supported feature and instruction sets). Using additional compiler optimizations or advanced instruction sets (such as SSE/SSE2) doesn't result in any significant or noticeable performance increases. So when comparing pure decoding performance, there is almost no difference between the builds.
Optimized builds of ffdshow.ax have an impact on performance when certain filters are used in ffdshow.
Below is a list of - so far tested - filters that benefit from optimizations:
The following chart illustrates the possible increase in decoding performance when using optimized builds and filters:

Test setup: Pentium 4 2.8GHz (Northwood), Windows XP SP2, using null renderer
Test sample: Madagascar.avi (DX50)
To sum it up:
- The results when decoding without any filters applied are indistinguishable. All builds perform within 2% of each other.
- The ICL9 (SSE) build proved to be the fastest when using the xsharpen filter. The decoding speed increased by 88% over generic MSVC builds.
- SSE2-optimized builds showed no improvement over SSE builds.
- GCC SSE builds (not shown in chart) also provide a nice performance boost.
- The improvements over the generic builds differ from system to system though. It is recommended to test the provided builds on your own particular system.
For benchmarking purposes, you will need Haali's timeCodec.exe [96KB]. For timeCodec.exe to work, Haali Media Splitter is needed.
MSVC builds of ffdshow.ax are probably the most stable. However, there are no known issues with GCC builds either. So from a stability point of view, the build doesn't matter.
The following list gives an overview of parts in ffdshow that are multithreaded and thus show an improvement when run on a multi-core CPU:
- The resize filter is fully multithreaded. It is faster on a dual-core CPU. No configuration is needed. It is not effective on Pentium 4 HT CPUs.
- Xvid encoder is multithreaded.
- x264 encoder is multithreaded.
- With "Queue & misc" -> "Queue output samples" checked, acceleration using multithreading is enabled. You may see some benefit even on a single-core CPU.
- libavcodec's MPEG1/2 decoders are multithreaded. It becomes effective when setting "Decoder options" -> "Number of decoding threads" to the number of supported cores. The setting has no effect on Pentium 4 HT CPUs.
- libavcodec's MPEG4/MPEG2/MPEG1 encoders are multithreaded.