madVR 概述

(madVR的开发者,德国人Madshi)对于madVR渲染器,使用PC视频播放器的用户不会陌生。说它是PC电脑上的最强渲染器一点都不为过。有了它,PC播放的画质超过顶级蓝光播放器不再是“不可能的任务”。即使是这个神一般的工具,使用起来依然与大多数PC软件一样 - 设置选项繁多而且复杂。再加上这是一个由德国人开发的软件,菜单统统是英文的,对于大多数用户来说并不是很友好。

即使看到过几篇关于使用电脑播放器+madVR播放的文章,感觉作者也只是人云亦云,一知半解。以为自己安装了madVR就万事OK了。殊不知,madVR的强大远远超出了人们的想象。

幸好,一名叫做“萬年冷凍庫”的朋友(应该是台湾人),在Blogspot发布一篇大约3万字的madVR使用指南。详细到每一项设置该如何调整,最终测试效果如何。相信读完这篇文章,大家都能成为PC视频播放的高手。原文在此:萬年冷凍庫: 系列之3─最強渲染器-madVR

由于一些不可抗力的原因,原文页面无法被大多数人访问,因此一烧体验馆将此文章搬运过来,分2篇进行连载。

Devices

播放器准备工作

正文开始:(以下约一万字,请收藏文章后阅读)

---------------分割线------------

在介绍这东西之前,先用张图来复习一下上回提到的播放过程:

这边可以看到视讯输出的最后一道过程就是Video Renderer(视讯渲染器)的部分,同时这个部份也是对画质影响最吃重的一个部分,在来源档案相同的前提下,可以说影像播放的画质好坏取决于渲染器之上也不为过,而madVR正是以此为最大卖点的渲染器,此渲染器是由DOOM9论坛上的madshi所开发,不惜一切效能代价以换取最大的画质表现,也因此这个渲染器对显卡的要求稍微吃重些,超越了我们一般对播放软件之硬件要求的常识(这个常识是指,只有玩游戏才需要用到较高阶的显卡,影像播放只需要低阶显卡甚至内显已可胜任),我们最好以run一个游戏的标准来看待其所需要的效能。但并不是说只有好的显卡才能用这个渲染器,事实上madVR内部的选项相当弹性,根据设置的不同它可以让低阶卡跟内显顺顺跑,也可以把TiTan操爆,一般来说,我建议在能力许可的范围内选择一张不算太差的独立显卡才能发挥它该有的战力。

翻译一下开发者madshi提到关于madVR的一些特色:

  • 高质量的chroma upscaling(下面内文会再解释这东西)
  • 高质量的scaling(各种升降频算法)
  • 高质量的YCbCr→RGB转换
  • 对屏幕执行gamut和gamma的调色校正
  • 内部演算皆为16bit的高精度处理
  • 最后处理完成的16bit讯号dithered降转成8bit RGB输出
  • 避开各种显卡内加料(对画质有负面影响)的算法
  • 所有作业皆透过GPU shaders完成(IVTC运算除外)
  • 以追求最高质量为第一优先

再重申一个观念,视讯档案的播放,解码吃的是CPU效能(硬解例外,硬解是使用显卡上的译码模块,既不吃CPU也不吃GPU效能),而渲染才是吃显卡GPU效能,使用madVR时,GPU的效能很重要。

接下来进入正题,首先先到官方讨论页下载最新版的madVR

madVR - 高品质的视频渲染器(GPU辅助) - 末日9的论坛 (doom9.org)

或是到madVR官网下载:

http://madvr.net/

http://madvr.com/

madVR目前还没有安装档,madshi说他想到v1.0时再做安装档,所以下载后解压缩完自行将文件夹丢到想放的位置,像我还是习惯丢到Program Files (x86)下面,之后进madVR文件夹里点一下"install.bat"就会出现滤镜注册成功的讯息,以后要更新madVR只需要将文件夹整个盖过去即可。

"restore default settings.bat"这个执行档可回复所有的madVR设定到初始默认值,如果设定时乱了套或是出现问题,可以点击这个执行档,重新开始。

madVR的初始默认值是重视效能取向和稳定性的,也就是让大部分的显卡都可以正常运作为前提的设置,懒的研究设置的朋友用默认值也可以顺顺使用madVR,但如果想要进一步发挥madVR强大的功能,我们就再继续看下去。

到MPC-BE(小烧注:MPC-BE播放器,其余支持滤镜的播放器也可以)里的选项>视讯底下应该可以选择madVR了

播放影片时,右键>筛选器,底下选择madVR可以打开madVR的设定页,或是右下角的工具栏madVR图示上点右键并选择"Edit madVR settings",或是直接按Ctrl+S,或是在外挂滤镜里加入madVR并点两下都可以打开设定页

