MadVR Chroma Upscaling 1080p Image Quality

From wiki.mikejung.biz
Jump to: navigation, search

Chroma Upscaling 1080p Render Time Performance

Madvr Chroma Upscaling Render Time Results.png

Below are some screenshots I took using MPC-HC's built in image capture. I tried to get the exact same shot for each setting change, but there will be some slight changes in the images. You will notice that there is a large difference between the first image and the second. That is because the first image is the mpc-hc default render, EVR. This is the worst case scenario, as you can see just installing and choosing MadVR dramatically improves image quality. For these tests I only modified madVR's Chroma Upscaling settings just to see if I could notice a major difference in image quality.

There is no real benefit to using NNEDI3 here since I can barely notice a difference in quality, yet NNEDI3 is about 5 times more expensive than just sticking with the madvr default, bicubic. Recently I've started using Lanczos 3 Tap with anti ringing filter for chroma upscaling since it provides relatively sharp video and isn't too resource intensive.

madVR Chroma Upscaling Image Quality Comparison 1080p

MPC-HC Default Settings EVR

Played on MPC-HC using default settings right after a fresh install. If you just installed MPC-HC and watched a 1080p video, you would get this type of quality. MadVR was not installed, or enabled during this screenshot. EVR is one of the more basic video renderers, even though it uses DXVA2, the quality isn't very good. EVR does not support Chroma Upscaling at all.

  • Output: EVR (default)
  • Video Decoder: DXVA Native (default)
  • Chroma Upscaling: NA
  • You can click on the images to view them at their full resolution

1080p no madvr DXVA2 EVR.jpg

madVR Default: Bicubic DXVA2 Chroma Upscaling

Played on MPC-HC using default settings right after a fresh install. I installed madvr and selected it for output in the mpc-hc options. I left the Video Decoder at the default, so I am using DXVA2 instead of CUVID in this screenshot. I left madvr at it's default settings so Chroma Upscaling is set to Bicubic 75. Personally, I noticed the video looked a lot sharper when I used CUVID as the decoder instead of DXVA2. Probably because CUVID enables, or at least takes advantage of Nvidia specific awesomesauce that makes everything look better.

The Average Render Time per frame was like 8 ms which was relatively low for a render time. Quality wasn't as good as the more demanding algorithms, but if you compare Bicubic to EVR there's no question that BiCubic significantly improves video quality over the default EVR renderer set in MPC-HC use CUVID as the Video Decoder if you have a Nvidia GPU. If you don't have a Nvidia GPU or have to use DXVA2 for whatever reason, don't worry you can still use madvr, but you should always check this option to see if you can't make a more appropriate choice than the defaults.

  • Output: madvr
  • Video Decoder: DXVA Native (default)
  • Chroma Upscaling: Bicubic 75 (default)

1080p madvr DXVA2 Bicubic Chroma Upscaling.jpg

madVR Default: Bicubic CUVID Chroma Upscaling

Played on MPC-HC using default settings right after a fresh install. I installed madvr and selected it for output in the mpc-hc options. I changed the Video Decoder from DXVA2 to CUVID and left madvr at defaults. Chroma Upscaling is set to Bicubic 75. Personally, I noticed the video looked a lot sharper when I used CUVID as the decoder instead of DXVA2.

The Average Render Time per frame was about 1.3 ms with Bicubic 75 using CUVID as the video decoder, which is pretty damn fast. The video needs to play at around 1 frame every 41 ms so I got about 40 ms of time to spare before the video needs another frame to display, otherwise things start to get choppy. This means that I can enable more "advanced" types of scaling algorithms like NNEDI3 which make the video look better, but cost time to render.

  • If you have lots of GPU power (like a GTX 960, GTX 970, GTX980), and want good image / video quality, select Lanczos 3 Tap AR, Jinc 3 Tap AR, or NNEDI3 16 neurons for Chroma Upscaling. Personally I suggest starting with Lanczos 3 Tap with the anti-ringing filter enabled, then move on to Image Upscaling, and see where your render times are. If you are under 20ms per frame after configuring everything else then I would raise this to Jinc 3 Tap with anti-ringing filter.
  • If you are running on limited resources (like consoles) and are trying to balance quality and performance you should use Bicubic 75 with anti-ringing filter for Chroma Upscaling. Bicubic offers better than EVR quality and doesn't cost much in terms of GPU usage.
  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: Bicubic 75 (default)

1080p madvr CUVID Bicubic Chroma Upscaling.jpg

madvr Lanczos 3 taps with anti-ringing filter Chroma Upscaling

Lanczos 3 Taps with anti-ringing filter enabled looks really good. The render time per frame was about 3ms, very similar to Jinc in terms of quality and performance.

  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: Lanczos 3 Taps with anti-ringing filter enabled

MadVR Chroma Upscaling Lanczos 3tap with anti-ringing filter 1080p.jpg

madvr Jinc 3 taps with anti-ringing filter Chroma Upscaling

