MPC-HC and MadVR Setup Guide

Foreword

Current article is a 2nd draft.

Table of Contents

Introduction

MPC-HC (original outdated build || forked & maintained build) is a classic video player with solid functionality. Not the prettiest thing in 2021, but function over form right?

For users that love tweaking, or users with potato PCs, I recommend using mpv instead.

For casual users, I recommend using MPC. It is easy to configure, and really user friendly. Performance may not be as efficient as mpv, but its ease of use and forgoing command line / config files in favor for a proper UI makes it the better choice for casual users.

MPC-HC is also very flexible with external components. One of the reason it has maintained its relevance after 17+ years is relying on external components/filters, allowing to decode modern formats despite its age.

MadVR is a powerful DirectShow renderer to to replace the antiquated enhanced video renderer from the Windows XP days. It is crucial to use MadVR as it not just provides powerful scalers and filtering functionality, but also fixes some errors with the default renderer (e.g. 10-bit video has incorrect pixelated chroma with the default renderer).

FFDShow allows MPC to interface with SVP 4 if you plan to use it. FFDshow also allows running custom scripts and AVISynth, but that’s advanced stuff and even I don’t touch it.

Please consult Google for audio options if you have a surround sound home theater. I only have headphones and stereo studio monitors.

Installation

There are many ways to install MPC-HC, ranging from codec packs to installing each component yourself. While my favorite way to install MPC-HC is via the K-Lite Codec Pack (K-Lite comes with a neat icon pack), I recommend avoiding using codec packs unless you are familiar with each components and know how to configure them properly. They are convenient but are also easy to install duplicate components and break rather easily if you don’t know what you’re doing. However, since I’m a hypocrite I’m using a codec pack anyways.

If you plan to use SVP 4, it actually also gives you the option to install MPC-HC and the required components within the installer. I recommend installing all the components with the SVP 4 installer so you don’t need to setup the FFDShow scripts (you can technically do it manually, but it’s a HUGE pain).

TL;DR: Install components manually if possible. If you’re lazy, just remember not to install duplicate components.

MPC-HC

Skip this section if you plan to use SVP.

MPC-HC officially has ceased development. However, you can find the community maintained releases here. Scroll down and get the x64 installer for the latest release build (avoid the dev build).

An alternative MPC-BE is also available. There are some slight differences, but setup should be similar. Nothing a Google search can’t solve though.

MadVR

Skip this section if you plan to use SVP.

MadVR can be installed by simply extracting the zip file to a safe location and running install.bat with admin rights. MadVR does not copy the files as it installs in whatever directory you have the folder extracted in.

SVP 4

Preface: I highly recommend using SVP 4 with mpv instead to save you lots of trouble.

SVP 4 can be easily installed with the installer. I recommend installing the core SVP programs and mpv. mpv will be a pre-configured VPY-enabled build in the SVP 4 installation directory, I recommend creating a ~\portable_config\ directory inside the mpv folder so you can run a separate mpv.conf. See my mpv setup guide to learn more.

Components to install (marked [x] are required components for the 64-bit MPC-HC to function):

+ [x] SVP Manager (Pro)
  + [x] [DS_64] Core for DirectShow 64-bit
  + [ ] [VPS_64] Core for Vapoursynth 64-bit (install if you also want mpv, recommended)
+ [ ] SVP Extensions
  + [ ] SVPcode (SVP transcoding tool)
  + [ ] SVPtube 2 (youtube-dl tool, recommended)
+ [x] 3rd-party software
  + [x] [DS32/64] AviSynth Filter
  + [x] [DS_64] ffdshow filters 64-bit
+ [x] 3rd-party software (optional)
  + [x] [DS_64] MPC-HC 64-bit 
  + [x] [DS32/64] madVR video renderer
  + [ ] [DS32/64] LAV filter (MPC-HC provides built-in LAV, so no need to install unless you need it for specific purposes)
  + [ ] [VPS_64] mpv video player (install if you want mpv, recommended)

Read the guide on how to set it up.

Unfortunately some components installed are a bit older, you can try updating them by overwriting them and keeping the configs. It should work, although don’t quote me on this.

You can try installing components manually, but only do it if you’re confident you know how to set them up manually (need to manually link FFDShow Avisynth script to the SVP script as seen below). If you installed everything with SVP 4, this is all done automatically.

ffdshow avisynth

K-Lite Codec Pack

Ignore this section if you plan to use SVP.

There are lots of codec packs out there, but K-Lite is my favorite. Again, don’t touch codec packs unless you know what’s going on, or you’re very careful with them. They tend to “manage” things for you and sometimes break things.

I recommend installing the Standard pack, then manually installing MadVR. K-Lite Codec Pack provides some useful tools and a neat icon pack with it. It even registers the app with Windows Graphics settings by default, so if you’re on a laptop you can go to the settings and force it to use your dedicated GPU.