显示器设置

打开设定页,并将项目展开:

"devices"底下为目前连接的屏幕,目前显卡抓到几个这边看到的就是几个,将屏幕底下的项目展开可再针对各个屏幕做设定

第一个要先选择屏幕的种类,我想应该不用多做解释了,是哪种屏幕就选哪种,一般液晶/电浆/OLED屏幕或电视选择"Digital Moniter/ TV"即可,如果是投影机则选择"DigitalProjetor"

properties

到"properties"这页,选择该屏幕的output level,一般而言计算机屏幕选0-255,电视的话选16-235,不过有些较新的电视也接受0-255的讯号,这边注意电视的设置与madVR的设置要一致,否则有些色阶会被切掉,俗称黑位错误。(显卡控制接口上的设置则一律设为"由应用程序决定"即可,madVR会决定最后输出的output level)

详细可参考我的另一篇:浅谈HTPC与颜色管理─绪论与前置作业(1/4)

而bitdepth的选择,这边可以维持预设的"auto"让madVR自行判断即可。

如果屏幕是原生8bit(16.7百万色)或更高,或6bit dither(抖色)处理后有办法完整显示16.7百万色,则选单里可选择8bit;如果屏幕是6bit dither(抖色)成8bit且只能显示16.2百万色的话,且屏幕自身的抖色效果不佳的话,选单里可选6bit或7bit,madVR会增加抖色(dithered)输出的强度,色阶过渡会比较好点(但会增加一些噪点),一般而言TN面板的LCD屏幕6bit抖色的居多,IPS/VA面板比较有可能是原生8bit或以上。

至于10bit输出,除非能完全确定屏幕能够接受10bit讯号输入并且显卡驱动程序也能够输出10bit,才去选择这个选项,如果不能100%确定,那还是建议选择8bit输出,madVR的dithered 8 bit输出的效果跟10bit输出其实差异很小,实际观赏时肉眼几乎难以查觉差异。

另外需注意,10bit输出,只有在D3D11 的FSE(全屏幕独占)模式下(这是general serttings那边的设定)或是win10操作系统下的窗口全屏幕模式才能达成(不过目前排除了NV卡,因为其驱动以此法输出10bit会有造成banding的bug出现,故NV卡目前除了FSE模式外都是强制输出8bit)。

如果你无法确定你的屏幕要选择哪种bit数,请自行用灰阶影片来测试,看选择哪一个bit数的色阶过渡效果最好,色阶断层(banding)最不明显,那个就是最适合你的屏幕的bit数设置。

另外关于6bit以下的选项,那些只是给你做dither算法的测试时使用的,不要做为常驻选项

关于dither这技术的原理可参考此篇文章

[心得] 淺談人眼視覺特性與其應用 - 看板 LCD - 批踢踢實業坊 (ptt.cc)

3D format这项,在观看3D影片时才有作用,一般设为auto就好,如果显示设备接受特定的3D显示形式才需要去切换

calibration

到"calibration"这页,可以看到四个选项,一般屏幕如果没有经过校色器校色过或是不确定色域的话可维持选第一项"disable calibration controls for this display"就好了,最下面那个"disableGPU gamma ramps"如果没有校色过的话就不要勾选

如果该屏幕经过校色器校色过或是屏幕有色域选项而且其出厂标准可以信任的话,可以选第二项"this display is already calibrated",gamut跟 gamma就依校色时的条件去选择

第三项"用yCMS校色"跟第四项"用3DLUT檔校色",一样需要有校色器的配合,yCMS是将校色过后的三原色跟灰阶信息自行输入,而3DLUT则是用校色后的信息产生一个独立的3DLUT档来使用,目的都是为了能让片源配合屏幕及环境光源状况达到最正确的输出,能够呈现影片制作者原本要表达的画面,而不会因为显示器和传输媒介的个别差异而被扭曲得乱七八糟。后面两项使用的话显卡内存必须要有至少1GB以上,因为这两项功能会建立Lookup tables,会占用大量的显卡记忆空间。

有兴趣的朋友可先参考此网址:

http://www.avsforum.com/t/1471169/madvr-argyllcms

目前由于ArgyllCMS和dispcalGUI的两位开发者都把madVR加入支持,所以已经有一套很完善而且简单的校色流程,只需要去租用一个校色器(建议是光谱仪 colormunki photo、colormunki design或i1 pro之类的),照上面网址教学操作很简单就能完成,做出必要的3DLUT檔。

当然校色的领域博大精深,其中有不少的know-how,所以也请原谅我的无限期拖稿,等小弟玩出些心得会再另发专文分享。

display modes

