You are on page 1of 27

MadVR

 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

MadVR Settings Mid Range PC DXVA2 Configuration

Chroma Upscaling BiCubic 75 anti-ringing checked

Image Doubling Always use NNEDI3 to Double Luma Resolution 64 neurons

Image Upscaling DXVA2

Image Downscaling DXVA2

Smooth Motion Enable Smooth Motion only if judder without

dithering random

Video Decoders CUVID and DXVA2, enabled hardware deinterlacing


Lanczos Focused
The configuration below is the original configuration that I added to this section. Since then I've
tested out using DXVA2 whenever possible and cranking up Image Doubling to high amounts of
Neurons. I find that both configurations offer good video quality, but by using DXVA2 you can
reduce the performance cost by a lot, so if you are using a laptop or weaker PC, use the settings
above first.

MadVR Settings Mid Range PC using MadVR Algorithms only

Chroma Upscaling BiCubic 75 anti-ringing checked

Image Doubling Always use NNEDI3 to Double Luma Resolution 32 neurons

Image Upscaling Lanczos 3 Taps with anti-ringing checked

Image Downscaling Lanczos 3 Taps with anti-ringing filter checked

Smooth Motion Enable Smooth Motion only if judder without

dithering random

Video Decoders CUVID and DXVA2, enabled hardware deinterlacing

MadVR Settings for High End PCs with GTX 970/980


The latest version of MadVR includes a lot of new and powerful options. Specifically Image
Doubling and NNEDI3. These are very powerful enhancements for overall image quality, however
they make the average PC die in a fire if you try and crank up the settings. The images below
show my current configuration, which I find to be a pretty good balance between quality and
performance. The idea is to mess around with the various settings until you are able to achieve
render times of under 40ms, preferably 30ms for most video types. I took some screenshots
of 720p and 1080p videos using different options for Chroma Upscaling to get an idea of what
options looked the best.
My current PC is not an average PC. If you are searching for MadVR settings, you probably don't
have an average PC either. So without rambling on too much, here are my specs

 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.

MadVR Option High End PC DXVA2 Alternative Configuration

chroma upscaling NNEDI3 128 Neurons

Image Doubling Always use NNEDI3 to Double Luma and Chroma Resolution using 128 neurons

Image Upscaling DXVA2

Image Downscaling DXVA2

smooth motion Enable Smooth Motion only if judder without

dithering Error Diffusion Option 1

Video Codec CUVID with hardware deinterlacing


Lanczos Focused
This is the original configuration, still works just fine, but you may have more success using the
settings listed directly above this.

MadVR Option High End PC Starting Points

chroma upscaling Lanczos 3 Taps with anti-ringing filter

Image Doubling Always use NNEDI3 to Double Luma Resolution using 64 neurons

Image Upscaling Lanczos 3 Taps with anti-ringing filter

Image Downscaling Lanczos 3 Taps with anti-ringing filter

smooth motion Enable Smooth Motion only if judder without

dithering Error Diffusion Option 2

Video Codec CUVID with hardware deinterlacing

How to use Nvidia DSR to resize video to 2715x1527 and higher


You can utilize DSR factors with PotPlayer (probably MPC-HC as well but PotPlayer is WAY
easier to configure) and force it to resize videos to 2715x1527 before madVR renders the video.
This does seem to improve video quality by a noticeable amount. For details on how to do this
and some screenshot comparisons check out the page below.

 http://wiki.mikejung.biz/PotPlayer_DSR

MadVR Scaling Algorithms


MadVR Chroma Upscaling

 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.

MadVR Image Doubling


