Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Hardware & Software > Software players

Reply
 
Thread Tools Search this Thread Display Modes
Old 15th February 2015, 05:00   #1  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
madVR Options Explained

Current as of madVR v0.92.17

Please ask questions or offer corrections and suggestions. Thanks.

devices

device name: [EDID Product Name] A name for the display (customizable).
device type: [unknown] Sets the icon for the display. When set to projector the 'screen config' section is available.

identification
EDID information, some displays are detected with different identifications depending on how they are attached or detected. You can drag and drop these identification entries to combine displays.

properties

the display expects the following RGB output levels: [PC levels (0-255)] This is what your display expects to receive. 'PC levels (0-255)' means “use a 16-235 YCbCr to 0-255 RGB conversion matrix” and 'TV levels (16-235)' means “use a 0-255 YCbCr to 0-255 RGB conversion matrix”. If the source is flagged full range either a 0-255 YCbCr to 0-255 RGB or a 0-255 YCbCr to 16-235 RGB conversion matrix is used instead.
the native display bitdepth is: [8 bit] This is the bit depth madVR will dither to. madVR offers very high quality dithering so if you are using a low bit depth display (e.g. a 6-bit TN) you may get better quality when setting this to 6-bit. Due to limited support for high bit depths, madVR dithers to 8-bit even when this is set to 9 or 10-bit except when using D3D11 'full screen exclusive' (or D3D11 fullscreen windowed in Windows 10 with AMD or Nvidia GPUs). It can be interesting to turn this down to a very low value (2-4) while testing the dithering options but make sure to have the 'trade quality for performance' option 'don’t use linear light for dithering' unchecked even if you leave it checked for normal use.
3D format: [auto, disabled] Set the 3D format to: auto, side-by-side, top-and-bottom, row alternative, or column alternative. There is also an option to swap the left and right eyes.

calibration [disable calibration controls for this display]

disable calibration controls for this display: The display is assumed to have a BT.709 gamut with a pure power gamma of 2.2 (probably). If outputting HDR madVR assumes the display is expecting BT.2020 with the PQ transfer function.
this display is already calibrated: [BT.709, pure power curve, 2.20] This sets the current display characteristics. The gamut option affects the conversions used by madVR when playing video with different gamuts. The gamma options only have an effect when using 'tone map HDR using pixel shaders' for HDR content or when using the 'enable gamma processing' option in 'color & gamma'.
calibrate this display by using yCMS: yCMS offers a simple gamut and gamma calibration method. It requires a few measurements of the display that can be done with HCFR. If gamut or grayscale measurements are not supplied only the other correction is performed. Usually bad results (mostly banding and odd effects in shadows) are obtained if gamma measurements below ~20% IRE are used so only enter values above 15-30% IRE.
calibrate this display by using external 3DLUT files: Use a calibration package such as Argyllcms, Calman, or LightSpace to generate a 256x256x256 3DLUT to perform a full calibration. For Argyllcms see this AVS Forum thread, for Calman, or for LightSpace. If the provided 3DLUT file contains calibration curves (e.g. in the case of ArgyllCMS, the collink "-a" or "-H" options were used), madVR will load the calibration curves into the system-wide GPU hardware gamma ramps, which affects everything displayed, not only madVR. madVR will restore the original gamma ramps (if any) when it is closed.
disable GPU gamma ramps: [Disabled] Clears system-wide GPU gamma ramps (monitor calibration), if any, replacing them with linear (no-op) curves. This affects everything displayed, not only madVR. madVR will restore the original GPU gamma ramps (if any) when it is closed. This option changes its behavior when using the 'rendering -> general settings' option 'enable windowed overlay' to only apply to madVR because madVR is emulating the gamma ramps in that case. This option has no effect if a 3DLUT file that contains calibration curves is loaded (see above).

display modes [None]
Allows setting refresh rate and resolution automatically depending on the source video.
list all display modes madVR may switch to: An example for a modern 4K display: 2160p23, 2160p24, 2160p25, 2160p29, 2160p30, 2160p50, 2160p59, 2160p60
treat 25p movies as 24p (requires Reclock or VideoClock): [Disabled] Uses 24 Hz modes to display 25 fps content, it requires Reclock or VideoClock to slow down the audio to match.
hack Direct3D to make 24.000Hz and 60.000Hz work: [Disabled] A hack to Direct3D that enables true 24 and 60 Hz display modes in Windows 8.1 or 10 which are usually locked to 23.976 Hz and 59.940 Hz. May cause presentation queues to not fill.

custom modes
A second tab in display modes. Allows configuring custom refresh rates and can assist in optimizing them for the purpose of avoiding dropped or repeated frames without frame blending (smooth motion) or resampling the audio (ReClock, VideoClock). Only custom timings can be optimized but simply editing a mode and applying the "EDID / CTA" timing parameters creates a custom mode, and is the recommended way to start optimizing a refresh rate. New timing parameters must be tested before they can be applied. Delete replaces the add button when selecting a custom mode. It uses each of GPU vendor's private APIs to add these modes and does not work with EDID override methods like CRU; supports AMD, Intel, and Nvidia GPUs. With Nvidia these custom modes can only be set to 8-bit.

color & gamma [Disabled]

pure power curve: [Default] use the standard pure power gamma function
BT.709/601 curve: Use the inverse of a meant for camera gamma function. It has a linear section near black so shadows lighten faster as you move away from black. This can be helpful if your display has crushed shadows.
2.20, 2.40, etc.: [2.20] changes the display's gamma, based on the display's settings in 'calibration', to this target gamma. Lower brightens mid range values which can be nice in a brightly lit room. Higher darkens mid range values which might look better in a darker room.

hdr [let madVR decide]