到"display modes"这页,这部分是在播放影片时实时改变显示模式用的,可选择播放时改变或是全屏幕时再改变,然后再选择结束播放或是结束全屏幕时要不要改回来。这部份的功能是在显示设备有支持多种显示模式时使用的(像有些电视或投影机有24P输入模式,或要在59Hz和60Hz之间切换),可让其配合影片更改屏幕更新率或是分辨率,若屏幕没支持的话这部分不用勾选。

解释一下选项:

  • switch to matching display mode…(启用播放时切换显示模式)

    • …when playback stars (只要开始播放就切换)
    • …when media player goes fullscreen (只要全屏幕播放时才切换)
  • restore original display mode…(结束播放时切换回原来的显示模式)

    • …when media player is closed (播放器关闭时才切回去)

    • …when media player leaves fullscreen (只要退出全屏幕就切回去)

注意要使用自动切换功能,必须在下方的"list all display modes madVR may switch to:"底下那个空格填入屏幕能使用的显示模式,没填的话就没有自动切换作用。

以我的panasonic电视为例子来说,它的更新率在1920*1080下支持23Hz(实际约23.976附近)、24Hz、29Hz(实际约29.970附近)、30Hz、59Hz(实际约59.94附近)、60Hz这六种,将其输入可以让madVR更精确的切换电视屏幕更新率以对应不同帧率的影片,以上面例子来说,我会在字段输入1080p23、1080p24、1080p59、1080p60这四种(29Hz跟30Hz没必要,因为用其倍数的59Hz跟60Hz来显示更好),1080p23对应帧率23.976 fps的影片,1080p24对应帧率24 fps的影片,1080p59对应帧率29.970和59.940 fps的影片,1080p60对应帧率30和60 fps的影片。

当然这些只是举例,如果是用2K或4K屏幕的话,前面请自行换成1440p__或2160p__

另外有个"treat 25p movies as 24p"这功能要配合Reclock使用,目的是让欧规PAL25p的影片能够降速到24p去配合24p的显示模式,如果没有在看欧规影片的话这部分也不用理会。

而"hack Direct3D to make 24.000Hz and 60.000Hz work"这个选项,在系统是win8.1或win10时才有作用,win8.1和win10,有时候会发生屏幕更新率无法在需要时(要对应24fps或60fps影片时)变更成24Hz和60Hz(屏幕更新率会锁在23.976Hz或59.940Hz),这个选项可以解决这个问题,但可能有个副作用是会造成presentation queues填不满,所以依个人需要决定要不要勾。

此外,“display modes"这页的设定还有另一个分页"custommodes”,这是madVR的另一项有用的屏幕更新率自定义及微调功能,详情请参考我的另一篇介绍文章:

系列番外篇之3─是时候抛弃Reclock了? madVR屏幕更新率微调功能简介与实作

color & gamma

到"color & gamma"这页,如果方才的"calibration"那页里面选择的是第一项"disablecalibration controls for this display",gamma是预设为purepower curve 2.2,这时勾选"enable gamma processing"并设定为pure power curve2.2的话不会有任何改变,如果设为其他值才会改变gamma

"calibration"这项如果有设定,举个例子,假设我设定gamma为BT.709 1.8,这时不勾选或是勾选"enable gamma processing"并设定为BT.709 1.8的话都不会有任何改变,但如果设为其他值就会改变gamma的输出

现在回到为什么要改变gamma输出的问题,主要是为对应校色时跟你实际观看的环境的差别,例如你的屏幕可能是在暗室校色为gamma2.4,那么在同样的暗室观赏,不用去动gamma值就可以看到影片中的亮部跟暗部细节,但是你如果把同样的屏幕拿到明室中来观看,因为人的眼睛会根据环境光线调整瞳孔大小,所以这时一样的设定可能会让你看不到影片中的暗部细节,这时就要把gamma降到2.2或是更小来输出,才能得到同样在暗室观赏的效果,但madVR不会知道你在哪种环境底下来看影片,所以才需要"enable gamma processing"这项来手动更改gamma输出

如果是用校色器校色,而且你看影片的环境光线跟校色时选用的gamma曲线能够配合的话,那就不需要勾选"enable gamma processing"来修正gamma值了。

这边我还是假设各位是未校色的屏幕并且"calibration"那页里面选择的是第一项"disablecalibration controls for this display",那么此处建议底下选择"purepower curve",gamma值一般正常预设2.2,不过可依环境光源来做调整,较暗的环境中,可增加gamma值到2.4,全暗环境甚至可到2.6,如此可看到较细微的阶调变化;在较亮的环境中,就必须减少到2.0或更低,否则就会看不到暗部细节,不过个人建议还是先设2.2,实际播放影片时再依当时环境用热键做暂时性的微调就行了。

