Chortos‑2’s homepage

Playback

If you have suggestions or corrections related to new software releases, please tell me. If you have arguments against the use of CCCP other than ‘because it is not updated daily’, also tell me. (If you actually plan on updating your filters and players daily, by all means, install the individual components separately and set them up manually.)

TL;DR: Windows, CCCP (including CCCP’s MPC‑HC, LAV, xy-VSFilter), madVR, ReClock. If not, then mpv with --profile=opengl-hq --blend-subtitles=video.

Jump to: Windows, OS X, Linux, VLC.

On multi-OS setups:

Use Windows, because the right setup on Windows provides much better quality and compatibility than anything else.

(But I will still tell you how to get the most out of OS X and Linux. Just scroll down.)

On Windows (last updated on 26 December 2017):
  1. If you have any codecs, DirectShow filters or copies of Media Player Classic Home Cinema installed, it is a good idea to uninstall them and reboot first.
  2. Install the Combined Community Codec Pack. Prefer the 64‑bit version if you have 64‑bit Windows, as it has better performance. Reset all settings at the end to ensure that they match the new software components, that old hacks that are no longer needed or useful are removed and that new hacks that have become necessary are applied. (Note that the settings of external components such as madVR are not affected.)
  3. If you have a decent GPU:
    1. Install madVR.
    2. Run ‘Start → All Programs → Combined Community Codec Pack → Media Player Classic Home Cinema’. Press ‘O’ or select ‘View → Options…’. Select ‘Playback → Output’. Under ‘DirectShow Video’ select ‘madVR’. Click ‘OK’.
    3. To improve video playback quality further:
      Open any video in Media Player Classic Home Cinema. Select ‘Play’ in the menu or right-click on the video. Select ‘Filters → madVR’. Click ‘Edit Settings’.
      1. Select ‘scaling algorithms → image downscaling’. Check ‘activate anti-ringing filter’ and ‘scale in linear light’.
      2. Select ‘rendering → smooth motion’. Check ‘enable smooth motion frame rate conversion’.
      3. Select ‘scaling algorithms → image upscaling’. Check ‘activate anti-ringing filter’.
      4. Select ‘scaling algorithms → chroma upscaling’. Check ‘activate anti-ringing filter’.
      5. Select ‘scaling algorithms → image upscaling’. Select ‘Jinc’.
      6. Select ‘scaling algorithms → chroma upscaling’. Select ‘Jinc’.
      7. Select ‘rendering → dithering’. Select ‘Error Diffusion - option 1’.
      8. Select ‘scaling algorithms → image doubling’. Check all ‘double/quadruple/octuple luma/chroma resolution’ checkboxes.
      Click ‘OK’, then click ‘OK’ again. Enter full-screen mode: press Alt+Enter or double-click the video. Try to play the video. If it stutters, undo the above setting changes one by one in reverse order until the stuttering stops.
    4. If your display is profiled, you can have madVR perform the appropriate colour correction using the settings under ‘devices → [device name] → calibration’. (I don’t know any more details, sorry.)
    Even if your GPU is weak, try installing madVR, choosing ‘Bilinear’ for all scaling algorithms and checking everything under ‘rendering → trade quality for performance’. madVR with these settings is still better than anything else.
  4. Optionally, install ReClock:
    1. Actually install it. You will find the download link in the latest release thread near the top.
    2. Open any video in Media Player Classic Home Cinema.
    3. When asked ‘Use ReClock with mpc-hc?’, select ‘Yes, always (don’t ask again)’ and press ‘OK’.
  5. Use Media Player Classic Home Cinema (in ‘Start → All Programs → Combined Community Codec Pack’).

If you are on Windows 7 or newer and insist on making Windows Media Player use DirectShow filters (the above), you can do that using Win7DSFilterTweaker. Note that you have to use a DirectShow decoder to play 10‑bit H.264.