let madVR decide: Sends HDR data to displays capable of HDR, otherwise coverts to SDR using pixel shader math.
passthrough HDR to display: Passes the HDR video to the display as is, along with the metadata if 'send HDR metadata to the display' is enabled.
tone map HDR using pixel shaders: Enables the options below-
-target peak nits: [200] Set the target display's peak white brightness. Above this value is used as the highlights. A lower setting increases the brightness of mid range values.
-tone mapping curve: [BT.2390] The curve used when compressing the range.
-color tweaks for fire & explosions:: [balanced] Keeps the color approximately the same while de-saturating and/or reducing luminance to bring a pixel to a value the display can represent.
-highlight recovery strength: [None] Sharpening the highlights after range compression.
-measure each frame's peak luminance: [Disabled] Allows madVR to only compress highlights as much as necessary on a per frame basis resulting in more detail in highlights.
-output video in HDR format: [Disabled] Add HDR metadata to the output video.
convert or process HDR content by using an external 3DLUT: Requires display calibration hardware and software. Possible with DisplayCal (Argyllcms) or Lightspace.

screen config [Disabled]
This section is hidden unless the device is set as a projector.

define visible screen area by cropping masked borders: Allows scaling to a smaller resolution and adding black pixels to the edges. Useful if the projector is overshooting the edges of the screen. Only active when full screen.
activate lens memory number: Sends a command to a JVC or Sony projector to activate an on-projector lens memory number.
anamorphic lens: Allows output to non-square pixels.

processing

deinterlacing

if in doubt, activate deinterlacing: [Disabled] deinterlace video not flagged as progressive
if in doubt, deactivate deinterlacing: [Enabled] deinterlace video flagged as interlaced
force film mode: [Disabled] force IVTC, reconstructing the original progressive frames from video encoded as interlaced, decimating duplicate frames if necessary. madVR's IVTC is not functional when using DXVA2 or D3D11 native GPU decoding because madVR's IVTC algorithm runs on the CPU and the decoded video data is never copied to system memory.
force video mode: [Disabled]force DXVA deinterlacing, uses the GPU's native deinterlacing. This is the same as automatic and cannot decimate frames.
only look at pixels in the frame center: [Enabled] As described; good for broadcast (with its messy edges) but bad for Anime.

artifact removal

reduce banding artifacts: [Disabled, low/high] Fade detection does not run if both options are set to the same value for a small increase in performance. Five frames are removed from madVR's rendering buffer every time a fade is detected if the trade quality for performance option 'don't rerender frames when fade in/out is detected' is disabled.
reduce ringing artifacts: [Disabled] Attempts to reduce any ringing/halos present in the source caused by downscaling or sharpening before madVR, e.g. during mastering.
reduce compression artifacts: [Disabled] A deblocking and deringing algorithm. high quality is more significant at higher strengths and is much slower. Chroma often has artifacts but they are usually less obvious and it takes a lot of power to process the chroma channels too.
activate only if it comes for free (as part of NGU): [Disabled] Only runs RCA if it can be run as part of NGU image upscaling. Requires NGU Sharp high for medium quality and NGU Sharp very high for high quality.
reduce random noise: [Disabled] A denoising or grain reduction algorithm. Chroma often has less random noise than the luma.

image enhancements [Disabled]
These are applied before scaling. See 'upscaling refinement'

zoom control