MPC-HC Basic Setup

To open the options, select View -> Options on the Menu bar. This guide will assuming SVP 4 is NOT installed. If it is, there will be some differences (FFDShow stuff and script setup).

Player

Player options should be self explanatory. Take your time to configure it to your liking.

Formats, Keys, Logo, Web Interface

Pretty self explanatory. Formats might be a bit frustrating to register the app as the default app. You will need to click Run as Admin, select video/audio/both, click done and done again, and then you can register MPC as the default app in settings.

Keys are for shortcut keys. Make sure there are no duplicates!

Playback

Self explanatory options.

Output

Once you’ve got MadVR installed, you can switch Direct Show Video (1st option) to MadVR renderer. Leave the rest as defaults.

Output

Shaders

Hover over the shader files to see where they are located. You can download my provided debanding shaders here. Extract the files to where all the other shaders are installed at.

You can create new presets and add shaders to both pre- and post-resize. Only add to pre-resize unless you know what you’re doing. Photo example is me creating a light deband preset and loading it to the pre-resize filter. Remember to click save to save the shader preset after configuring!

You can access preset shaders quickly via right clicking when watching a video. This should also allow you to see how effective the shader is (you can create a “blank” preset with no shaders, and toggle between profiles to see its effect).

Shaders

Fullscreen

This allows the monitor to quickly switch refresh rate in fullscreen mode to match the source. I recommend not touching this, and use MadVR’s function instead if you want to change refresh rate of your monitor.

Internal Filters

The bottom 3 buttons allows access to LAV filter options. Note that these are the built-in LAV filters. If you installed MPC-HC via other means (e.g. codec pack), it’s possible that an external LAV filter has been installed. They can usually be accessed via system icons if they have been installed.

LAV filter config will be discussed later.

Audio Switcher/Renderer

Audio options. Consult other guides if you require advanced audio settings. The only relevant option here is the normalize filter, which imo should be disabled since it doesn’t work very well anyways. For music file normalization, MPC-HC supports replaygain tags, but just use a proper music player like Foobar2K at that point.

External Filters

Skip if you don’t plan to use SVP 4

Read the guide on how to setup FFDShow for SVP. Or just use the MPC-HC installed via SVP4, it’s setup by default.

Subtitles

Sub settings. Self explanatory. If you have a weak system, you can consider lowering subtitle animation frame rate (some fancier OP/ED have trouble rendering on weaker systems).

Tweaks and Misc

Self explanatory. Fast seek (keyframe) allows faster seeking, but since it uses keyframes some videos will seek rather far away from preset time. Disable fast seek if you must seek exact time defined in your jump distances.

Advanced

Don’t touch this unless you have a reason to.

To set max network streaming resolution, set YDLMaxHeight to the vertical resolution (e.g. 1080 for 1080p).

LAV Filters

See Internal Filters on how to access it.

LAV V

Set Hardware Acceleration to DXVA2 copy-back if you plan to use external filters such as SVP 4. copy-back means the decode stream is copied into system memory.

LAV A

Read guides if you need to know more about audio setup. For those like me using stereo, the default option should suffice. You may want to enable DRC so downmixing surround sound streams won’t have abrupt loudness.

LAV S

1f0.de has explanations for advanced options. Explanation of my setup:

jpn:eng loads eng subs for jpn audio as top priority. (I technically don’t need this first line due to my 2nd line, but I’m too lazy to edit it).
*:eng loads eng subs for any audio as 2nd priority.
*:*|d loads anything, preferably anything marked as default as 3rd priority.
; is a separator.

MadVR

Ctrl+j allows you to monitor decode info for dropped frames. Remember to also monitor system usage, and try not to exceed ~70% CPU/GPU usage if possible. Note that AV1 decoding and HDR tone mapping uses a TON of resources.

Go to system tray and double click MadVR icon to open settings.

Devices

In device settings you can access monitor related settings. Adjust settings to your appropriate device (i.e. PC or TV color levels, HDR settings, etc.). You can also access monitor refresh rate settings here, though if you are not using SVP there really isn’t much reason to use this.

Processing

Activate auto deinterlacing if you watch ancient DVD content. Otherwise, turn it off as Anime sometimes triggers false positives.

Artifact removal:

  • If you don’t plan on using my provided deband shader, feel free to use the MadVR one. I prefer the mpv ported one as imo it’s the best written deband shader out there.
  • Reduce compression artifacts can be use if you mainly stream your anime from Crunchyroll or other Web sources. Useful but GPU intensive!
  • Reduce random noise helps remove some dynamic grain and video noise. Useful but GPU intensive!

Image enhancement setting here is global. I prefer not using any filters.

Scaling Algorithms

Chroma Upscaling: Jinc should be sufficient for mid-range GPU. Only use NGU if you got a really high end GPU. Spline is a good quality fallback that uses much less resource usage compared to Jinc. Stick with Bilinear if you have a potato PC. Remember to activate anti-ringing filter when applicable.

Image Downscaling: SSIM for decent systems. Otherwise Lanczos or Spline are good fallbacks. Honestly even Bilinear is fine, as there aren’t many situations where you’ll downscale videos. The only scenario I can think of is stuffing the window in the corner background playback while doing other stuff, in which case quality isn’t important.

Image Upscaling: Most important, spend your GPU resource here first. Bilinear for potato PCs. Bicubic75 for iGPU systems if able. Spline for weak systems. Jinc for mid-end GPUs. NGU for higher-end systems that require resolution doubling (1080p -> 4K). Remember to activate anti-ringing filter when applicable.

Upscale Refinement: Post-upscale filtering. Some people like it, some don’t. Personally am not a fan. For anime, Adaptive Sharpen and Thin edges should be the most relevant settings.

Deep Dive into Scaling Algorithms

Explaining each algorithm in detail is going to take too much time. Instead, let me redirect you to my mpv external-shaders guide for more info. Scroll down to the upscalers demo. I’ll explain the relevant ones:

ewa_lanczos is Jinc-functioned Jinc, a.k.a Jinc. mpv has a sharp and soft tweaked variant but MadVR only has the default one. Jinc is probably as good as it gets without getting into more advanced NN scalers. Recommended to use in mid-ranged GPUs (GTX 1660 or better).

Next in line is spline. MadVR’s spline 3-tap should be spline36, and 4-tap should be spline64. Much lower system resource and close in quality to Jinc with a tad bit more ringing artifacts. Recommended to use in entry-level GPUs (~GTX 1650 tier).

MadVR has the ability to use various Bicubic upscalers. I like to use Bicubic75 for my iGPU laptops, but other sharper variants also exist. Bicubic is 1 step down from spline is suitable for laptops with iGPUs if spline is unable to run smoothly. Some older (e.g. 1st gen 4K laptops) might still struggle with Bicubic75.

Bilinear or DXVA2 can be used on potato PCs.

NGU is a proprietary doubling (2x) scaler. The sharp variant is similar to FSRCNNX. AA variant is similar to NNEDI3. Standard is in the middle and my personal recommendation. I recommend NOT using NGU unless you can run it at high or very high quality without dropping frames.

Resource Prioritization

CPU/GPU resource is limited, and putting them where it impacts the most is the most important. Here is my flowchart:

Img Upscl Chroma Upscl. Img DwnScl. Img/Artifact Enhc.
Potato Bilinear Bilinear Bilinear None
iGPU Laptops Bicubic Bilinear Bilinear None
Modern Laptops ~ GTX 1030+ Tier Spline Bicubic Bilinear None
~ GTX 1650 Jinc Spline Bilinear None
~ RTX 2060 Jinc Jinc Lanczos Lightweight Options
~ RTX 2060 Alternate NGU Jinc SSIM None
Powerful Systems Sky Is The Limit

Rendering

General rendering options. Leave at default for the most part.

Leave Smooth Motion off, if you want interpolation get SVP.

Dither – I prefer Ordered Dithering.

Trade Quality for Performance – Not as a huge impact you might realize. It’s not gonna magically make your potato play 4K videos.

SVP 4

Consult my SVP 4 guide for SVP specific options.

Conclusion

Thanks for reading!

8 thoughts on “MPC-HC and MadVR Setup Guide

  1. Thanks for the guide, I was looking for this after getting a new PC, but the problem I am getting is that the screen won’t shrink when I only want half size of the screen, like a split when you have to work on something while watching the anime. MPCHC has never done this before, as if the screen stays 100% size even when you shrink it 50%, do you know how to adjust the setting for this? Please let me know, thanks!

    Like

      1. Thanks, that fixed it. I also noticed the subtitle is rather blurry, I am not sure if it was done that way by the TL group or if there is something in the settings I can change. Do you know anything about that? Thanks again.

        Like

      2. I am so sorry, I checked the subtitle setting again and made sure to upscale the resolution, clear as brand new glass window now, thanks for the wonderful guide, I will leave note here if I have more concerns! Great work.

        Like

  2. Another question. The MPC I used before recognizes soft sub and makes the sub goes away the moment I enter or exit full screen mode, but the MPC I set up here does not do that. Is there something in the settings I can maybe change? I notice MPCBE was the same as well, I tested using a soft sub file.

    Like

    1. sorry, any idea on this? also, is there a way for mpchc to load 2 subtitles at once? the fansub group breaks the subs into parts for the opening song/ signs and parts for the main show, MX player on my android can load both subtitles at once but I am not sure how to do the same for mpchc on a PC. Any tip would be great, thanks!

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s