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 23rd January 2014, 14:26   #21581  |  Link
James Freeman
Registered User
 
Join Date: Sep 2013
Posts: 919
Quote:
Originally Posted by LigH View Post
Before asking questions about "sharpness" again,
Again? Isn't it the reason why this thread exists?

Yes, I have read about ringing artifacts and Gibbs phenomenon (I also see them).
I merely want to know from first hand experience how does it look watching 1080p content on a 1440p monitor, and how well MadVR's upscalers doing their job.
__________________
System: i7 3770K, GTX660, Win7 64bit, Panasonic ST60, Dell U2410.

Last edited by James Freeman; 23rd January 2014 at 14:38.
James Freeman is offline   Reply With Quote
Old 23rd January 2014, 14:47   #21582  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,137
"How does it look" compared to what? Your real question is probably this:

Is it better to watch 1080p content on a 30" 1080p display? Or is it better to watch 1080p content on a 30" 1440p display, using madVR upscaling?

If this is your question, then I can't answer it because I have no way to test that. The only way you could fairly test this is if you had two 30" display, one with 1080p physical resolution and one with 1440p physical resolution, so you could play the same movie on both and compare directly. Without such a direct comparison, I find it hard to say whether upscaling is beneficial or not. That said, it depends on the upscaling factor. The bigger the scaling factor, the higher the chances upscaling can be beneficial. With scaling factors south of 1.2x I would guess that upscaling is not beneficial, maybe even harmful. However, if you approach a 2.0x factor, upscaling is going to look *a lot* better. So playing back 1080p content on a 4K display should look noticeably better than playing back 1080p content on a 1080p display of the same size. But this is only true if you sit close enough to see the difference. If you sit far enough away, the difference will vanish into thin air...
madshi is offline   Reply With Quote
Old 23rd January 2014, 14:48   #21583  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,137
Quote:
Originally Posted by sheppaul View Post
DxVA2 Scaler seems not working in full screen mode with 1080p videoes.
Which GPU? Which OS? Can anybody reproduce this problem?