Chroma Resolution Doubling doesn't seem to improve quality all that much, at least compared
to Luma Resolution Doubling on it's own. Also, only select Quadruple Luma Resolution if
you can already play 1080p AND 720p videos without getting dropped frames. If you try to
play 480p videos without testing these settings you might be in for a surprise. The lower the video
resolution, the more the GPU must work to upscale and double the image.
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 Resolution
doubling as it is pretty expensive in terms of render time (often times well over 10ms - 30ms
additional render time).
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 with my GTX 770s seemed to actually improve
performance while enabling higher resolution doubling with NNEDI3. 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, any GPU
that's comparable to a GTX 770, or a mid range, latest generation Nvidia GTX 960 should be able
to at least double the Luma Resolution using 64 neurons. You might be able to pull off 128
neurons, but I found that some 720p videos end up just over the 41ms per frame mark and I have
to dial things down again.
MadVR Image Upscaling
MadVR Image Upscaling can be very resource intensive if you choose some of the more
demanding options like Spline or Jinc. You can check out some Image Upscaling 720p
screenshots to see for yourself how the image quality changes between the options.
There can be a massive performance hit if you have already set the Chroma Upscaling option to
use NNEDI3, or Jinc. Also, if you configure really high Image Doubling settings (like doubling and
quadrupling @ 128 Neurons), you will really want to try and useDXVA2 for Image Upscaling.
However, using DXVA2 for image upscaling can reduce video quality in some ways, like blocky
looking images, or noisy video. This is somewhat subjective, but I like to use Lanczos for image
upscaling because it's not as choppy looking as DXVA2, at least to me. If you are strapped for
performance and are looking for ways to speed up playback, using DXVA2 is a good option, or
you could use something like Bicubic which is a little better quality than DXVA2.
I guess it makes sense thatDXVA2 seems to handle things very efficiently by using the GPU
Video Logic, GPUs are good at doing lots of things at once, but for whatever reason it seems
less smooth than Lanczos or Jinc and the video quality was not quite as good.
I'm not entirely sure why DXVA2 is faster than using Bilinear or Nearest Neighbor, which are also
taking advantage of the GPU. I do know that as soon as I enabled either of the GPU Texture
Units, render times went up well above a reasonable level, at least 2 or 3 times higher than with
DXVA2.
GPU Texture Units

 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.

 High End GPU: -- Lanczos 4 Tap AR


 Mid Range GPU: -- Bicubic 75 AR
 Fastest Option: -- DXVA2
MadVR Image Downscaling
You can use catmull-rom for downscaling, but if you can I suggest using BiCubic
75 or DXVA2 if you really need the performance.

MadVR Artifact Removal


This section removes banding artifacts from the video. I noticed a small performance loss
when default debanding strength is set to high, but that only seemed to result in maybe an
additional 2 or 3ms for render time. I also set strength during fade in/out to high as well. I didn't
notice a massive difference with image quality between high and low, so if you run into issues, set
this to mid or low, otherwise leave both at high. Generally speaking you will want to leave this
enabled and set to high unless you really need to lose a few ms to get render time to a point
where it's not dropping frames.
MadVR Smooth Motion
MadVR's new smooth motion option is pretty cool. It can help to improve overall video quality by
providing smoother video playback. Enabling this option will add about 3ms - 4ms to render time.
This is not very expensive on it's own but it is something to consider before you enable this. If you
choose to enable smooth motion frame rate conversion only if there would be motion judder
without it, or always you will see a performance hit either way. So if you are going to enable this
setting you might as well select "always" unless you notice ghosting effects or get annoyed.
Personally I always leave this on. If you are using a GTX 970 or better, go ahead and enable this.

MadVR Dithering and Error Diffusion


 [Full Error Diffusion and Dithering Wiki]
MadVR has added a few new dithering options. Error Diffusion Option 1 and Error Diffusion
Option 2. Both of these new options are very demanding, and require a DX11 GPU to use. If you
stick with the ordered or random options you will save yourself about 4ms of render time. If you
have a GTX 970 or better then I highly recommend enabling Error Diffusion Option 1. I would
expect the upcoming GTX 960 to perform on the same level as the GTX 970 because of the
Maxwell architecture.
I tested both of the options under the main dither choices and there is very little performance gain
/ loss if you enable or disable the options. From what I could tell there was maybe a 1ms gain /
loss for render time if you check the options so only enable them if you feel like the video looks
better. I have use colored noise and change dither for every frame enabled.
MadVR Processing Settings