另外注意到上方有手动颜色控制,可调整对比、亮度、饱和度,色调的部分,这个一般不用去改,有需要再去调就好了(屏幕方面,我比较建议先调屏幕自身的控制面板,之后不满意再来调这个地方)。

另外总结一下目前madVR可以做手动颜色控制的地方有三个:

  1. 在madVR选项里的"device"下的"color & gamma",针对每个屏幕个别调整,也就是上面的那个。
  2. 热键设定里有一堆开头"source"的项目,可建立热键,在播放影片时随时用热键调整,调整结果不会被储存。
  3. 播放软件的调整接口,效果同1.,不过调整结果对所有屏幕都会有作用,如下图:

HDR

到HDR这页

如果你没有观看HDR(High Dynamic Range)影片的需求的话这边设定可以不用去管它,**它对于SDR(Standard Dynamic Range)的影片是没有任何影响的,而我们目前观看的绝大多数影片都是SDR的,**目前只有一些非常新的4K影片会采用HDR这项技术,HDR影片通常会是BT.2020色域、10bit色深。以下简略解释各选项

  • “let madVR decide”,全部交给madVR自行判断,如果屏幕支持HDR的话,madVR会送HDR 影片和metadata的讯号给屏幕(同第二项"passthroughHDR content to the display");如果屏幕不支持HDR的话,madVR会使用 pixel shader math把HDR影片转成SDR讯号送出(同第三项"convert HDR content to SDR by using pixel shader math",但效果等同第三项未勾选"restoredetails in compressed highlights",转换后细节损失比较多,故屏幕不支持HDR的话我建议直接选择第三项)。
  • “passthrough HDR content to thedisplay”,**将HDR内容和metadada不经处理直接送给屏幕,须注意选择此选项屏幕必须完整支持HDR内容播放,屏幕不支持HDR这选项就没有任何意义。**madVR在v0.91.11之后版本才能完整使用这个选项的功能,支持两种API将影片的metadata传送给电视去辨识。一种是NV或AMD卡专用的HDR API,必须搭配新的驱动,好处是win7、win8.1、win10皆可使用;另一种是win10内建的D3D11/DXGI APIs.,这个每家显卡都可用,但只有win10下能用,播放时必须使用D3D11模式。("calibration"设定里有3DLUT档的话会绕过)
  • “convert HDR content to SDR by usingpixel shader math”,选择此选项会将HDR之内容妥善转换成SDR内容后输出给一般SDR屏幕使用("calibration"设定里有3DLUT档的话则会接在后面套用),如果屏幕不支持HDR的话我建议选择此项。
  • “convert HDR content to SDR by usingan external 3DLUT”,选择此选项则须利用校色器跟软件建立HDR→SDR转换的3DLUT给它使用,转换后输出SDR内容给屏幕("calibration"设定里有3DLUT档的话会绕过)
  • “process HDR content by using pixelshader math”,输出HDR内容给屏幕,选择此选项屏幕也必须支持HDR播放,但是是由madVR来处理色域跟亮度的转换,例如电视支持HDR,但是色域是DCI-P3的case("passthrough HDR content to the display"那项则是由电视本身处理色域跟亮度的转换),有时候电视本身没办法很好的处理HDR内容的色域跟亮度转换时就适合选择此项。("calibration"设定里有3DLUT档的话会绕过)
  • “process HDR content by using anexternal 3DLUT”,选择此选项则须利用校色器跟软件建立HDR→屏幕色域转换的3DLUT给它使用,选择此选项屏幕也必须支持HDR播放。("calibration"设定里有3DLUT档的话会绕过)

以下以第三项"convert HDR content to SDR by using pixel shader math"为例说明下方之子选项:

target peak nits

可设定范围是12010000,HDR影片使用的亮度范围是010000 nits,它必须有一个支持HDR的显示器才能正常显示(当然还有显卡也要支持),而一般SDR的显示器最大亮度大概在80~300 nits(例如我的电浆电视校色后最大亮度设定在120nits),在SDR显示器上播放HDR影片是没办法显示正确亮度的,需要经过色调映射(tone mapping),这个选项就是让你设定HDR影片转换后的亮度,让HDR影片可以在SDR屏幕上正确显示,不过并不是屏幕亮度设多少这选项就一定要设多少,还必须实际播放测试后去找出最适合的选项。这边设置的数值越低,亮度中间值会拉越高(整体画面越亮),数值越高,亮度中间值拉越少(整体画面越暗)。像我的电视亮度实际大约120nits,但是这一选项我设定在200nits看起来效果比较好。

tone maping curve