(Don't care about demo mode.)
madshi is offline   Reply With Quote
Old 23rd January 2014, 15:22   #21584  |  Link
DarkSpace
Registered User
 
Join Date: Oct 2011
Posts: 204
Quote:
Originally Posted by leeperry View Post
The Avisynth ppl call it SuperSampling, it's like processing audio in 48int/64fp and then dithering back to 24int.
Uhm, I doubt that. Supersampling is upscaling the video to a higher resolution, processing it there, and then scaling it back. Compared to audio, it would be like upsampling 48 kHz to 192 kHz, doing the modifications there, and then sampling back to 48 kHz.
I don't know where you get the audio bitdepth idea from, but higher audio bitdepth after e.g. a volume change would be similar to increased video bitdepth after e.g. debanding...
DarkSpace is offline   Reply With Quote
Old 23rd January 2014, 15:23   #21585  |  Link
sheppaul
Registered User
 
Join Date: Sep 2004
Posts: 146
Quote:
Originally Posted by madshi View Post
Which GPU? Which OS? Can anybody reproduce this problem?

(Don't care about demo mode.)
ATI 7850, Windows 8.1

Actually I don't use it by myself and don't care too. Someone told me the problem. So I just tried it and found a same problem.

Enabling demo mode makes it figure out easily.
sheppaul is offline   Reply With Quote
Old 23rd January 2014, 15:54   #21586  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,137
Quote:
Originally Posted by sheppaul View Post
ATI 7850, Windows 8.1

Actually I don't use it by myself and don't care too. Someone told me the problem. So I just tried it and found a same problem.

Enabling demo mode makes it figure out easily.
Using the demo mode (I used split screen) to check whether DXVA scaling is active is actually good idea, thanks. I've now tried to reproduce the problem on my PC. I have here also Windows 8.1 and an AMD 7770. DXVA scaling works just fine here in both windowed and fullscreen exclusive modes. Are you sure that in fullscreen exclusive mode zooming/scaling was actually active/needed? madVR only uses DXVA scaling if it's necessary. If you play 1080p content on a 1080p display, madVR does not apply scaling, so in that case also demo mode can't work, because DXVA is not used at all. And the demo mode can only work if the video runs through DXVA, because otherwise the AMD drivers have no influence on what madVR is doing. So try forcing scaling to become active, by zooming into the image a bit.
madshi is offline   Reply With Quote
Old 23rd January 2014, 17:02   #21587  |  Link
sheppaul
Registered User
 
Join Date: Sep 2004
Posts: 146
Quote:
Originally Posted by madshi View Post
If you play 1080p content on a 1080p display, madVR does not apply scaling, so in that case also demo mode can't work, because DXVA is not used at all. And the demo mode can only work if the video runs through DXVA, because otherwise the AMD drivers have no influence on what madVR is doing. So try forcing scaling to become active, by zooming into the image a bit.
Aha, exactly. madVR is really smart.

However, can you make an option to force to enable DxVA2 scaler in such case if possible? I'm not really a fan of post-processing of AMD graphic processor but there are several people eager to use it, not because of the dxva2 scaler but because of the video processing provided by the graphic vendor.

Or is there any way to independently use it while using madVR's scalers?
sheppaul is offline   Reply With Quote
Old 23rd January 2014, 17:02   #21588  |  Link
sdancer75
Registered User
 
sdancer75's Avatar
 
Join Date: Jul 2013
Posts: 90
madvr recources

Hi,

Why I can not find any recources of how to use madvr renderer under c++; Is it free of use ?

Regards
sdancer75 is offline   Reply With Quote
Old 23rd January 2014, 17:15   #21589  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,137
Quote:
Originally Posted by sheppaul View Post
However, can you make an option to force to enable DxVA2 scaler in such case if possible? I'm not really a fan of post-processing of AMD graphic processor but there are several people eager to use it, not because of the dxva2 scaler but because of the video processing provided by the graphic vendor.

Or is there any way to independently use it while using madVR's scalers?
To be honest, I'm not totally sure how good the AMD post-processing algorithms are. I don't think it makes sense to activate DXVA2 scaling just to get the post-processing. However, it would surely be possible to make the post-processing available as extra options. I'm not sure if it's a good idea, though. It depends on how good the AMD algorithms really are. Maybe someone else knows how they compare to e.g. AviSynth scripts? The DXVA processing definitely has one big disadvantage: It usually only works in NV12 = 8bit. I prefer to run my algorithms in 16bit.

In the long run madVR may give you alternative algorithms to what those AMD algorithms do, probably with higher quality (but slower performance).

Quote:
Originally Posted by sdancer75 View Post
Why I can not find any recources of how to use madvr renderer under c++; Is it free of use ?
Look at "madVR\developers\mvrInterfaces.h". If you know how to use e.g. VMR9, using madVR is not that much different. madVR supports many of the VMR9 interfaces, plus all those private ones listed in the mentioned header file. You can also look at e.g. MPC-HC or MPC-BE, which are open source projects supporting madVR.

Please read the "madVR\license.txt" carefully to see what is allowed and what is not allowed. Especially the paragraph "3RD PARTY SOFTWARE RESTRICTIONS" may be of interest to you.
madshi is offline   Reply With Quote
Old 23rd January 2014, 17:16   #21590  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,137
madVR v0.87.0 released

http://madshi.net/madVR.zip

Code:
* added debanding algorithm, based on improved version of "flash3kyuu_deband"
* added file name tag "deband=off|low|medium|high"
* added automatic detection for fades from/to black or white (for debanding)
* added support for using OpenCL with NVidia, AMD and Intel GPUs
* added DXVA surface splitting via OpenCL (only AMD and Intel GPUs)
* added error diffusion algorithm (requires OpenCL)
* added NNEDI3 chroma upsampling (requires OpenCL)
* added NNEDI3 image doubling/quadrupling (requires OpenCL)
* added flexible settings profile functionality
* added file name tag "profile='profile name'"
* added IMadVRSettings2 interface to enumerate settings and manage profiles
* settings can now be edited without madVR running (only on local PC)
* madNvLevelsTweaker -> madLevelsTweaker now also works for Intel GPUs
* madVR doesn't dither, anymore, when a pixel doesn't need dithering
* added Intel driver bug workaround for "use separate device for presentation"
* added madHcNet64.dll to allow madTPG automation from 64bit calibration tools
* added API for asking madVR about the output levels (TV, PC, custom)
* fixed: full backbuffer queue slowed rendering down
* fixed: madTPG sometimes didn't update to newly requested test pattern color
* fixed: madTPG dithering produced blocking artifacts
* fixed: when upscaling exactly 2x, AR filter wasn't active for blue channel
* fixed: ArgyllCMS/HCFR disabling the 3dlut didn't work
* fixed: LAV Video Decoder sending v210 produced corrupted image
* improved frame cropping support
* improved windowproc hook stability
* a couple of very small pixel shader performance improvements
* optimized madVR default settings
* improved madVR tray icon menu looks on newer OSs
* tags now require "tag=value" or "tag:value"; "tag value" no longer accepted
* disabled automatic DCI-P3 detection through 2048 video width
I've a lot of comments about this version, so here goes:

(1) I've released this version "early", meaning there are still 2 features missing I was planning to add into v0.87.0. One of them is convergence correction for front projection. I will probably add those features in the next days/weeks and release them as v0.87.something. Also I've ignored most of the bugs you guys reported because I wanted to finally finish the new features. I'll go do bug fixing after I've finished all the planned v0.87.0 features, so bear with me until then...

(2) The debanding feature is nearly unchanged compared to the last test build. There's just one added "trade quality for performance" option now which allows you to disable the going back to re-render old frames, when a fade in/out is detected. Practically this "trade" option results in the stronger debanding setting being used for the whole fade in/out except for the first 5 frames, which will still use the default debanding strength.

(3) The latest AMD drivers *FINALLY* added OpenCL <-> D3D9 interop. I had been waiting for this for a looong time. So finally I can now use OpenCL in madVR with Intel, NVidia and AMD GPUs. You will need the latest AMD drivers, though. It won't work with older drivers.

(4) For best OpenCL performance, currently AMD seems to be the way to go.

(5) Thanks to OpenCL I can now process DXVA2 NV12 data coming from native DXVA decoders, or coming from DXVA2 deinterlacing, losslessly and directly on the GPU. Sadly, this only works for Intel and AMD GPUs. So with NVidia I still have to use copyback, or alternatively live with a small chroma resolution loss. FWIW, I've found that using OpenCL to process DXVA2 NV12 surfaces seems to increase rendering times on Intel GPUs in windowed mode, while it seems to decrease rendering times on Intel GPUs in FSE mode. So I'm not fully sure whether it's a performance improvement or not. Maybe you guys could test that and report back.

(6) The OpenCL error diffusion algorithm can be used instead of the default random dithering (see "trade quality for performance"). Error diffusion should produce similar smoothness as random dithering, but error diffusion should have a lower noise floor. I had to do some minor compromises to implement this on a GPU with decent performance, so quality might be ever so slightly lower than when doing error diffusion sequentially via CPU, but I think it's not too bad. Unfortunately performance is not too great, so make your own decision on whether you like it and whether the performance cost is worth it for you.

(7) NNEDI3 is a somewhat complicated topic, so I'll reserve an extra post for that.

(8) The new profiling support is very flexible. By default the settings look exactly the same way you're used to. But you can now select any settings page (for which it makes sense) and activate profiles for it. You can also group multiple settings pages into one profile group, if you prefer. Each profile group can have an infinite number of profiles. And there's a complicated profile rule set (simplified script language) which lets you decide which profile gets auto selected in which situation. E.g. you can have one profile auto selected for SD content, one for HD content, one for MPEG2 sources, one for h264 sources etc etc. The possilibities are almost endless. Have fun playing with this!

(9) Intel users can now use the latest drivers with the "use a separate device for presentation", but you have to activate a custom border color for this to work. A black border color makes the bug appear. A gray border color will make it go away. Since many media players don't allow you to specify a custom border color, you can force a border color by creating the following registry key:

HKEY_CURRENT_USER\Software\madshi\madVR\BorderColor DWORD 1

You can set this value to any RGB color you want. I'd suggest value 1, which is almost black (Red=0, Green=0, Blue=1). With this border color the Intel driver bug does not occur, anymore.

Last edited by madshi; 24th January 2014 at 12:03.
madshi is offline   Reply With Quote
Old 23rd January 2014, 17:17   #21591  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,137
So let's discuss NNEDI3:

(1) NNEDI3 is a resolution doubler. It can double resolution in either X or Y direction. Of course you can run it multiple times, so you can double both X and Y resolution, once, twice, thrice, whatever. Of course you can also double X twice and not double Y at all. Whatever you like. NNEDI3 cannot do anything else except exact 2x resolution doubling.

(2) NNEDI3 has a number of very nice advantages: It is quite sharp, has very low aliasing levels, produces almost no ringing or similar artifacts and has a very clean look to it. Due to the lack of artifacts you can also apply it multiple times to e.g. quadruple image resolution without any problems, or you can followup NNEDI3 upscaling with a different up- or downscaling algorithm.

(3) NNEDI3 unfortunately also has disadvantages: It is relatively slow. It can't do anything other than 2x resolution doubling. It shifts the image by half a pixel (compared to other upscaling algorithms). And it can sometimes introduce weird artifacts that are unknown from linear resamplers like Lanczos or Jinc.

Let's look at a first test image (Monsters Inc. Blu-Ray, run time 0:13:45), upscaled from 1080p to UHD:



Looking at this image, NNEDI3 seems to combine the positive attributes of Lanczos and Jinc upscaling: It's even sharper than Lanczos, has even lower aliasing levels than Jinc and has the lowest levels of artifacts. With this image I'd say it beats the hell out of Lanczos and Jinc. However, it's not perfect. There are a couple image areas which are still aliased. But I guess with this specific source (which is quite heavily aliased to start with) that's really the max we can possibly expect. But now let's look at a different test image:



First let's look at the positive aspects of the NNEDI3 upscaling here:
(1) NNEDI3 renders all 3 roofs cleaner and sharper than Lanczos does. The handrail on the lighthouse top outer floor makes this especially obvious.
(2) The whole NNEDI3 image has a clean and sharp look to it. It almost doesn't look like it's upscaled. In contrast to that the Lanczos image has a lot of aliasing, ringing and overall a somewhat coarse look to it. It's pretty obvious that the Lanczos image was upscaled.

But this test image also brutally showcases some of the NNEDI3 weaknesses:
(1) Look at the fence pickets directly at the bottom right of the lighthouse. Lanczos manages to keep the picket sizes nicely equal. NNEDI3 reproduces the pickets at unequal sizes, similar to what Bilinear does. This is one case where the natural ringing in the Lanczos algorithm is actually beneficial. Yes, ringing can sometimes help reproducing images better.
(2) Look at the grass at the bottom part 1/4 of the image. It looks quite weird in the NNEDI3 image, almost like a fractal. This is what bothers me most about NNEDI3. But it seems that all "intelligent" algorithms have this kind of artifact. With grass/trees/nature they often see lines/geometrical figures to connect which don't belong together. No such problem with Lanczos/Jinc.

So there you have, all the good and bad things about NNEDI3. Pick your own poison! At least you have all the options now. If you like NNEDI3, you can also say "thanks" to SEt for providing the OpenCL kernel in this thread:

http://forum.doom9.org/showthread.php?t=169766

Now let's talk performance a bit: Since NNEDI3 is a rather slow algorithm, I've added the option to convert the image to YUV and to only upscale the Y channel with NNEDI3, while using a different algorithm for the chroma channels. Using NNEDI3 on the chroma channels is IMHO slightly wasted. The benefit for the Luma channel is much bigger. Of course you can use NNEDI3 for the chroma channels, too, if you have the GPU juice for that. You can even use it for chroma upsampling, if you prefer. My recommendation is to use NNEDI3 only for the Luma channel and to use a cheap algorithm in the "image upscaling" section, which will then be used to upscale the chroma channels, e.g. Lanczos3 AR or even Bicubic AR.

NNEDI3 doesn't have "taps", instead it has "neurons". The lowest quality level of 16 neurons performs a little bit slower than Jinc3 AR on my PC, when using it only on the Luma channel and when doing an exact 2x size improvement. Every higher quality step almost doubles rendering times. So 32 neurons almost cut performance in half. Using 64 neurons in quarter etc. For Luma upscaling I recommend to use at least 32 neurons. The lowest quality setting of 16 neurons leaves a bit too many artifacts in the image, IMHO. It could still be useful for chroma upscaling, though, if you insist on using NNEDI3 for chroma.

Last edited by madshi; 23rd January 2014 at 17:54.
madshi is offline   Reply With Quote
Old 23rd January 2014, 17:24   #21592  |  Link
James Freeman
Registered User
 
Join Date: Sep 2013
Posts: 919
InstallFilter.exe crashes when clicking install.bat
It actually finishes installing (MadVR.ax Registered Successfully) but when existing InstallFilter.exe it crashes "(InstallFilter.exe Has Stopped Working" appears.

MPC-HC crashes on playback.
Its asking for mini-dump, when I click NO, "MPC-HC.exe Has Stopped Working" window appears.

Same thing, perfectly fine with 0.86.11
__________________
System: i7 3770K, GTX660, Win7 64bit, Panasonic ST60, Dell U2410.

Last edited by James Freeman; 23rd January 2014 at 17:51.
James Freeman is offline   Reply With Quote
Old 23rd January 2014, 17:33   #21593  |  Link
mark0077
Registered User
 
Join Date: Apr 2008
Posts: 1,055
Thanks madshi! Fantastic update.
mark0077 is offline   Reply With Quote
Old 23rd January 2014, 17:33   #21594  |  Link
sheppaul
Registered User
 
Join Date: Sep 2004
Posts: 146
Quote:
Originally Posted by madshi View Post
To be honest, I'm not totally sure how good the AMD post-processing algorithms are. I don't think it makes sense to activate DXVA2 scaling just to get the post-processing. However, it would surely be possible to make the post-processing available as extra options. I'm not sure if it's a good idea, though. It depends on how good the AMD algorithms really are. Maybe someone else knows how they compare to e.g. AviSynth scripts? The DXVA processing definitely has one big disadvantage: It usually only works in NV12 = 8bit. I prefer to run my algorithms in 16bit.

In the long run madVR may give you alternative algorithms to what those AMD algorithms do, probably with higher quality (but slower performance).
I agree with you completely.
Actually I didn't know there was an option for DxVA2 Scaler and failed to explain the purpose of the option. Why did you add it?

The post-processing by the graphic card seems to be done via shader as it always works in EVR or EVR C/P regardless of DxVA decoding. madVR is already using shaders. What's the difference between EVR and madVR in such case?

And thank you for the new release.
You are the one of the hidden treasures we have.
sheppaul is offline   Reply With Quote
Old 23rd January 2014, 17:35   #21595  |  Link
sdancer75
Registered User
 
sdancer75's Avatar
 
Join Date: Jul 2013
Posts: 90
Quote:
Originally Posted by madshi View Post
To be honest, I'm not totally sure how good the AMD post-processing algorithms are. I don't think it makes sense to activate DXVA2 scaling just to get the post-processing. However, it would surely be possible to make the post-processing available as extra options. I'm not sure if it's a good idea, though. It depends on how good the AMD algorithms really are. Maybe someone else knows how they compare to e.g. AviSynth scripts? The DXVA processing definitely has one big disadvantage: It usually only works in NV12 = 8bit. I prefer to run my algorithms in 16bit.

In the long run madVR may give you alternative algorithms to what those AMD algorithms do, probably with higher quality (but slower performance).


Look at "madVR\developers\mvrInterfaces.h". If you know how to use e.g. VMR9, using madVR is not that much different. madVR supports many of the VMR9 interfaces, plus all those private ones listed in the mentioned header file. You can also look at e.g. MPC-HC or MPC-BE, which are open source projects supporting madVR.

Please read the "madVR\license.txt" carefully to see what is allowed and what is not allowed. Especially the paragraph "3RD PARTY SOFTWARE RESTRICTIONS" may be of interest to you.
Hi

Currently I am using vmr9 but in the mvrInterfaces.h I didn't see any interfaces that matches with the vmr9 renderer. I didn't even saw where I can connect window handle with this renderer. Another problem is when I am trying to use your interfaces I get compiling error that says I can not use this interface (I am not writing from my computer now so I don't remember the exactly error right now).

Regards
sdancer75 is offline   Reply With Quote
Old 23rd January 2014, 17:43   #21596  |  Link
cyberbeing
Broadband Junkie
 
Join Date: Oct 2005
Posts: 1,859
Black screen on my GTX 770 | 332.21 driver | Win7 SP1 x64 when enabling any of the new OpenCL features (NNEDI & Error Diffusion Dither).

Also occurs when enabling OpenCL features after resetting to default settings.

May also be noteworthy that your 2013-12-31 version of the OpenCL code for that Avisynth plugin produces a "Failed to allocate OpenCL Resources" error, while SEt's original OpenCL code runs fine.

Last edited by cyberbeing; 23rd January 2014 at 18:07.
cyberbeing is offline   Reply With Quote
Old 23rd January 2014, 17:45   #21597  |  Link
noee
Registered User
 
Join Date: Jan 2007
Posts: 530
argh. Win7 Ult/HD6570, MPC-HC and jRiver MC, latest CCC

just copied the new files on top of the others, left settings alone completely. Everything is slide show, 8bit, 10bit, film, video, interlaced, progressive....

Back to the last deband "test" version, all is good.

Perhaps something OpenCL is being turned on even though I haven't explicitly done so? Should I start with a complete settings reset?

BTW, tremendous release.

Edit: Looks like it starts with the upload queue, which never goes beyond "1-2". Decoder queue is always at max....

Last edited by noee; 23rd January 2014 at 17:57.
noee is offline   Reply With Quote
Old 23rd January 2014, 17:51   #21598  |  Link
andyvt
Registered User
 
Join Date: Jan 2010
Posts: 265
Quote:
Originally Posted by sdancer75 View Post
Hi,

Why I can not find any recources of how to use madvr renderer under c++; Is it free of use ?

Regards
madVR is a DirectShow filter. At a high level load and connect it just like any other filter renderer, then use IVideoWindow to configure it. There are other interfaces for settings and OSD, the interfaces are included in the zip.
__________________
babgvant.com
Missing Remote
andyvt is offline   Reply With Quote
Old 23rd January 2014, 17:52   #21599  |  Link
sneaker_ger
Registered User
 
Join Date: Dec 2002
Posts: 5,407
Quote:
Originally Posted by James Freeman View Post
MPC-HC crashes on playback.
Are you using smooth motion? That will make it crash instantly here. Win 7 x64, Radeon HD 5850, default settings otherwise
sneaker_ger is offline   Reply With Quote
Old 23rd January 2014, 17:53   #21600  |  Link
iSunrise
Registered User
 
Join Date: Dec 2008
Posts: 497
Thanks a lot for 0.87.0 madshi! Perfect timing, as I have the whole evening to test.

Quote:
Originally Posted by cyberbeing View Post
Black screen on my GTX 770 w/ 332.21 driver when enabling any of the new OpenCL features.
Same here. Im on an NV, too, however, Im using 331.82 (modded Quadro drivers).

A more detailed explanation:
Didnt change any defaults, just enabled NNEDI3 under the image upscaling option triggers the black screen every time.
iSunrise is offline   Reply With Quote
Reply

Tags
direct compute, dithering, error diffusion, madvr, ngu, nnedi3, quality, renderer, scaling, uhd upscaling, upsampling

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 18:30.


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