madVR Chroma Upscaling Performance Results


Chroma Upscaling involves upscaling the "color" part of the video, Luma is the black and white
parts of the video, at least that's what the internet says. These results measure the performance
impact of Chroma Upscaling. In general I've found that Chroma Upscaling can be pretty taxing on
your GPU and in return you don't really get much in video quality improvement. At least I
personally didn't much much gain compared to changing other options. I took a bunch of screen
shots using a 720p and 1080p video to see if I could notice any changes in quality. These have
been compressed so I recommend you also test for yourself, there is no one perfect configuration
for MadVR.
Chroma Upscaling is a MadVR setting which can be used with MPC-HC or with a newish video
player called PotPlayer. I've come to like PotPlayer, and am almost ready to switch over from
using MadVR with MPC-HC to exclusively using PotPlayer. Both media players share some of
the same libraries and UI elements like the Fullscreen UI and MadVR configuration. PotPlayer
seems to be slightly faster than MPC-HC and I found that PotPlayer's configuration settings
allowed for more customization than MPC-HC did. There is no right media player to use, but if
you have not already tried out PotPlayer, I suggest installing it and using this PotPlayer Guide to
configure it for HD video.
I took screenshots of 720p and 1080p video, each time I used a different MadVR Chroma
Upscaling Algorithm to see what one provided the best quality. This is pretty subjective, so you
can judge for yourselves.

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.

madVR NNEDI3 Chroma and Luma Resolution Doubling


Performance
If you plan on using NNEDI3 to double Chroma or Luma resolution you will want to keep a few
things in mind before you start cranking up the settings:

 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.

720p NNEDI3 Resolution Doubling Luma Only


Using NNEDI3 Resolution Doubling and Quadrupling with a 720p video is a different story than
with 1080p. Because the video resolution is smaller, MadVR actually needs to double the image
unlike with 1080p. As you can see, even just using 32 Neurons will increase the render time
by 10 times. I found that using NNEDI3 to quadruple the Luma resolution did not help as much in
terms of improving video quality, I guess maybe there is only so much you can put back into a
once compressed file. If you are going to watch a lot of 720p video you will want to Use NNEDI3
to double Luma resolution using 64 neurons. You can use NNEDI3 for Luma and Chroma
resolution doubling with mpc-hc or with PotPlayer, but until you get familiar with either player's
settings and your computer's performance you should only enable Luma resolution doubling, and
leave the Chroma resolution doubling alone because it's pretty resource intensive and Chroma
isn't as noticeable as Luma in terms of video quality, at least that's what the general consensus
seems to be on the internet.
The image below is the GPU load while playing the 720p video. As you can see the GPU load
increases as you increase the amount of neurons. Again, this is with a GTX 970, so if you have a
weaker GPU then stick to under 64 Neurons.

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.

MadVR Configuration for Nvidia GTX 770 SLI


I used to have 2 x GTX 770s in SLI mode, I found that I got better results by dropping my 770s
out of SLI and using a single card to play videos. Maybe that has been fixed, but that was the
case for me in midish 2014. If you are having stuttering or crazy flashing screens and are
wondering wtf to do then I suggest doing as I just described. SLI was meant for gaming, not
watching movies, so I wouldn't put the blame on any one party.
I was able to use NNEDI3 to always double the Luma resolution using 32 Neurons. Before my
GTX 970 configuration I had to use DXVA2 for image upscaling, since any other madVR settings
resulted in 50ms + render times with MPC-HC, which resulted in a lot of dropped video frames.
Video quality looks good and these settings also work fine for 720p movies and below. You could
argue that using NNEDI3 for Chroma Upscaling is not worth the extra GPU cost, and that Bicubic
or Lanczos are better options, and I won't disagree. Everyone has their own preference, I'm just
offering up some madvr starting points.
Option Value

chroma upscaling NNEDI3 32 Neurons

image doubling Always double Luma resolution 64 neurons

image upscaling Lanczos 3 Taps with anti-ringing filter