disable scaling if image size changes by only: [Enabled, ... 2 lines or less] If the resolution needs scaling by the number of pixels set or less no image scaling is done, black pixels are added to the right and/or bottom edge instead.
move subtitles: [Enabled, ... to bottom of the screen/window] Move subtitles, this is important when removing black bars or subtitles can be displayed outside the visible screen area. Cannot move PGS subtitles if they are encoded as fullscreen images or Advanced Substation Alpha (ASS) subtitles which have a specific location defined.
automatically detect hard coded black bars: [Disabled] This enables the options below. madVR can detect and remove black bars on all sides of the video. Black bars cannot be detected when using DXVA2 or D3D11 Native decoding.
if black bars change pick one zoom factor: [Disabled, ... which doesn't lose any image content] Using this setting madVR will avoid changing the zoom or crop. e.g. It will not zoom or crop a 16:9 section in a normally 4:3 film when set to "which doesn't lose any image content" and will zoom or crop all of the 4:3 footage the amount needed to remove the black bars from any 16:9 sections when set to "which doesn't show any black bars".
if black bars change quickly back and forth: [Disabled, ... once every 2 sec] If not using the above option this option allows a limit on how often madVR can change the zoom or crop while playing to remove black bars as they are detected. Without either of these options madVR will always change the crop or zoom to only remove the black bars.
notify media player about cropped black bars: [Disabled, ... no more than once every 2 sec] How often to notify the media player of changes in the black bars. Some media players use this information to resize the window.
always shift the image: [Disabled, ... to the top of the screen] This allows setting whether the top or bottom of the video is cropped when zooming.
keep bars visible if they contain subtitles: [Disabled, ... forever] Disables zooming or cropping any black bar in which subtitles are detected. Either forever or for a set time.
cleanup image borders by cropping: [Disabled, ... 1 line from all black bar borders] Crop extra non-black pixels away from black bars or all edges. When set to crop all edges they are cropped even when no black bars are detected.
if there are big black bars: [Disabled, ... reduce bar size by 25%] Allows setting separate handling of large black bars.
zoom small black bars away: [Disabled] This zooms into the video to remove the black bars, cropping a small amount of video off of one edge to maintain the original aspect ratio and resizing to the original display resolution. e.g. The bottom is cropped when cropping small black bars on the left and right and the video scaled to the original resolution.
crop black bars: [Disabled] This crops black bars, changing the display aspect ratio and resolution. Cropping black bars increases performance; the pixels no longer need to be processed. Profile rules referencing resolution will use the after crop resolution.

Last edited by Asmodian; 29th February 2024 at 19:26.
Asmodian is offline   Reply With Quote
Old 16th February 2015, 05:39   #2  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
scaling algorithms

Nearest Neighbor: {super fast} A low quality method, the value of the closest pixel is used. This looks very bad when not doing integer scaling (1x, 2x, 3x, etc.). Configure a custom keyboard shortcut to enable it.
Bilinear: {super fast} A low quality method. It is as fast as Nearest Neighbor because GPUs have hardware to do bilinear filtering in a single operation.
DXVA2: {very fast} Uses the GPU drivers to access hardware scaling. Transfer to and from hardware is done at the video bit depth so it may introduce banding or cause scaled dither noise. It can be very fast and low power. The quality varies between GPU brands and models but none are particularly good. Can do chroma upscaling as well so this option might override 'chroma upscaling'. Requires a restart of madVR to take effect. Does not bypass the graphics card's video (damage) algorithms so make sure they are off.
Cubic: {fast} [Bicubic60] Bicubic is b = 0, c = value / 100. SoftCubic is b = value / 100, c = 0. Mitchell-Netravali is b = 1/3, c = 1/3. Bicubic125 and 150 (c > 1) are special cases for downscaling because they have nasty artifacts when used for upscaling.
Lanczos: {medium} [3] A sharp sinc type
Spline: {medium} [3] A different sinc type
Jinc: {slow} A more advanced sinc type, uses 3-taps (based on an EWA LanczosSharp from ImageMagick)
Bilateral: {slow} A chroma scaler that uses the luma channel as reference. This can be very good but it can fail too.
Reconstruction: {very slow} [soft] Similar to Bilateral in that it uses luma channel information to aid chroma scaling. Soft is less prone to artifacts.
SSIM: {very slow} [1D-100%] Downscaling only. It is very sharp and detailed, especially useful with high downscaling ratios and fine details. with Shiandow
super-xbr: {very slow} [100] xBR means scale By Rules, it works by detecting edges and interpolating pixels along them. Can only perform a 2x upscale.
NGU Family: {variable super slow} [medium] madshi's own Next Generation Upscaling. A sharp doubling algorithm with minimal artifacts. NGU Soft, Standard, and Sharp can also quadruple the luma in one step. The Anti-Alias version is softer but reduces aliasing and is more tolerant of source artifacts. Works in Windows XP.

activate anti-ringing filter: [Disabled, relaxed] madshi's method to reduce ringing, the major artifact caused by sharp scalers. Designed to only remove the ringing introduced by the filter it accompanies.

A comparison of scaling algorithms made by Warner306

chroma upscaling [Bicubic60]
Cb and Cr are stored at half the resolution of Y in a standard YCbCr 4:2:0 source and this controls how madVR doubles their resolution in both dimensions to create YCbCr 4:4:4 for the conversion to RGB. When downscaling a lot this setting is used to bring the chroma to the target resolution, not the luma resolution, so the luma is downscaled before the conversion to RGB.

activate SuperRes filter, strength: [Disabled, 3] A special version of SuperRes designed for the chroma upscaling step. Not recommended with NGU.

image downscaling [Bicubic150]
How madVR scales to the target resolution if it is smaller than the source.

scale in linear light: [Disabled] Using linear light when downscaling produces a result more similar to what one would get with optical scaling; bright specks such as stars in a night sky are preserved much better. The chroma must be upscaled to match the luma before downscaling when using this option because linear light is only possible in RGB.
activate anti-bloating filter: [Disabled, 100%] A post process method to reduce the fatness created by downscaling with SSIM.

image upscaling [Lanczos 3]
How madVR scales to the target resolution if it is larger than the source.

scale in sigmoidal light: [Disabled] Linear light but for upscaling, applies a sigmoidal curve after the conversion to linear light. This reduces the dark halo artifacts around sharp edges caused by upscaling in linear light.

NGU or super-xbr: When choosing a doubling scaler the 'algorithm quality', 'activate doubling / quadrupling...', and 'if any (more) scaling needs to be done' options become available. Algorithm quality is much more important for luma than chroma. "let madVR decide" chooses options appropriate for the performance requirements of the chosen luma algorithm quality. It is recommended to turn the luma quality up as high as possible before adjusting other options.

algorithm quality:
<-- luma: The option used for doubling or quadrupling the resolution of the colorless component of the video (Y).
<-- chroma: The option used for doubling the resolution of color components of the video (Cb & Cr).
activate doubling / quadrupling...: Changes the scaling ratio required before doubling or quadrupling activates. When not active the option set in 'if any (more) scaling needs to be done' is used to scale to the display resolution, if required. 'let madVR decide' uses 1.2x and 2.4x respectively (when using direct 4x NGU quadrupling "if any upscaling past 2.0x is needed" is used instead) so set these to 2.0x and 4.0x if you want to avoid doubling or quadrupling to a resolution larger than the display and downscaling.
if any (more) scaling needs to be done:
<-- upscaling algo: The option used for upscaling, if required, after doubling or quadrupling.
<-- downscaling algo: The option used for downscaling if the display resolution is lower than the doubled or quadrupled resolution.

upscaling refinement [All Disabled]
These are applied as part of upscaling or supersampling.

sharpen edges: [1.0] Only sharpens edges instead of textures like skin or cloth. Avoids sharpening artifacts too much.
crispen edges: [1.0] A tamed version of FineSharp, a sharpener originally by Didée that attempts to keep local energy close to the original. Better used with higher quality sources because it sharpens artifacts.
thin edges: [1.0] As its name implies. Good for SD Anime or cartoons.
enhance detail: [1.0] Sharpens textures like skin or cloth, also sharpens artifacts.
soften edges: [1] Applied as part of NGU. Useful for large upscaling ratios with this very sharp upscaler.
add grain: [1] Applied as part of NGU. Useful for large upscaling ratios with this very sharp upscaler. Combats the artificial flat look caused by the combination of a lack of detail in non-edge textures with very sharp upscaling of edges.
LumaSharpen: [0.65] Blurs the original pixel with the surrounding pixels and then subtracts the blur. Avoids sharpening artifacts.
AdaptiveSharpen: [0.5] Tries to sharpen medium sharp edges the most, it avoids sharpening near flat areas and very sharp edges. From bacondither
activate anti-bloating filter: A post process method to reduce the fatness created by line sharpeners. Not needed for crispen edges, which is already "skinny."
activate anti-ringing filter: A post process method to reduce ringing due to sharpening.
SuperRes: [3] A post process method from Shiandow. Not recommended in combination with NGU.
----use linear light: Ideally use the same method that the source was originally downscaled with when it was mastered. This is usually not known but gamma light might be more likely. When enabled the image may be slightly darker and dark lines slightly fatter.
  1. Calculate an initial guess (using the configured upscaler)
  2. Downscale and calculate differences with original image.
  3. Scale those differences to the final size (SoftCubic50)
  4. Improve guess by:
    • Softening the image
    • Subtracting differences with the original image
    • Sharpening
    • Removing aliasing
    • Removing ringing
  5. Repeat steps 2-4 several times.

rendering

general settings

delay playback start until render queue is full: [Disabled] Pauses playback until all the buffers are full. With this option disabled only the present buffer needs to fill before playback starts.
enable windowed overlay (Windows 7 and newer): [Disabled] Only available on Nvidia and Intel GPUs. Uses a low level overlay method which bypasses the GPU LUT (monitor profile) so madVR emulates it when using this option, this is done in 16-bit so madVR can provide better quality than the GPU. Overlay also bypasses the OS to a large extent; screen-shots are not possible. D3D9 Only. Incompatible with 'fullscreen exclusive mode'.
enable automatic fullscreen exclusive mode: [Enabled] madVR has exclusive access to the display, nothing else can draw to the display without dropping out of this mode. This is the most stable mode for madVR because it has the most control over when and how video frames are displayed. There is a slight flicker and delay as madVR enters and exits this mode. Required for 10 bit in Windows 7 or 8.
disable desktop composition (Vista and Windows 7): [Disabled] Disables Aero which has its own v-sync that can conflict with madVR’s. This option cannot disable desktop composition on Windows 8 or 10 but desktop composition also works better on 8 and 10.
use Direct3D 11 for presentation (Windows 7 and newer): [Disabled] Use Direct3D 11 instead of D3D9. Requires a restart of madVR to take effect. Required for >8 bit output. Slightly more responsive than D3D9. Overrides windowed overlay.
present a frame for every VSync: [Enabled] when disabled madVR only presents new frames when needed, relying on D3D11 to repeat frames for each VSync. Disabled may improve performance but may also cause presentation glitches.
use a separate device for presentation (Vista and newer): [Disabled] Might improve performance slightly, or it might hurt it slightly.
use a separate device for DXVA processing (Vista and newer): [Disabled] Might improve performance slightly, or it might hurt it slightly.
CPU queue size: [16] The buffer in system memory for decoded video and xySubFilter subtitles.
GPU queue size: [8] The buffer in the graphics memory for madVR’s rendering.

windowed and exclusive mode settings

present several frames in advance: [Enabled] Uses a new method for presenting frames in advance instead of using a back-buffer queue.
how many video frames shall be presented in advance or how many backbuffers shall be used: [8 or 3] The present queue, a final buffer in DirectX, after madVR sends completed frames to Windows.
when and how shall the GPU be flushed: [flush, flush & wait (sleep), don't flush, don't flush] To be able to display rendering times in the OSD the '... after last render step' must be one of the 'flush & wait' options.

stereo 3d
madVR only supports frame packed 3D with the LAV video decoder.

enable stereo 3d playback: [Enabled] Allow madVR to output stereoscopic 3D content. 3D output is currently limited to 1080p23 with smooth motion automatically disabled.
when playing 2d content: [Disabled, disable os stereo 3d support for all displays] Change the stereo 3D setting in the OS when playing 2D content.
when playing 3d content: [Disabled, enable] Change the stereo 3D setting in the OS when playing 3D content. Depending on the display and GPU, 3D support may not need to be enabled in the OS to display 3D content.
restore os stereo 3d settings when media player is closed: [Disabled]

smooth motion [Disabled]
Uses frame blending to perfectly display the video’s frame rate at the display’s refresh rate without any dropped or repeated frames and while staying in sync with the audio. This eliminates frame time judder in exchange for slightly increased blurring due to the frame blending. The blurring is more visible when the refresh rate matches the source frame rate because all the frames will be blended frames. The blurring is less visible on higher refresh rate displays because fewer frames will be blended frames. Smooth motion will harm motion interpolation, do not use them at the same time.

only if there would be motion judder without it...: [Default] Smooth motion will activate when the refresh rate is not close to a multiple of the frame rate, e.g. it activates for 23.976 fps at 60Hz but not for 29.976 fps at 60Hz.
... or if the display refresh rate is an exact multiple of the movie frame rate: Smooth motion will always activate unless the frame rate matches the refresh rate, e.g. it will also activate for 29.976 fps at 60Hz but will still not activate for 23.976 fps at 24Hz.
always: Smooth motion is always active. This allows no dropped or repeated frames even when the source frame rate is very close, but not quite equal to, the real refresh rate of the display. Note that smooth motion has less blurring when displaying 23.976 fps at 60 Hz than 23.976 fps at 24 Hz so this option is not recommended unless you cannot increase the display's refresh rate.

dithering
Dithering is performed as the very last step in madVR to convert its internal 16 bit data to the bit depth set for the display. Any time madVR does anything to the video high bit depth information is created and dithering allows much of this information to be preserved when displayed at a lower bit depth. For example, the conversion of 8-bit YCbCr to RGB generates >8-bit RGB data. The higher the output bit-depth, as set in madVR's 'devices' -> 'properties', the less important dithering quality is.

None: Only use for testing, it is never useful for normal use, banding.
Random Dithering: Highest noise, but it is also the fastest option.
Ordered Dithering: [Default] This option has the lowest visible dithering noise. It uses a fixed dither texture that was optimized for low visible noise and offers high quality dithering with a low performance hit.
Error Diffusion: Uses DirectCompute to perform very high quality error diffusion dithering, similar to the Floyd–Steinberg or Sierra dithering algorithms. Test option 1 and 2 for yourself (or pick one randomly). They are both very good and my preference seems to change depending on the display.
use colored noise: [Enabled] Uses an inverted dither pattern for green which reduces luma noise but adds chroma noise. I like this option disabled, but test it for yourself.
change dither for every frame: [Enabled] Uses a new dither seed for every frame or, for ordered dithering, adds a random offset and rotates the dither texture 90° between every frame.

Last edited by Asmodian; 21st January 2019 at 23:46.
Asmodian is offline   Reply With Quote
Old 16th February 2015, 14:56   #3  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
screenshots
When taking screenshots madVR re-renders the current video frame based on the settings in this tab.

create screenshots with a custom zoom factor: 100% view means the native video resolution viewed at 100%, only resizing to square pixels. Disabled captures the current video as displayed.
don't perform color & gamma processing, calibration etc: It is recommended to leave this enabled if you plan to share or view your screenshots on any other display.

trade quality for performance
[By default the top eight options, everything down to and including 'scale chroma separately, if it saves performance', are enabled]

optimize subtitle quality for performance instead of quality: This does not hurt subtitle quality very much for a reasonable performance gain.
use DXVA chroma upscaling when doing native DXVA decoding: DXVA chroma upscaling returns incorrect colors on some systems but it is fast. DX9 DXVA2 Native hardware decoding returns bad quality (blurred chroma) on Nvidia GPUs, which this option does not change.
use DXVA chroma upscaling when doing DXVA deinterlacing: DXVA chroma upscaling returns incorrect colors on some systems but it is fast.
store custom pixel shader results in 16bit buffer instead of 32bit: Does not seem to improve memory use or performance, at least on my Titan X (Pascal).
don't use linear light for dithering: Especially significant at lower output bit depths. Usually not visually significant at 8+ bits.
don't analyze gradient angles for debanding: More detail is lost for the amount of banding removed.
don't rerender frames when fade in/out is detected: Without this option debanding causes madVR to rerender five frames every time it detects a fade, but only when it is set to a higher strength for fades. This can cause dropped frames or presentation glitches on some systems.
scale chroma separately, if it saves performance: Scaling chroma separately is much faster when downscaling from large resolutions. It is probably lower visual quality but it is not obviously mathematically worse and it can be very important for watching 4K content on lower resolution displays with weaker GPUs.

The rest are probably not a good idea and can cause visual errors and/or offer little performance gain.

More Advanced Topics

On Screen Display
Toggle the On Screen Display by pressing Ctrl-J.

To avoid dropped frames and/or presentation glitches the sum of the average stats "deinterlace" (if present), "rendering", and "present" must be a bit below the frame time, Y, in the line "v-sync [X] ms, frame [Y] ms". For example, progressive 29.97 fps video has a new frame every 33.37 ms so "rendering"+"present" needs to be a few ms below 33.37 ms. However, 23.976 fps video only has a new frame every 41.71 ms so you can use more demanding settings with lower frame rate video. Exactly how far below the frame time is required for glitch free playback is dependent on the system but a few milliseconds is usually sufficient.

Profiles
Right click on a device in 'devices' or the 'processing', 'scaling algorithms', or 'rendering' settings folder to create a profile group. You can only add settings pages to a group when creating it. There can only be one profile in a profile group when deleting it. If madVR hits the end of a profile rule script without picking a profile it uses the top profile in the group.
configure profile rules

HDR Support
madVR supports the Windows API, introduced with the Windows 10 Creator's update, as well as Nvidia's and AMD's APIs to pass HDR meta data to a display. The display must report HDR support. Applications cannot use the Windows API to turn HDR mode on or off, instead content is converted by Windows when needed, at a lower quality than madVR is capable of. This means that AMD's or Nvidia's API is required for maximum quality when viewing both SDR and HDR content, without manually changing a Windows setting. The Windows setting should be off when using another API. HDR usually does not work with fullscreen exclusive mode. As of Nvidia driver version 390.65 madVR can use Nvidia's API for good HDR behavior in Windows 10 1709 (Fall Creators Update).
madshi's detailed description of HDR support in Windows 10.

Rotation Support
madVR will automatically rotate the video if rotation is specified in the video container, rotation can also be controlled manually.
The default keyboard shortcuts for rotation are:
Control + Shift + Alt + Right Arrow | Clockwise
Control + Shift + Alt + Left Arrow | Counterclockwise

IVTC and Deinterlacing
Shortcut keys to force auto deinterlacing, DXVA2 deinterlacing, or CPU based IVTC. Forcing a deinterlacing mode also forces deinterlacing to 'on' instead of 'auto'.
Control + Shift + Alt + D | Toggle Deinterlacing: [Auto], On, Off
Control + Shift + Alt + T | Toggle Mode: [Auto], DXVA2 Deinterlacing, madVR's CPU IVTC

madVR can decimate progressive streams
e.g. 720p60/720p50 broadcast with 24p/25p content. Press control+alt+shift+d to enable deinterlacing and press control+alt+shift+t to force decimation on. It has the same limitations as madVR's IVTC or film mode.

File Name Tags
madVR will look at the folder and file names for tokens or "magic words" that tell it to treat a particular file differently.
example: "D:\Movies\Broken PAL matrix=PAL\my broken rip from the 90s deband=high deint=Video.mkv"

Possible file name tags include:
frame rate: frameRate=24p, 24i, 24fps, 24Hz, etc. or refreshRate=
deinterlacing: deint=On|Off|Video|Film|IVTC
debanding: deband=off|low|medium|high
deringing: dering=on|off|half|full
profile: profile='profile name'
matrix: matrix=2020|709|601|NTSC|PAL|YCgCo|240M
primaries: primaries=2020|DCI|709|SmpteC|EBU|sRGB|NTSC|PAL|470M|240M|170M
levels: levels=PC|TV|fullrange|limited|doubleExp|tripleExp or range=
blacklevel: blacklevel=-50 to +50
whitelevel: whitelevel=-50 to +50
contrast: contrast=-100 to +100
brightness: brightness=-100 to +100
saturation: saturation=-100 to +100
hue: hue=-180 to +180
chroma deblocking: deblockChroma or denoiseChroma
black bars: detectBlackBars=on|off" or "blackBarDetection=on|off"
hdr: hdr=on|off or transfer=hdr|sdr|2084|709

Hidden Options
An empty folder or file in the madVR program directory with a specific name will trigger a hidden option, these are options you probably do not want to use.

BilinearSuperRes: Use a lower quality, but faster, mode for SuperRes.
DisableHdrBrightnessTweak: Disables raising the brightness of shadows which normally occurs when 'this display's peak luminance capability' is set to 120 or 180 nits.
DontRenderAfterStop: Stops madVR from rendering for 7 seconds after playback is stopped or paused. It may stop black screen flashing during seeks and play rate changes with specific players.
force full range input: Forces madVR to treat all input as full range.
KeepLastFrameOnStop: Prevents a black screen when stopping playback.
ShowBlackBars: Draws a green rectangle around the active video area, as detected by zoom control.
ShowRenderSteps: Displays every shader pass in the OSD with the rendering time for each one. Will slow down the overall rendering time due to needing to flush the GPU and wait for the rendering to succeed after every shader pass. Depending on the number of steps and the GPU this effect can be significant or relatively minor. Only active when the OSD is being displayed.
YCbCr: Outputs YCbCr data instead of RGB, as if it was RGB.
ShowHdrMode

Known Limitations or Complications

-madVR does not like f.lux, some GPU monitoring, or other similar programs.
-DXVA2 Native DX9 hardware decoding returns bad quality (blurred chroma) on Nvidia GPUs. The DX11 hardware decoding API (D3D11VA) that is used when LAV Video is set to D3D11 Automatic (so native decoding is used), and madVR is set to use Direct3D 11, avoids these problems. So do all copy-back hardware or software decoding methods.
-All Native hardware decoding methods result in some functional ramifications. It is impossible to use force film (IVTC) and the detection of black bars does not work. madVR can still shift the entire video (including any hard coded black bars) to the top or the bottom of the screen, as well as crop pixels off all sides, but it cannot detect black bars. Again, copy-back hardware or software decoding avoids these problems.
-SLI reduces performance when enabled, even if it is not enabled for madVR or the video player.
-When using a 3DLUT madVR can generate out of gamut values to display WtW information unless using 'enable windowed overlay', in which case WtW information is clipped.
-Windowed Overlay mode won't linear out the Windows calibration when loading a 3DLUT with a linear calibration attached, it will simply stop emulating the calibration loaded in Windows. This way Windows can remain calibrated while madVR uses a 3DLUT with a linear calibration attached.
-madVR's IVTC can detect a lot of cadences but can "only" handle some of them correctly. For example the rare cadence 3:2:3:2:2 (25 fps in 30i 60 fields) does not work well.
-when using display mode changing madVR always switches to 23Hz, if available, when having forced film mode on while playing 59i content. This is often optimal, but not always. So, with no good way to know what would be best in advance, madVR goes with 23Hz.
-madVR's 3D support is currently limited to 1080p23.

Example rendering path


settings.bin
madVR's settings can be backed up or shared via a settings.bin file. My settings are optimized for the Nvidia 2080 Ti, Windows 10, and on my LG CX 48" 4K OLED TV with profiles for SD, 720, 1080, UHD, and above. 3D is disabled. I use Zoom Player Max for the video player. Note that "low" still requires a decent GPU (~1050 Ti).

To use simply restore madVR to default settings and place the file in the madVR program directory. madVR will automatically create or update the file with new settings if it has write access to its directory (e.g. not in "program files"). madVR will still use the registry to store these settings, along with any changes, without write access.

For madVR v0.92.17 or later:
Max Quality settings.bin
Low Power settings.bin

Feedback is appreciated, especially for the low power settings.

Last edited by Asmodian; 15th July 2020 at 03:31.
Asmodian is offline   Reply With Quote
Old 16th February 2015, 15:41   #4  |  Link
noee
Registered User
 
Join Date: Jan 2007
Posts: 530
Nice so far. Maybe put a link in for madshi's write-up of profiles. You might also add a section for filename tokens.
__________________
Win7Ult || RX560/4G || Ryzen 5
noee is offline   Reply With Quote
Old 16th February 2015, 17:05   #5  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 8,190
the calibration is not limited to 3d LUT. and you completely skipped color & gamma. the gamma setting is very useful for rooms with changing light conditions.
huhn is online now   Reply With Quote
Old 16th February 2015, 22:37   #6  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
Quote:
Originally Posted by noee View Post
Nice so far. Maybe put a link in for madshi's write-up of profiles. You might also add a section for filename tokens.
A Profiles link is easy, a second link to madshi's "(click here for online help)" couldn't hurt.

filename tokens really should be there, they need more documentation. I am having trouble finding a good list of possible tokens though. Does anyone have such a list?

Quote:
Originally Posted by huhn View Post
the calibration is not limited to 3d LUT. and you completely skipped color & gamma. the gamma setting is very useful for rooms with changing light conditions.
I figured those did not need further explanation. madshi's descriptions seem sufficient if you know what color gamut and gamma are or are used to messing with them. I did not want to have to explain all these concepts for those who do not. I actually had a few lines about color & gamma but deleted the section as it did not say anything helpful (i.e. "you can use this section to mess with color and gamma").

I will add a note about this display is already calibrated and disable GPU gamma ramps. If there is anything in particular you think I should mention please let me know!

edit: I thought of something to write about for color & gamma, e.g. your mention of gamma setting being useful for lighting conditions.

Last edited by Asmodian; 17th February 2015 at 00:28.
Asmodian is offline   Reply With Quote
Old 16th February 2015, 22:54   #7  |  Link
Warner306
Registered User
 
Join Date: Dec 2014
Posts: 1,127
You should explain what dithering is and why it is performed. Currently, there is one sentence. It could be a small paragraph. That is a topic that most newbies will not understand. I am still not clear on this. Is it not that the conversion of YCbCr to RGB requires dithering due to mathematical rounding errors present is the conversion calculation? Also, is dithering not used to take high bit-depth output of madVR and dither it down to the bit-depth of the display? A dither is an introduction of noise (simulated color information) to smooth out color bands.

Most people overlook dithering settings because they don't understand what they are adjusting.

Last edited by Warner306; 16th February 2015 at 23:20.
Warner306 is offline   Reply With Quote
Old 16th February 2015, 23:26   #8  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
Sounds reasonable
Asmodian is offline   Reply With Quote
Old 17th February 2015, 11:48   #9  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 8,190
Quote:
Originally Posted by Asmodian View Post
I figured those did not need further explanation. madshi's descriptions seem sufficient if you know what color gamut and gamma are or are used to messing with them. I did not want to have to explain all these concepts for those who do not. I actually had a few lines about color & gamma but deleted the section as it did not say anything helpful (i.e. "you can use this section to mess with color and gamma").

I will add a note about this display is already calibrated and disable GPU gamma ramps. If there is anything in particular you think I should mention please let me know!

edit: I thought of something to write about for color & gamma, e.g. your mention of gamma setting being useful for lighting conditions.
Quote:
2.20, 2.40, etc.: changes the display's gamma based on what is set in calibration to this target gamma. Lower brightens mid range values which can be nice in a brightly lit room. Higher darkens mid range values which might look better in a darker room.
well done.
huhn is online now   Reply With Quote
Old 18th February 2015, 00:11   #10  |  Link
Warner306
Registered User
 
Join Date: Dec 2014
Posts: 1,127
Not everything is clear, but I appreciate the effort. You have taught me several things I didn't know.

My wish is to have an introduction that summarizes the video rendering process. My curiosity surrounds how the whole process fits together, which helps me decide what settings are important and what aren't. Because, for most of us, madVR settings are a compromise based on the limitations of your hardware. You can't just turn everything on at the maximum settings.

I'm thinking something like:

The Video Rendering Process Summarized:
  • Chroma Upscaling to YCbCr 4:4:4 to match native luma resolution.
  • YCbCr to RGB conversion for both luma and chroma.
  • Image Scaling to target resolution. This may include luma/chroma doubling.
  • Introduction of dithering and debanding to reach desired RBG bit depth.
  • Picture appears on the screen.

Something like that. I have no idea if the order is right. It puts the whole guide into context and helps people understand what it all means.

I have been putting together a beginners guide to using madVR with an MPC with Kodi Entertainment Center and I'm constantly updating it to be more accurate/useful. Of course, I linked to this post in the madVR section because you know more than I do.
Warner306 is offline   Reply With Quote
Old 18th February 2015, 01:07   #11  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 8,190
first of all this is not a guide this just explains settings.


debanding is done at the source resolution before scaling at least in madVR.

about your "The Video Rendering Process Summarized:" it is not complete.

there are colorspace corrections changing the DVD bt 601 to bt 701 and you don't have to get 4:4:4 frist you can frist scale to the target resolution using 4:2:0 and than scale the chroma. you can even scale both unaffected from each other direct to the file resolution MPDN does it this way.

even if you write up how it works that doesn't mean people will understand what is important.

let's have a look at chroma upsampling.

when chroma is upsampled from a BD source you change the resolution from 960x540 to 1920x1080. this is a huge resize but it's not that important you don't learn that from this. is the TV capable of 4:4:4 and setup properly if yes it is more important compared to a 4:2:2 screen but still not nearly as important as luma scaling.


I don't think it is a good idea to add all these complicated things it will create more questions than answer.
huhn is online now   Reply With Quote
Old 18th February 2015, 01:36   #12  |  Link
Warner306
Registered User
 
Join Date: Dec 2014
Posts: 1,127
Quote:
Originally Posted by huhn View Post
first of all this is not a guide this just explains settings.


debanding is done at the source resolution before scaling at least in madVR.

about your "The Video Rendering Process Summarized:" it is not complete.

there are colorspace corrections changing the DVD bt 601 to bt 701 and you don't have to get 4:4:4 frist you can frist scale to the target resolution using 4:2:0 and than scale the chroma. you can even scale both unaffected from each other direct to the file resolution MPDN does it this way.

even if you write up how it works that doesn't mean people will understand what is important.

let's have a look at chroma upsampling.

when chroma is upsampled from a BD source you change the resolution from 960x540 to 1920x1080. this is a huge resize but it's not that important you don't learn that from this. is the TV capable of 4:4:4 and setup properly if yes it is more important compared to a 4:2:2 screen but still not nearly as important as luma scaling.


I don't think it is a good idea to add all these complicated things it will create more questions than answer.
I agree with your post, but would still like a summary before attempting to digest each definition on its own. This is very technical stuff. But, if it can't be summarized because of the number of possible paths, I would agree that it's best left alone. You could still explain the process as its done in madVR. Other programs are not important.

Last edited by Warner306; 18th February 2015 at 01:42.
Warner306 is offline   Reply With Quote
Old 18th February 2015, 01:51   #13  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
Quote:
Originally Posted by Warner306 View Post
Not everything is clear, but I appreciate the effort. You have taught me several things I didn't know.
Please let me know anything that doesn't seem clear! I would be very happy to reword or elaborate as necessary.

Quote:
Originally Posted by Warner306 View Post
The Video Rendering Process Summarized:
This is an interesting topic but I agree with huhn that it might be too complex for this post, definitely not as an introduction. I am thinking this post is for people looking at the madVR settings window and wondering what a particular option does.

That said I would like a flow chart describing the rendering steps, perhaps in the more advanced topics section. I am not sure I know enough to build a complete and accurate flow chart but I will give it a shot.
Asmodian is offline   Reply With Quote
Old 18th February 2015, 05:08   #14  |  Link
Warner306
Registered User
 
Join Date: Dec 2014
Posts: 1,127
Quote:
Originally Posted by Asmodian View Post
Please let me know anything that doesn't seem clear! I would be very happy to reword or elaborate as necessary.



This is an interesting topic but I agree with huhn that it might be too complex for this post, definitely not as an introduction. I am thinking this post is for people looking at the madVR settings window and wondering what a particular option does.

That said I would like a flow chart describing the rendering steps, perhaps in the more advanced topics section. I am not sure I know enough to build a complete and accurate flow chart but I will give it a shot.
Regardless of the outcome, I appreciate your efforts to provide some education. It took me a long time to collect all of the information necessary to set-up and understand how to use madVR and its supporting software. The AVS Forum post is a great starting point, but this topic is too large for one post or one guide.

I am thrilled with my set-up and credit an understanding of the software with getting the last 10th of power from my graphics card.
Warner306 is offline   Reply With Quote
Old 18th February 2015, 05:14   #15  |  Link
Warner306
Registered User
 
Join Date: Dec 2014
Posts: 1,127
Quote:
Originally Posted by Asmodian View Post
Please let me know anything that doesn't seem clear! I would be very happy to reword or elaborate as necessary.
I don't have time for a complete readthrough, but the description of NNEDI3 confused me. You mention 2x scaling. Is this describing luma/chroma doubling or how NNEDI3 works in general? By that, I mean does NNEDI3 always double the image even if I choose it as the chroma upscaler over Jinc?
Warner306 is offline   Reply With Quote
Old 18th February 2015, 06:06   #16  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
Quote:
Originally Posted by Warner306 View Post
I don't have time for a complete readthrough, but the description of NNEDI3 confused me. You mention 2x scaling. Is this describing luma/chroma doubling or how NNEDI3 works in general? By that, I mean does NNEDI3 always double the image even if I choose it as the chroma upscaler over Jinc?
Yes it does, NNEDI3 can only do 2x scaling. Note: chroma upscaling is always a 2x resize.

edit: Thanks for the feedback, these kinds of questions are great for figuring out what confuses people.

Last edited by Asmodian; 18th February 2015 at 07:06.
Asmodian is offline   Reply With Quote
Old 18th February 2015, 08:33   #17  |  Link
toniash
Registered User
 
Join Date: Oct 2010
Posts: 131
use managed upload textures (XP only)

In my case (windows XP and AMD 5450 with 13.12) lowers GPU consumption.
toniash is offline   Reply With Quote
Old 18th February 2015, 10:20   #18  |  Link
Asmodian
Registered User
 
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,429
Quote:
Originally Posted by toniash View Post
In my case (windows XP and AMD 5450 with 13.12) lowers GPU consumption.
Thanks, noted.
Asmodian is offline   Reply With Quote
Old 18th February 2015, 23:50   #19  |  Link
Warner306
Registered User
 
Join Date: Dec 2014
Posts: 1,127
I had time for another readthrough. I felt as though the following definitions required further elaboration/clarification:

color&gamma
2.20, 2.40
"changes the display's gamma based on what is set in calibration to this target gamma"

What does "what is set in calibration" mean?

artifact removal
"If default debanding strength is lower than strength during fade in/out 5 frames are rerendered using the higher strength on a fade detection (it takes 5 frames to detect a fade)."

This sentence is very confusing. I understand what you mean (the higher strength is used during fades) but it should be simplified.

image doubling
"If this is used with any scaling factor below 2.0x image downscaling is used to interpolate to the target resolution."

A comma after 2.0x would help this sentence, but it is the phrase "interpolate to the target resolution that is unclear". This is technical jargon.

enable windowed overlay (Windows 7 and newer):
"If not using the calibration option disable GPU gamma ramps madVR will emulate the GPU LUT. "

What does the "calibration option" refer to?

I find these to be the most offensive definitions. Other users may agree/disagree.
Warner306 is offline   Reply With Quote
Old 19th February 2015, 00:13   #20  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 8,190
Quote:
Originally Posted by Warner306 View Post
I had time for another readthrough. I felt as though the following definitions required further elaboration/clarification:

color&gamma
2.20, 2.40
"changes the display's gamma based on what is set in calibration to this target gamma"

What does "what is set in calibration" mean?
without setting a calibration this option does nothing.

for example you set "this display is already calibrated" and set the gamma there to 2.4 and set color & gamma to 2.2 than you get 2.2 on the screen. of cause only if the screen is calibrated for 2.4.
huhn is online now   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 23:05.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.