设定色调映像用的曲线,建议选择默认的BT.2390。

gamut mapping algorithm

影片里大于屏幕色域的画素,如果什么都不做的话,色彩坐标超出的部分会被剪除(例如一个画素RGB为50,320,40,屏幕255,255,255,则该画素显示时会变成50,255,40),会造成hue(色相)跟原本的产生差异,颜色会偏移,因此较好的做法是透过降低亮度或降低饱和,等比例去分配RGB值,以求在屏幕色域能显示的范围内尽量让hue保持不变。此项是选择色域转换所使用的算法,不同的算法设定会造成转换后的颜色呈现有些微的差异,有兴趣的话可慢慢测试不同设定,不然建议先维持默认选项即可。

fix too bright & saturated pixelsby

luminance reduction(降亮度)、saturation(降饱和),要用哪个则是个难题,有些HDR片源适合降亮度,有些适合降饱和,这边建议维持预设"dynamic luminance & saturation reduction",让madVR自行判断并做动态调整。

measure each frame’s peakluminance

勾选这项会让madVR自己计算每一帧的巅峰亮度值,虽然这项信息HDR metadata里面有但未必是准确的,因为只有单一数值,而每个帧的亮度是一直变化的,实时测量才能让madVR达成更精确的亮度转换(tone mapping)

restore details in compressedhighlights

在压缩高亮度区域的数值时,因为数值会非常接近,可能导致该区域的细节遗失,勾选此选项的话,会在需要时透过锐化的方式让细节比较容易保留下来

activate anti-bloating filter

AB滤镜,因为上面有用到锐化故建议勾选

activate anti-ringing filter

AR滤镜,因为上面有用到锐化故建议勾选

此外,关于HDR metadata输出通道,做一些补充说明:

1.Windows 10 Creator’s Update底下的屏幕设定里面有个选项叫"HDR and advanced color"(不太确定中文版翻成什么),关掉的话屏幕永远跑SDR模式,开了的话有HDR的屏幕永远跑HDR模式,Windows目前无法根据使用者是否跑HDR影片或HDR游戏而自动把屏幕在SDR或HDR模式之间切换。

2.关掉"HDR andAdvanced Color" 这选项的话PC永远会送SDR内容给屏幕(使用A或N卡自身的HDR API时例外,见第4.项),这时候如果用madVR播放HDR影片并选择第一项"passthrough HDR content to the display",如果是Intel内显,OS/GPU会自己做一个质量比较低的HDR-> SDR 转换,这时候HDR影片看起来还是OK的,但质量差强人意。SDR影片则不受影响,仍然是完美的。

3.打开"HDR andAdvanced Color" 这选项的话PC永远会送HDR内容给屏幕(使用win10内建的API),这时候madVR选择"passthrough HDR content to the display"的话,播放HDR影片时是完美的,但播放SDR影片时,OS/GPU会自己做SDR ->HDR 转换,这时候SDR影片看起来还是OK的,但质量称不上完美。非影片的部分,像桌面跟网页那些,也可能造成颜色异常。

4.Nvidia和AMD 自己的HDR API解决了上面提到的无法自动切换HDR跟SDR的问题,N卡和A卡使用者只要把win10的"HDR and Advanced Color" 这选项关掉,madVR就自动会使用显卡自己的HDRAPI,如此一来就可以自动切换屏幕的SDR和HDR模式,让SDR和HDR影片都可以的到最完美的播放效果。

5.N卡驱动建议更新到390.65之后版本,太旧的会不支持显卡自身的HDR API或是有bug。

6.AMD的HDR API限制较多,只能在10bitD3D11输出模式下使用,而且必须在全屏幕下才能使用,N卡的HDR API则无此限制。

7.除非A卡或N卡的HDR API无法正常运作,不然非常不建议去开win10自身的HDR选项。

===================================

Processing

deinterlacing

到"deinterlacing"这页,建议如图设定:

这边是关于是否启动去交错的一些判断原则,我们让madVR自己判断,并选择在怀疑时不启动去交错。

下方"only look at pixels in the frame center"这个选项只对film型式的交错式(隔行扫描interlaced)影片有影响,也就是说这选项在启动madVR的film mode时才有作用(文后有解释)

我们知道对于这类影片必须对其作IVTC让它还原成24p(60i→24p),但实际上我们有时候会发现录了一部电视播放的电影或动画下来,电视台常常在四边打上跑马灯或台标之类的东西,而这个跑马灯或台标却是video型式的interlaced讯号(真正的60i 无法IVTC),因此我们要作IVTC时如果是对整个画面的像素作侦测,遇到这种情形时就很容易产生误判。因此勾选这个选项时就只会对画面中央部分的像素作侦测,避开那些跑马灯或台标可能出现的位置以免作IVTC时产生误判,但缺点就是这样侦测的效率较低,遇到动画这类常常有静止画面的影片在侦测是哪一类pulldown时就会花比较久的时间。如果会看电视台播放的电影或动画的话,建议勾选此选项,如果是看DVD原盘的话,则建议取消勾选。