image downscaling Lanczos 3 Taps with anti-ringing filter

smooth motion enable smooth motion only if...

dithering Error Diffusion Option 2

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.

MadVR Image Upscaling


This section seemed to make or break the entire configuration up until now. There can be a
massive performance hit if you have already set Chroma Upscaling to use NNEDI3, or if you set
really high Image Doubling settings, so if you want to really focus on image doubling then you will
need to use DXVA2 here, but that can reduce video quality in some ways. I guess it makes
sense, DXVA2 seems to handle things very efficiently by using the GPU Video Logic, but for
whatever reason it seems less smooth than Lanczos or Jinc.
I'm not entirely sure why this is faster than using Bilinear or Nearest Neighbor, but I do know
that as soon as I enabled either of the GPU Texture Units, render times went up well above a
reasonable level, at least 2 or 3 times higher than with DXVA2.
GPU Texture Units

 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.

 High End GPU: -- Lanczos 4 Tap AR


 Mid Range GPU: -- Bicubic 75 AR
 Fastest Option: -- DXVA2

MadVR Image Downscaling


For most people, you won't ever really have to worry about this setting since most monitors are
1080p, and most content is 1080p or lower, you are not going to downscale that often, even when
you do quality won't be a huge factor. I used catmull-rom here, but it really doesn't matter what
you use here.

MadVR Artifact Removal


This section removes banding artifacts from the video. I noticed a small performance loss
when default debanding strength is set to high, but that only seemed to result in maybe an
additional 2 or 3ms for render time. I also set strength during fade in/out to high as well. I didn't
notice a massive difference with image quality between high and low, so if you run into issues, set
this to mid or low, otherwise leave both at high. Generally speaking you will want to leave this
enabled and set to high unless you really need to lose a few ms to get render time to a point
where it's not dropping frames.

MadVR Smooth Motion


MadVR's new smooth motion option is pretty cool. It can help to improve overall video quality by
providing smoother video playback. Enabling this option will add about 3ms - 4ms to render time.
This is not very expensive on it's own but it is something to consider before you enable this. If you
choose to enable smooth motion frame rate conversion only if there would be motion judder
without it, or always you will see a performance hit either way. So if you are going to enable this
setting you might as well select "always" unless you notice ghosting effects or get annoyed.
Personally I always leave this on. If you are using a GTX 970 or better, go ahead and enable this.

MadVR Dithering and Error Diffusion


Full Error Diffusion and Dithering Wiki
MadVR has added a few new dithering options. Error Diffusion Option 1 and Error Diffusion
Option 2. Both of these new options are very demanding, and require a DX11 GPU to use. If you
stick with the ordered or random options you will save yourself about 4ms of render time. If you
have a GTX 970 or better then I highly recommend enabling Error Diffusion Option 1
I tested both of the options under the main dither choices and there is very little performance gain
/ loss if you enable or disable the options. From what I could tell there was maybe a 1ms gain /
loss for render time if you check the options so only enable them if you feel like the video looks
better. I have use colored noise and change dither for every frame enabled.
The GTX 970 can handle Error Diffusion Option 2 without any issues. Even combined with
Smooth Motion the render times are under 15ms for 1080p content.

 http://wiki.mikejung.biz/File:Gtx_970_smooth_motion.jpg

MadVR Processing Settings

Video Decoder Benchmarks


I decided to run some basic tests and compare the various video decoders you can use with mpc-
hc. These tests include DXVA2 Native, DXVA2 Copy Back, CUVID, and software. I tested out
some 1080p videos, as well as 720p to get an idea of what Video Decoder was faster, and what
one provided the best visual quality.
The results were pretty cut and dry, at least in terms of performance. Using CUDA or DXVA
Nativeis the best option in terms of performance and lower resource usage. Not only did CUDA
have the fastest render times, but it also had the lowest usage in terms of GPU load. It did use
slightly more RAM than the other decoders, but only by about 30 MB.
I've recently added a new page that provides screenshot comparisons between DXVA2 and
CUVID
DXVA2 and CUVID
Tested using MPC-HC 1.7.6. Using MadVR with [these settings] I am using an Intel i7-4790k
with a Nvidia GTX 970 and lots of other awesome components. These are the results when
playing a 720p movie clip for a few minutes. I used GPU-Z to record the usage statistics.