If you use madVR on a laptop with a discrete NVIDIA GPU, you are probably locked into the integrated GPU with decreased performance. To fix this,

  • either rename your player executable (e. g. to mpc-be.exe, which is useful if you use software such as MAL Updater that recognizes this file name)
  • or remove the lock-in using NVIDIA Inspector (see the end of the linked article for a download link):
    1. Launch NVIDIA Inspector.
    2. Click the settings button to the right of the driver version summary.
    3. Select ‘Media Player Classic’ in the profile list.
    4. Opposite ‘Enable application for Optimus’ select ‘SHIM_RENDERING_MODE_ENABLE’.
    5. Click ‘Apply changes’.
    You may need to repeat this after every NVIDIA driver update. (I do not know.)

If you see banding in gradients that should be smooth, this is your display’s or your GPU driver’s fault. If you use madVR, try lowering ‘the native display bitdepth’ in ‘devices → [device name] → properties’ in the madVR settings.

ReClock is useful because it replaces the default clock with the GPU clock, improving frame rate stability.

Do not use XySubFilter unless you require subtitles (including sign translations) to be significantly sharper than the video and are willing to risk breaking complex sign translations. (I have no other objections to XySubFilter.)

Do not use the internal subtitle renderer of MPC‑HC (which is activated by ‘Playback → Auto-load subtitles’ or ‘Playback → Use the built-in subtitle renderer’), because it it still has various bugs related to parsing, scaling and colour. It also provides a lower visual quality than that achieved by xy-VSFilter (which is used by CCCP).

Do not use Kawaii Codec Pack without manually installing CCCP’s xy-VSFilter, because it uses XySubFilter or old xy-VSFilter out of the box. XySubFilter is fine if you want supersharp subtitles and broken sign translations, but the old xy-VSFilter has various bugs that are fixed in CCCP.

Do not use the old standalone VSFilter (from guliverkli2 or guliverkli), because it is slow, has bad support for modern files, provides a low visual quality, uses a fixed colour matrix (BT.601) leading to incorrect colours for some new files, and forces the decoder to convert 10‑bit samples to 8‑bit ones, which lowers video quality if you use madVR.

Do not use the internal subtitle renderer of ffdshow tryouts, because it has bad support for the ASS format. It probably also has many of the other issues mentioned previously.

Do not use ffdshow tryouts for H.264 decoding, because they always convert 10‑bit samples to 8‑bit ones and then do it incorrectly, leading to 10‑bit video having slightly wrong colours and, depending on the renderer, a lower overall quality.

If you want to use mpv, you should probably use lachs0r’s builds. As detailed below for OS X, add --profile=opengl-hq if possible, --scale=ewa_lanczossharp --dscale=ewa_lanczossharp if possible and --icc-profile-auto --blend-subtitles=video --sub-ass-vsfilter-color-compat=full to the command line or use an equivalent configuration file.

VLC? See below.

On OS X (last updated on 13 February 2017):

Use mpv.

  • Add --profile=opengl-hq to the command line to improve visual quality, unless it causes playback to stutter on your computer. If it works fine, try to further add --scale=ewa_lanczossharp --dscale=ewa_lanczossharp unless that makes playback stutter.
  • Add --icc-profile-auto to enable full colour management.
  • Add --blend-subtitles=video unless you require subtitles (including sign translations) to be significantly sharper than the video and are willing to break complex sign translations and subtitle colour management.
  • Add --sub-ass-vsfilter-color-compat=full to ensure correct colours in subtitles (especially sign translations).
  • Instead of adding these parameters on the command line every time you launch mpv, you can create a directory named .config in your home directory, a directory named mpv inside it, and a file named mpv.conf inside that directory containing the following lines (edited as appropriate):
    profile=opengl-hq
    scale=ewa_lanczossharp
    dscale=ewa_lanczossharp
    icc-profile-auto
    blend-subtitles=video
    sub-ass-vsfilter-color-compat=full
  • If you try to play a file and some subtitles are missing, add --sub-clear-on-seek to the command line. The downsides of this option are that some subtitles can be missing when you seek backwards and that backward sub-seek does not work.

