View Full Version : madVR - high quality video renderer (GPU assisted)
JarrettH
5th November 2015, 07:33
I can't see wanting to use additional post processing on top of a sharp scaler. A picture should look effortless.
aufkrawall
5th November 2015, 11:52
Postprocessing isn't evil by definition. Hardly anyone would suggest to use Jinc or super-xbr without AR filter. In fact, afair it is always enabled for super-xbr in the image doubling settings, since it rings so terribly.
Warner306
5th November 2015, 21:39
I can't see wanting to use additional post processing on top of a sharp scaler. A picture should look effortless.
SuperRes softens super-xbr. So the picture is not oversharpened. It is actually improved.
Thunderbolt8
5th November 2015, 22:18
SuperRes softens super-xbr. So the picture is not oversharpened. It is actually improved.but if its really improved from a rather objective point of view then it would be a default setting, wouldnt it?
aufkrawall
5th November 2015, 22:34
As I already said, SuperRes doesn't like ringing.
I wouldn't use SuperRes with super-xbr. Instead I'd use super-xbr with a low sharpness setting + Adaptive Sharpen, then ringing is far less of a problem.
NNEDI3 64 quadrupling + SR (strength 3, sharpness 1, ll off):
http://abload.de/thumb/needi36447uby.png (http://abload.de/image.php?img=needi36447uby.png)
super-xbr 100 + SR:
http://abload.de/thumb/super-xbr100bzus8.png (http://abload.de/image.php?img=super-xbr100bzus8.png)
Jinc AR + SR:
http://abload.de/thumb/jincark8ba5.png (http://abload.de/image.php?img=jincark8ba5.png)
super-xbr simply looks terrible in this example. I'd even prefer Jinc, as it has less ringing problems.
NNEDI3 + SuperRes is best by far.
Warner306
5th November 2015, 22:56
Your findings back-up the previous test images. super-xbr has more ringing but less aliasing. That seems pretty clear. SuperRes was said to have the most problems with aliasing, which is why it was recommended to be used with NNEDI3 or super-xbr.
The simple nature of animation makes it unappealing as a test for image upscaling. Faces and detailed backgrounds with many surfaces show the differences in detail far better. But that is just my opinion.
I still like super-xbr. I don't think there is a right or wrong answer. The desire to have a sharp vs soft picture would have a lot to do with this preference.
har3inger
5th November 2015, 23:12
As far as I've seen, super-XBR doesn't really add much ringing from upscaling, but rather preserves source ringing a lot more than nnedi3 does. Also, in terms of sharpness, SuperXBR 75 is about the same as jinc3, so those two would be a fairer comparison for how badly each rings.
A bigger problem seems to be the way small details with high contrast (pupils in eyes) get fairly messed up when sharpness is set lower than 2 for superres. In the blonde's eyeballs, the pupils get extra white dots in them that shouldn't be there. If it's anything like the images I've been testing, the problem fixes itself at sharpness 2 and 3 (but 3 tends to be pretty aliased).
For clean sources, SuperXBR + SuperRes for 720p->1080p (CR downscale) has no ringing problems in my experience. I don't think it's fair to compare it to nnedi3, which is a lot better at cleaning up source ringing artifacts compared to any other madvr scaler.
Warner306
5th November 2015, 23:16
As far as I've seen, super-XBR doesn't really add much ringing from upscaling, but rather preserves source ringing a lot more than nnedi3 does. Also, in terms of sharpness, SuperXBR 75 is about the same as jinc3, so those two would be a fairer comparison for how badly each rings.
A bigger problem seems to be the way small details with high contrast (pupils in eyes) get fairly messed up when sharpness is set lower than 2 for superres. In the blonde's eyeballs, the pupils get extra white dots in them that shouldn't be there. If it's anything like the images I've been testing, the problem fixes itself at sharpness 2 and 3 (but 3 tends to be pretty aliased).
For clean sources, SuperXBR + SuperRes for 720p->1080p (CR downscale) has no ringing problems in my experience. I don't think it's fair to compare it to nnedi3, which is a lot better at cleaning up source ringing artifacts compared to any other madvr scaler.
At 720p -> 1080p, I notice the image appears "fatter" when Jinc is used with SuperRes as opposed to super-xbr + SuperRes. I assuming this difference comes down to aliasing on edges.
Ver Greeneyes
5th November 2015, 23:25
A bigger problem seems to be the way small details with high contrast (pupils in eyes) get fairly messed up when sharpness is set lower than 2 for superres. In the blonde's eyeballs, the pupils get extra white dots in them that shouldn't be there. If it's anything like the images I've been testing, the problem fixes itself at sharpness 2 and 3 (but 3 tends to be pretty aliased).
That's pretty interesting. I've been wondering what settings for the new SuperRes would be good - I figured Sharpness = 1 was just a reasonable default, but it sounds like that's not the case (I didn't try resetting my settings to find out what the defaults were).
aufkrawall
5th November 2015, 23:42
SuperRes was said to have the most problems with aliasing, which is why it was recommended to be used with NNEDI3 or super-xbr.
I suspect this is a huge misunderstanding in general regarding SuperRes.
SuperRes reintroduces aliasing of the source when it has been filtered away by upscaling (NNEDI3 has a very strong AA effect).
I haven't seen a single case where SuperRes really introduces aliasing which isn't supposed to exist.
There have been ground truth comparisons here which showed aliasing problems with SuperRes, yes. But the aliasing was probably introduced by downscaling the image with linear light first.
This is e.g. the case with the lighttower example of leeperry. When you downscale it in gamma light, there is no aliasing visible when upscaling it again and applying SuperRes.
We btw. also still have the radius option in madVR, a higher value will lead to less aliasing (but probably also less sharpness).
In fact, SuperRes can even repair aliasing introduced by upscaler. But this functionality is not endless, so an upscaling algorithm with fewest aliasing is still preferred (which is again NNEDI3 with enough neurons).
The simple nature of animation makes it unappealing as a test for image upscaling. Faces and detailed backgrounds with many surfaces show the differences in detail far better. But that is just my opinion.
I have to disagree. (Mostly) clean lines show the characteristics of an algorithm very well, which makes it easy to spot weaknesses.
Of course this alone is not comprehensive enough to judge finally, but I still find it very important.
As far as I've seen, super-XBR doesn't really add much ringing from upscaling, but rather preserves source ringing a lot more than nnedi3 does.
I'd rather call it boost instead of preserve.
But on the other hand it's true that NNEDI3 filters away ringing, yes. SuperRes reintroduces some of it, since it's like correcting an upscaling error.
Also, in terms of sharpness, SuperXBR 75 is about the same as jinc3, so those two would be a fairer comparison for how badly each rings.
It was meant in context of SuperRes fixing upscaling errors.
I think it just doesn't work well with super-xbr, as even tiny amounts of ringing can get nasty with super-xbr + SR (even with a sharpness option of 1, default is 2 which boosts ringing a lot more).
A bigger problem seems to be the way small details with high contrast (pupils in eyes) get fairly messed up when sharpness is set lower than 2 for superres. In the blonde's eyeballs, the pupils get extra white dots in them that shouldn't be there. If it's anything like the images I've been testing, the problem fixes itself at sharpness 2 and 3 (but 3 tends to be pretty aliased).
I think it's a problem of the source, I wouldn't put too much meaning into it.
x7007
6th November 2015, 04:08
Does anyone have issue with Potplayer and the new drivers nvidia 358.87 ? I have prender always at 0 ( GPU 95% with madvr and EVR , non CUVID or DXVA Back-to)
EDIT Never mind, I think something with Asus GPU Tweak 2 messed thing up, after restart everything ok including the overclock
JarrettH
6th November 2015, 04:15
I'd like to see more film examples too. Are there not any movie watchers here? :p
From Cube (1997)
Original at 100%
https://c2.staticflickr.com/6/5743/22194661404_28133b4b6a_o.png
xbr75 doubling, then Catmull + LL+AR downscaling
https://c1.staticflickr.com/1/746/22629406000_576e5980ff_o.png
xbr100 doubling, then Catmull + LL+AR downscaling
https://c1.staticflickr.com/1/627/22399043538_d0845b12c0_o.png
No upscaling refinement, sorry.
I think 100 is more faithful, but a tad too sharp.
Warner306
6th November 2015, 06:58
I'd like to see more film examples too. Are there not any movie watchers here? :p
From Cube (1997)
Original at 100%
https://c2.staticflickr.com/6/5743/22194661404_28133b4b6a_o.png
xbr75 doubling, then Catmull + LL+AR downscaling
https://c1.staticflickr.com/1/746/22629406000_576e5980ff_o.png
xbr100 doubling, then Catmull + LL+AR downscaling
https://c1.staticflickr.com/1/627/22399043538_d0845b12c0_o.png
No upscaling refinement, sorry.
I think 100 is more faithful, but a tad too sharp.
The ringing is much harder to detect in that image. If anything, the 100 seems to mask the ringing better than 75 due the extra sharpness.
But the image is definitely not offensive. It is very sharp, though, to be certain.
seiyafan
6th November 2015, 19:31
For 1080 to 1440, has there any effort been done in comparing one step upscaling vs. doubling then downscaling? (Jinc vs. xbr/NNEDI3 then Catmull)
har3inger
6th November 2015, 21:17
I did some comparisons with SuperRes and nnedi3 (32 neuron) to demonstrate the problem with Sharpness 1. All of these are also radius 0.66 and linear light unless otherwise indicated.
No SR (alignment off because nnedi3 introduces pixel shift) : http://i.imgur.com/wS8TZUw.png
Str 4 Sharp 1: http://i.imgur.com/q9Q0elg.png
Str 4 Sharp 2: http://i.imgur.com/Q9IP9JU.png
Str 4 Sharp 3: http://i.imgur.com/pQdX4EW.png
Str 4 Sharp 4: http://i.imgur.com/86MVCvM.png
Str 4 Sharp 1 Radius 0.33: http://i.imgur.com/zCoqUCg.png
Str 4 Sharp 1 Radius 0.33 (extremely obvious bugs on the old man): http://i.imgur.com/W2xMJJF.png
For all of these, the easiest area to spot the enhancements/bugs is around the white hat.
IMO, Sharp 2 is closest to the original in terms of edge enhancement. Sharp 1 looks broken. Sharp 3 and 4 are similar sharpness, and enhance the ringing beyond what's in the source.
bozokaydin
6th November 2015, 23:58
Anyone can tell me what is the best setup for 1080p content? For 1080p content on 1080p screen does chroma superres work without upscaling? And i am a bit confused what is the difference in chroma superres and upscaling refinement superres?
Warner306
7th November 2015, 01:05
For 1080 to 1440, has there any effort been done in comparing one step upscaling vs. doubling then downscaling? (Jinc vs. xbr/NNEDI3 then Catmull)
There will be little to no difference unless you are using SuperRes. SuperRes is more effective when used with Image Doubling.
aufkrawall
7th November 2015, 12:36
I've never seen a real difference between Jinc AR or image doubling for 1080p -> WQHD, neither with SuperRes. I'm watching every 1080p video upscaled to WQHD.
Jinc AR + SR (strength 3, sharpness 2, LL off):
http://abload.de/thumb/jincs5a9s.png (http://abload.de/image.php?img=jincs5a9s.png)
superxbr 100 + SR:
http://abload.de/thumb/super-xbr100ftx7r.png (http://abload.de/image.php?img=super-xbr100ftx7r.png)
madshi
7th November 2015, 14:13
But are you sure that you put the right Adaptive Sharpen version into it?
It still gives me a very noticeable brightness increase with a strength of 0.5, which is not the case with the shaders linked by bacondither.
Are you sure you used the same strength in both? I've double checked and compared and if I setup the same strength, I get a similar increase in brightness in madVR's version and the latest experimental shaders. Please note that madVR runs the shaders in TV levels instead of PC levels, which means you may have to fine tune strength a bit to get the same effect. I think I used 1.0 strength in the shaders, and 0.9 in madVR, and got pretty much identical results.
The brightness increase totally vanishes if I run AdaptiveSharpen in linear light. So my impression is that the fix implemented by bacondither is not sufficient yet.
If you have a different opinion then please post comparison screenshots where using the shader HLSL files shows less brightness increase than madVR's implementation, although you've carefully matched sharpeness strength.
Thanks madshi and nevcairiel, subtitle positioning is working well. The keep black bars visible if they contain subtitles option has stopped working in newer builds, none of the settings are working.
Are you sure? It seems to work fine here. If you can reproduce it, please send me a small sample of the video with which I can reproduce the problem on my PC, and tell me which exact checkboxes are set in the "zoom control" page.
I've watched LOTR 1000 times, but now I can watch it 1000 more times upside down! Sweet :p
Haha, yes! Will you lie upside down when watching it, though?
Would be scaling, can't duplicate the issue with previous or latest build.
Ok, if you can't duplicate then let's ignore it for now.
A feature request, if possible: some keyboard shortcut to switch the display refresh rate.
Maybe later. There's no easy way to implement it now.
Is there a keyboard shortcut to toggle black bar detection or cropping? I don't need black bar detection that often, and there will probably always be videos on which it doesn't quite work, but I'd like to be able to enable it easily when the black bars are obvious and consistent.
Wouldn't it make more sense to try and perfect the detection so that it "always" works? Then you wouldn't ever have to switch it off. I don't really like if algos are unstable, so that you have to manually enable/disable them. I want madVR you to be able to configure madVR once and then never touch the settings again.
I would welcome a proper implementation of frame duration display [more than ...]
Such an implementation already exists: Switch your display to 60Hz and enable smooth motion FRC.
Umm... If this is my wish realization - it's work not as expected. In my case this variable always equal to the name of first device in devices list, not actual device of player window :confused:
Yes, that was meant to be your wish realization. Oh, will have to double check that.
is it intentional that the hidden option to show the black bar detection using the ShowBlackBars empty file doesn't actually work if the "crop black bars" option is not enabled?
No, it's supposed to always work. Will check that.
I'd like also to ask a question about the new rotation feature.
Is it intentional that the subtitles (both external and internal ones) are rotated together with the picture ... and moved almost to the center of the image?
Honestly, do you have any videos which need rotation *and* have subtitles?? I thought about subtitles, but it's pretty hard to implement correctly, and my thinking was that videos that need rotation are very unlikely to have subtitles. So I simply didn't spend any time on working on rotated subtitles. If you have legit files which need rotation and have subtitles, please let me know where they come from and why they are rotated. Then I'll think about whether it's worth spending time on...
Fair enough. I'd settle a simple deblocker that has 3 settings like the debanding.
Unfortunately there is no good deblocker available anywhere that I've seen. So I'd have to invest one myself. Maybe some day, but not soon.
Unfortunately you are correct- many authoring studios don't use dithering at all have no clue what to do with it :)
Been in few big places and it was very disappointing.
Hope you're spreading the word where you can... :)
Bug report: Once the interlaced flag is activated midstream MadVR sees it as interlaced for the remainder of the duration even if the stream switches back to reporting progressive.
Does EVR behave differently? Switching DXVA deinterlacing on/off is a complicated thing in madVR. Doing it all the time when the video switches those flags on/off could introduce a small stutter every time that happens. So I'm not sure if that's a good idea. How often does your stream switch back and forth?
I'm attaching some screenshots regarding the "issue" with subtitles positioning.
The first screenshot is of the original video, 1916x1076, without black bars.
The other two screenshots are taken with the video shown in full screen at 1920x1200, where black bars are added.
Embedded subtitles are partially shown in the bottom black bar, while external ones aren't.
Both should be definitely rendered by XySubFilter since modifying the timing through its properties window affects both subs.
Hmmm... And both embedded and external ones are SRT? Can you maybe make a small sample of that video available to me, with the external subtitle file? (You can use PM for that.)
super-xbr has very big problems with ringing, you have to sacrifice a lot of sharpness to get to an acceptable ringing level if the source isn't optimal.
The last part is very important: "if the source isn't optimal". It's true that super-xbr "enhances" ringing artifacts that are already in the source, while NNEDI3 instead reduces them. That's one of the very nice things about NNEDI3. super-xbr should not introduce new ringing artifacts if the source is clean. But already existing ringing artifacts are enhanced the same way valid lines and details are enhanced. I'm not sure if it's fair to fault super-xbr for that.
Today many Blu-Rays are relatively clean with only low amount of ringing. I think for those super-xbr should work pretty well. If you are watching a lot of low quality content with strong ringing in it, then obviously NNEDI3 is the much better choice for that.
I've read madshi prefers super-xbr to Jinc. And past posts have found NNEDI3 and super-xbr are the best algorithms to use with SuperRes because they are sharper.
Yes, that's true. I still like super-xbr quite a lot, especially for its quality-to-performance ratio. But aufkrawall has a valid point saying that super-xbr might not work so well for sources that have a lot of hard coded ringing in them. Maybe that will change if at some point I manage to find a good source deringing algorithm. Don't have one at this point, though.
sharpness values over 75 can introduce a lot of artifacts.
I wouldn't say that. Using sharpness values over 75 should not introduce artifacts. But it might enhance already existing artifacts. Which is a quite important difference.
but if its really improved from a rather objective point of view then it would be a default setting, wouldnt it?
If every user had an NVidia Titan GPU then the default settings would be different to what they are now.
As far as I've seen, super-XBR doesn't really add much ringing from upscaling, but rather preserves source ringing a lot more than nnedi3 does. Also, in terms of sharpness, SuperXBR 75 is about the same as jinc3, so those two would be a fairer comparison for how badly each rings.
[...]
For clean sources, SuperXBR + SuperRes for 720p->1080p (CR downscale) has no ringing problems in my experience. I don't think it's fair to compare it to nnedi3, which is a lot better at cleaning up source ringing artifacts compared to any other madvr scaler.
Agreed.
I haven't seen a single case where SuperRes really introduces aliasing which isn't supposed to exist.
With this test image (which you found, IIRC), SuperRes does introduce a certain amount of aliasing:
http://madshi.net/SuperResTest.png
I've been using this test image to do some more SuperRes related tests. Here are my conclusions:
1) Linear light vs gamma light: If you downscale the image in LL, and then use SuperRes with GL, the lines get too thin. If you downscale the image in GL, and then use SuperRes with LL, the lines get too thick. The only way to reproduce the proper line thickness is to use either GL or LL for both downscaling and SuperRes. Which means that unfortunately I will probably not be able to remove the "linear light" SuperRes option, because the optimal value will not be the same for all sources.
2) Using linear light, different SuperRes sharpness values produce different artifacts. It seems that a sharpness value of 2 produces the least amount of artifacts.
3) A radius of 0.66 produces some aliasing. A radius of 1.00 means SuperRes adds no aliasing, but SuperRes also loses some of its effectiveness/sharpness. Values between 0.66 and 1.00 show some aliasing and some sharpness loss. I'm not sure which radius I should use. Maybe a compromise would be 0.80 or something like that?
A bigger problem seems to be the way small details with high contrast (pupils in eyes) get fairly messed up when sharpness is set lower than 2 for superres. In the blonde's eyeballs, the pupils get extra white dots in them that shouldn't be there. If it's anything like the images I've been testing, the problem fixes itself at sharpness 2 and 3 (but 3 tends to be pretty aliased).
I did some comparisons with SuperRes and nnedi3 (32 neuron) to demonstrate the problem with Sharpness 1. All of these are also radius 0.66 and linear light unless otherwise indicated.
No SR (alignment off because nnedi3 introduces pixel shift) : http://i.imgur.com/wS8TZUw.png
Str 4 Sharp 1: http://i.imgur.com/q9Q0elg.png
Str 4 Sharp 2: http://i.imgur.com/Q9IP9JU.png
Str 4 Sharp 3: http://i.imgur.com/pQdX4EW.png
Str 4 Sharp 4: http://i.imgur.com/86MVCvM.png
Str 4 Sharp 1 Radius 0.33: http://i.imgur.com/zCoqUCg.png
Str 4 Sharp 1 Radius 0.33 (extremely obvious bugs on the old man): http://i.imgur.com/W2xMJJF.png
For all of these, the easiest area to spot the enhancements/bugs is around the white hat.
IMO, Sharp 2 is closest to the original in terms of edge enhancement. Sharp 1 looks broken. Sharp 3 and 4 are similar sharpness, and enhance the ringing beyond what's in the source.
Thanks! These results match my own tests I've done today (see above for a summary of my test results).
I'm wondering whether I should remove the SuperRes sharpness setting again and hard code it to 2, since it seems to be the one which produces the most faithful reconstruction of the "ground truth"?
Murmeltier
7th November 2015, 14:14
What are the advantages of "dithering in linear light"? Or more generally: What is linear light good for when it comes to dithering? What happens to the picture if I choose "don't dither in linear light" under "trade quality for performance"?
madshi
7th November 2015, 14:22
What are the advantages of "dithering in linear light"? Or more generally: What is linear light good for when it comes to dithering? What happens to the picture if I choose "don't dither in linear light" under "trade quality for performance"?
In "devices -> your display -> properties" set your display to 3bit. Then compare dithering with linear light on/off, and you will see the difference.
Ver Greeneyes
7th November 2015, 14:25
Wouldn't it make more sense to try and perfect the detection so that it "always" works? Then you wouldn't ever have to switch it off. I don't really like if algos are unstable, so that you have to manually enable/disable them. I want madVR you to be able to configure madVR once and then never touch the settings again.
I agree, but I wonder if it's possible. I was watching a stream of Undertale the other day, a game that has a lot of black in it (the palette during battles is mostly black and white), and the algorithm seemed to get confused, occasionally cropping out even non-black areas. On another occasion, it cut off part of someone's webcam, which was partially overlaid on the game.
These videos aren't readily available since I had to download them off twitch and Youtube, but maybe I can make a reduced sample. Unfortunately that might involve large parts of the video to find where it goes wrong, which I'm not sure I have time for.
madshi
7th November 2015, 14:43
Umm... If this is my wish realization - it's work not as expected. In my case this variable always equal to the name of first device in devices list, not actual device of player window :confused:
Seems to work fine here. Are you sure?
I agree, but I wonder if it's possible. I was watching a stream of Undertale the other day, a game that has a lot of black in it (the palette during battles is mostly black and white), and the algorithm seemed to get confused, occasionally cropping out even non-black areas. On another occasion, it cut off part of someone's webcam, which was partially overlaid on the game.
These videos aren't readily available since I had to download them off twitch and Youtube, but maybe I can make a reduced sample. Unfortunately that might involve large parts of the video to find where it goes wrong, which I'm not sure I have time for.
Hmmmm... How about setting up a profile then which enables black bar detection for videos which have a typical movie resolution (use "uncroppedSrcWidth" and "uncroppedSrcHeight"), e.g. for 1920x1080, 720x480 and 720x576 videos? That would cover PAL DVD, NTSC DVD and HD.
leeperry
7th November 2015, 14:49
I'm wondering whether I should remove the SuperRes sharpness setting again and hard code it to 2, since it seems to be the one which produces the most faithful reconstruction of the "ground truth"?
My real world tests also made me prefer St4/Sh2 from the get-go but in cases when sxbr25 is too soft and sxbr50 too sharp it seems somewhat reasonable to go St4/Sh1, of course I'd far prefer a sxbr strength slider.
It would also be great if chroma SR could get the same update as luma SR if any possible please.
onyx76
7th November 2015, 14:52
Hello, anyone have any suggestions to improve my settings?
LAV filter decoder=software.
madVR DX11 FSE (1080P24/1080P60)
Output: 10 bit madVR + 12 bit Nvidia control panel -> Sony Bravia XBR-46HX929.
SD:
• Chroma: Jinc + AR
• Image: Jinc + AR
• Double Luma: 1.2x or greater - NNEDI3 64 Neurons
• Double Chroma: 1.2x or greater - NNEDI3 32 Neurons
• Quadruple Luma: 2.4x or greater - NNEDI3 64 Neurons
• Quadruple Chroma: 2.4x or greater - NNEDI3 32 Neurons
• Downscaling: Catmull-Rom + AR + LL
• Upscaling Refinement: Adaptive Sharpen (strength: 0.2)
• Artifact Removal - Debanding: Low/High
• Image Enhancements: Off
• Dithering: ED2 + Use Colored Noise
720P:
• Chroma: Jinc + AR
• Image: Jinc + AR
• Double Luma: 1.2x or greater - NNEDI3 64 Neurons
• Double Chroma: Off
• Downscaling: Catmull-Rom + AR + LL
• Upscaling Refinement: Adaptive Sharpen (strength: 0.2)
• Artifact Removal - Debanding: Low/High
• Image Enhancements: Off
• Dithering: ED2 + Use Colored Noise
1080P:
• Chroma: Jinc + AR
• Image: Jinc + AR
• Double Luma: Off
• Double Chroma: Off
• Downscaling: Catmull-Rom + AR + LL
• Upscaling Refinement: Adaptive Sharpen (strength: 0.2)
• Artifact Removal - Debanding: Low/High
• Image Enhancements: Off
• Dithering: ED2 + Use Colored Noise
There is some advantage in using Super-xbr in Chroma?
What is better NNEDI3 + Adaptive Sharpen or NNEDI3 + SuperRes?
Ver Greeneyes
7th November 2015, 14:52
Hmmmm... How about setting up a profile then which enables black bar detection for videos which have a typical movie resolution (use "uncroppedSrcWidth" and "uncroppedSrcHeight"), e.g. for 1920x1080, 720x480 and 720x576 videos? That would cover PAL DVD, NTSC DVD and HD.That would work for DVDs, but I watch a lot of 1080p Youtube videos (1080p and 720p are both very common for Youtube and twitch). Anyway, I think it would be of more use to you if I just got you samples where it unexpectedly fails - I'll enable it and keep an eye out :)
nlnl
7th November 2015, 14:53
madshi
My config: W7, AMD 15.2 driver
The problem: When source is video (29,97) and "force video mode' option is on, display does not switch to 59 rate, but swtches to 23.
If I set to 'video mode' using keyboard shortcut display switches.
markanini
7th November 2015, 15:03
Does EVR behave differently? Switching DXVA deinterlacing on/off is a complicated thing in madVR. Doing it all the time when the video switches those flags on/off could introduce a small stutter every time that happens. So I'm not sure if that's a good idea. How often does your stream switch back and forth?
It was Intel QS decoding in LAV filters. Switching to DXVA2 or disabling hardware decoding solves the problem.
agustin9
7th November 2015, 16:24
madshi, quick question, could Error Diffusion be doubling the cpu usage? Thanks!
aufkrawall
7th November 2015, 18:03
Are you sure you used the same strength in both? I've double checked and compared and if I setup the same strength, I get a similar increase in brightness in madVR's version and the latest experimental shaders. Please note that madVR runs the shaders in TV levels instead of PC levels, which means you may have to fine tune strength a bit to get the same effect. I think I used 1.0 strength in the shaders, and 0.9 in madVR, and got pretty much identical results.
The brightness increase totally vanishes if I run AdaptiveSharpen in linear light. So my impression is that the fix implemented by bacondither is not sufficient yet.
If you have a different opinion then please post comparison screenshots where using the shader HLSL files shows less brightness increase than madVR's implementation, although you've carefully matched sharpeness strength.
Gonna send you results via PM.
The last part is very important: "if the source isn't optimal". It's true that super-xbr "enhances" ringing artifacts that are already in the source, while NNEDI3 instead reduces them. That's one of the very nice things about NNEDI3. super-xbr should not introduce new ringing artifacts if the source is clean. But already existing ringing artifacts are enhanced the same way valid lines and details are enhanced. I'm not sure if it's fair to fault super-xbr for that.
Today many Blu-Rays are relatively clean with only low amount of ringing. I think for those super-xbr should work pretty well. If you are watching a lot of low quality content with strong ringing in it, then obviously NNEDI3 is the much better choice for that.
Yeah, I said that super-xbr is mostly fine for BDs. :)
However, "mostly" is not "always" though. I don't know from what medium the Lighthouse example, which Warner306 posted, originates, but it shows some nasty haloing with super-xbr and it doesn't seem to be a crappy web video.
I wouldn't say that. Using sharpness values over 75 should not introduce artifacts. But it might enhance already existing artifacts. Which is a quite important difference.
With a sharpness of 100, you get very fat lines compared to NNEDI3, which is less of a case with a sharpness of 75 (which is mostly softer than NNEDI3). Due to the line thickening, aliasing gets more visible with cartoons.
With this test image (which you found, IIRC), SuperRes does introduce a certain amount of aliasing:
http://madshi.net/SuperResTest.png
This source however is already a bit aliased without any scaling (it has some ringing too).
I don't know about such fines structures. Maybe it is correct that they look aliased when they are upscaled, since this could be how the image would look like if it was created in that size in the beginning?
Maybe it's just a problem with very tiny pictures (or huge scaling factors).
I've been using this test image to do some more SuperRes related tests. Here are my conclusions:
1) Linear light vs gamma light: If you downscale the image in LL, and then use SuperRes with GL, the lines get too thin. If you downscale the image in GL, and then use SuperRes with LL, the lines get too thick. The only way to reproduce the proper line thickness is to use either GL or LL for both downscaling and SuperRes. Which means that unfortunately I will probably not be able to remove the "linear light" SuperRes option, because the optimal value will not be the same for all sources.
Yeah, I did a ground truth comparison with a game screenshot with bright and dark fonts which lead me to the same conclusion.
However, with content "in the wild", I've found the thickening of LL SR more annoying than the brightness increase of gamma light in the meantime. Image gets brighter, but unlike traditional sharpen filters, it doesn't look "bleached" to me. And white fonts hardly become thicker with GL SR unless they are really on a very dark to black background, unlike black letters with LL SR.
2) Using linear light, different SuperRes sharpness values produce different artifacts. It seems that a sharpness value of 2 produces the least amount of artifacts.
Yes. For this reason, I now use SR with the default values instead of strength 2 and sharpness 3. They end up mostly with the same sharpness and thanks to your optimizations, 3 passes are affordable now.
3) A radius of 0.66 produces some aliasing. A radius of 1.00 means SuperRes adds no aliasing, but SuperRes also loses some of its effectiveness/sharpness. Values between 0.66 and 1.00 show some aliasing and some sharpness loss. I'm not sure which radius I should use. Maybe a compromise would be 0.80 or something like that?
0.8 looks already blurrier to me. :(
This can make sense however with very low-res content or high scaling factors. What about simple heuristics that decide the radius depending on the scaling factor? With a high scaling factor, the effect of SuperRes is much more perceivable, so the slight regression of sharpness wouldn't hurt.
I'm wondering whether I should remove the SuperRes sharpness setting again and hard code it to 2, since it seems to be the one which produces the most faithful reconstruction of the "ground truth"?
Sharpness of 2 is definitely most useful.
Hm, but there could be the case when you want to use SuperRes, but can only afford 2 passes, and still you don't want to miss out on some additional sharpness. In this case, a sharpness of 3 could still make sense. Would probably still look better than additional LumaSharpen.
SweetLow
7th November 2015, 20:26
Seems to work fine here. Are you sure?
Yes.
With 3 devices in list (in that order):
Samsung LE40B530 HDMI
LG Display LP156WF4-SPB1
Dell 2707WFP
when attached 1 and 2 - variable display="Samsung LE40B530 HDMI" always
when attached 2 and 3 - variable display="LG Display LP156WF4-SPB1" always
this script (in group created for dithering):
if (display = "Samsung LE40B530 HDMI") "Samsung"
elseif (display = "LG Display LP156WF4-SPB1") "LG"
elseif (display = "Dell 2707WFP") "Dell"
else "None"
when only one device is active - variable is set right ("None" profile is never set actual)
madVR right to detect actual device (devices use different bitdepth in Exclusive FS so it's easy to check in debug OSD, correctly detect exact display rate, etc), but not set right variable.
madshi
7th November 2015, 22:27
My real world tests also made me prefer St4/Sh2
Sharpness of 2 is definitely most useful.
Good to hear we're all on the same page. So I've removed the sharpness option now and set it to the algo which produced the best results in my test (near to sharpness value 2, but not identical).
With a sharpness of 100, you get very fat lines compared to NNEDI3
Maybe the new line thinning algorithm in v0.89.14 helps? :)
This source however is already a bit aliased without any scaling (it has some ringing too).
I don't know about such fines structures. Maybe it is correct that they look aliased when they are upscaled, since this could be how the image would look like if it was created in that size in the beginning?
Maybe it's just a problem with very tiny pictures (or huge scaling factors).
I'm not sure. Of course we could just stick to a 0.66 radius and wait for users to complain about aliasing problems with real world material.
However, with content "in the wild", I've found the thickening of LL SR more annoying than the brightness increase of gamma light in the meantime.
Yes, same here.
Yes. For this reason, I now use SR with the default values instead of strength 2 and sharpness 3. They end up mostly with the same sharpness and thanks to your optimizations, 3 passes are affordable now.
[...]
Hm, but there could be the case when you want to use SuperRes, but can only afford 2 passes, and still you don't want to miss out on some additional sharpness. In this case, a sharpness of 3 could still make sense.
Strength is not the same as passes. Strengths 2 and 3 have the same performance in madVR.
Hello, anyone have any suggestions to improve my settings?
• Double Luma: 1.2x or greater - NNEDI3 64 Neurons
• Double Chroma: 1.2x or greater - NNEDI3 32 Neurons
• Quadruple Luma: 2.4x or greater - NNEDI3 64 Neurons
• Quadruple Chroma: 2.4x or greater - NNEDI3 32 Neurons
Chroma doubling/quadrupling is almost useless. I'd disable it, to save performance for other processing algorithms.
What is better NNEDI3 + Adaptive Sharpen or NNEDI3 + SuperRes?
I prefer SuperRes, but you decide.
That would work for DVDs, but I watch a lot of 1080p Youtube videos (1080p and 720p are both very common for Youtube and twitch). Anyway, I think it would be of more use to you if I just got you samples where it unexpectedly fails - I'll enable it and keep an eye out :)
Oh, ok. Well, for weird PC games with lots of black in them, there's a good chance my black bar detection might not work reliably. If I try to optimize for that, I might end up dramatically slowing down detection speed for normal movies, in order to avoid false positives with PC game recordings. Is there maybe some other way you can identify those Youtube/twitch videos via profiles?
The problem: When source is video (29,97) and "force video mode' option is on, display does not switch to 59 rate, but swtches to 23.
If I set to 'video mode' using keyboard shortcut display switches.
Hmmmm... Which decoder? Software decoding? DXVA copyback? Native DXVA? Does this problem occur with all videos or just some?
It was Intel QS decoding in LAV filters. Switching to DXVA2 or disabling hardware decoding solves the problem.
Oh, good to hear it was (seemingly) not my fault.
madshi, quick question, could Error Diffusion be doubling the cpu usage? Thanks!
I don't know for sure. If madVR is spending that CPU usage then it's done in a way that (although it pushes CPU consumption higher) doesn't stop other tasks from being executed. So it's probably not a big problem.
when only one device is active - variable is set right
Ah, I understand. I only ever tested with 1 active device. Will add this to my to do list, maybe for next week end, not sure.
madshi
7th November 2015, 22:31
madVR v0.89.14 released
http://madshi.net/madVR.zip
* added new "sharpen edges" algorithm
* added new "crispen edges" algorithm (tamed FineSharp)
* added new "thin edges" algorithm
* added new "enhance detail" algorithm
* removed SuperRes "radius" option (set to 0.66)
* removed SuperRes "sharpness" option (set near to 2)
* removed LumaSharpen "radius" option (set to 1.0)
* removed LumaSharpen "clamp" option (set to 0.035)
* removed "apply SuperRes first" option (set to true)
* updated AdaptiveSharpen to 2015-11-05 (experimental) version
* optimized "video size has changed" notifications to media player
* optimized aspect ratio overriding API behaviour
You know, I was planning to slow down development for a while, but I just couldn't hold back, so here you go. Maybe I'll manage to concentrate on commercial work now, we'll see...
Try the 4 new algos and let me know what you think, and how they compare in your opinion to SuperRes/AdaptiveSharpen/LumaSharpen. FineSharp lovers, don't cry, the new "crispen edges" algo is a tweaked FineSharp version which doesn't ring and isn't as sensitive to noise, anymore. FineSharp haters, give the "crispen edges" algo a chance, maybe you'll like it now.
Do we still need AdaptiveSharpen and/or LumaSharpen?
aufkrawall
7th November 2015, 22:37
Maybe the new line thinning algorithm in v0.89.14 helps? :)
Sounds like a wonderful thing. :eek:
Edit: Oh, there it is already. :D
I'm not sure. Of course we could just stick to a 0.66 radius and wait for users to complain about aliasing problems with real world material.
I can see some tiny bits of aliasing with SR & leeperry's lighttower image when quadrupling it from 540p to WQHD. However, this seems to be again because the structure is so thin. With LL SR, the dark railing is bigger and shows as good as no aliasing.
But even without SuperRes and just NNEDI3 64, some aliasing can be "guessed", it just seems blurrier.
Strength is not the same as passes. Strengths 2 and 3 have the same performance in madVR.
Oops, then I maybe made one mistake in the past when testing around different settings. Weird, but shit happens. :)
I prefer SuperRes, but you decide.
I agree, SuperRes takes away that "oil painting" look of NNEDI3 to a more naturalistic one (like super-xbr, but without the drawbacks).
Budtz
7th November 2015, 23:05
Thx for the new version.
I have used finesharp up til now. Can I use the strength-setting from finesharp with the "crispen edges" algorithm (tamed FineSharp)? Meaning setting it to 1 og 1,5 or 2 i will get roughly the same amount of sharpening as I got from finesharp with the same setting.
Budtz
7th November 2015, 23:16
BTW is there any consensus now on the best sharpening settings? I have a fast system and pretty much only watch blu-ray quality material.
aufkrawall
7th November 2015, 23:25
Fantastic new features.
"sharpen edges" even doesn't increase brightness with a strength of 4 and "thin edges" is a great addition for SuperRes LL or super-xbr.
Very impressive, madshi. Kudos! :thanks: :thanks: :thanks:
JarrettH
7th November 2015, 23:32
madVR v0.89.14 released
* added new "sharpen edges" algorithm
* added new "crispen edges" algorithm (tamed FineSharp)
* added new "thin edges" algorithm
* added new "enhance detail" algorithm
Let the madness and testing begin :p
truexfan81
7th November 2015, 23:44
loving the "enhance detail" does wonders for those old xvid files
foozoor
7th November 2015, 23:48
@madshi
- Is there madvr presets like on mpdn? Too much options for noobs.
- Could we get hlsl shader version of your tamed finesharp?
- I think you can remove lumasharpen and adaptive-sharpen too.
Thanks. ;)
madshi
7th November 2015, 23:48
I can see some tiny bits of aliasing with SR & leeperry's lighttower image when quadrupling it from 540p to WQHD. However, this seems to be again because the structure is so thin. With LL SR, the dark railing is bigger and shows as good as no aliasing.
But even without SuperRes and just NNEDI3 64, some aliasing can be "guessed", it just seems blurrier.
So - should we stick with 0.66 for now?
I have used finesharp up til now. Can I use the strength-setting from finesharp with the "crispen edges" algorithm (tamed FineSharp)? Meaning setting it to 1 og 1,5 or 2 i will get roughly the same amount of sharpening as I got from finesharp with the same setting.
I've changed the settings range so that 1.0 is default everywhere (for the 4 new algos). FineSharp had a default of 2.0. So basically with the same "strength" the new algo is twice as strong. However, due to the anti-ring filter and noise modifications, the new algo loses some strength, so you have to try for yourself which new strength you need/like.
BTW is there any consensus now on the best sharpening settings? I have a fast system and pretty much only watch blu-ray quality material.
I've *just* released 4 new sharpening algos, and you're already asking for a consensus? How would that be possible?
Fantastic new features.
"sharpen edges" even doesn't increase brightness with a strength of 4 and "thin edges" is a great addition for SuperRes LL or super-xbr.
Very impressive, madshi. Kudos!
Glad to hear your first impression is positive. Hope to hear more detailed feedback when you've had some time to do some in depth testing. E.g. since you're an AdaptiveSharpen user, do you prefer AdaptiveSharpen over "sharpen edges"? Or the other way round? And do you like super-xbr better now, in combination with "thin edges"?
loving the "enhance detail" does wonders for those old xvid files
Glad to hear that - but isn't there too much noise/artifacts in those xvid files? The "enhance detail" algo has the side effect of enhancing noise/artifacts together with image detail, so I thought it would mostly be suitable for clean HD sources, only.
-------
Forgot to mention: The new algos are not fully performance optimized yet. So don't put too much weight on their performance. Performance will probably improve at some point in the future.
truexfan81
7th November 2015, 23:53
Glad to hear that - but isn't there too much noise/artifacts in those xvid files? The "enhance detail" algo has the side effect of enhancing noise/artifacts together with image detail, so I thought it would mostly be suitable for clean HD sources, only.
it does a bit, but i can ignore it
Warner306
7th November 2015, 23:55
Is is possible to add some documentation on what the sharpening shaders are supposed to do? The titles are less than useful.
Right now, the performance seems as follows:
Low: Enhance Detail, LumaSharpen
Medium: Crispen Edges, AdaptiveSharpen
High: SuperRes, Sharpen Edges, Thin Edges
obieobieobie
8th November 2015, 00:01
I get a black screen in madvr after I updated to 0.89.14 from 0.89.13. I did not change any parameters, I just unpacked the new zip over the old install.
madshi
8th November 2015, 00:07
Is there madvr presets like on mpdn? Too much options for noobs.
The default options should be ok for a start. Simply leave all options that you don't understand at their default values, and just play with those options that make sense to you.
There are no presets atm. Presets, an expert/noob switch, documentation/manual, and all that kind of stuff will come when I release v1.0, but not before.
Could we get hlsl shader version of your tamed finesharp?
No, sorry.
it does a bit, but i can ignore it
Ah, ok.
Is is possible to add some documentation on what the sharpening shaders are supposed to do?
I had hoped the names would be self explaining. "sharpen edges" is just another line/edge sharpener, somewhat similar to "LumaSharpen" and "AdaptiveSharpen". However, I like "sharpen edges" better because it doesn't have the typical fat/bloated look of other line sharpeners. "crispen edges" tries to make high-frequency edges "crispier", meaning the image doesn't just get sharper, it gets a more high-res look. "thin edges" tries to make edges, lines and even full image features thinner/smaller, which is especially useful after upscaling, because upscaling often bloats lines and features up a bit. All the above algos concentrate on edges and leave flat image areas mostly untouched. The "enhance detail" algo is pretty much the opposite. It concentrates on making faint image detail (and noise and artifacts) in flat image areas more visible, while mostly ignoring lines/edges.
I get a black screen in madvr after I updated to 0.89.14 from 0.89.13.
Does it happen with all videos or just with some specific? Try videos with different properties, e.g. MPEG2 vs h264, interlaced vs progressive etc. Maybe I can see what's going on if you create a debug log.
QBhd
8th November 2015, 00:17
@madshi:
Is there any drawbacks to enabling all 4 of the new algo's? I have not tested yet, but they all sound great so I just clicked all 4. I will probably be watching some stuff tonight, so I will try and report findings after that. Just curious if madVR will imploded after enabling all 4 LOL :)
QB
aufkrawall
8th November 2015, 00:20
So - should we stick with 0.66 for now?
Well, with your new sharpen algorithm things have changed a bit. :)
Could you please bring back the radius option for a build or two? I suppose with higher radius and new "sharpen edges", very decent results could be achieved.
With "thin edges" the aliasing gets more visible, so there's really a good reason for higher radius when combining it with SR LL.
Glad to hear your first impression is positive. Hope to hear more detailed feedback when you've had some time to do some in depth testing. E.g. since you're an AdaptiveSharpen user, do you prefer AdaptiveSharpen over "sharpen edges"? Or the other way round? And do you like super-xbr better now, in combination with "thin edges"?
I tested three images yet:
-leeperry's lighttower
-your FineSharp testimage
-my infamous cartoon picture
I must say that I'm very convinced of the results so far.
With the lighttower picture (1080p -> WQHD postresize) it's very noticeable that the brightness doesn't increase, unlike with Adaptive Sharpen. It also seems to look rather naturalistic, Adaptive Sharpen with high strength has that "oil painting" look. However, "sharpen edges" can't be set that strong. But such high values aren't needed anyway.
The effect in cartoons is not very strong, but here does line thinning the main job anyway. "sharpen edges" shares the positive trait of Adaptive Sharpen to not boost ringing, which makes it also a good choice for non-optimal sources.
I haven't tested the new features is image enhancement yet, but to me it seems they could totally replace Lumasharpen and Adaptive Sharpen.
ryrynz
8th November 2015, 00:20
* added new "thin edges" algorithm
Whaaaaaaaa
Is this an where near as good as awarpsharp?
Man I need to do some serious comparisons..
madshi
8th November 2015, 00:22
Is there any drawbacks to enabling all 4 of the new algo's?
No drawbacks at all. They don't seem to negatively impact each other.
Well, with your new sharpen algorithm things have changed a bit. :)
Could you please bring back the radius option for a build or two? I suppose with higher radius and new "sharpen edges", very decent results could be achieved.
With "thin edges" the aliasing gets more visible, so there's really a good reason for higher radius when combining it with SR LL.
Oh well... I'm going to bed now, maybe tomorrow.
I tested three images yet:
-leeperry's lighttower
-your FineSharp testimage
-my infamous cartoon picture
I must say that I'm very convinced of the results so far.
With the lighttower picture (1080p -> WQHD postresize) it's very noticeable that the brightness doesn't increase, unlike with Adaptive Sharpen. It also seems to look rather naturalistic, Adaptive Sharpen with high strength has that "oil painting" look. However, "sharpen edges" can't be set that strong. But such high values aren't needed anyway.
The effect in cartoons is not very strong, but here does line thinning the main job anyway. "sharpen edges" shares the positive trait of Adaptive Sharpen to not boost ringing, which makes it also a good choice for non-optimal sources.
I haven't tested the new features is image enhancement yet, but to me it seems they could totally replace Lumasharpen and Adaptive Sharpen.
Thanks for the feedback. Sounds promising! :)
Whaaaaaaaa
Is this an where near as good as awarpsharp?
Man I need to do some serious comparisons..
Please do and let us know your results!
obieobieobie
8th November 2015, 00:24
Does it happen with all videos or just with some specific? Try videos with different properties, e.g. MPEG2 vs h264, interlaced vs progressive etc. Maybe I can see what's going on if you create a debug log.
I played two files:
1.mkv shows the video just fine in 0.89.14
2.mkv black screen in 0.89.14
here's the log:
http://s000.tinyupload.com/index.php?file_id=29951613829934374187
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.