GPU Video Engine Load


These results are specifically for the Video Engine Load not the overall GPU usage, which is
listed below. These results are pretty small, I would have thought the video engine would be used
more than it is, but then again I was only testing a 720p video. As you can see, DXVA2 Copy
Back had the highest usage here, with DXVA2 Native and CUDA in second place, and of course
in last place is IDLE which is my desktop, and none, which means I did not select any hardware
decoder to be used in media player classic.

GPU Memory Usage


DXVA2 Native and Cuda both used slightly more RAM than the other decoders, which makes
sense. Native and Cuda both keep the video in the GPU memory instead of copying it back to the
CPU. As you can see playing a video does indeed use up RAM, but if you don't play a video, then
you don't use the RAM. Not much else to say here.
GPU Load
These results confused me a bit, typically when I play a PC game I want my GPU usage to be as
high as possible so I get the best possible performance. The thing is, playing a video is a little
different than playing a game, or at least I assume that is the case, I'm really just guessing to be
honest! Anyway, GPU usage was highest when using Copy Back and not using a decoder at all,
which is really odd. It could be due to the fact that the CPU is doing the decoding, then sending it
over to the GPU anyway since it's got to display it on your monitor. Basically I don't see a reason
to select none.
720p Average Render Time
Cuda and DXVA2 had the best render times here. Lower is better and the results are in
milliseconds.

MadVR Video Decoders


DXVA2
DXVA2 was designed to offload some of the decoding process from the CPU to a GPU. If you
have a decent GPU chances are you will want to put it to work as much as possible.
You can use this setting for image upscaling if you have a GPU that is compatible with DXVA2.
This is by far the fastest option for image upscaling, and seems to work well when you combine it
with NNEDI3 image doubling. I've found that you must enable this if you plan on using image
doubling, smooth motion and Error Diffusion Dithering options.
CUVID
CUVID is a video decoder that is developed by Nvidia. The CUVID decoder utilizes
the CUDA Video Decoding API (CUVID) to decode video extremely fast. If you are using
a Nvidia GPU that supports CUVID and are using a media player like MPC-HC orPotPlayer then
I strongly suggest utilizing CUVID instead of DXVA2

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.

MadVR 0.90 Updates


Artifact Removal
There's a few new settings in madvr 0.90.20 that improve artifact removal. The new setting is
called "reduce ringing artifacts", if enabled this setting will reduce ringing during video playback.
You can also optionally enable "reduce dark halos around bright edges,too". If you are playing
anime this may not be a setting that you want to enable. If you are using a current Nvidia GPU
you should enable these settings.

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

Image Doubling Settings


There's some new settings under "Image Doubling" that allow you to utilize "super-xbr", with
sharpness mode, and anti-bloating mode. You can choose to "Double Luma Resolution" or
"Double Chroma Resolution" with super-xbr or NNEDI3.
In addition to doubling the image you can also choose to "Quadruple Luma Resolution" or
"Quadruple Chroma Resolution", again, with super-xbr or NNEDI3. Super-XBR seems to be the
best bang for your buck in terms of video quality and performance, but if you have a newer GTX
970 or GTX 1070 you should be able to utilize NNEDI3.
Finally, if you have enough GPU to spare you can choose to enable "Octuple Luma/Chroma
Resolution".
There is one additional setting that was not in madvr previously, this is called "always - 2x
supersampling". If enabled this will ALWAYS supersample the video by 2x.
Image Upscaling Refinement Settings
This is a newer section to madvr. Similar to the "Image Enhancements" section under
"processing", this section lets you configure the same options, this time for video upscaling. I
believe you should match this up with what you set under "Image Enhancement" but you may
want to do some playing around to determine the best settings for your hardware. The image
below shows the madvr default settings for upscaling refinement.

You might also like