Played on MPC-HC using default settings right after a fresh install. I installed madvr and selected it for output in the mpc-hc options. I changed the Video Decoder from DXVA2 to CUVID and left madvr at defaults. Chroma Upscaling is set to Jinc 3 Taps with AR (anti-ringing filter) selected.

There does seem to be a slight difference between the Bicubic 75 and Jinc 3 tap image quality, but I haven't made my mind up on what looks better. Jinc 3 taps seemed to be slightly more "crispy" than Bicubic 75. Jinc Chroma Upscaling was about 2 times more costly than Bicubic in terms of Render Time Per Frame. Jinc 3 taps with anti-ringing gave an average render time of 2.5 ms per frame, which is two times slower (and twice as costly) as Bicubic 75, which cost about 1.3ms per frame.

Anyway, the Average Render Time per frame was still way faster than needed @ 2.5 ms with Jinc 3. The video needs to play at around 1 frame every 41 ms to be considered "smooth" and to not drop frames. So this means that I have about 39 ms of time to spare before the video needs another frame to display, otherwise things start to get choppy.

Regardless of what I selected for Chroma Upscaling, the image looked more or less the same after you crank up Image Doubling / Resolution Doubling to 64+ Neurons. I'm going to recommend going with Bicubic 75 here if you are not sure where to start, or don't want to spend too much time tuning madVR's settings. This will save some GPU resources for other areas of video improvement, like Error Diffusion Dithering Option 1.

  • If you have lots of GPU power to spare and want good image quality, select Jinc 3 taps or NNEDI3 with 16 Neurons for Chroma Upscaling.
  • If you are running on limited resources (like consoles) and are trying to balance quality and performance you should use Bicubic 75 for Chroma Upscaling.
  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: Jinc 3 Taps with AR

1080p madvr CUVID Jinc 3 AR Chroma Upscale.jpg

madvr NNEDI3 16 Neuron Chroma Upscaling

Played on MPC-HC using default settings right after a fresh install. I installed madvr and selected it for output in the mpc-hc options. I changed the Video Decoder from DXVA2 to CUVID. Chroma Upscaling is set to NNEDI3 with 16 Neurons. NNEDI3 is somewhat of a new thing, if you haven't updated madvr in a while and are wondering wtf I am talking about, please go here: http://forum.doom9.org/showthread.php?t=146228

NNEDI3 Chroma Upscaling doesn't look bad at all! However, personally I don't think it looks significantly better than BiCubic 75. Average render time per frame was almost 14 ms, which is like 10 times more costly than BiCubic 75. Unless you have GPU power to waste I suggest sticking with BiCubic or Lanczos for Chroma Upscaling and enable Resolution Doubling with NNEDI3 for the Image Doubling configuration section.

If you do enable NNEDI3 for Chroma Upscalng I highly, highly suggest you leave it at 16 Neurons, maybe 32 Neurons at most. Using NNEDI3 128 neurons, or 256 neurons will bring almost any GPU to it's knees.

  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: NNEDI3 16 Neurons

1080p madvr CUVID NNEDI3 16 Chroma Upscaling.jpg

madvr NNEDI3 32 Neuron Chroma Upscaling

Using 32 NNEDI3 neurons for Chroma Upscaling caused render times per frame to increase slightly compared to 16 neurons. The video quality looks very similar as well.

  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: NNEDI3 32 Neurons

MadVR Chroma Upscaling NNEDI3 32 neurons 1080p.jpg


madvr NNEDI3 64 Neuron Chroma Upscaling

With madVR Chroma Upscaling set to use 64 NNEDI3 neurons, the per frame render time with my GTX 970 was about 20ms while playing 1080p video. Most video frames need to be displayed in under 41ms or else they get dropped and the video gets choppy, so using 64 neurons here takes up 50% of the render time per frame. Because of the GPU usage that 64 NNEDI3 Chroma Upscaling requires, I do not raising it above 32 neurons.

  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: NNEDI3 64 Neurons

MadVR Chroma Upscaling NNEDI3 64 neurons 1080p.jpg

madvr NNEDI3 256 Neuron Chroma Upscaling

With Chroma Upscaling set to use 256 NNEDI3 neurons the per frame render time with my GTX 970 was about 45ms. I don't suggest using 256 neurons for Chroma Upscaling at this point. The highest I would suggest going would be 32 neurons or 64 neurons, but honestly using BiCubic or Lanczos for Chroma Upscaling is probably the best option, that way you can save GPU resources for things like Image Doubling or Image Upscaling.

  • Output: madvr
  • Video Decoder: CUVID
  • Chroma Upscaling: NNEDI3 256 Neurons

MadVR Chroma Upscaling NNEDI3 256 neurons 1080p.jpg

Other MadVR Pages

MadVR Main Page 720p Chroma Upscaling Screens PotPlayer DSR 720p Image Doubling madVR Dithering Chroma Upscaling Benchmarks Nvidia Noise Reduction
PotPlayer Main Page 1080p Chroma Upscaling Screens PotPlayer Decoder Comparison 720p Image Upscaling Processing Options NNEDI3 Main Page Nvidia Edge Enhancement

.