I have spent a lot of time experimenting with mad-vr and lav trying to find the optimal settings for my GTX 1050Ti which outputs to a 1080p projector. Settings for higher resolution displays will be very different, but as 4k projectors are currently so expensive, for a truly “home cinema” experience 1080p is the limit for most people.
The first thing to do in madvr is to set up profiles for different resolution videos — 1080p videos will require far less work than much lower or higher resolutions, eg. 360p (needs a lot of work to upscale well) or 4320p (takes a lot of decoding). I also have 2 different low-resolution profiles, one of which gets filtered by file extension so I can use different settings for particularly low quality old divx videos.
Next, spend some time reading an up-to-date article about all the settings. Many guides get out of date as the available settings change so make sure the information is up-to-date.
Some useful information on which decoding mode to use in LAV is available. I recommend DXVA2 Native (not copyback)
Fundamentally, madvr is processing lots of frames per second. So it can’t spend very long on each frame to maintain smooth playback. Render times over 40ms will almost certainly result in dropped frames. The frame rate of the content will also matter: 60fps is much harder work than 24fps. You may want to have different profiles for different frame-rate content.
Frame rate | Maximum render time |
---|---|
60fps | 16ms |
50fps / 48fps | 20ms |
30fps | 33ms |
25fps / 24fps | 40ms |
In terms of sizes, I group them as there are a lot of different potential sizes. Very little content is in 4:3 ratio, so in most cases the content will be either 16:9 or will be letterboxed
SD content is usually 360p, 480p or 576p. As 360p is so rare I focus on 480p content for SD as settings suitable for 480p60 will cope with 576p as well. I then have categories for 720p, 1080p, 2160p and 4320p.
However, I recommend using the width of the content, rather than the height in processing rules. The widest format you are likely to encounter is UltraPanavision70 which is 2.76:1. Using this aspect ratio would see 720p content have an actual resolution of 1280×464. Many videos in these wider formats have had the letterboxing cut off, and the problem of defining sizes begins…
There are formats below 360p but you are very unlikely to have any watchable videos in those formats.
Format | typical height | typical width |
---|---|---|
360p | 360 | 640 |
480p | 480 | 640–854 |
576p | 576 | 704–720 |
720p | 534–720 | 960‑1280 |
1080p Full HD | 800‑1080 | 1440–1920 |
4k 2160p UHD | 1600–2160 | 2880–4096 |
8k 4320p SUHD | 3200–4320 | 5760–8192 |
So, to be comprehensive we need rules for both width and height of the video. Any video with a height greater than 2160 or a width greater than 4096 will have to be regarded as greater than 4k, so we’ll treat it as 8k, and so on
Format | minimum height+1 | minimum width+1 |
---|---|---|
4320p | 2160 | 4096 |
2160p | 1080 | 2048 |
1080p | 720 | 1280 |
720p | 576 | 720 |
SD | 0 | 0 |
So, the following set of rules would do the job to group by both resolution and to split into 4 framerate groups (59–60fps; 47–50fps; 29–30fps; 23–25fps)
You may well wish to use a smaller number of groupings as it is likely you will get a lot of overlap in settings with some of these settings. I find that I only need to split by framerate for the lower resolutions.
if (deintFps > 50) and ((srcWidth 4096) or (srcHeight 2160)) "4320p60" else if (deintFps >= 47) and ((srcWidth 4096) or (srcHeight 2160)) "4320p50" else if (deintFps >= 29) and ((srcWidth 4096) or (srcHeight 2160)) "4320p30" else if (deintFps 29) and ((srcWidth 4096) or (srcHeight 2160)) "4320p25"
I will continue to tinker and optimise my own settings, and whenever I have found improvements I will update them below.
My settings are as follows
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”