View Full Version : Media Player .NET (MPDN) - D3D HQ GPU Video Renderer [v2.49.0/v1.31.0 27 Dec 2018]
Shiandow
14th November 2014, 04:22
I am very happy that after my suggestion to use the finesharp shader you have been considering to make it work better. thanks!!
For my setup is probably the best method of sharpness.
A little suggestion, is possible to implement various chroma resampling filters as Robidoux, blackman, Gaussian and Hermite?
Some of them are simlpy interpretation of bicubic style resize.
The renderscript files on github (https://github.com/zachsaw/RenderScripts/tree/master) now include a new ChromaScaler render script which supports Robidoux, Hermite, Mitchell-Netravalli and all other Bicubic resampers that belong to that family. If you want it even allows you to specify the parameters yourself so you can fine tune it however you like.
The filter currently uses Elliptical Weighted Averaging, which should improve the quality but I'll probably add a 2-pass mode later, so you can sacrifice some quality for performance (this might be needed to handle 4k, especially on older GPU's).
For a more detailed explanation of the family of bicubic resamplers that this scaler can use see this page (http://www.imagemagick.org/Usage/filter/#mitchell).
If you want to fine tune the parameters (called B and C) here is the result of a survey image processing experts examined the effects of different values of B,C:
http://www.imagemagick.org/Usage/img_diagrams/cubic_survey.gif
Anime Viewer
14th November 2014, 05:43
For a more detailed explanation of the family of bicubic resamplers that this scaler can use see this page (http://www.imagemagick.org/Usage/filter/#mitchell).
If you want to fine tune the parameters (called B and C) here is the result of a survey image processing experts examined the effects of different values of B,C:
http://www.imagemagick.org/Usage/img_diagrams/cubic_survey.gif
Interesting read. If I'm reading that right then its saying that for watching line drawn content (cartoons/anime) Mitchell is often the preferred upscaler, and for real-world (people?) Jinc is the preferred upscaler. While for shrinking Jinc and Lagrange are the preferred downscalers if ringing insn't a concern. I've been using Jinc in the past for both up and down scaling in MPDN (and Jinc (up) and Catrom (down) in madVR), but I do see a reduction in artifacts with Mitchell compared to Jinc with drawn images (just as the article mentioned). Looks like I'll have to consider varying the settings depending on the content I choose to watch. Maybe I'll set the MPDN 32-bit one way and the 64-bit the other way. Using one to view drawn content and the other for live content then settings wouldn't have to be reconfigured before watching different content.
Zachs
14th November 2014, 08:37
Maybe I'll set the MPDN 32-bit one way and the 64-bit the other way. Using one to view drawn content and the other for live content then settings wouldn't have to be reconfigured before watching different content.
With v2.9.5 passing VideoFileName (full path) to render scripts, you'd be better off writing a chain script.
What you could do for example, is if your hand drawn contents are in a particular folder, you could easily write one script that uses certain scaling algo by checking to see if the 'VideoFileName' file is located in that folder, and then a different branch (simple if-then-else will do) for a separate algo for your live contents.
Or if you are more adventurous, you could even put all your file names in a text file with a lookup table that tells your script what sort of content it is.
Have a look at MyRenderScript.cs on github for an example.
By the way, Mitchell is equivalent to MPDN's Bicubic with sharpness set to 66. Bicubic@100 == Catrom.
Anima123
15th November 2014, 05:48
MPDN 2.9.6 with latest Master branch of MyRenderScript used, when open another file with different resolution, the following error pop up:
TITLE: Mpdn.D3D9VideoRenderer Error
------------------------------
An unexpected error 'System.NullReferenceException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Object reference not set to an instance of an object. (Mpdn.D3D9VideoRenderer)
------------------------------
details like the following:
===================================
An unexpected error 'System.NullReferenceException' has occurred.
------------------------------
Error Type = System.NullReferenceException
Error Message = Object reference not set to an instance of an object.
Error Source = Mpdn.D3D9VideoRenderer
Error Site = Int32 get_Width()
Error occurred = at Mpdn.D3D9VideoRenderer.RenderTarget.get_Width()
at Mpdn.RenderScript.Filter.AllocateTextures()
at Mpdn.D3D9VideoRenderer.VideoRenderer.HandleRenderScriptInOutSizes()
at Mpdn.D3D9VideoRenderer.VideoRenderer.RecreateResources(Boolean modeSwitch)
at Mpdn.D3D9VideoRenderer.VideoRenderer.OnWindowSizeChanged()
at Mpdn.VideoPlayer.VideoPlayer.<OnControlResized>b__d(Boolean playing)
at Mpdn.VideoPlayer.VideoPlayer.SyncRendererInvoke(Action`1 action)
at Mpdn.VideoPlayer.VideoPlayer.OnControlResized()
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
at System.Windows.Forms.Control.UpdateBounds()
at System.Windows.Forms.Control.WmWindowPosChanged(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
OS Version = Microsoft Windows NT 6.3.9600.0
Total Physical Memory = 15.9 GB
Available Physical Memory = 12.6 GB
Date Time = 11/14/2014 8:44:44 PM
Edit: issue resolved with the latest script upgrade.
Edit2: when playing 1080p video with the current script, entered windows mode from full-screen mode, the video gets dark, looks like the script chain failed to adapt target size changes.
Zachs
15th November 2014, 10:49
Edit2: when playing 1080p video with the current script, entered windows mode from full-screen mode, the video gets dark, looks like the script chain failed to adapt target size changes.
I just tested this and it's working fine going both directions (windowed -> exclusive full screen mode / non-exclusive full screen mode, and back from either one).
This is with MyRenderScript.cs?
Anima123
15th November 2014, 19:08
I just tested this and it's working fine going both directions (windowed -> exclusive full screen mode / non-exclusive full screen mode, and back from either one).
This is with MyRenderScript.cs?
Yes I was using MyRenderScript.
Indeed, looks like I was using an intermediate version. The bug gone with the latest script.
Edit1: without the size double function, now the IsUpscalingFrom(chain) in MyRenderScript not not doubled after adding NEDI to the chain somehow. I spotted it when trying to apply NEDI multiple times, which caused MPDN to crash due to infinite loop.
Hope it be fixed soon.
Scyna
15th November 2014, 20:44
Any update regarding XySubFilter being added? This is the only thing stopping me from making this player my main.
Shiandow
15th November 2014, 22:41
Edit1: without the size double function, now the IsUpscalingFrom(chain) in MyRenderScript not not doubled after adding NEDI to the chain somehow. I spotted it when trying to apply NEDI multiple times, which caused MPDN to crash due to infinite loop.
This is because of some changes to the way RenderScriptChain's work, which is still somewhat experimental. It basically tried to append NEDI to itself, which created an infinite loop. The older method didn't have this problem, but was somewhat less elegant, with any luck these problems should be solved soon(ish).
Zachs
16th November 2014, 01:54
Any update regarding XySubFilter being added? This is the only thing stopping me from making this player my main.
I've got the C++ shim to support XySubFilter done and the player itself can now receive the frames from filter. What is still missing is passing that subtitle frame to the renderer to be combined for final output.
A little tied up with the RenderScript system at the moment. Hopefully I will have some time to finish XySubFilter support soon.
matthew_eli
16th November 2014, 16:38
Hi, I was testing MPDN v2.9.6 on my laptop (ASUS N551JM with Optimus, NVIDIA 860GTX), but I'm encountering the following error when I try to open the Options dialog:
===================================
An unexpected error 'System.FormatException' has occurred.
------------------------------
Error Type = System.FormatException
Error Message = Il GUID deve contenere 32 cifre, separate da quattro trattini (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Error Source = mscorlib
Error Site = Void SetFailure(ParseFailureKind, System.String, System.Object, System.String, System.Exception)
Error occurred = in System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)
in System.Guid.TryParseGuidWithDashes(String guidString, GuidResult& result)
in System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)
in System.Guid..ctor(String g)
in Mpdn.VideoPlayer.DirectShowVideo.EnumerateDsFilters(IEnumMoniker classEnum)
in Mpdn.VideoPlayer.DirectShowVideo.EnumerateDsFilters(Guid filterCategory)
in MediaPlayerDotNet.OptionsForm.
(List`1 renderScripts)
in MediaPlayerDotNet.OptionsForm..ctor(List`1 renderScripts)
in MediaPlayerDotNet.MainForm.
()
in MediaPlayerDotNet.MainForm.
(Object , EventArgs )
in System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
in System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
in System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
in System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
in System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
in System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
in System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
in System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
in System.Windows.Forms.Control.WndProc(Message& m)
in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
in System.Windows.Forms.ToolStrip.WndProc(Message& m)
in System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
OS Version = Microsoft Windows NT 6.3.9600.0
Total Physical Memory = 15,7 GB
Available Physical Memory = 13 GB
Date Time = 16/11/2014 16:35:23
User Name = NB-M4T\Matteo
Application Startup Path = C:\Program Files (x86)\MediaPlayerDotNet_x86_2_9_6_2650
Application Executable Path = C:\Program Files (x86)\MediaPlayerDotNet_x86_2_9_6_2650\MediaPlayerDotNet.exe
CurrentDirectory = C:\Program Files (x86)\MediaPlayerDotNet_x86_2_9_6_2650
SystemDirectory = C:\Windows\system32
Ran As Admin = False
HasShutdownStarted = False
MachineName = NB-M4T
ProcessorCount = 8
LogicalDrives = C:\, D:\, E:\, F:\, G:\
EnvironmentVariables = Path = C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\OpenVPN\bin;C:\Program Files (x86)\InfoCert\DiKe\;C:\Program Files (x86)\InfoCert\DikeUtil\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\; SESSIONNAME = Console; PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC; USERDOMAIN = NB-M4T; PROCESSOR_ARCHITECTURE = x86; ProgramW6432 = C:\Program Files; PUBLIC = C:\Users\Public; APPDATA = C:\Users\Matteo\AppData\Roaming; windir = C:\Windows; LOCALAPPDATA = C:\Users\Matteo\AppData\Local; CommonProgramW6432 = C:\Program Files\Common Files; TMP = C:\Users\Matteo\AppData\Local\Temp; VBOX_MSI_INSTALL_PATH = C:\Program Files\Oracle\VirtualBox\; USERPROFILE = C:\Users\Matteo; ProgramFiles = C:\Program Files (x86); PROCESSOR_LEVEL = 6; FP_NO_HOST_CHECK = NO; HOMEPATH = \Users\Matteo; COMPUTERNAME = NB-M4T; PROCESSOR_ARCHITEW6432 = AMD64; USERNAME = Matteo; NUMBER_OF_PROCESSORS = 8; PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 60 Stepping 3, GenuineIntel; SystemRoot = C:\Windows; ComSpec = C:\Windows\system32\cmd.exe; LOGONSERVER = \\MicrosoftAccount; TEMP = C:\Users\Matteo\AppData\Local\Temp; ProgramFiles(x86) = C:\Program Files (x86); CommonProgramFiles = C:\Program Files (x86)\Common Files; USERDOMAIN_ROAMINGPROFILE = NB-M4T; PROCESSOR_REVISION = 3c03; CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files; ALLUSERSPROFILE = C:\ProgramData; SystemDrive = C:; PSModulePath = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\; OS = Windows_NT; ProgramData = C:\ProgramData; HOMEDRIVE = C:
RuntimeVersion = 4.0.30319.34014
Thread Count = 14
Handle Count = 391
VM Size = 338,9 MB
Peak VM Size = 338,9 MB
Working Set Size = 71,1 MB
Max Working Set Size = 1,3 MB
Min Working Set Size = 200 KB
Modules = MediaPlayerDotNet.exe, ntdll.dll, MSCOREE.DLL, KERNEL32.dll, KERNELBASE.dll, ADVAPI32.dll, msvcrt.dll, sechost.dll, RPCRT4.dll, SspiCli.dll, CRYPTBASE.dll, bcryptPrimitives.dll, mscoreei.dll, SHLWAPI.dll, combase.dll, USER32.dll, GDI32.dll, IMM32.DLL, MSCTF.dll, clr.dll, MSVCR120_CLR0400.dll, mscorlib.ni.dll, ole32.dll, kernel.appcore.dll, uxtheme.dll, clrjit.dll, OLEAUT32.dll, System.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll, bcrypt.dll, CRYPTSP.dll, rsaenh.dll, comctl32.dll, dwmapi.dll, gdiplus.dll, DWrite.dll, WindowsCodecs.dll, System.Core.ni.dll, shell32.dll, SHCORE.dll, System.Xml.Linq.ni.dll, System.Xml.ni.dll, VideoFrameServicesNative.dll, d3d9.dll, VERSION.dll, igdumdim32.dll, D3D9NativeServices.dll, SETUPAPI.dll, WINMM.dll, WTSAPI32.dll, CFGMGR32.dll, WINMMBASE.dll, DEVOBJ.dll, igdusc32.dll, powrprof.dll, WINSTA.dll, d3dx9_43.dll, usp10.dll, urlmon.dll, iertutil.dll, WININET.dll, USERENV.dll, profapi.dll, Secur32.dll, clbcatq.dll, devenum.dll, ntmarta.dll, WINTRUST.dll, CRYPT32.dll, MSASN1.dll, msdmo.dll, MMDevApi.dll, wdmaud.drv, ksuser.dll, AVRT.dll, AUDIOSES.DLL, msacm32.drv, MSACM32.dll, midimap.dll, dsound.dll, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll, diasymreader.dll, psapi.dll
===================================
Il GUID deve contenere 32 cifre, separate da quattro trattini (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). (mscorlib)
------------------------------
Program Location:
in System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)
in System.Guid.TryParseGuidWithDashes(String guidString, GuidResult& result)
in System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)
in System.Guid..ctor(String g)
in Mpdn.VideoPlayer.DirectShowVideo.EnumerateDsFilters(IEnumMoniker classEnum)
in Mpdn.VideoPlayer.DirectShowVideo.EnumerateDsFilters(Guid filterCategory)
in MediaPlayerDotNet.OptionsForm.
(List`1 renderScripts)
in MediaPlayerDotNet.OptionsForm..ctor(List`1 renderScripts)
in MediaPlayerDotNet.MainForm.
()
in MediaPlayerDotNet.MainForm.
(Object , EventArgs )
in System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
in System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
in System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
in System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
in System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
in System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
in System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
in System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
in System.Windows.Forms.Control.WndProc(Message& m)
in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
in System.Windows.Forms.ToolStrip.WndProc(Message& m)
in System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
What could it be? :confused:
Shiandow
16th November 2014, 23:13
Apparently there's a mistake in one your render script files. Were you trying to write your own? If not, could you try replacing the render script files with the ones on github?
Edit: Zachs seems to think it happens somewhere else in the code. Since he knows the code better than I do he's probably right.
Zachs
16th November 2014, 23:54
Hmm from the stack trace it seems like one of the DirectShow filters has a corrupt entry in the registry. I wasn't expecting that at all so I'll put some guards in the code to silence the error.
EDIT: Confirmed. This is due to one of the filters in your registry specifying an invalid CLSID (i.e. not even in the form of a GUID value). I've put a check in the code to skip these entries and will be available in the next MPDN release.
generalmx
17th November 2014, 08:24
Hmm from the stack trace it seems like one of the DirectShow filters has a corrupt entry in the registry. I wasn't expecting that at all so I'll put some guards in the code to silence the error.
EDIT: Confirmed. This is due to one of the filters in your registry specifying an invalid CLSID (i.e. not even in the form of a GUID value). I've put a check in the code to skip these entries and will be available in the next MPDN release.
As a Windows programmer, I'd say always assume the registry is full of invalid, missing, corrupt, and/or plain-wrong entries.
Really looking forward to the further maturation of this player :)
Zachs
17th November 2014, 11:17
Any update regarding XySubFilter being added? This is the only thing stopping me from making this player my main.
v2.10.0 has *experimental* XySubFilter support.
I haven't tested it enough with different materials and subtitle formats etc. So please report bugs with screen shots and a small sample of the video if you find any problems.
To enable this experimental feature, you'll have to run v2.10.0 once. Then close MPDN. Go to your app config file (see OP for the location), search for "UseXySubFilter" and change the value from False to True.
Hi, I was testing MPDN v2.9.6 on my laptop (ASUS N551JM with Optimus, NVIDIA 860GTX), but I'm encountering the following error when I try to open the Options dialog
What could it be? :confused:
This should now be fixed. If not, please let me know.
cyberbeing
17th November 2014, 13:14
v2.10.0 has *experimental* XySubFilter support.
Are you remembering to use 'premultiplied' alpha blending?
Some things such as blurred edges which should be semi-transparent are being displayed rather dark instead.
A few other things noticed:
'supportedLevels' is being set to '3', which forces TV levels, yet MPDN is blending onto PC range range expanded video resulting in faded subtitle output.
[XySubFilter will only perform TV.601->TV.709 matrix correction depending on the script 'YCbCr Matrix' value if the Consumer request TV range output, and the yuvMatrix value is set to TV.709.
For all other scenarios, the consumer is expected to handle these matrix corrections itself when needed.]
'arAdjustedVideoSize' width is being reported incorrectly.
[1920x816 non-anamorphic video in MPDN is reporting 4517x816]
'videoOutputRect' & 'subtitleTargetRect' are always reporting the desktop size instead of the active window/output size.
'frameRate' is being reported incorrectly. On a 23.976 fps video, MPDN seems to be reporting the REFERENCE_TIME equivalent of 41841 fps.
[XySubFilter currently doesn't use the frameRate value for anything, but should probably be fixed anyway.]
'yuvMatrix' is always being reported as 'none' instead of the actual video matrix. The YCbCr->RGB matrix conversion used by MPDN should be reported here.
[LAV Filters reports the actual video matrix bitstream flag (if present)]
[Edit:MPDN 2.10.0 actually does correctly report yuvMatrix, but only after playback start. I mistakenly checked only the initial connection.]
'combineBitmaps' is set to True, which forces XySubFilter to combine all subtitles into a single bitmap per frame.
[While not an issue, performance with 'combineBitmaps = False' which will only combine nearby bitmaps, should generally be more efficient]
Anime Viewer
17th November 2014, 15:21
v2.10.0 has *experimental* XySubFilter support.
To enable this experimental feature, you'll have to run v2.10.0 once. Then close MPDN. Go to your app config file (see OP for the location), search for "UseXySubFilter" and change the value from False to True.
What part of the OP says what files, and where to find it?
I have a MediaPlayerDotNet.exe.config file, but it only contains the following (no UseXySubFilter:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MeaVideoPlayer.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="MeaVideoPlayer.VideoPlayer" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
</configuration>
cyberbeing
17th November 2014, 16:56
What part of the OP says what files, and where to find it?
Starting v2.3.0, the 32- and 64-bit editions now have their own app config file (stored in %localappdata%\MediaPlayerDotNet).
You can just plug that part in bold into your location bar, and you'll find the config file he's talking about.
huhn
17th November 2014, 17:03
found a huge bug with xy subfilter:
video playback just stops with animated subtitle. audio is still running.
sample: "later" need a new file hoster ...
works fine with addblock: http://www.file-upload.net/download-9860859/animated-sample.mkv.html
Of cause this sample works fine in MPC-HC with madVR and EVR CP
What part of the OP says what files, and where to find it?
I have a MediaPlayerDotNet.exe.config file, but it only contains the following (no UseXySubFilter:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MeaVideoPlayer.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="MeaVideoPlayer.VideoPlayer" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
</configuration>
Starting v2.9.1, RenderScript settings now have their own separate 32- and 64-bit settings too (%localappdata%\MediaPlayerDotNet\RenderScripts.32 and %localappdata%\MediaPlayerDotNet\RenderScripts.64 respectively). Should you find the need to recover your old script config files, they are located at %localappdata%\MediaPlayerDotNet\RenderScripts.
you find 3 Application.config in this folder.
you find this folder (english operation system) under system partition in most cases c so c:/users/"your username"/appdata/local/MediaPlayerDotNet
Anima123
17th November 2014, 22:09
Shiandow, could you please add an example of how to use your ChromaNEDI into the script, which I'd like to give it a try?
I know you're quite busy with the script stuff, how's the tweak of the SuperRes algorithm recently, any improvement on that you'd like to share with us?
Shiandow
18th November 2014, 01:00
Shiandow, could you please add an example of how to use your ChromaNEDI into the script, which I'd like to give it a try?
I know you're quite busy with the script stuff, how's the tweak of the SuperRes algorithm recently, any improvement on that you'd like to share with us?
Well, adding the ChromaNEDI shaders in an Image Processing script and setting Chroma upscaling to "nearest" should still work. It would be nicer to create a render script of it, but I'm currently a bit busy with making it easier to create render scripts. I'm also not sure if I would recommend using ChromaNedi, it tends to blur chroma too much. This wouldn't have been that bad if it could work in linear light, but it can't (or at least not without introducing a lot of artefacts). So I likely won't make a render script of it at all.
I've been able to make some improvements to the SuperRes algorithm, although none of them particularly recent. There are some limits to what I could do using only shaders so the current versions are far slower and lower quality than they could be. Anyway, the main improvements are that I can now scale to arbitrary sizes. I've also added some basic anti ringing which makes it possible to increase the strength of the algorithm without increasing ringing. Also, if you'll remember, SuperRes is trying to invert a specific downscaling algorithm and it turns out that if you use a better algorithm then SuperRes also improves quite a bit, especially w.r.t. aliasing. However so far I've only gotten it to work with linear scaling, bilinear just becomes too slow. It should be possible to make this work in a render script. I've also adapted SuperRes into a chroma upscaler, which (unlike NEDI and most other algorithms) is able to work in linear light, this gives some pretty impressive results, although it's not quite fault free yet.
Zachs
18th November 2014, 18:40
Are you remembering to use 'premultiplied' alpha blending?
Some things such as blurred edges which should be semi-transparent are being displayed rather dark instead.
A few other things noticed:
'supportedLevels' is being set to '3', which forces TV levels, yet MPDN is blending onto PC range range expanded video resulting in faded subtitle output.
[XySubFilter will only perform TV.601->TV.709 matrix correction depending on the script 'YCbCr Matrix' value if the Consumer request TV range output, and the yuvMatrix value is set to TV.709.
For all other scenarios, the consumer is expected to handle these matrix corrections itself when needed.]
'arAdjustedVideoSize' width is being reported incorrectly.
[1920x816 non-anamorphic video in MPDN is reporting 4517x816]
'videoOutputRect' & 'subtitleTargetRect' are always reporting the desktop size instead of the active window/output size.
'frameRate' is being reported incorrectly. On a 23.976 fps video, MPDN seems to be reporting the REFERENCE_TIME equivalent of 41841 fps.
[XySubFilter currently doesn't use the frameRate value for anything, but should probably be fixed anyway.]
'yuvMatrix' is always being reported as 'none' instead of the actual video matrix. The YCbCr->RGB matrix conversion used by MPDN should be reported here.
[LAV Filters reports the actual video matrix bitstream flag (if present)]
'combineBitmaps' is set to True, which forces XySubFilter to combine all subtitles into a single bitmap per frame.
[While not an issue, performance with 'combineBitmaps = False' which will only combine nearby bitmaps, should generally be more efficient]
Some of the above such as premultiplied alpha I haven't forgotten about. Just ran out of time so I simply blit the texture to screen without bothering to change my renderstates. The point of the experimental support was to have a version out that people could test and see that something gets rendered on the screen and to find bugs such as what Huhn has encountered.
Other ones are simply just bugs because again I ran out of time. For example I do get the colorimetric info from upstream. It's just the sequence of the settings getting polled that caused it to return none.
But the one about returning desktop resolution as target rect is done on purpose at least for the first few versions. This will change eventually I sort out the show stopping bugs. It's not that critical anyway as the point of XySubFilter is to have high res sub as input texture.
matthew_eli
19th November 2014, 21:38
Ok, tested new 2.10 version and the problem with the "Option" panel was gone. Now I'm testing the player with my optimus laptop and it seems the only way to decode the video by the NVIDIA card. Unfortunately, if I try to use the DirectX 10 version the player stucks after few frame, freezing the last image rendered. With DirectX 9 decoding no problem at all (at least so far). I'd glad to help in debugging these issues with Optimus system, but I don't know how...could you help me? :helpful:
Anime Viewer
20th November 2014, 01:28
Ok, tested new 2.10 version and the problem with the "Option" panel was gone. Now I'm testing the player with my optimus laptop and it seems the only way to decode the video by the NVIDIA card. Unfortunately, if I try to use the DirectX 10 version the player stucks after few frame, freezing the last image rendered. With DirectX 9 decoding no problem at all (at least so far).
If you go into Video Renderer -> General is Use new windowed mode rendering path when possible checked? If so try with it unchecked. On my optimus system it has a problem if I choose Direct3D 10.1 and that checked. If I have that unchecked then there doesn't seem to be any problem.
Zachs
20th November 2014, 11:38
found a huge bug with xy subfilter:
video playback just stops with animated subtitle. audio is still running.
sample: "later" need a new file hoster ...
works fine with addblock: http://www.file-upload.net/download-9860859/animated-sample.mkv.html
Of cause this sample works fine in MPC-HC with madVR and EVR CP
Thanks for reporting this huhn!
It turned out to be a simple one to fix - I forgot to check for the HRESULT of XySubFilter's GetBitmap() which in this case failed but I assumed it's a valid bitmap.
matthew_eli
21st November 2014, 17:07
If you go into Video Renderer -> General is Use new windowed mode rendering path when possible checked? If so try with it unchecked. On my optimus system it has a problem if I choose Direct3D 10.1 and that checked. If I have that unchecked then there doesn't seem to be any problem.
Hey many thanks! It works flawlessly!
matthew_eli
22nd November 2014, 09:35
Sorry, I have to correct myself...after some tries the problem returns; still no problem with DX9 mode :confused:
Anime Viewer
22nd November 2014, 16:27
Sorry, I have to correct myself...after some tries the problem returns; still no problem with DX9 mode :confused:
Does it eventually display an error box after the stall/halt/freeze occurs (like a DX.Sharp error message)? Do you have any renderscript items running? (some of the error messages I've seen correlate and only occur when certain renderscript / shaders are running). If you have renderscripts running (ex: NEDI, resizer, etc) try removing them and test without them. Does the problem still occur? If it only occurs when a certain renderscript (or combination) occurs report what it is and Zachs or Shiandow may be able to figure out why its occurring and provide a fix.
Shiandow
22nd November 2014, 16:55
Sorry, I have to correct myself...after some tries the problem returns; still no problem with DX9 mode :confused:
You could try running DebugView (http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx)while running MPDN. If an error occurs while trying to render a frame it's error message is suppressed but you should still be able to see it in DebugView.
matthew_eli
23rd November 2014, 12:07
You could try running DebugView (http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx)while running MPDN. If an error occurs while trying to render a frame it's error message is suppressed but you should still be able to see it in DebugView.
Ehi many thanks; with this app, I collect some of the following errors:
[3540] [8765'856,631ms] Frame dropped - 9312,875ms late
[3540] [8768'057,119ms] Frame dropped - 1180,937ms late
[3540] [8785'687,657ms] Frame dropped - 9312,020ms late
[3540] [8787'828,099ms] Frame dropped - 1118,895ms late
[3540] [8787'831,080ms] Frame dropped - 1079,895ms late
Effectively the player freezes the image and restarts after that amount of time approx for each frame. BTW, this only occurs with DirectX10, no problem with DirectX9. I used a 1080p file, below the detailed info:
Generale
Unique ID : 240690412214005863899440467324354945333 (0xB513498750861AC0ACAFDA2209E3E135)
Complete name : D:\Downloads\TearsOfSteelFull12min_1080p_24fps_27qp_1474kbps_GPSNR_42.29_HM11.mkv
Format : Matroska
Format version : Version 4 / Version 2
File size : 157MiB
Duration : 12min
Overall bit rate : 1.796 Kbps
Encoded date : UTC 2013-09-04 21:16:09
Writing application : mkvmerge v6.2.0 ('Promised Land Rovi v1.0.4') built on Aug 29 2013 13:59:38
Writing library : libebml v1.3.0 + libmatroska v1.4.0
Video
ID : 1
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main@L6.2
Codec ID : V_MPEGH/ISO/HEVC
Duration : 12min
Width : 1.920 pixel
Height : 1.080 pixel
Display aspect ratio : 16:9
Frame rate mode : Costante
Frame rate : 24,000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bit
Default : Si
Forced : No
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : A_AAC
Duration : 12min
Channel(s) : 6 canali
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48,0 KHz
Compression mode : Con perdita
Default : Si
Forced : No
Zachs
23rd November 2014, 12:11
Oh my, 9 seconds!!! That means the GPU driver is stuck and someone needs to tell NVIDIA!
EDIT: What this means is the driver effectively took over 9 seconds to render a single frame all of a sudden. There's really not much an application could do when the driver misbehaves.
matthew_eli
23rd November 2014, 12:14
Added info on the file. I have the latest NVIDIA driver installed...WIth DirectX9 I tried also a 4k sample in HEVC and it works perfectly smooth...
Zachs
24th November 2014, 06:18
Is there gonna be pan and scan? I like your player so far but can't get along with it without having a way to zoom video :(
thanks
I hope v2.11.1 is what you're looking for - from full letter boxing to none in 25% steps.
kerimcem
24th November 2014, 13:45
Added volume control
:thanks:
Anime Viewer
24th November 2014, 14:44
Since I always seem to get errors (on MPDN launch after extracting RenderScripts) or go into the renderscript configuration area only to find it empty (nothing to select) how about a little more specific clarification for exactly what from the zip needs to be extracted to what directory of MPDN?
In the RenderScript.zip there is a:
RenderScripts-master folder
inside that there is:
RenderScripts folder, src folder, license file, and readme file.
For this example we'll say MPDN is extracted to:
E:\Program Files\MediaPlayerDotNet
According to the instructions on the zip download site, and the readme "Then extract the files and folders in the RenderScripts folder (located in RenderScripts-master folder) to your MPDN's RenderScripts folder."
One would be (after clicking on the zip, and going into the Renderscript-master folder) extracting the RenderScripts folder, src folder, license file, and readme file into the E:\Program Files\MediaPlayerDotNet\RenderScripts folder that already exists there (and should be empty according to the instructions). Thus one would have a seemingly redundant RenderScripts folder inside a RenderScripts. Thus it would look like this: E:\Program Files\MediaPlayerDotNet\RenderScripts\RenderScripts . Is that correct?
Is some of my extraction tests. (Example extracting the RenderScripts directory on top of the MPDN RenderScripts directory (replacing the first, and putting the src and license files in the MPDN directory/folder) I get an error that reads:
TITLE: mscorlib Error
------------------------------
An unexpected error 'System.NotSupportedException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous
versions of the .NET Framework. This release of the .NET Framework does not enable
CAS policy by default, so this load may be dangerous.
If this load is not intended to sandbox the assembly,
please enable the loadFromRemoteSources switch.
See http://go.microsoft.com/fwlink/?LinkId=155569 for more information. (mscorlib)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
Shiandow
24th November 2014, 14:56
For this example we'll say MPDN is extracted to:
E:\Program Files\MediaPlayerDotNet
According to the instructions on the zip download site, and the readme "Then extract the files and folders in the RenderScripts folder (located in RenderScripts-master folder) to your MPDN's RenderScripts folder."
One would be (after clicking on the zip, and going into the Renderscript-master folder) extracting the RenderScripts folder, src folder, license file, and readme file into the E:\Program Files\MediaPlayerDotNet\RenderScripts folder that already exists there (and should be empty according to the instructions). Thus one would have a seemingly redundant RenderScripts folder inside a RenderScripts. Thus it would look like this: E:\Program Files\MediaPlayerDotNet\RenderScripts\RenderScripts . Is that correct?
No, you should have only 1 RenderScripts folder. You can ignore the src folder and readme/license files.
Anime Viewer
24th November 2014, 15:10
No, you should have only 1 RenderScripts folder. You can ignore the src folder and readme/license files.
In that case I get the
An unexpected error 'System.NotSupportedException' has occurred. error message linked above (After launching MPDN after extracting the RenderScript folder from the zip to replace the default renderscript folder in the MPDN directory.
Shiandow
24th November 2014, 15:30
In that case I get the
An unexpected error 'System.NotSupportedException' has occurred. error message linked above (After launching MPDN after extracting the RenderScript folder from the zip to replace the default renderscript folder in the MPDN directory.
From what I understand it seems that windows doesn't trust the "framework.dll" file and is sandboxing it. You can either open the properties of framework.dll and press Unblock (as in this image (http://blogs.msdn.com/blogfiles/drew/WindowsLiveWriter/xUn.NetFixingtheattemptwasmadetoloadanas_E6EF/Unblock_1.png)) or you can replace framework.dll by the files in the /src/framework folder.
Zachs
24th November 2014, 22:58
It looks like we would need to get an open source code signing certificate to sign the dll.
Luckily it is free for open source projects.
I'll take a look into it.
Zachs
25th November 2014, 00:26
In that case I get the
An unexpected error 'System.NotSupportedException' has occurred. error message linked above (After launching MPDN after extracting the RenderScript folder from the zip to replace the default renderscript folder in the MPDN directory.
Can you try this for me please?
Open MediaPlayerDotNet.exe.config, and remove all the contents, replacing them with the following.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MeaVideoPlayer.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="MeaVideoPlayer.VideoPlayer" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
Anime Viewer
25th November 2014, 01:11
Can you try this for me please?
Open MediaPlayerDotNet.exe.config, and remove all the contents, replacing them with the following.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MeaVideoPlayer.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="MeaVideoPlayer.VideoPlayer" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
Changing the contents of the MediaPlayerDotNet.exe.config file to what you wrote worked to solve the problem. Given Windows 8.1's convoluted file system it wasn't as simple as replacing and saving. (That would give me an access denied message). I had to save the modified file to my user directory, delete the old file, and then copy the new file from my user directory back to the location of the MPDN files (inside E:\Program Files\MediaPlayerDotNet and E:\Program Files (x86)\MediaPlayerDotNet(x86) respectively).
Just to be sure I don't have other things fouled up. The Render system is back to the previous one render at a time instead of being able to stack/chain like in the previous recent versions. For example : I could select NEDI, or Resizer, but it looks like both may not be able to be used at the same time aka stacked/chained.
In other words its back to looking like:
http://s28.postimg.org/8hcsxak6j/mpdn_render_script_non_chain.jpg
instead of like:
http://i.imgur.com/lFv6ND1.png
Zachs
25th November 2014, 01:30
Just to be sure I don't have other things fouled up. The Render system is back to the previous one render at a time instead of being able to stack/chain like in the previous recent versions. For example : I could select NEDI, or Resizer, but it looks like both may not be able to be used at the same time aka stacked/chained.
Chaining is still there, under the script called "Script Chain". If you select that and click Configure, you'll find that same interface you were used to in previous versions of MPDN.
Anime Viewer
25th November 2014, 01:36
Chaining is still there, under the script called "Script Chain". If you select that and click Configure, you'll find that same interface you were used to in previous versions of MPDN.
:o
That will teach me to examine the screen fully before posting next time...or maybe not...;):thanks:
edison
25th November 2014, 04:48
Is that possible provide a mirror full screen mode when using multiscreen.
Zachs
25th November 2014, 04:57
Is that possible provide a mirror full screen mode when using multiscreen.
Nope. MPDN only works on one screen at a time in full screen mode.
foxyshadis
26th November 2014, 10:00
Changing the contents of the MediaPlayerDotNet.exe.config file to what you wrote worked to solve the problem. Given Windows 8.1's convoluted file system it wasn't as simple as replacing and saving. (That would give me an access denied message). I had to save the modified file to my user directory, delete the old file, and then copy the new file from my user directory back to the location of the MPDN files (inside E:\Program Files\MediaPlayerDotNet and E:\Program Files (x86)\MediaPlayerDotNet(x86) respectively).
BTW, you can also start your text editor as admin to work around this, then you can write anywhere. The downside is that drag-and-drop stops working.
Zachs
27th November 2014, 04:19
I'm going to be naughty and give all of you a little sneak peak of what's to come :)
Custom scalers (Yes, you can add your own scaler)
e.g. Guassian:
var sigma = radius/6;
return Math.Exp(-(x*x/(2*sigma*sigma)));
http://i.imgur.com/8VtdfGu.png
http://i.imgur.com/l4pTbMg.png
And the following needs no introduction... (don't go and grab them just yet - they won't work with the current version of MPDN)
http://i.imgur.com/rsSnlQL.png
It'll be ready when it's ready. :p
foxyshadis
27th November 2014, 09:05
Can't beat that, it's starting to look really good. Even if the UI is still a bit raw, this is the image-quality fanatic's dream player.
ryrynz
27th November 2014, 10:20
Add a few more buttons on the player, give it the ability to change colour, add a ton of keyboard shortcuts for most things MPC-HC does.. and yeah I think I'm sold.. as long as I can get better quality upscaling than NNEDI offers in madVR (haven't checked out any SuperRes comparisons) I'm guessing it's somewhat high (in comparison to MPC) memory footprint on idle is the result of using dot net?
Can't beat that, it's starting to look really good. Even if the UI is still a bit raw, this is the image-quality fanatic's dream player.
Yeah if it continues this path it's going to be hard to pass up. The 64 bit option is great, this player looks to be quite lean on resources when playing too.. wouldn't mind seeing a more detailed comparison vs other players in that area. I just wonder when it's going to stop.. Zach any plans continuing with this as an options vs MPC and MadVR? Or are you just adding a few things here and there for the near future just to give to the community a bit? as you've already created what was required for your own work.
toniash
27th November 2014, 10:34
It'll be ready when it's ready.
CAN'T WAIT!!! :cool:
Shiandow
27th November 2014, 10:37
as long as I can get better quality upscaling than NNEDI offers in madVR (haven't checked out any SuperRes comparisons)
Better than NNEDI might be difficult, I'm definitely going to try though! So far I've managed to make it sharper but with slightly more aliasing. Hopefully combining it with NEDI will improve this. And maybe someone will port NNEDI3 to MPDN at some point (which could also be combined with SuperRes...).
At any rate using SuperRes for chroma up-scaling beats any other algorithm I've seen purely because it can do part of the processing in linear light. Example: SuperChromaRes (http://i.imgur.com/HbvS1fw.png) vs Bicubic (http://i.imgur.com/mEaO6jh.png). If you are lucky you might achieve similar results with NNEDI3 but I doubt it, the SuperRes algorithm is just better suited for this kind of processing.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.