这选项对progressive的影片完全没有影响,如果照字面理解为这选项不利于动画的话那是错误的理解,因为很多动画片源只要是蓝光或是录制下来压制时做过IVTC的,都会是progressive而非interlaced。电视台录制下来的原始TS檔或是DVD原盘才有可能是interlaced。

zoom control

接下来到zoom control这项,这边是设定画面缩放的一些控制条件,一般来说并不需要做任何设定,不过某些情形下这些选项是很有用的,这边稍微解释一下各个选项及其可能适用的范围

“disable scaling if image size changesby only”:设定片源跟目标分辨率低于几个像素时不执行缩放演算,而以添加黑边代替

“move subtitles”:移动字幕到画面底部或是影片可视范围内(搭配下面的侦测跟移除黑边功能)

“automatically detect hard coded blackbars”:自动侦测影片内部的黑边,这里的黑边,并不是指影片比例跟屏幕比例不一样产生的那种黑边,而是指影片编码时就被包含在其中的黑边,这边我举两个例子来说明。

例1:很多电影是用21:9这种超宽比例来拍摄,但是发行BD时,仍然按照规范采用16:9的画面比例编码(影片分辨率1920*1080),也就是会在21:9的画面中加入上下两道黑边让它变成16:9的画面(如下图所示),这在一般16:9或16:10的显示器上播放当然没有什么问题,但是如果在21:9的显示器上播放的话,就会变成除了上下两道黑边外再加上左右两道黑边,因为要把16:9的画面塞到21:9的显示器中,不破坏画面比例的话左右必然会有黑边。但我们可以发现它的影像实际画面范围就是21:9,明明放到21:9屏幕上却白白多加了上下左右四道黑边,这是一种浪费,于是madVR这个选项就是让它去侦测出实际的画面范围,以便让21:9的影像内容确实填满21:9的屏幕,不用浪费在四道黑边上面。

而就算我们在16:9的显示器上播放这类影像,用这功能把实际的画面范围抓出来的话,亦可以减少渲染输出时的效能消耗,因为渲染的范围减少了(例如原本连黑边要渲染1920*1080的分辨率范围,抓出实际范围后只渲染有画面的1920*823的那部分)

例2:有些SD的讯号源,像电视的SD频道,它的比例都是4:3(640*480),但其实里面的节目有些是16:9的画面,只是它塞在4:3的框架里去播,多加了上下两道黑边,如果放到16:9的屏幕上看的话,左右也会多出黑边(如下图),一样也是白白浪费了上下左右四道黑边的范围。这选项也是可以把16:9的画面抓出来填满16:9的屏幕

继续解释一下下面的子选项

“if black bars change pick one zoomfactor”:如果黑边改变的话选取一个缩放比例

  • 不损失任何画面内容为原则
  • 砍除25%黑边
  • 砍除50%黑边
  • 砍除75%黑边
  • 砍除全部黑边

“if black bars change quickly back andforth”:如果黑边改变很快速的话

  • 不切换缩放比例低于2秒、5秒、15秒或45秒
  • 选定一个通用的缩放比例(不损失原则、25%黑边、50%黑边、75%黑边、全部黑边)

“notify media player about croppedblack bars”:多久通知一次播放器缩放比例改变(实时、2秒、5秒、15秒、45秒)

“always shift the image”:切齐画面顶部或是底部

“keep bars visible if they containsubtitles”:如果上面有字幕的话保留黑边(字幕出现后保留黑边5秒、15秒、45秒、3分、10分、30分、90分或永远)

“cleanup image borders bycropping”:除了黑边外也切掉一些实际画面边缘(给一些边缘比较糟糕的影像使用),可切1~7个像素,从有移除黑边的地方切或是不管有没有黑边直接切

“if there are big black bars”:有大范围黑边的话,直接移除25%、50%、75%或全部黑边并放大影像(有超出屏幕范围可能,小心使用)

“zoom small black bars away”:有小范围黑边的话直接裁掉放大,不过为了维持原画面比例会多裁到一点实际画面 (不是很确定,待确认)

“crop black bars”:勾选后会把片源视为裁切黑边后的分辨率跟宽高比例去处理,会影响到profile的判定(如果有设置的话)

请注意,如果你觉得影片有被切的怪怪的情形发生时,请先把zoom control底下的选项都先全部取消勾选看看