mpv has a basic graphical user interface. If you want additional features like playlist and settings menus, try Baka MPlayer, but I do not know whether it works on OS X.

If mpv works for you, skip the rest of this section.

If you are happy to control your media player using only your keyboard and ideally run it from the command line, use mplayer2:

  • Use Stefano Pigozzi’s mplayer2 build. You can drag-and-drop video files onto the mplayer2 icon and register file types to open in mplayer2 by default. (On Snow Leopard and below, this will initially crash due to vo_gl3. You can fix this by creating a directory named .mplayer in your home directory and a file named config inside it containing the line vo=gl.)
  • Alternatively (better yet), build your own mplayer2 using the Homebrew formulæ in Stefano’s tappable repository and my mplayer2 repository, which contains many useful patches (to mplayer2 itself, not the formulæ).
  • Alternatively, ask me for my versions of the above formulæ and build your own mplayer2 using them. You could even help me polish and publish them.

In all cases, add -vf-pre ass to the command line to enable vf_ass, because otherwise some video output modules exhibit the same problems as the internal subtitle renderer of MPC‑HC. However, know that adding this will break the colours in some (very few) new scripts. The ass branch in my mplayer2 repository fixes this and further improves vf_ass in various ways.

Use vo_gl3 (-vo gl3) if possible and vo_gl (-vo gl) if not. The gl3 branch in my mplayer2 repository improves vo_gl3 in general and enables its use on Snow Leopard. If you have a colour profile for your display, use -vo gl3:icc-profile=/path/to/your/profile.icc to enable its use.

Instead of adding these parameters on the command line every time you launch mplayer2, you can create a directory named .mplayer in your home directory and a file named config inside it containing the following lines (edited as appropriate):

vf=ass
vo=gl3

Do not use vo_corevideo on Snow Leopard and below, because it uses a fixed colour matrix (BT.601), leading to incorrect colours for many files.

Avoid using vo_corevideo in general, because for YʹCbCr it only supports 8‑bit 4:2:2 input, forcing 4:2:0 to have its chroma upsampled to 4:2:2, which is done with terrible quality using nearest-neighbour.

Otherwise, use MPlayer OSX Extended with an mplayer2 bundle and custom settings:

Set the command-line options -vf-pre ass -vo gl3 on the Advanced tab of MPlayer OSX Extended’s preferences. If this does not work for you, use -vf-pre ass -vo gl instead. If it does work and you have a colour profile for your display, use -vf-pre ass -vo gl3:icc-profile=/path/to/your/profile.icc instead.

The video will play in a window separate from the controls, but the controls will still work, except that the seek bar will not show the current position.

Note that MPlayer OSX Extended uses vo_corevideo by default, which has several problems described above. If you do not override it with a -vo option like recommended above, or if you tick the ‘Render subtitles before all other filters’ checkbox on the Text tab, vf_ass is automatically enabled, so then you do not have to enable it manually via -vf-pre ass, but it will not do any harm either.

Finally, you can use MPlayerX (from App Store only: the installer on the website contains malware!) or stock MPlayer OSX Extended. Both of them currently support only two colour matrices (BT.601 and BT.709) and switch between them solely based on the video resolution (BT.709 for HD, BT.601 for SD), which is sometimes wrong. This switching also has no effect on Snow Leopard and below, where BT.601 is always used. Also both players use vo_corevideo, which has the chroma upsampling problem described above. (Their colour matrices are independent of vo_corevideo.)

I do not know how good QuickTime’s video output is, although I suspect it suffers from the same fixed-colour-matrix problem on Snow Leopard and below. What I do know though is that Perian’s support for ASS subtitles is very limited and that Matroska files require a slow indexing operation every time you open a file (which does not affect quality but is annoying).

VLC? See below.

On Linux (last updated on 13 February 2017):

Use mpv.

  • Add --profile=opengl-hq to the command line to improve visual quality. Remove it if it causes playback to stutter on your computer. Otherwise, try to further add --scale=ewa_lanczossharp --dscale=ewa_lanczossharp unless that makes playback stutter.
  • If you have a colour profile for your display, add --vo=opengl:icc-profile=/path/to/your/profile.icc to enable its use. Alternatively, --vo=opengl:icc-profile-auto may be enough.
  • Add --blend-subtitles=video unless you require subtitles (including sign translations) to be significantly sharper than the video and are willing to break complex sign translations and subtitle colour management.
  • Add --sub-ass-vsfilter-color-compat=full to ensure correct colours in subtitles (especially sign translations).
  • Instead of adding these parameters on the command line every time you launch mpv, you can create a directory named .config in your home directory, a directory named mpv inside it, and a file named mpv.conf inside that directory containing the following lines (edited as appropriate):
    profile=opengl-hq
    scale=ewa_lanczossharp
    dscale=ewa_lanczossharp
    icc-profile=/path/to/your/profile.icc
    blend-subtitles=video
    sub-ass-vsfilter-color-compat=full
  • If you try to play a file and some subtitles are missing, add --sub-clear-on-seek to the command line. The downsides of this option are that some subtitles can be missing when you seek backwards and that backward sub-seek does not work.

mpv has a basic graphical user interface. If you want additional features like playlist and settings menus, use Baka MPlayer.

If mpv does not work for you, build and use mplayer2. Always pass -vf-pre ass on the command line, because otherwise some video output modules exhibit the same problems as the internal subtitle renderer of MPC‑HC. However, know that adding this will break the colours in some (very few) new scripts. This is fixed (i. e. -vf-pre ass is safe) and many other things are improved in my mplayer2 repository. For colour management, use -vo gl3:icc-profile=/path/to/your/display/profile.icc.

VLC? See below.

In any case, do not use VLC. It has all of the problems mentioned above: a fixed colour matrix and terrible chroma upscaling by default on Windows, subtitles rendered with libass and in screen resolution and colour space, even incorrect conversion of 10‑bit samples to 8‑bit ones. In addition, it fails to play any video that has a very low frame rate. If you are on Windows and stubbornly refuse to leave VLC, at least open the settings and switch the video renderer to the OpenGL one: this should resolve the colour matrix issue and switch to bilinear chroma upscaling.

libswscale and most if not all renderers built into mpv, mplayer2 and MPC‑HC shift horizontally subsampled MPEG‑2 and MPEG‑4 chroma to the right by half a pixel, while madVR shifts horizontally subsampled MPEG‑1 chroma to the left by half a pixel. This means that of the above, chroma (i. e. colour, as opposed to brightness) is correctly positioned only by vo_gl3 in my patched mplayer2 and, in all but some very old files, by madVR. Besides, libswscale generally has horrible chroma upsampling by default as it uses nearest-neighbour unless some magic flags are given.

Of the above, only madVR, mpv and mplayer2 read and use the colour matrix flag in MPEG video streams, and different decoders and renderers have different SD–HD thresholds. This means that SD files not using the BT.601 matrix and HD files not using the BT.709 matrix are always displayed with incorrect colours unless correctly tagged and rendered from YʹCbCr with madVR or played with mpv or mplayer2, while files that are not conventional SD or HD size are displayed with correct colours in some setups (including when correctly tagged and rendered from YʹCbCr with madVR or played with mpv or mplayer2) and with incorrect colours in others.

Only madVR, mpv and my patched mplayer2 perform proper colour gamut correction. vo_gl3 in vanilla mplayer2 can also perform colour gamut correction, but it always assumes the source gamut to be BT.709.

Taking Screenshots

If you are using MPC‑HC to take screenshots, make sure to set the output format to PNG (the default is JPEG).

If you are familiar with the command line, ask me for my screenshot image conversion program. It will be downloadable here (with the source code) when I finally feel like releasing it.

Why bother? Right now, the screenshot program offers conversion of raw 4:2:0 YʹCbCr (and other formats) to sRGB PNG with: