MadVR Settings
MadVR Settings
MadVR Settings
1 madVR Overview
2 madVR Settings for Low End - Mid Range PCs
o 2.1 DXVA2 Focused
o 2.2 Lanczos Focused
3 MadVR Settings for High End PCs with GTX 970/980
o 3.1 DXVA2 Focused
o 3.2 Lanczos Focused
4 How to use Nvidia DSR to resize video to 2715x1527 and higher
5 MadVR Scaling Algorithms
o 5.1 MadVR Chroma Upscaling
o 5.2 MadVR Image Doubling
o 5.3 MadVR Image Upscaling
o 5.4 MadVR Image Downscaling
6 MadVR Artifact Removal
7 MadVR Smooth Motion
8 MadVR Dithering and Error Diffusion
9 madVR Chroma Upscaling Performance Results
10 MadVR NNEDI3
11 madVR NNEDI3 Chroma and Luma Resolution Doubling Performance
o 11.1 1080p NNEDI3 Resolution Doubling (Luma and Chroma)
o 11.2 720p NNEDI3 Resolution Doubling Luma Only
o 11.3 720p NNEDI3 Resolution Doubling (Luma and Chroma)
12 Installing and enabling madVR with mpc-hc
13 MadVR Configuration for Nvidia GTX 770 SLI
14 Video Decoder Benchmarks
o 14.1 DXVA2 and CUVID
o 14.2 GPU Video Engine Load
o 14.3 GPU Memory Usage
o 14.4 GPU Load
o 14.5 720p Average Render Time
15 Other madVR Wiki Articles
16 Jinc
17 MadVR Video Decoders
o 17.1 DXVA2
o 17.2 CUVID
18 LAV Filters
19 MadVR 0.90 Updates
o 19.1 Artifact Removal
o 19.2 Image Enhancements
o 19.3 Image Doubling Settings
o 19.4 Image Upscaling Refinement Settings
20 FFmpeg Codec and Libraries Wiki
21 PotPlayer MadVR Support and compatibility
22 MadVR Credits
madVR Settings for Low End - Mid Range PCs
If you are looking for a TL;DR (quick look at the table below) section that suggests some
settings to use with a relatively high end PC, then welcome sir / mam. I'm using these settings
with PotPlayer / MPC-HC and I am at around 30ms per frame render times which means that I
use one set of MadVR options for 480p, 720p, and 1080p videos. I am using an Intel i7-4790k
and a Nvidia GTX 970 on Windows 8.1 Pro with GeForce Driver: 347.09. The date is January
16th if you really wanna get specific and MadVR 0.87.13 is in use.
I went ahead and took a bunch of 720p Chroma Upscaling screenshot comparisons so you
can compare image quality between various Chroma Upscaling algorithms like Jinc, or NNEDI3. I
will eventually get around to doing image upscaling and resolution doubling comparisons when I
get the time.
If you are using a Nvidia GPU, make sure you are enabling Noise Reduction and Edge
Enhancement in the Nvidia Control Panel.
DXVA2 Focused
dithering random
dithering random
Intel i7-4790k
16GB RAM
4 SSDs of various models and 2 1TB HDDs (movies stored on spinning disks)
GTX 970
If you have a high end GTX 700 series GPU or higher these settings should net you around 12ms
render time per frame for 720p video, thanks to CUDA. Render times for 1080p videos will
typically be better than 720p since less upscaling / image doubling is going on.
If you watch a mix of 1080p and 720p videos, these settings should work for both. If you only
watch 1080p video then you should be able to use 128 neurons for chroma upscaling and image
doubling. You can edit madvr settings by right clicking on the madvr icon while playing a video
with either mpc-hc or PotPlayer. Just like in the image below. If you do not have a verbose list like
I do, then you should right click on the Windows taskbar, click on properties, then click
on customize notifications area, finally click on always show all icons and notifications. That
should work for Windows 7 and Windows 8.
If you are using a Nvidia GPU, make sure you are enabling Noise Reduction and Edge
Enhancement in the Nvidia Control Panel.
DXVA2 Focused
I've been playing around with an alternative configuration to see if it's better to stick with DXVA2
for most of madVR's algorithms and jack up Chroma Upscaling and Image Doubling to high
neuron values. Personally I kind of like this configuration over the original one I put in this section.
Image Doubling Always use NNEDI3 to Double Luma and Chroma Resolution using 128 neurons
Image Doubling Always use NNEDI3 to Double Luma Resolution using 64 neurons
http://wiki.mikejung.biz/PotPlayer_DSR
High End GPU suggestion: Space Heater Config -- NNEDI3 128 (GTX 970)
High End GPU suggestion: Summer Config -- Lanczos 4 Tap with anti ringing filter
Everything Else: -- BiCubic 75 AR
BiCubic 75 is the default setting for madVR, and for the most part that is totally fine.
Chroma Upscaling can have a significant impact on performance, especially if you use NNEDI3,
even using Jinc can result in dropped frames. I've run some benchmarks with each option, check
out this page for the full results. You can also find madvr image comparison screenshots by
checking out that link right there.
The image below is what I am using with my GTX 970. This is not necessarily the best option,
so start with BiCubic and use NNEDI3 only if you have GPU to spare.
Nearest Neighbor -- Performance wasn't great, quality wasn't great. Plus I don't like
neighbors, or one near me.
Bilinear -- Similar to Nearest Neighbor in terms of performance.
GPU Video Logic
DXVA2 -- Performance was amazing, and quality was still decent, not as good as Jinc or
Spline, but good enough.
Custom Pixel Shader Code
Mitchell-Netravali -- What a not cool name for an algorithm. Even with this performance
wasn't good enough, resulted in dropped frames.
Catmull-Rom -- Cooler name, I like cats, but not this algorithm.
Bicubic 75 -- Awesome name, the madvr default, usually a good option to go with when in
doubt.
SoftCubic -- Good option, alternative to Bicubic, for those of us who prefer soft things.
Lanczos 4 AR -- Step up from SoftCubic, using 4 taps results in very Jinc like quality and
performance, in some cases it's a little sharper, but I like the combo with image doubling.
Spline 3 -- Sounds like a sci fi movie, I'm happy with Lanczos, but I'll test out spline at some
point.
Jinc 3 -- Provides very good quality, but the most expensive in terms of GPU utilization, not a
lot of information about Jinc.
MadVR NNEDI3
If you have a GPU that is DX11 compatible you can enable the use of NNEDI3 for Chroma
upscaling and to double or quadruple the resolution of Luma or Chroma. Keep in mind that
Chroma Upscaling and Chroma resolution doubling are not the same setting. These two options
are seperate sections / functions within MadVR. This upscaling / resizing process can be very
GPU intensive, so if you notice choppy video playback you might have lots of dropped frames. To
see if you have lots of dropped frames, use (CTRL + J) to view statistics while playing a video
and lower the settings for Chroma Upscaling if you are above 40ms per frame render time. Since
the MadVR statistics are updated on the fly, be sure to play the video for at least 1 minute or
more if you are going to use MadVR's stats during video, otherwise you will get averages that are
way too high, as the initial 10 seconds of playback can be a bit more intensive than the rest of the
video simply because your PC has to figure out what to do with playback and after the first few
seconds performance starts to become consistent.
If you own a GTX 970 or GTX 980 and have a decent CPU then you should be able to utilize
NNEDI3 in the following areas:
Chroma Upscaling: NNEDI3 @ 64 Neurons Image Doubling: Always upscale Luma if needed
@ 64 Neurons
Please keep in mind that if you watch 480p or 720p video, you will be using a lot more resources
than watching a 1080p video, so test out all video sizes before you finalize your configuration.
720p Video takes significantly more resources than 1080p if resolution doubling is enabled.
Most of the time 1080p videos will not get doubled, so you won't see a performance impact
until you try to play a 720p video. Don't assume that just because 1080p videos play ok, all
your other videos will play fine as well. The lower the resolution the more processing must be
done to increase image quality.
Use CTRL + J to view stats while playing a video, if you noticed dropped frames try to reduce
the amount of NNEDI3 Neurons to either 32 or 64 for resolution doubling. There is a large
performance hit after 64 Neurons so unless you have a GTX 970 or faster you will more than
likely have to stay under 64 Neurons.
Stay away from using NNEDI3 to double Chroma resolution unless you have a pretty
powerful GPU. It's pretty expensive in terms of GPU utilization so stick with using NNEDI3 to
double Luma resolution and measure how your PC handles the video, if you are well under
30ms render time you might be able to use NNEDI3 to quadruple Luma resolution at lower
neuron levels like 32, or 64.
Using NNEDI3 to double Luma resolution will improve video quality and doesn't hurt as much
as NNEDI3 to double Chroma resolution.
1080p NNEDI3 Resolution Doubling (Luma and Chroma)
1080p Videos will generally not be double or quadrupled if you are viewing them on a 1080p
screen
If you leave MadVR at the default settings and only enable NNEDI3 LUMA resolution doubling,
you will see almost no performance difference, at least if you are viewing a close to 1080p video.
I found that for the most part, average render time per frame was about 1.33ms. Even if I
enabled Luma and Chroma to always be doubled and quadrupled using 256 Neurons, I still got
about 1.33ms for render times. GPU and CPU utilization did not move past 4% each.
Again, using the settings in the image below I noticed no performance difference between not
using resolution doubling / quadrupling, and enabling everything with 256 Neurons. This is more
than likely because 1080p videos are not going to get doubled when viewing on a 1080p monitor.
If you have 4K monitor then odds are the image will get doubled. I found that enabling NNEDI3
Luma resolution doubling at 64 Neurons was the best option for compatibility and overall
smoothness. It still looks good and will play 720p and 480p videos without issue. If you set this to
256 Neurons and / or enable quadrupling or Chroma resolution doubling you will experience
higher render times and more than likely dropped frames. If your render times per frame go much
past 40ms the video will become choppy. This is not a bug, it's your weak GPU not keeping up
with demand.
The image below shows CPU load while playing the 720p video. NNEDI3is much more GPU
intensive than CPU intensive, however you can see that as you set higher amounts of Neurons,
CPU load increases. I am using an Intel i7-4790K, if you have a much older CPU then you will
more than likely be CPU bound in a hurry.
720p NNEDI3 Resolution Doubling (Luma and Chroma)
As soon as you enable Chroma doubling along with Luma you take almost a 50% performance
hit. You can see that you gain about 8ms render time at 32 Neurons, compared to just doubling
Luma.
My GTX 970 is basically capped out at 128 Neurons for doubling Luma and Chroma Resolutions.
I did not bother trying to Quadruple resolutions since I was already getting dropped frames for
720p video. When playing 1080p video with these settings I had a render time of under
2ms. Because the video is within the scale factor it makes sense that a 720p video is more
demanding than a 1080p video simply because MadVR is actually doubling the 720p resolution,
but does not double the 1080p resolution because I'm not using a 4K monitor.
CPU load is a little higher, but you can see it caps at about 17% because my GPU is already
maxed out there is nothing more for the CPU to do.
Installing and enabling madVR with mpc-hc
To install MadVR on Windows 8.1 or Windows 7 please visit this link and download the file:
[madvr-0.87.13.zip]
Once you have downloaded the file, create a new folder called "MadVR" under Program
Files, or anywhere you want to, the location doesn't matter, but you will want to put it somewhere
safe so you don't accidentally delete the folder. Placing the madvr folder on the desktop or
somewhere that is easily forgotten about / cleaned out often is not a good idea.
Now it's time to install Media Player Home Classic, you can find the latest version of mpc-hc
[here]. I recommend installing the x86 version otherwise you will run into compatibility issues,
especially with MadVR. You don't need to install mpc-hc in the same folder as madvr, so just stick
with the installation defaults for mpc-hc.
Now that MPC-HC is installed, navigate to the madvr folder where you extracted madvr-
0.87.13.zip. Run install.bat, make sure you run as the admin user, this will add MadVR to the
windows registry, so it can be used after the DirectShow transform filters are done processing
the video stream. After the madVR.ax registry entry has been added to Windows you should be
all set as far as installing madVR.
To configure MPC-HC to use madVR for video rendering, start up MPC-HC, right click anywhere
in MPC-HC, go to options, then under playback go to the output section and select madVR to
be used for the video renderer.
Make sure you save / apply any changes before you exit MPC-HC. To view and change madVR
settings, play a video with MPC-HC. You will notice there is a new madvr icon in the lower left
part of the windows taskbar. This is only available when a video is playing, if you stop a video
madVR will not run. Right click on the madvr icon, at this point you should see something like
this:
Click on "Edit madVR Settings" to view all of the available madVR configuration settings.
Continue reading the rest of this page to properly configure madVR.
Using the configuration above, I get render times that are under 30ms for almost all content. In
addition to these settings you might be able to get away with enabling "Smooth Motion" in
addition to "Error Diffusion Dithering Option 1", but Smooth Motion doesn't seem to always have
that much of an impact, where as dithering option 1 has a noticeable impact in quality.
MadVR Chroma Upscaling
High End GPU: Space Heater Config -- NNEDI3 64 (GTX 770 SLI)
High End GPU: Summer Config -- BiCubic 75 AR
Everything Else: -- BiCubic 75 AR
BiCubic 75 is the default setting for madvr, and for the most part that is totally fine. Some forums
and guides mention that Jinc 3 taps can provide better video quality for Chroma Upscaling, I don't
think it's worth all the extra strain on your GPU unless it's winter in Michigan and your house is
cold, then use NNEDI3 :D. Personally I don't notice much of a difference in terms of video quality,
so I use the default setting most of the time, but if I want to warm up my room I'll use NNEDI3.
I spent some time benchmarking each of the madVR Chroma Upscaling to see what ones were
the most demanding. Take a look!
MadVR Image Doubling
I decided to Always Double Luma Resolution and use 64 neurons because idk, it sounds like
science and looks pretty damn good. I recommend staying away from Chroma doubling as it is
pretty expensive in terms of render time and doesn't seem to improve quality all that much, but
then again, I'm not an expert, I just write wikis. Also, only select the ability to quadruple Luma and
Chroma resolution if you can already play 1080p AND 720p videos without getting dropped
frames. If you try to play 480p videos with these settings you may have to dial things back a bit.
I am not comfortable with giving my PC too many neurons because Skynet.
These settings seemed to work well. I did not see any dropped frames, and rendering time was
under 30ms in most cases, so that was good enough for me. I did notice that SLI really sucks at
doing MadVR. In some cases disabling SLI seemed to actually improve performance while using
higher doubling settings. That's probably more to do with the new options than it is to do with
Nvidia.
Currently I have a single GTX 970, but I did have SLI 770s, I found that in general the GTX 970
handled these settings pretty well.
Nearest Neighbor -- Performance wasn't great, quality wasn't great. Plus I don't like
neighbors, or one near me.
Bilinear -- Similar to Nearest Neighbor in terms of performance.
GPU Video Logic
DXVA2 -- Performance was amazing, and quality was still decent, not as good as Jinc or
Spline, but good enough.
Custom Pixel Shader Code
Mitchell-Netravali -- I'm not sure why you would ever use this to be honest.
Catmull-Rom -- I like cats, but not this algorithm, there are better ones still ahead.
Bicubic -- This is the default option, and a pretty good one. With 75 AR bicubic does a good
job at improving video quality, and is relatively fast which means shorter render times.
SoftCubic -- Good option, alternative to Bicubic, it's just "softer" I guess. Hey, is that
Lanczos up a head?!
Lanczos 3 -- Lanczos is awesome. It provides sharp video, which I like. Not like too sharp,
the "just right" sharp. It's a bit slower than bicubic but I think it provides better video quality.
Spline 3 -- Sounds like a sci fi movie. Spline's awesomeness resides in between Lanczos and
Jinc.
Jinc 3 -- Provides very good quality, but the most expensive in terms of GPU utilization.
Slightly better video quality than Lanczos.
I took a bunch of 720p video screenshots so I could compare the visual quality of each chroma
upscaling algorithm to see who the winner was.
http://wiki.mikejung.biz/File:Gtx_970_smooth_motion.jpg
LAV Filters
LAV Filters are based off FFmpeg's opensource libraries. The end goal of Lav Filters is to be
used in place of closed source, or shitty Filters which are used to play all types of media. LAV
Fliters can handle pretty much anything you try to play on your PC and it has some built in
detection and decision making in terms of what filters / decoders to send streams too.
This Github page has a nice readme about what LAV Filters do and how to best use them. I
have not tested this auto-installer / updater for MadVR, mpc-hc, and LAV filters, so use
caution if you try to use it, but both github pages provide some additional insight into
how to best maintain your madvr and mpc-hc configuration.
The 3 general media filter types are:
Source Filter -- The source filter deals with the raw media file, it handles IO, so reading data
from the file, or writing data to a file. This is the filter at then "beginning" or "end" of the
processing chain. Source filters read data from a file, such as .mp4 or .mkv, decide what to
do with the streams based on the file's metadata and ultimately pass the raw streams to the
next filter, which is know as the "Transform Filter".
Transform Filter -- The transform filter modifies the data that came from the last filter's
output. Essentially the transform filter gets data from the source filter, after that you start
piping data between various amounts of filters which might be resizing the video resolution,
or adding subtitles to the video. Media Stream splitter (parser) and decoder filters are
examples of filters in the Transform group. You can have lots of transform filters that all work
together to perform various tasks to the audio and video streams which get split up once it
hits the transform group. If you are familiar with Linux and the concept of "Pipes" then you
should understand what's going on here, essentially each transform filter runs an operation /
command and then pipes it's output to be used as the next command / operation's input.
Renderer Filter-- The renderer filter sends the audio from the media file from the last
transform filter to the soundcard to be heard by you. This filter can also write data to a file.
The rendering filter plays the raw media samples . This is where the streams from the
transform filters get ready for primetime, so to speak.
The latest filter to be introduced as a DirectShow Video Renderer is EVR, which is compatible
with DXVA 2. Personally I find EVR to be not the best video renderer to use. I prefer to
use MadVR which significantly improves video quality.
Image Enhancements
MadVR recently added a new section under "processing", the new section is called "image
enhancements". The settings here do just what they say, they enhance the image. By default
"sharpen edges" and "enhance detail" are checked, so are "Activate anti-bloating filter" and
"Activate anti-ringing filter". You can optionally enable the following image enhancements
Crispen Edges - If you prefer crispy images insted of sharp images, enable this setting. If you
want crisp and sharp images, enable both settings!
Thin Edges - If you prefer thinner edges, enable this option for madvr.
LumaSharpen - If you enable this, the higher the strength, the sharper the image. Many PC
games utilize this technology.
AdaptiveSharpen - This will sharpen up blurry edges if enabled, the higher the strength, the
less blurry the image is. For more info, visit the AdaptiveSharpen GiHub page
The image below shows the default madvr settings for this section