This page is ancient, and may or may not actually contain useful technical information anymore. Here you can find technical information about the CCCP, instructions on how to tweak things for optimal quality or optimal speed, and hints on using other decoders.
Exactly what does the CCCP install and why?
The current playback pack will install:
- Haali Media Splitter 1.10.262.12 (MKV, MP4, OGM/OGG, TS, AVI)
- Used for compliant MKV playback. Attempts to disable other MKV splitters on the system. Certain Matroska features are available only with Haali's splitter and not in Gabest's. This filter is also capable of being used as a splitter for MP4, OGM and OGG, MPEG-PS, MPEG-TS, and also AVI. AVI and MPEG-PS are not used by default in the pack and is not recommended to do so. You will, however, need the MP4, OGM and TS parts for playing those files. The installer will also set the source filter for each container only if it is checked in the installation, this fixes any issues with previously installed splitters by overriding them.
- VSFilter (MPC-HC) 2.40.2677.0 (SSA/ASS, SRT, VOBSUB subtitles)
- For displaying subtitles. It will attempt to disable any previous DirectVobSub installations you might have.
- FFDShow Tryout 1.1.3611.0 (H.264/AVC, DivX, Xvid, various audio formats etc.)
- Decodes H.264, Xvid, DivX, generic MPEG-4, Flash video (FLV1 and FLV4), and others. Also used for audio decoding with the following formats turned on by default: AAC, Vorbis, MP3, MP1/2, AC3, DTS, FLAC, TTA, AMR, LPCM. If you would like to turn off ffdshow decoding for a specific video or audio format, read further down for instructions on how to do it properly.
- MPEG-2 Decoder (MPC-HC) 1.4.2677.0
- Decodes MPEG2 video (the stuff on a DVD). The filter currently has an extremely low merit level and also MPEG1 decoding removed. It is primarily included as a fallback for DVD MPEG2 decoding if the user does not already have another MPEG2 decoder installed. A few other patches donated by Haali for interlaced/progressive fixes.
- CoreWavPack 1.1.1
- Decodes WavPack audio and splits WavPack audio files (.WV) for playback in DirectShow. The only DirectShow implementation to support all three WavPack modes: lossless, lossy, and hybrid.
- FLV Splitter (MPC-HC) 1.4.2677.0
- Media Player Classic Home Cinema 1.4.2677.0
- Based on the original "Media Player Classic" and was created after Gabest, the original author, stopped working on it. Many new player features have been integrated in this player.
- Required to play WMV9 content if you don't have Windows Media Player 9 or 10, Windows Media Format SDK, or Microsoft Codec Installation Package for Windows Media Player 7.1 installed - ffdshow can't decode WMV9. If any of those are installed, then WMV9VCM will be ignored during playback (even if it was installed by CCCP) and the WMV9 codecs that come with them will be used instead (which is a good thing).
- Starting with CCCP15, WMV9VCM will no longer be included. It is still listed here for those who are using our last pack to support Win9x and include WMV9VCM (CCCP14 - 2007-02-22).
What other stuff does the CCCP change when installing, and why?
- Vertical padding: original height - This makes VSFilter keep the aspect ratio - any other value will make it stretch or squeeze it. This is particularily noticeable when playing anamorphic encodes.
- Load when needed - Only loads VSFilter when there are subs to display.
- Apply changes immediately - Makes it possible to change VSFilter settings and/or the subtitle stream without restarting playback.
- Use overlay mixer as video output renderer - Overlay mixer is used as the default renderer for several reasons, compatibility being one of the foremost. VMR7 is only available on Windows XP and VMR9 is horribly buggy (jagged edges and extreme smoothing are common problems). The VMR7 renderless and all VMR9 modes have a tendency to make the video look distinctly greenish, especially on nVidia video cards. The overlay mixer should be the most accurate renderer - it shows you what the video really looks like. So for both compatibility and quality, we use overlay. If, however, you have issues using overlay, try the VMR7 windowed mode.
- Use default DirectSound audio device - This is mainly to avoid bugs that appear when trying to decode Vorbis audio through the WaveOut device. Also, DirectSound might use slightly less CPU resources, especially on Windows 2000/XP.
- Audio normalization off - This is better done in ffdshow's audio decoder, if at all. It's off by default there too - simple volume control usually works better.
- Disable certain internal filters - If MPC's internal filters are enabled, they will be used instead of DirectShow filters. Since we want to actually use the components we install, MPC's internal filters are disabled depending on what else is installed with the CCCP. Note that some of MPC's internal filters are outdated and shouldn't be used - most importantly the MKV splitter.
- Haali Media Splitter
- Unregister Gabest's MKV splitter - Gabest's splitter is old and outdated, but has a higher DirectShow priority, so if it is installed it will be used instead of Haali's splitter. Therefore, we try to unregister Gabests splitter upon installation.
- Autoload fonts without asking - This is needed to play softsubbed MKV's that has nonstandard fonts muxed into the file. If this option is off, the splitter will ask if you want to load the fonts, and that quickly becomes annoying.
- Try to open linked files - Makes the splitter try to load linked files. Linking is a feature that allows splitting in a special fashion so that the encoder can, for example, split a movie to two 700 MB files, but have either of them behave as the whole file as long as they are in the same directory. Since some releases use this feature, we have chosen to enable it.
- ffdshow video
- Overlay mixer checkbox set to grey state - The only mode that doesn't break aspect ratios.
- YV12 colorspace output enabled - This used to be disabled for broad user compatibility reasons. Nowadays any vidcard should support YV12, except in the case of broken drivers. It should be noted that YV12 mode is faster on graphic cards that properly support it.
- Allow output format changes set to grey state - Set this way for compatibility reasons (especially with WMP10). Grey state means that ffdshow will allow output format changes during playback, but only when connected to a renderer that is known to support it.
- iDCT set to libmpeg2 - This implementation is the one that performs best according to our tests. It also deals correctly with old DivX encoded content.
- ffdshow audio
- AAC decoding set to libfaad2 - realaac doesn't support parametric stereo (not that anyone should be using that, but who knows), and it seems to crash under certain, rare conditions.
- Oblivion.exe added to blacklist - Oblivion seems to use DirectShow to play sound, and could cause a flood of ffdshow icons in the systray.
- Normalize disabled in the Volume filter - One pass normalization is something we generally try to avoid. Note that the Volume filter itself is disabled by default, so it's just there for people who might enable the filter manually.
- Normalize disabled in the Mixer filter
Attempted uninstallation of known trouble-causing DS filters
- On installation, the pack will attempt to uninstall some things that are known to cause problems (it's HIGHLY recommended that you let the pack uninstall these for you).
- DirectVobSub - Conflicts with VSFilter, since DVobSub is an older version of VSFilter. The CCCP version of VSFilter is up-to-date and well tested, and should be used instead of any other version.
- Morgan Stream Switcher (mmswitch.ax) - Possibly the buggiest DirectShow filter ever, and it's not needed with the filters and players the pack installs.
- Matrix Mixer - Buggy and completely unnecessary, since ffdshow and the players can do what it does.
- Gabest's Matroska Splitter (MatroskaSplitter.ax) - See the entry on Haali above.
- Intervideo MPEG4 Decoder (MP4VDEC.AX) - Has higher priority than just about everything else and has never actually managed to decode MPEG4 video properly.
The settings manager
- There are some additional settings in the last page of the installer. Refer to the general FAQ entry about the settings manager for detailed descriptions of what they mean. Basically, if you're not sure about what they mean, don't change them. The defaults should work fine for most people.
I want to use Xvid for decoding Xvid. How do I set it up properly?
This is easy, especially compared to DivX. Just grab the binary from, for example, Koepi's site and install it. Make sure that the "Decode all supported FourCC's" checkbox is unchecked during installation (it should be unchecked by default). Then uncheck Xvid in the "ffdshow Video Decoders" section in the CCCP settings manager and you're set.
I want to use DivX for decoding DivX. How do I set it up properly?
It's not really possible to do it so that everything works. DivX has HUGE decoding problems with, well, anything. Somewhere around 5.2.0 it even stopped being fully compatible with itself. What follows is instructions on how to do it the least evil way.
When you install DivX and get to the "Choose components" screen, uncheck EVERYTHING (if you really, really want the EKG, you may install it without any ill effects, but it's not very useful). All the extra things it tries to install are evil and should be avoided. When the installation is finished, go to the decoder configuration (Start -> Programs -> DivX -> DivX Codec -> Decoder configuration utility) and check "Disable postprocessing" and uncheck "Film Effect". If you want to get rid of the annoying logo, click the "Quality settings" tab and check "Disable logo". You're now finished here, press OK and head over to the main CCCP settings page, where you uncheck DivX in the "ffdshow Video Decoders" section. Press next, then apply and you're done.
Known bugs and issues you should be aware of:
- Releases encoded with DivX 5.0.x will have problems with blocking.
- If "smooth playback" is on, DivX will have the same b-frame lag problem that ffdshow used to have (see above about lagging styled SSA subs).
Ways to solve these problems:
- The blocking problem for 5.0.x encoded movies can be solved by either turning on a slight amount of postprocessing or by enabling "Smooth playback" (will break SSA).
How do I manually register/unregister a DirectShow filter?
regsvr32 /u "<path>"
unregisters. If you want to quickly get rid of morgan stream switcher you'd run
regsvr32 /u "<path>\mmswitch.ax"
The path can be omitted if the file is in your Windows system directory (system32, where most packs unfortunately put all files). When manually registering filters you'll probably want to put them all in a separate directory so you don't add to the Windows mess.
How do I tweak stuff for optimal quality?
CCCP installs with some components' settings altered to ensure best possible compatibility, sometimes at the cost of reducing quality somewhat. There's really only one that's important, the rest are image manipulation tricks that may improve the looks of the video in your eyes, but be atrocious to others'.
A brief introduction to colorspaces
There are several ways of storing colors digitally. One of the most common ones is RGB24 (Red-Green-Blue, 24 bits), which stores the color as three 8-bit (0-255, or 0-FF hexadecimal) values (also known as channels) - one red, one green and one blue. This means that to store one color, 24 bits (8 + 8 + 8) of memory is needed, hence the name RGB24. Another variant of RGB, RGB32, has one extra value, used for expressing transparency (also known as the alpha channel). RGB32 is far more common than RGB24 since it's much easier to program stuff that works with even powers of 2 (which 24 isn't).
Still, RGB is quite rare in the world of video compression, since it requires a lot of memory to store and is quite clunky to work with. Enter the YUV formats. These store color as one "light", luma, (Y) value and two "color" values, chroma (U and V). There are a number of variants of these as well, the two most common ones being YUY2 and YV12. In YUY2, there are two luma samples (Y) and one chroma (UV) sample (two values, U and V) per two horizontal pixels, and thus the image width needs to be mod-2 (evenly divisible by 2). YUY2 is a packed, or interleaved YUY format, meaning that for each row of pixels, values are stored as YUYVYUYVYUY... (see where the name YUY2 comes from?). YV12 is similiar to YUY2, but for each square of 2x2 pixels, there's four luma values but only one chroma value, which means that both image dimensions needs to be even multiples of 2. YV12 also differs from YUY2 since it's planar, not interleaved, meaning that the values are stored as YYYYYYYYYYY... UUUUUUUUUU... VVVVVVVVVV...
MPEG4 (and MPEG2, which is used on DVD's) uses YV12 as its native resolution, for fairly obvious reasons. RGB24 has far too much data to compress well, and RGB32 is even worse (both are also quite slow to process). YUY2 means a lot less data, and YV12 is even better. In addition, the planar nature of YV12 makes it even faster to work with than YUY2.
CCCP's and ffdshow's output colorspaces
Note: This information is highly outdated. CCCP defaults have been changed for best quality as the mentioned old vidcards are now practically extinct.
CCCP installs with YUY2 as the default output colorspace in ffdshow. Why? We just learned that YV12 is faster and more efficient, and on top of that it's what the video originally is stored as, so why the conversion? The answer lies within the hardware. All displays use the colors Red, Green, and Blue (RGB) in order to display anything on your screen. Before the video you are watching appears on your screen it must first be converted to RGB, which is also then used with a Video Overlay. When used with an overlay this conversion is taken care of by the graphics card, and therein lies the problem. Many graphics cards seem to have trouble doing a "good" YV12->RGB conversion and the output becomes less then optimal. Whereas converting to YUY2 and then allowing the RGB conversion is widely supported on cards, fast, and successfully works. Though this quick YV12->YUY2 conversion is slightly lossy, the output will be much better then the YV12->RGB on a bad card.
Applies to: EVR/VMR9, Haali's Renderer, Overlay/VMR7(depends on GPU)
To guarantee the best possible quality, the YV12->RGB conversion should be done on the CPU using a reliable and high-quality (but slow) algorithm.
In the ffdshow video filter, this is done thusly:
- Open the ffdshow video decoder settings and go to the "Output" section.
- Uncheck all the "Planar YUV" and "Packed YUV" formats, leaving only all the RGB formats checked.
- Go to the "RGB conversion" section. Put a tick next to "High quality YV12 to RGB conversion" and "Dithering". Leave everything else as it is and press OK.
The effect may or may not be easily noticeable to your eyes, depending on how picky you are and how retarded your graphics card/chosen video renderer is. NOTE: The HQRGB option uses some extra CPU power, so if you experience lag, go back and enable YUY2 output again. You can also experiment with YV12 and see how that looks. Otherwise, click reset on both pages and get out of there (click OK).
|Combined Community Codec Pack|