image enhancements

接下来到image enhancements这项,这个选项是针对影片本身锐利度不足的片源,经由勾选的算法进行锐利化处理,其处理是在放大演算之前(pre-processing),所以对于1:1呈现的影像也有效果。在这边,不论选择哪一种算法,锐化的效果都相当显著,但相对的,片源中的缺陷(噪声)也很容易被凸显出来,跟后面的upscaling refinement(post-processing)比较起来,同样的锐化算法,副作用也会更明显,故**不建议当作常驻选项。**这边建议是制作Profile,像下图那样,第一个Profile是常驻,不勾选任何锐化算法的,其他Profile则有开锐化算法,并设定热键,视片源需要用热键来开启锐化算法。

关于image enhancements的锐化算法,理论上是越干净的片源越适合开,而且应该是有需要才开,有些片源锐化后整体观感不见得比较好。如果片源不够干净,你觉得有需要锐化,也可以开,自行取舍,看锐利度跟细节的提升愿不愿意用画面噪声或是锯齿变多这个代价去换。个别算法的简介到upscaling refinement那边一起写。

artifact removal

接下来到artifact removal这项

“reduce banding artifact”

banding,即色阶断层或称色带, google一下就能看到一堆范例图了,这个选项是debanding(去色阶断层)功能,ffdshow video decoder里面也有个"去断层",跟这个基本上是一样的作用,但madVR的debanding因为处理的精度更高,侦测像素变化的机制更好,故效果会比ffdshow video decoder里面的去断层更好,使用这个的话就不需要再使用ffdshow video decoder的去断层了。

第一个选项是一般画面的debanding强度,第二个选项是光影淡入淡出时的debanding强度,建议设置如下,保持在low就有不错的效果,或是第二个选项可以选择medium或high,因为光影淡入淡出是比较容易出现banding的地方,但基本上还是看片源而定。越高的设定有越好的debanding效果,不过相对的也可能损失一些画面细节。

这个选项会吃掉一些显卡效能,但不会太多,显卡不差的话建议常时保持在low,有一定的debanding效果,而且几乎不会吃到画面细节。

不过对于一些4K"原生"10bit以上的影片而言,比较不容易出现banding,这个选项就不需要开,可以省下一些效能,像我自己是设一个profile让它播放4K 10bit的影片时不启用

这边也简单讨论一下banding,维基上有个简介:

色彩带 - 维基百科,自由的百科全书 (wikipedia.org)

基本上,我们现在可以取得的大部分片源,包括BD,或电视台播送的讯号,RGB都是只有8bit的色深而已,也就是说,电影母带在制作成BD时就可能会有banding产生了。再来,如果我们对BD或电视讯号再进行压制编码,由于流量或色深的不足,这个过程也可能再产生banding(这也是为何现在有人喜欢用10bit压制影片的原因,因为在同量的流量下可以很好的抑制banding的产生)。再来,影片都是以YUV色域储存的,在计算机上播放时还必须经过YUV→RGB的转换以及Y/C伸张(16235伸张成0255),这个转换的过程如果精度不够高也可能产生banding,而madVR本身的高精度转换和dithered输出就很好的避免了这个步骤下banding的产生,但别忘了我们无法控制来自片源的banding,所以madVR才又加入debanding的算法来进一步消灭掉所有的banding问题,这也是为何我会建议把这个选项常时开启的原因,就算是观看BD原盘它还是有作用在的。

这边提供一个测试影片:

梯度-2k (mediafire.com)

各位可以试试看在EVR-CP底下关闭全浮点运算、EVR-CP开启全浮点运算、madVR默认值、madVR启用debanding这四种状况来比较banding的差异,基本上第一种情形banding最明显,第二、第三种会有接近的结果,第四种则几乎没有banding了,色阶的过渡会非常平滑。

这边也提供一个madVR的debanding改善压制过程产生的banding的范例,看到以下四张图片(点图放大):

madVR无开启debanding,可发现渣介脸上有明显条纹

开启debanding,low

开启debanding,medium

开启debanding,high

可见low就有不错的效果了,诸如此类各位可自行测试,针对不同的片源,善用热键或是profile来设置必要的debanding强度。(profile的使用方法我PO在另一篇文中介绍)

而下面的"reduce ringing artifects",要先认识一下ringing,详细请看WIKI:

振铃效应 - 维基百科,自由的百科全书 (wikipedia.org)

madVR里的众多算法,很多都有搭配anti-ringing滤镜,就是为了抑制这个震铃效应。而这边这个选项,则是为了处理影片本身就存在的ringing,影片会有ringing出现,通常是高分辨率的母片在后制成较低分辨率的产品输出时(例如DVD),使用了较差的降频算法时产生的。这个选项比较没必要常驻开启,而是明显观察到影片上有ringing时再开就好了(可设定热键)。下面的子选项,“reduce dark halos around bright edges, too”,是针对明亮物体边缘的深色系光环(这类似乎在黑白电影比较常见),这选项不适用在动画类。

以下是一组有明显ringing的例子,跟deringing后的效果(点图放大):

原图

deringing

接下来看到"reduce compression artifacts",以下简称RCA,此项作用为去除压缩失真,严格来说它具备有去除区块失真(deblocking)、画面噪声跟噪点的作用,但缺点就是可能会对画面细节造成破坏,故不建议常驻使用,建议设置热键在需要时手动开启即可。其可调强度为114,强度越高,画面净化效果越强,但相对的画面细节也会被抹去越多,画面可能变的平面化,失去立体感,因此使用上需注意,建议在画面净化效果可接受的情况下尽可能选择较低的强度。以个人经验来说,真人影片类大部分开16之间即可,动画类6~10之间,但这非准则,实际仍要视当下片源状况而定,有些干净的片源根本不需要开,有些则是开了发现细节被破坏,这时就必须降低强度,有些片源噪声失真非常严重,这时就需要增加强度。

qualily的部分,则是处理的质量,very high的质量最好,能够更精确的判断噪声跟细节,high次之,依此类推,但从high到very high所增加的效能消耗非常多,而且跟影片放大的目标分辨率成正比,须注意。(如果不搭配NGU sharp使用的话,建议开到high就好)

底下子选项"process chroma channels, too",如果勾选的话,RCA也会在chroma升频时介入处理,但会消耗较多的效能,而且chroma升频时做RCA的效果并不明显,因此并不建议勾选此选项。(这项不勾选的时候,RCA就只有在luma升频时才会介入,因此影片1:1播放时就不会有RCA的效果)

子选项"activate only if it comes for free(as part of NGU sharp)",这项勾选的话则RCA将只有在升频算法使用NGU sharp的时候启用后才会有作用,但是完全不会增加任何额外的效能消耗,勾选后qualily的部分视NGU sharp的运算强度是使用low、normal、high还是very high,而自动对应,但是不管如何对应,RCA的部分都不会增加额外效能消耗,因此如果升频算法使用NGU sharp的话强烈建议勾选此选项,但如果升频算法不是用NGU sharp的话则不要勾选,否则RCA启用后也不会有作用。

最后是"reduce random noise",以下简称RNN,此项作用为去除粒状噪声跟噪点(denoise),其去除噪点的效果比上面的"reduce compression artifacts"还要显著许多,但相对的也更容易破坏画面细节,因此一样不建议常驻使用,建议设置热键在需要时手动开启即可。其可调强度为1~10,强度越高,去噪点效果越强,但画面细节破坏也越严重,须谨慎使用。

子选项"process chroma channels, too"的部分同RCA

以下提供一些RCA跟RRN的效果范例:

640x480→1440x1080 NGU-sharp (点击放大)

640x480→1440x1080 NGU-sharp+RCA 5 (点击放大)

640x480→1440x1080 NGU-sharp+RRN 3 (点击放大)

640x480→1440x1080 NGU-sharp (点击放大)

640x480→1440x1080 NGU-sharp+RCA 5 (点击放大)

640x480→1440x1080 NGU-sharp+RRN 3 (点击放大)

1280x720→1920x1080 NGU-sharp(点击放大)

1280x720→1920x1080NGU-sharp+RCA 6 (点击放大)

1280x720→1920x1080NGU-sharp+RCA 8 (点击放大)

1280x720→1920x1080NGU-sharp+RCA 10 (点击放大)

1280x720→1920x1080NGU-sharp+RCA 14 (点击放大)

选项热键设置

另外介绍一下这边热键设置的几种方法

第一,可以到keyboard shortcuts底下,找到我圈起来的那几项,会调到的几项,后面自己输入习惯的热键

  • debanding - toggle strength (debanding强度切换)

  • debanding - toggle on/off (debanding开关)

  • debanding custom settings - toggle (debanding自定义参数切换)

  • deringing - toggle (deringing开关)

  • deblocking - toggle (RCA开关)

  • deblocking strength - increase (RCA强度增加)

  • deblocking strength - decrease (RCA强度降低)

  • denoise - toggle (RRN开关)

  • denoise strength - increase (RRN强度增加)

  • denoise strength - decrease (RRN强度降低)

第二,设置profile,并以组别设置热键方便快速切换,并搭配上面的强度热键快速调整,例如下图,我设置了"Tab"跟"Back"两个热键来快速切换两组profile: