View Full Version : Media Player .NET (MPDN) - D3D HQ GPU Video Renderer [v2.49.0/v1.31.0 27 Dec 2018]
Zachs
1st September 2014, 08:05
Hi everyone,
MPDN is a modern extensible media player written in .NET (with performance critical parts in ASM/SSE2) featuring a fully integrated high quality Direct3D 9, 10, 11 video renderer that is equally extensible. In fact, its most powerful features come from its open source community contributed extensions called MPDN Extensions hosted on GitHub (https://github.com/zachsaw/MPDN_Extensions). Both madVR and libretro use portions of code from MPDN Extensions.
MPDN Extensions
MPDN Extensions consist of Custom Linear Scalers, Render Scripts, Audio Scripts and Player Extensions.
For more information, see MPDN Extensions wiki page (https://github.com/zachsaw/MPDN_Extensions/wiki/MPDN-Extensions-Wiki---Home).
Custom Linear Scalers
These custom linear scalers extend MPDN by adding Sinc-Blackman, Gaussian etc. scaling options. If there's a new scaler you want to add, give it a kernel function and MPDN will do the rest. The same custom scalers can also be used in the EWA scaler (via Render Script).
Render Scripts
Render Scripts are quite similar to AviSynth scripts and plugins except they run fully on the GPU. You can script Render Scripts in a similar fashion to AviSynth with a C# syntax, or an AviSynth-like syntax (http://forum.doom9.org/showpost.php?p=1721790&postcount=2115) with the full power of JavaScript behind it. As opposed to madVR's mostly closed source nature, MPDN's Render Scripts are fully open source (https://github.com/zachsaw/MPDN_Extensions) and are hosted on GitHub.
Can be used to add post processing pixel shader files;
or write your own custom multi-staged scaler
or anything in between
Supports compiled assemblies (.dll) or plain C# text file (.cs)
Easily configured to behave like legacy pre-/post-processing filters (chain of legacy pixel shaders)
Or write your own chain script - if Downscaling, use X scaler, if Upscaling, use Y scaler, with or without linear light etc.
Or stack image doublers based on your own set of criteria
Choose from a combination of Shader Model 3.0 (Direct3D 9), Shader Model 4.x/5.0, DirectCompute (Direct3D 11) and OpenCL! Super-xBR + SuperRes
NEDI (New Edge-Directed Interpolation) + SuperRes (http://forum.doom9.org/showthread.php?p=1684939)
NNEDI3 (Neural-Network Edge-Directed Interpolation) (http://forum.doom9.org/showthread.php?t=147695&page=21) 16/32/64/128/256 neurons + SuperRes (Requires DX11 or OpenCL hardware)
SuperChromaRes with Bilateral Prescaler
EWA (Elliptical Weighted Average) Scaler with Jinc or any CustomLinearScalers
Debanding
DXVA HD scaler
Any legacy pixel shader pre/post-scale filters such as FineSharp
and more... with presets via hotkeys
Audio Scripts
Audio Scripts are similar in concept to Render Scripts except they operate on audio samples. Audio Scripts can run purely on the CPU, interface with third party audio libraries or with OpenCL via Cudafy. See this 2x Audio Gain example (https://github.com/zachsaw/MPDN_Extensions/blob/master/Examples/AudioScripts/Gain.cs).
Reclock
Dynamic Range Compressor (Night Mode)
Player Extensions
Player Extensions allows the player to be extended via C# script. In fact MPDN's playlist is fully implemented via this extension.
See this post for a getting started example (http://forum.doom9.org/showpost.php?p=1703205&postcount=645).
Modify or extend MPDN
Supports compiled assemblies (.dll) or plain C# text file (.cs)
A huge collection of extensions on GitHub
e.g.
Online streaming, pipe input, RAR archives, DVD playback
OpenSubtitles
Audio / subtitle offset
Full screen display selector
Refresh rate changer
Playlist
Remote control
and many more
Full UI Mode
http://i.imgur.com/EVm3Vfr.png
Minimal UI Mode
http://i.imgur.com/4oaF7iA.png
Minimal UI Mode with Playlist
http://i.imgur.com/qGPjr0G.png
Features:
Direct3D Custom Renderer via Pixel Shader
Option of Direct3D 9Ex / Direct3D 10 / Direct3D 11 renderer (some graphics card drivers work better with one or the other)
Fluid Motion
Supports 8- or 10- or 16-bit input and 8- or 10- or 16- bit output for maximum image quality
Various Pixel Shader scaling algorithms:
Nearest Neighbour / Box
Bilinear / Triangle
Softcubic (w/ softness setting)
Bicubic (w/ sharpness setting, anti-ringing option)
Lanczos (4, 6, 8, 12 or 16 taps, anti-ringing option)
Spline (4, 6 or 8 taps, anti-ringing option)
Jinc (4, 6, 8, 12 or 16 taps, anti-ringing option)
Custom scalers (from GitHub - e.g. Gaussian, Sinc-Blackman)
Linear light scaling via render script
Output dithering (None, ordered, random with noise strength adjustments)
Deep color (10-bit and 16-bit) output support (read this (http://forum.doom9.org/showpost.php?p=1694502&postcount=64) first)
Improved chroma reconstruction [1] (http://screenshotcomparison.com/comparison/132966) [2] (http://screenshotcomparison.com/comparison/132908)
3DLUT via render script
Fully integrated renderer (no .ax file to install)
Customizable by adding postprocessing filters (e.g. AC3Filter, ffdshow, SVP)
MadVR style CTRL+J renderer stats
Volume control
Playback rate control
Audio track selection
Video track selection
2 methods of Reclock:
Reclock via Audio Script (https://github.com/zachsaw/MPDN_Extensions/blob/master/Extensions/AudioScripts/Reclock.cs) (similar to how the old SlySoft Reclock works)
Reclock via the RateTuner player extension (https://github.com/zachsaw/MPDN_Extensions/wiki/Rate%20Tuner)
OSD
Subtitle support
Subtitle track selection
Chapter selection
Full / Minimalist UI mode (or anything in between)
Close-source freeware with open source extensions
Pre-requisites:
Windows 7, Windows 8.1, Windows 10
.NET Framework 4.0
CPU with SSE2 instruction set
OpenCL CPU runtimes - read this (http://forum.doom9.org/showpost.php?p=1736048&postcount=3135)
If you're not using the installer,
LAV Filters must be installed (Media Player .NET is hardcoded to use these filters)
DirectVobSub (auto loading version) and/or XySubFilter must be installed for MPDN to load subtitles
If you are going to play interlaced materials, make sure you enable deinterlacing via LAV Video Decoder
Troubleshooting:
Failed to render 'filename' error for every file you try to open - read this (http://forum.doom9.org/showthread.php?p=1705831#post1705831)
MPDN won't start on my Optimus laptop (or any issues with your Optimus system) - read this (http://forum.doom9.org/showpost.php?p=1729163&postcount=2589)
Stuttering playback on GPU with 512MB RAM - reduce render queue to 4
Unable to play youtube / vimeo / dailymotion etc. links - make sure you have MPDN Extensions installed and read this (http://forum.doom9.org/showpost.php?p=1738823&postcount=3382)
User contributed articles:
Articles (http://forum.doom9.org/showpost.php?p=1706648&postcount=1030)
Special thanks:
Shiandow (https://github.com/Shiandow)
Co-designing MPDN's render script system
Main contributor of MPDN's render scripts and framework
Belphemur (https://github.com/Belphemur/) for hosting MPDN
All of MPDN's player extension devs (Gartael (https://github.com/Garteal), DeadlyEmbrace (https://github.com/DeadlyEmbrace), Belphemur (https://github.com/Belphemur/), Mercy07 (https://github.com/Mercy07) etc.)
madshi (madVR author) for providing a couple of pointers in the early stages
Everyone else who've reported bugs and written articles / guides / posts to help other users
Downloads (Latest version MPDN v2.49.0 / Extensions v2.0.0):
Installer
Media Player .NET (MPDN) Installer - x86 Edition (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/Installers/MediaPlayerDotNet_x86_2_49_0_3606_Installer.exe)
Media Player .NET (MPDN) Installer - x64 Edition (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/Installers/MediaPlayerDotNet_x64_2_49_0_3606_Installer.exe)
Standalone / Portable
Media Player .NET (MPDN) - x86 Edition (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/MediaPlayerDotNet_x86_2_49_0_3606.zip) (MD5 (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/MediaPlayerDotNet_x86_2_49_0_3606.zip.md5))
Media Player .NET (MPDN) - x64 Edition (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/MediaPlayerDotNet_x64_2_49_0_3606.zip) (MD5 (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/MediaPlayerDotNet_x64_2_49_0_3606.zip.md5))
Media Player .NET (MPDN) - AnyCPU Edition (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/MediaPlayerDotNet_AnyCPU_2_49_0_3606.zip) (MD5 (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/MediaPlayerDotNet_AnyCPU_2_49_0_3606.zip.md5))
MPDN Extensions
Open source MPDN Extensions on GitHub (https://github.com/zachsaw/MPDN_Extensions/releases/download/v2.0.0/Mpdn.Extensions.zip)
Miscellaneous
MPDN Remote Control for Android on Google Play (https://play.google.com/store/apps/details?id=com.zachsaw.mpdn_remote&hl=en)
MPDN Remote Control for Windows by DeadlyEmbrace (https://github.com/DeadlyEmbrace/MPDN_RemoteControl/releases/download/v1.4.0.72/MPDNRemoteControl.zip)
3DYD Youtube Source Filter (http://ys.3dyd.com/home/)
Old MPDN Releases (https://s3.amazonaws.com/mediaplayerdotnet-releases/Old%20Releases/)
All MPDN Extensions Releases (https://github.com/zachsaw/MPDN_Extensions/releases/)
RenderScript Presets (http://forum.doom9.org/showpost.php?p=1743874&postcount=3689) - If you are not familiar with RenderScripts these will get you started
Changelogs
Extensions
----------
v1.31.0 Changelog:
Render Scripts
Revised tag system again
Deband experimental: Handle Luma and Chroma separately to improve quality
SSIMDownscaling: Improvements
Audio Scripts
[NEW] Crossfeed: Helps reduce listening fatigue caused by the unnatural stereo image provided by headphones
Player Extensions
[NEW] OnScreenDisplay
Framework
Speedup disposing tremendously (noticeable when changing scripts)
v1.30.0 Changelog:
Render Scripts
Revised tag system
ImageProcessor: Add option to do all processing in YUV
SSSR improvements
Fix Conditionals causing scripts to fail to load on some systems
Bilateral: Krig more fine tuning
Deband improvements
Player Scripts
TextPainter: Allow it to work in windowed mode
MPDN
----
v2.49.0 Changelog:
Show more informative error messages
Fix: Some usage paths may lead to old ditherers being used instead of the new ones
v2.48.0 Changelog:
Improved fluid motion by timing frames more accurately
Improved dithering methods (especially ordered dithering)
Fixed: Pixels were misaligned when there was an unequal number of blank lines on either side of the image.
v2.47.0 Changelog:
MPDN is now signed with a commercial code-signing certificate
MPDN Full Revision History (changelogs) (https://s3.amazonaws.com/mediaplayerdotnet-releases/Latest/ChangeLog.txt)
Cheers.
huhn
1st September 2014, 11:00
first of all it is work totally fine. it is missing a lot of totally basic stuff like subtitle support, audio volume.
why did you start with 4 taps not 3? 4 is usually way to sharp in my eyes.
I haven't done any picture quality comparison but does it use high bit deep and/or dither?
does it really use the GPU? gpu-z doesn't show anything
Zachs
1st September 2014, 12:29
first of all it is work totally fine. it is missing a lot of totally basic stuff like subtitle support, audio volume.
why did you start with 4 taps not 3? 4 is usually way to sharp in my eyes.
I haven't done any picture quality comparison but does it use high bit deep and/or dither?
does it really use the GPU? gpu-z doesn't show anything
Yes it's very basic for now. The player is basically my test app for the renderer. Renderer has text overlay support but I haven't got around to implementing subtitle in the player.
I don't know what madvr's 3 tap really is. But in my renderer 4 taps means it takes 4x4 texels to calculate the resulting scaled pixel.
GPUs calculate in 32 bit floats by default and that's what my renderer uses. What exactly does high bit depth and dithering do? Dithering I assume is to do with conversion from yuv to rgb?
Are u using an amd card? On my amd card Gpu-z seems to show no gpu usage until a certain threshold. But yes it's definitely using gpu for scaling and yuv to grb conversion. I don't think the cpu is near enough for 60fps full screen 1080p jinc :)
nevcairiel
1st September 2014, 12:41
4x4 is two taps (ie 2 pixels in each direction), or also called bicubic.
Zachs
1st September 2014, 12:46
4x4 is two taps (ie 2 pixels in each direction), or also called bicubic.
Isn't 4x4 4 pixels in each direction? My bicubic is from 16 texsamples. I've seen implementations calling this 4 taps.
nevcairiel
1st September 2014, 13:02
If you go from a center point (ie. your target pixel), its 2 pixels to each edge, for a full grid of 4x4
The naming of these things is kinda inconsistent among different tools, but madVRs 3/4-tap filters function like I outlined here, bicubic is basically 2-tap, and the other filters with 3/4 tap configuration use more pixels.
Zachs
1st September 2014, 13:22
If you go from a center point (ie. your target pixel), its 2 pixels to each edge, for a full grid of 4x4
The naming of these things is kinda inconsistent among different tools, but madVRs 3/4-tap filters function like I outlined here, bicubic is basically 2-tap, and the other filters with 3/4 tap configuration use more pixels.
Ah ic. I think of all the implementations I've seen and I've seen a lot while making mine, madvr would've been the only odd one out on this.
EDIT: MPDN's 'tap' counting is based on AviSynth's as documented here: http://avisynth.nl/index.php/Lanczos_lobs/taps
kostik
1st September 2014, 13:36
Works fine, thanks :) Missing only subtitles loader and nnedi3 :)
Zachs
2nd September 2014, 06:39
Does anyone know where I could find a sample mkv/mp4 with multi-track audio for testing purposes?
*Edit: Nevermind. I found a sample and I've released v1.1.
madshi
2nd September 2014, 21:24
You may want to sign your exe file to avoid AV false alarms. Virustotal reports 2/54 for your x86 download. Usually signing your exe helps with this problem.
FWIW, on my development PC (win8.1 x64) playback with your software doesn't seem to work. I'm getting the exception "An unexpected error 'System.Reflection.TargetInvocationException' has occurred". Also, I have to use the "File -> Open" dialog. Drag&Drop is rejected by the media player.
How to count taps? Different people have different opinions on that. What madVR calls 2 taps, and you call 4 taps, some marketing guys even call 16 taps (4x4 = 16). In the end it doesn't matter much, I guess. On a side note, personally I find Lanczos, Spline and Jinc with 2 taps (in your case 4 taps) to be not worth the effort. They don't look better than Bicubic to my eyes. That's why madVR starts at 3 taps with those algorithms (which you count as 6 taps).
If you want to know what dithering is for, try playing the "colors.ytp" test pattern with madVR with dithering turned off vs. on. Then try playing it with your media player. If you don't do dithering, it will probably look quite ugly. Or alternatively try zooming the "smallramp.ytp" pattern up to fullscreen, then turn dithering off vs. on. With dithering off, you should see faint vertical bands in madVR. With dithering on, the gray ramp should be perfectly smooth. The problem is that your final rendering result should be 32bit, while the GPU really only outputs 8bit. If you round to 8bit, you're introducing quantization artifacts. So you *have* to dither, to avoid those artifacts. This is a concept well known from the audio processing world. I've introduced this concept to the HTPC video processing world a couple of years ago, when madVR was introduced. At that time (to my best knowledge) nobody else used dithering in video processing. Dithering is well known when trying to convert gray scale images to black & white. E.g. see here:
http://en.wikipedia.org/wiki/Dither
Basically converting gray scale -> black & white means reducing bitdepth from 8bit to 1bit. When doing that, using dithering produces much better results than simple rounding. The same principle still applies when reducing the bitdepth from 32bit to 8bit, although the benefits of dithering are much smaller there compared to 8bit -> 1bit. Here's the download of the "colors.ytp" test pattern with the DirectShow filter needed for that test pattern:
http://madshi.net/madTestPatternSource.zip
madshi
3rd September 2014, 13:37
Did you get hold of a stack trace?
See here:
===================================
An unexpected error 'System.Reflection.TargetInvocationException' has occurred.
------------------------------
Error Type = System.Reflection.TargetInvocationException
Error Message = Ein Aufrufziel hat einen Ausnahmefehler verursacht.
Error Source = Mpdn.Threading
Error Site = Void InternalInvoke(WorkItem, Boolean)
Error occurred = bei Mpdn.Threading.TaskThread.InternalInvoke(WorkItem work, Boolean wait)
bei Mpdn.Threading.TaskThread.Invoke(WaitCallback work, Object state)
bei Mpdn.VideoPlayer.DirectShowVideo.GetAudioTracks()
bei MediaPlayerDotNet.MainForm.
()
bei MediaPlayerDotNet.MainForm.
(String , Boolean )
bei MediaPlayerDotNet.MainForm.
()
bei MediaPlayerDotNet.MainForm.
(Object , MouseEventArgs )
bei System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e)
bei System.Windows.Forms.UserControl.OnMouseDown(MouseEventArgs e)
bei System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.ContainerControl.WndProc(Message& m)
bei System.Windows.Forms.UserControl.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei 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 = 31,9 GB
Available Physical Memory = 28,1 GB
Date Time = 03.09.2014 14:33:55
User Name = Dev-PC\madshi
Application Startup Path = D:\Desktop\MediaPlayerDotNet_x86_1_1_2_438
Application Executable Path = D:\Desktop\MediaPlayerDotNet_x86_1_1_2_438\MediaPlayerDotNet.exe
CurrentDirectory = D:\Desktop\MediaPlayerDotNet_x86_1_1_2_438
SystemDirectory = C:\WINDOWS\system32
Ran As Admin = False
HasShutdownStarted = False
MachineName = DEV-PC
ProcessorCount = 8
LogicalDrives = C:\, D:\, W:\, Y:\
EnvironmentVariables = PROCESSOR_ARCHITEW6432 = AMD64; COMPUTERNAME = DEV-PC; CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files; VS80COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\; HOMEPATH = \Users\madshi; CG_BOOST_ROOT = C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\boost_1_39; PROCESSOR_REVISION = 3a09; VS100COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\; PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC; USERDOMAIN_ROAMINGPROFILE = Dev-PC; TEMP = C:\Users\madshi\AppData\Local\Temp; LOCALAPPDATA = C:\Users\madshi\AppData\Local; PUBLIC = C:\Users\Public; IBREDISTDIR = C:\Users\Public\Documents\InterBase\redist\InterBaseXE3; windir = C:\WINDOWS; USERDOMAIN = Dev-PC; ProgramFiles(x86) = C:\Program Files (x86); Path = C:\Program Files (x86)\Embarcadero\Studio\14.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\14.0\Bpl;C:\Program Files (x86)\Embarcadero\Studio\14.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\14.0\Bpl\Win64;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Users\madshi\AMD APP SDK\2.9\bin\x86_64;C:\Users\madshi\AMD APP SDK\2.9\bin\x86;C:\Program Files (x86)\AMD APP SDK\2.9\bin\x86_64;C:\Program Files (x86)\AMD APP SDK\2.9\bin\x86;C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin;C:\Users\Public\Documents\RAD Studio\12.0\Bpl;C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin64;C:\Users\Public\Documents\RAD Studio\12.0\Bpl\Win64;C:\Program Files (x86)\Borland\Delphi 7\Bin;C:\Program Files (x86)\Borland\Delphi 7\Projects\Bpl\;C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin;C:\Users\Public\Documents\RAD Studio\11.0\Bpl;C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin64;C:\Users\Public\Documents\RAD Studio\11.0\Bpl\Win64;C:\Program Files (x86)\CollabNet;C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\bin;C:\Users\Public\Documents\RAD Studio\10.0\Bpl;C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\bin64;C:\Users\Public\Documents\RAD Studio\10.0\Bpl\Win64;C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin;C:\Users\Public\Documents\RAD Studio\9.0\Bpl;C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin64;C:\Users\Public\Documents\RAD Studio\9.0\Bpl\Win64;C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin;C:\Users\Public\Documents\RAD Studio\8.0\Bpl;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin;C:\Users\Public\Documents\RAD Studio\7.0\Bpl;C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin;C:\Users\Public\Documents\RAD Studio\6.0\Bpl;C:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin;C:\Users\Public\Documents\RAD Studio\5.0\Bpl;C:\Windows\Microsoft.NET\Framework\v1.1.4322\;C:\Program Files (x86)\Borland\BDS\4.0\Bin;C:\Program Files (x86)\Borland\Shared\BDE\;C:\Program Files (x86)\Borland\BDS\3.0\Bin;C:\PROGRA~2\Borland\CBUILD~2\Bin;C:\PROGRA~2\Borland\CBUILD~2\Projects\Bpl;C:\PROGRA~2\Borland\DELPHI~2\Projects\Bpl;C:\PROGRA~2\Borland\DELPHI~2\Bin;C:\PROGRA~2\Borland\Delphi5\Projects\Bpl;C:\PROGRA~2\Borland\Delphi5\Bin;C:\PROGRA~2\Borland\CBUILD~1\Projects\Bpl;C:\PROGRA~2\Borland\CBUILD~1\Bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files\EmEditor;C:\PROGRA~2\Borland\DELPHI~4\Bin;C:\PROGRA~2\Borland\DELPHI~4\Projects\Bpl;C:\Sources\eac3to;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files (x86)\CineForm\Tools;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Users\madshi\Documents\Borland Studio Projects\Bpl;C:\PROGRA~2\Borland\DELPHI~3\Bin;C:\Program Files (x86)\Python27;C:\Program Files (x86)\Python27\Scripts; MINGW = C:\mingw; PROCESSOR_LEVEL = 6; PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 58 Stepping 9, GenuineIntel; DXROOT = C:\Program Files (x86)\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Tools\Sandcastle\; PSModulePath = C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\; NUMBER_OF_PROCESSORS = 8; CommonProgramFiles = C:\Program Files (x86)\Common Files; JAM_TOOLSET = MINGW; ProgramData = C:\ProgramData; ProgramW6432 = C:\Program Files; ProgramFiles = C:\Program Files (x86); BDSCOMMONDIR = C:\Users\Public\Documents\RAD Studio\5.0; FP_NO_HOST_CHECK = NO; TMP = C:\Users\madshi\AppData\Local\Temp; SESSIONNAME = Console; SystemRoot = C:\WINDOWS; CommonProgramW6432 = C:\Program Files\Common Files; LOGONSERVER = \\DEV-PC; USERPROFILE = C:\Users\madshi; APPDATA = D:\Eigene Dateien\AppData; HOMEDRIVE = C:; VS110COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\; USERNAME = madshi; PROCESSOR_ARCHITECTURE = x86; OS = Windows_NT; ComSpec = C:\WINDOWS\system32\cmd.exe; SystemDrive = C:; AMDAPPSDKROOT = C:\Program Files (x86)\AMD APP SDK\2.9\; INTELOCLSDKROOT = C:\Program Files (x86)\Intel\OpenCL SDK\3.0\; ALLUSERSPROFILE = C:\ProgramData
RuntimeVersion = 4.0.30319.34014
Thread Count = 50
Handle Count = 882
VM Size = 474,1 MB
Peak VM Size = 474,1 MB
Working Set Size = 165,2 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, ADvdDiscHlp1.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, aticfx32.dll, atiu9pag.dll, atiumdag.dll, atiumdva.dll, dcomp.dll, winmm.dll, WINMMBASE.dll, cfgmgr32.dll, DEVOBJ.dll, d3dx9_43.dll, D3D9NativeServices.dll, SETUPAPI.dll, WTSAPI32.dll, powrprof.dll, WINSTA.dll, usp10.dll, clbcatq.dll, quartz.dll, LAVSplitter.ax, avformat-lav-55.dll, avutil-lav-52.dll, avcodec-lav-55.dll, libbluray.dll, WS2_32.dll, NSI.dll, sxs.dll, LAVVideo.ax, swscale-lav-2.dll, avfilter-lav-4.dll, qedit.dll, MSVFW32.dll, COMDLG32.dll, CallbackFilter.ax, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll, diasymreader.dll, psapi.dll
===================================
Ein Aufrufziel hat einen Ausnahmefehler verursacht. (Mpdn.Threading)
------------------------------
Program Location:
bei Mpdn.Threading.TaskThread.InternalInvoke(WorkItem work, Boolean wait)
bei Mpdn.Threading.TaskThread.Invoke(WaitCallback work, Object state)
bei Mpdn.VideoPlayer.DirectShowVideo.GetAudioTracks()
bei MediaPlayerDotNet.MainForm.
()
bei MediaPlayerDotNet.MainForm.
(String , Boolean )
bei MediaPlayerDotNet.MainForm.
()
bei MediaPlayerDotNet.MainForm.
(Object , MouseEventArgs )
bei System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e)
bei System.Windows.Forms.UserControl.OnMouseDown(MouseEventArgs e)
bei System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
Anyway just to be clear, I'm not trying to make MPDN to be as good as MadVR. Like I said in the OP, it's meant for other things but since my test app was so close to being a standalone media player, I thought I should share it.
That's just fine with me. If I may ask: What purpose are you writing a video renderer for? If you can't say, for whatever reason, that's ok. Just curious...
Zachs
3rd September 2014, 15:16
Ah thanks for the stack trace!
I wasn't checking for media files without audio in one of my methods. Will be fixed in next release.
As for the actual use, I needed a relatively high quality 64-bit (because the host app which I can't say what it is deals with a huge amount of data) video player with support for custom text/bitmap overlays (event driven).
madshi
3rd September 2014, 17:41
Yeah, I was mostly testing with video-only files!
Ah, I see. Kinda painful, though, that you had to sort of reinvent the wheel, just because madVR has no 64bit version yet... :(
Zachs
4th September 2014, 01:37
Yeah, I was mostly testing with video-only files!
Ah, I see. Kinda painful, though, that you had to sort of reinvent the wheel, just because madVR has no 64bit version yet... :(
Yeah you can say that again! I wasn't keen at all on writing my own renderer knowing madVR is exactly what I needed if only it had a 64-bit version.
Anyway it turned out to be a good learning experience. This way I could fix any bugs that we encounter in the field too. There was another concern with regards to madVR -- what is its licensing terms in regards to using it in a commercial product? (not that it matters now but I'm just curious...)
madshi
4th September 2014, 06:36
My plan is to maybe create a "pro" version at some point with some cool extra features. The normal madVR version would still contain all important features and stay freeware, but to get the extra features, users would have to license the pro version. This means that I would benefit from commercial software using/distributing the freeware madVR version (without even paying me anything), because it would improve my chances to get more pro licenses sold to end users.
That's just an idea at this point, though, and not something I plan to do before I reach v1.0.
QBhd
4th September 2014, 13:51
madshi, I think he was asking what are the terms for him to use it in a commercial product...
QB
madshi
4th September 2014, 14:10
Well, basically what I was saying is that I'm generally open to commercial software using madVR, under certain circumstances even without payment. Of course the details would have to be discussed privately and agreed upon.
Milardo
4th September 2014, 14:21
Hi, where can i ask for feature requests for this player? Also, is this program portable(no installer)? Does it have capture card support? Can you use 3rd party directshow filters?
Zachs
4th September 2014, 15:10
You can request features here.
Yes it's portable.
No it doesn't support capture card.
It supports additional directshow filters for audio only. E.g. ac3filter for postprocessing. You can opt for reclock audio renderer too if you have it installed.
Milardo
4th September 2014, 16:27
Thanks for replying. I guess, may i request for using 3rd party video directshow filters, and capture card support, specifically a card i have which is not supported by any known media player, it's the roxio game capture hd pro.
Dark Eiri
4th September 2014, 17:26
This is like MPC-HC's handsome brother. I like it a lot! I just have one minor request: can you lock window resizing proportions to video aspect ratio?
foxyshadis
4th September 2014, 22:52
Thanks for replying. I guess, may i request for using 3rd party video directshow filters, and capture card support, specifically a card i have which is not supported by any known media player, it's the roxio game capture hd pro.
This probably isn't the appropriate thread for that request. Getting VLC or MPC-HC/BE to support it would be more likely, since they already have capture support.
Zachs
5th September 2014, 09:15
This is like MPC-HC's handsome brother. I like it a lot! I just have one minor request: can you lock window resizing proportions to video aspect ratio?
Will put that into my todo list.
Zachs
8th September 2014, 12:40
Hmm I just realised hosting files on Dropbox will cause Chrome to complain it is malicious!
So I'm now hosting the latest version on my own website (zachsaw.com). I'll need some hosting space for the older versions, anyone cares to sponsor some?
ajp2k11
10th September 2014, 12:49
I have problems with black screen in MadVR but MPDN works quite well, thanks for making it available! Looking forward to further development... :)
Zachs
11th September 2014, 08:21
Ordered dithering and experimental*** 10-bit output support are in the pipeline.
*** I don't have a card capable of 10-bit output, so this will be highly experimental as it is completely untested!
huhn
11th September 2014, 12:22
Ordered dithering and experimental*** 10-bit output support are in the pipeline.
*** I don't have a card capable of 10-bit output, so this will be highly experimental as it is completely untested!
all card since nvidia 2xx and amd 5xxx should be able to output 10 bit on a direct x "fullscreen" surface. and I don't think there should be a way without this. of cause professional cards can do it with openGL.
edit: program crashes when a file with ASS subtitle is load but no vsfilter is installed. I only tried the 64 bit version.
and about 10 bit is there a way to see if the player tries to send a 10 bit I think RGB "picture to the GPU?
I highly doubt my TV is 10 bit but I can send it 12 bit RGB and it except it.
shouldn't 10 bit dithered RGB look like 8 bit rounding on a 8 bit screen. ok there is a chance my screen can use dither too... not easy to test without a 10 bit screen.
Zachs
11th September 2014, 14:19
all card since nvidia 2xx and amd 5xxx should be able to output 10 bit on a direct x "fullscreen" surface. and I don't think there should be a way without this. of cause professional cards can do it with openGL.
edit: program crashes when a file with ASS subtitle is load but no vsfilter is installed. I only tried the 64 bit version.
and about 10 bit is there a way to see if the player tries to send a 10 bit I think RGB "picture to the GPU?
I highly doubt my TV is 10 bit but I can send it 12 bit RGB and it except it.
shouldn't 10 bit dithered RGB look like 8 bit rounding on a 8 bit screen. ok there is a chance my screen can use dither too... not easy to test without a 10 bit screen.
Can you get the stack trace for the crash?
Re: 10 bit support, my check for A2R10G10B10 always fails on my GTX560 (on a C++ test app):
Direct3DCreate9Ex(D3D_SDK_VERSION, &d3d); // create the Direct3D interface
if (FAILED(d3d->CheckDeviceType(0, D3DDEVTYPE_HAL, D3DFMT_A2R10G10B10, D3DFMT_A2R10G10B10, FALSE)))
return false;
If anyone could give me a hand on how to actually get 10-bit support on my GTX560 I'd appreciate it! (EDIT: Apparently, even MPC-HC says my GTX560 has no 10-bit output support)
To find out if it's 10 bit enabled, get the player to show stats (ctrl+J). If you see "High bit depth output enabled" then it is 10 bits in FSE mode.
nevcairiel
11th September 2014, 15:01
IIRC, you need at least DirectX 10 for 10-bit output. In this day and age, using DX11 for that is probably the best course of action.
Zachs
11th September 2014, 15:17
Has anyone ever got mpc-hc's 10 bit output to work? Their sync renderer uses d3d9.
huhn
11th September 2014, 15:24
read this: http://forum.doom9.org/showpost.php?p=1687417&postcount=1420
and ask him he looks like the best person to ask about EVR.
at the bug:
not happing after I uninstalled the x64 bit version from xy vsfilter. does your player save the crash dumbs some where?
nevcairiel
11th September 2014, 15:29
Has anyone ever got mpc-hc's 10 bit output to work? Their sync renderer uses d3d9.
It doesn't really work, no. Its extremely limited and only works on very few GPUs - and if it actually outputs 10-bit later is questionable at best.
As of DX10 its actually part of the standard, and all GPUs should be able to do it.
dansrfe
11th September 2014, 17:18
Can using Media Player .NET potentially solve the black screen problem for 7/8xx GPUs using madVR?
Anima123
12th September 2014, 03:51
Cannot run the 64-bit version under Windows 8.1 64-bit OS.
TITLE: SharpDX.Direct3D9 Error
------------------------------
An unexpected error 'System.BadImageFormatException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) (SharpDX.Direct3D9)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
Zachs
12th September 2014, 04:25
shouldn't 10 bit dithered RGB look like 8 bit rounding on a 8 bit screen. ok there is a chance my screen can use dither too... not easy to test without a 10 bit screen.
I just noticed I missed that part of your question.
10-bit dithered isn't the same as rounding to 8-bit. Rounding to 10 bits, you get quantisation error of 1/1024 whereas in 8 bits it's 1/256. Dithering in 10 bits will give you better perceived quality than plain 10 bits output. Concept is the same as dithering in 8 bits but you do it in 10 bits. If your monitor truly supports 10 bit output or more, you should not need to enable dithering at all (although ordered dithering should get you even closer to the intended colour).
read this: http://forum.doom9.org/showpost.php?p=1687417&postcount=1420
and ask him he looks like the best person to ask about EVR.
at the bug:
not happing after I uninstalled the x64 bit version from xy vsfilter. does your player save the crash dumbs some where?
Ah, 10-bit output requires NVIDIA workstation cards. No wonder it didn't work. Good news though, my old AMD HD4530 supports it. It's now been tested and will be released in the next version.
However, with my old AMD card / driver, it only worked the first time after system reboot and subsequent init into 10-bit mode will cause video corruption. If you could try it out and report back (i.e. whether you have the same image corruption problem when you go back into FSE mode the second time), I'd appreciate it. To find out if 10-bit mode is enabled, go into full screen exclusive mode, and look out for the line "High bit depth output enabled" on the player stats. Oh and make sure you enable high bit depth output in the options first.
EDIT: The corruption was a driver bug. I switched drivers and it's working now although sometimes getting in and out of FSE mode still fails (just have to try going windowed/FSE mode again and it'll be fine). Overall my experience with AMD drivers hasn't been the most satisfying.
Strangely enough, MPC-HC's internal renderers says the same card doesn't support 10-bit output mode.
RE: Crash dumps. No unfortunately it doesn't save crash dumps yet.
Can using Media Player .NET potentially solve the black screen problem for 7/8xx GPUs using madVR?
Not sure what you mean by solve the problem for madVR but a few posts above said he's not getting the black screen problem on MPDN as he was on madVR.
Cannot run the 64-bit version under Windows 8.1 64-bit OS.
I developed it under Win8.1 64-bit.
Make sure you have the correct version of DX9 installed (Jun2010) -- Quick guess: it looks like you've put a 32-bit dx9 dll in the folder haven't you?
Zachs
12th September 2014, 06:10
Strangely enough, of all the GPUs I've tested, only the NVIDIA cards do not support 10-bit output mode!
Intel HD Graphics 3000 corrupts all DirectX displays (including DWM) after exiting from the 10-bit FSE mode. This is on the latest drivers (Apr 2014).
The AMD HD4530 runs great in 10-bit mode but on some drivers it may also get image corruption in subsequent initializations into 10-bit FSE mode.
I'd say that 10-bit output support is in its infancy at this moment for all the 3 major GPU vendors. In light of that, I've left the option unchecked by default.
huhn
12th September 2014, 09:11
http://nvidia.custhelp.com/app/answers/detail/a_id/3011/related/1
nope normal cards can do 10 bit with DX 10-11 too.
anima123
looks like the same error I got
are you trying to play a file with subtitle?
nevcairiel
12th September 2014, 09:52
Strangely enough, of all the GPUs I've tested, only the NVIDIA cards do not support 10-bit output mode!
Intel HD Graphics 3000 corrupts all DirectX displays (including DWM) after exiting from the 10-bit FSE mode. This is on the latest drivers (Apr 2014).
The AMD HD4530 runs great in 10-bit mode but on some drivers it may also get image corruption in subsequent initializations into 10-bit FSE mode.
I'd say that 10-bit output support is in its infancy at this moment for all the 3 major GPU vendors. In light of that, I've left the option unchecked by default.
Thats the unsupported DX9 mode, give it a whirl in DX10 or above, it should work much better.
Zachs
12th September 2014, 13:38
Yeah I'll look into dx10.
Anima123
12th September 2014, 18:37
Thanks Zachs, that's exactly what the error from. Now I can use your player on playing back of video files, except for .wmv files, which generate another error.
Volfield
12th September 2014, 19:07
Zachs can you add support for XySubFilter?
Zachs
13th September 2014, 01:32
Thanks Zachs, that's exactly what the error from. Now I can use your player on playing back of video files, except for .wmv files, which generate another error.
Tbh I have not tested it with wmv files but I'll have a look. Does anyone know if Lav filters support the format?
Zachs can you add support for XySubFilter?
That was my first choice when I looked into adding subtitle support but it crashed. So I had to do with vsfilter instead for the moment. This is definitely on my todo list.
romulous
13th September 2014, 05:28
Tbh I have not tested it with wmv files but I'll have a look. Does anyone know if Lav filters support the format?
It does, but not by default. With LAV Splitter, you have to enable the Windows Media checkbox when you run the LAV installer. With LAV Audio, wma audio is disabled by default, but you can open the filter properties and enable it. With LAV Video, I believe all wmv (VC1 etc) is enabled by default.
nevcairiel
13th September 2014, 08:52
The default was changed quite some time ago, and Windows Media is now enabled by default in the installer.
Audio is indeed still disabled as the Microsoft decoder does a better job sometimes.
BetA13
14th September 2014, 18:40
quote:
Proper support for 10-bit (high bit-depth) output
how can i check if this is working?
i enabled it in the options menue and everything works....no error...
But how can i check the output? (ctrl - j) doesnt show it?!?!?
greetz
edit:
using an Nvidia GTX670 here...(win. 7 64bit)
huhn
14th September 2014, 19:43
the current version tries to do it with direct x 9 this should not work
Keiyakusha
15th September 2014, 04:37
This player looks very nice!
For quite some time I am dreaming of MPC-BE fork that will have all the unneeded stuff (decoders, splitters, dxva, renderers, web interface, subtitle engine...) stripped and will be hardcoded to use madvr, xysubfilter and external LAV filters. Basically what can be called madvr+lav+xy gui. Interestingly enough, even though MPDN doesn't uses the original madvr, it pretty much fits my definition of a good modern lightweight player. So I might switch to it to play all my videos once it'll have xysubfilter support and some more usability options like chapter selection, keys rebinding (default mpc-like binds sux) and fixed window size during loading new files ("auto-zoom" in MPC)
edison
15th September 2014, 05:42
you can not do 10-bit scan-out in D3D9 with NVIDIA GTX 560, because 10-bit surface is not a forced standard in D3D9, you should use D3D10+.
Zachs
15th September 2014, 07:44
Yes a few others have mentioned the same. I'm going to drop support for d3d9 GPUs in the next version and only target ones that support d3d10.
Kurtnoise
15th September 2014, 07:47
Hi,
Could you add an option to hide/show the Menus ?
Zachs
15th September 2014, 08:00
Will do.
madshi
15th September 2014, 11:37
Yes a few others have mentioned the same. I'm going to drop support for d3d9 GPUs in the next version and only target ones that support d3d10.
So no DXVA decoding/deinterlacing? Or does LAV already support DXVA for DX10/11?
nevcairiel
15th September 2014, 11:40
You can do deinterlacing just fine, its independent of what the decoder does.
You're right however that it might make DXVA2-Native decoding break for now.
Zachs
15th September 2014, 12:38
Dxva cb will still work too. I never supported dxva native to begin with anyway. Is there much to gain from dxva native decoding?
huhn
15th September 2014, 13:04
you spare the a copyback/upload so it is a little bit faster.
maybe a problem for weaker GPU but you can't really notice a difference with mid-high end gpus.
madshi
15th September 2014, 13:12
AMD generations older than 7xxx were very slow with copyback. They might still be able to do copyback 1080p24/1080i60, but just barely, IIRC. Personally, I'm not a big fan of DXVA decoding, anyway, but it seems to be important for some users.
Anima123
15th September 2014, 18:55
I wonder if dithering methods in MPDN are similar to madVR, since madVR's dithering cost a lot more GPU power.
madshi
15th September 2014, 20:02
Which dithering option did you choose in madVR? And did you enable the related "trade quality for performance" option? And did you disable smooth motion FRC? FWIW, madVR uses a rather advanced version of ordered dithering. I don't know what MPDN is doing. It's probably a simpler implementation.
Anima123
15th September 2014, 22:10
Usually I'm using ordered dithering with madVR. I have tried more advanced algorithm, yet cannot get normal playback due to the weak gpu I had.
madshi
15th September 2014, 22:28
Yes, but the ordered dithering algorithm in madVR is more advanced than what e.g. LAV does, or probably also what MPDN does. What is more, madVR's ordered dithering also by default (unless you enable that "trade quality" option) runs in linear light instead of gamma light. And if you enable smooth motion FRC, it has to dither many more frames than otherwise. So unless you level the playing field, it would not be fair to compare the rendering performance of madVR and MPDN. So you should at least enable that "trade quality" option and disable smooth motion FRC. And even then madVR still probably does more work because madVR's ordered dithering mask is probably bigger than MPDN's. I can't say the latter for sure, though, because I don't know what MPDN does exactly.
Zachs
16th September 2014, 06:24
MPDN's ordered dithering is slightly more expensive than random dithering on weaker GPUs. For the purpose of video playback, I actually prefer to use random dithering as it feels more natural (film grain). I could also tune the strength to suit the monitor. E.g. my laptop has a really lousy display. I find that a strength of 4.0 gives me the smoothest gradient.
It's really hard to compare MPDN to MadVR. What should matter in the end is what your eyes can see (a combo of personal preference, monitor quality, and anything in between) and what your GPU is capable of.
kostik
21st September 2014, 17:59
I have Quadro 4000m and 10bit works, lets say, It doesn't crash or make any problems (I am using Exclusive full screen).
I will test the new version and report back
Zachs
22nd September 2014, 05:47
MPDN now supports 10-bit and 16-bit output modes in Direct3D 10 and 11. In Direct3D 9Ex mode, selecting 10-bit and 16-bit output modes will cause MPDN to attempt to use the respective modes but fallback when it's not supported (i.e. if 16-bit mode is unsupported, use 10-bit. If 10-bit isn't supported, fallback to 8-bit).
You will find this feature particularly useful especially if you have 10-bit sources and/or if you use 3DLUTs as you can now faithfully reproduce the picture as intended.
One thing to note though, displays / links that don't support deep color (i.e. pre-HDMI 1.3 and DVI) will produce horrible banding effects unless 8-bit output is selected. Analog output is perfectly happy with the deep color output though.
A final word of warning: 16-bit output mode is quite buggy across different cards (even with the same version of driver). In my testing with 3 different generations of NVIDIA cards on Win8.1 and Win7, I found only one instance where the backcolor was cleared to white instead of black (with 9600GTX on Win8.1). AMD cards displays with incorrect gamma while in 16-bit mode (MPDN has a workaround for this and AMD cards now displays correctly). Intel GPUs are even more of a mixed bag - on P4600 Win7, I get completely wrong colours while displaying through DVI.
I'm very interested to find out what other bugs you guys encounter.
kostik
22nd September 2014, 13:04
tried 2.0V but I get this error :An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
No metter what bitdepth setting I choose, tried x64 and AnyCPU ver.
Zachs
22nd September 2014, 13:08
tried 2.0V but I get this error :An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
No metter what bitdepth setting I choose, tried x64 and AnyCPU ver.
Did you get this problem with the old version when playing the same files?
The DirectShow portion of MPDN hasn't changed.
Also, there's a show detail button on the lower left when the error dialog is displayed. Can you get me the stack trace please?
kostik
22nd September 2014, 13:19
Did you get this problem with the old version when playing the same files?
The DirectShow portion of MPDN hasn't changed.
Also, there's a show detail button on the lower left when the error dialog is displayed. Can you get me the stack trace please?
Didnt have this issue with previous version.
===================================
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
Error Type = Mpdn.VideoPlayer.DsGraphException
Error Message = Failed to render file 'H:\Movies\The.Amazing.Spider-Man.2.2014.RETAIL.1080p.Bluray.DTS-HD.x264-EVO\The.Amazing.Spider-Man.2.2014.RETAIL.1080p.Bluray.DTS-HD.x264-EVO.mkv'
Error Source = Mpdn.VideoPlayer
Error Site = Void .ctor(System.String, RenderFrameEventHandler, GraphNotifyEventHandler, Int32, Boolean, Filter, Filter[])
Error occurred = at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, RenderFrameEventHandler renderFrameEventHandler, GraphNotifyEventHandler graphNotifyEventHandler, Int32 queueFrames, Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
at Mpdn.VideoPlayer.VideoPlayer.Load(String fileName, Int32 aspectRatioX, Int32 aspectRatioY, YuvColorimetry yuvColorimetry, Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
at MediaPlayerDotNet.MainForm.
(String )
at MediaPlayerDotNet.MainForm.
(String , Boolean )
at MediaPlayerDotNet.MainForm.
(String )
at MediaPlayerDotNet.MainForm.
(Object , EventArgs )
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.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 = 16 GB
Available Physical Memory = 13.9 GB
Date Time = 22/09/2014 12:12:32
User Name = DaniK\DaniKe
Application Startup Path = C:\Users\DaniKe\Desktop\New folder (2)
Application Executable Path = C:\Users\DaniKe\Desktop\New folder (2)\MediaPlayerDotNet.exe
CurrentDirectory = C:\Users\DaniKe\Desktop\New folder (2)
SystemDirectory = C:\Windows\system32
Ran As Admin = True
HasShutdownStarted = False
MachineName = DaniR
ProcessorCount = 8
LogicalDrives = C:\, F:\, G:\, H:\
EnvironmentVariables = COMPUTERNAME = DaniR; USERPROFILE = C:\Users\DaniKe; HOMEPATH = \Users\DaniKe; LOCALAPPDATA = C:\Users\DaniKe\AppData\Local; asl.log = Destination=file; PSModulePath = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files\Intel\; PROCESSOR_ARCHITECTURE = AMD64; Path = C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\; CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files; ProgramFiles(x86) = C:\Program Files (x86); PROCESSOR_LEVEL = 6; LOGONSERVER = \\DaniR; PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC; HOMEDRIVE = C:; SystemRoot = C:\Windows; ALLUSERSPROFILE = C:\ProgramData; PUBLIC = C:\Users\Public; FP_NO_HOST_CHECK = NO; APPDATA = C:\Users\DaniKe\AppData\Roaming; PROCESSOR_REVISION = 2a07; USERNAME = DaniKe; CommonProgramW6432 = C:\Program Files\Common Files; CommonProgramFiles = C:\Program Files\Common Files; OS = Windows_NT; USERDOMAIN_ROAMINGPROFILE = DaniK; PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 42 Stepping 7, GenuineIntel; ComSpec = C:\Windows\system32\cmd.exe; SystemDrive = C:; TEMP = C:\Users\DaniKe\AppData\Local\Temp; ProgramFiles = C:\Program Files; NUMBER_OF_PROCESSORS = 8; TMP = C:\Users\DaniKe\AppData\Local\Temp; ProgramData = C:\ProgramData; ProgramW6432 = C:\Program Files; windir = C:\Windows; USERDOMAIN = DaniK; __COMPAT_LAYER = Installer
RuntimeVersion = 4.0.30319.34014
Thread Count = 14
Handle Count = 357
VM Size = 780.5 MB
Peak VM Size = 791.6 MB
Working Set Size = 75.9 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, apphelp.dll, ADVAPI32.dll, msvcrt.dll, sechost.dll, RPCRT4.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, CRYPTBASE.dll, bcryptPrimitives.dll, uxtheme.dll, Start8_64.dll, PROPSYS.dll, OLEAUT32.dll, clrjit.dll, CRYPTSP.dll, rsaenh.dll, bcrypt.dll, System.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll, DirectShowLib-2005.dll, SharpDX.Direct3D9.dll, SharpDX.dll, SharpDX.Direct3D10.dll, comctl32.dll, dwmapi.dll, gdiplus.dll, DWrite.dll, WindowsCodecs.dll, System.Core.ni.dll, shell32.dll, SHCORE.dll, YAXLib.dll, System.Xml.Linq.ni.dll, System.Xml.ni.dll, System.Configuration.ni.dll, VideoFrameServicesNative.dll, d3d9.dll, VERSION.dll, nvd3dumx.dll, PSAPI.DLL, SharpDX.DXGI.dll, dxgi.dll, powrprof.dll, nvSCPAPI64.dll, SETUPAPI.dll, CFGMGR32.dll, d3d10_1.dll, d3d10_1core.dll, d3d11.dll, nvwgf2umx.dll, D3D9NativeServices.dll, WINMM.dll, WTSAPI32.dll, WINMMBASE.dll, DEVOBJ.dll, nvapi64.dll, WINTRUST.dll, CRYPT32.dll, MSASN1.dll, WINSTA.dll, d3dx10_43.dll, usp10.dll, CommandLine.dll, clbcatq.dll, tiptsf.dll, quartz.dll, LAVSplitter.ax, avformat-lav-55.dll, avutil-lav-52.dll, avcodec-lav-55.dll, libbluray.dll, WS2_32.dll, NSI.dll, sxs.dll, LAVVideo.ax, swscale-lav-2.dll, avfilter-lav-4.dll, qedit.dll, MSVFW32.dll, COMDLG32.dll, Microsoft.ExceptionMessageBox.dll, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll, diasymreader.dll, SspiCli.dll
===================================
Failed to render file 'H:\Movies\The.Amazing.Spider-Man.2.2014.RETAIL.1080p.Bluray.DTS-HD.x264-EVO\The.Amazing.Spider-Man.2.2014.RETAIL.1080p.Bluray.DTS-HD.x264-EVO.mkv' (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, RenderFrameEventHandler renderFrameEventHandler, GraphNotifyEventHandler graphNotifyEventHandler, Int32 queueFrames, Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
at Mpdn.VideoPlayer.VideoPlayer.Load(String fileName, Int32 aspectRatioX, Int32 aspectRatioY, YuvColorimetry yuvColorimetry, Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
at MediaPlayerDotNet.MainForm.†††
††††”Œ(String )
at MediaPlayerDotNet.MainForm.†††
††††”‹(String , Boolean )
at MediaPlayerDotNet.MainForm.†††
††††”†(String )
at MediaPlayerDotNet.MainForm.†††
††††•œ(Object , EventArgs )
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
===================================
The owner SID on a per-user subscription doesn't exist (Exception from HRESULT: 0x80040207) (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo.Load(String fileName, Boolean loadSubtitles)
at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, RenderFrameEventHandler renderFrameEventHandler, GraphNotifyEventHandler graphNotifyEventHandler, Int32 queueFrames, Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
Zachs
22nd September 2014, 13:31
With the previous version, did you have to drop d3dx9_43.dll into the MPDN folder?
Can you try doing that with the new version too?
Does this happen with every media file you're trying to play?
kostik
22nd September 2014, 13:41
With the previous version, did you have to drop d3dx9_43.dll into the MPDN folder?
Can you try doing that with the new version too?
Does this happen with every media file you're trying to play?
No, I didnt have to drop it into the MPDN folder with previous version.
And it happens with every media file.
Droping d3dx9_43.dll into the main folder didnt help :(
Zachs
22nd September 2014, 13:43
No, I didnt have to drop it into the MPDN folder with previous version.
And it happens with every media file.
Droping d3dx9_43.dll into the main folder didnt help :(
This is really strange. I have 5 machines here with different OSes and hardware setup but I can' t replicate your error. If you run the old version now (i.e. v1.3.4), would you also get the error?
kostik
22nd September 2014, 14:35
This is really strange. I have 5 machines here with different OSes and hardware setup but I can' t replicate your error. If you run the old version now (i.e. v1.3.4), would you also get the error?
I dont have the old version, had it deleted, but It worked today,
lets wait for someone else to check if it works.
Zachs
22nd September 2014, 14:37
I dont have the old version, had it deleted, but It worked today,
lets wait for someone else to check if it works.
Only other thing I could think of is DirectVobSub throwing an error while it was trying to connect. Untick the "Load Subtitles" option and see if it works.
kostik
22nd September 2014, 14:52
Only other thing I could think of is DirectVobSub throwing an error while it was trying to connect. Untick the "Load Subtitles" option and see if it works.
It was the first thing I tried. Also I tried a media file which has no subs embedded
huhn
22nd September 2014, 16:45
2.0 works for me.
8 and 10 bit look alike (10 bit is a tiny bit more darker) but 16 bit is changing the picture somehow.
and the most important bug in this version is that it used always nearest neighbor as downscaler:
http://abload.de/img/downscalingifdgs.png
and something is going totally wrong too it can't show black in 1-Black Clipping.mp4
8 bit http://abload.de/img/8bit7eisg.png
10 bit http://abload.de/img/10bita0fn8.png
16 bit http://abload.de/img/16bitmgi4j.png
Zachs
23rd September 2014, 01:29
It was the first thing I tried. Also I tried a media file which has no subs embedded
In your LAV video decoder, do you have YV12 output ticked?
MPDN currently only supports YV12 inputs from upstream (mainly to shorten dev time).
Zachs
23rd September 2014, 06:12
2.0 works for me.
8 and 10 bit look alike (10 bit is a tiny bit more darker) but 16 bit is changing the picture somehow.
and the most important bug in this version is that it used always nearest neighbor as downscaler:
http://abload.de/img/downscalingifdgs.png
and something is going totally wrong too it can't show black in 1-Black Clipping.mp4
8 bit http://abload.de/img/8bit7eisg.png
10 bit http://abload.de/img/10bita0fn8.png
16 bit http://abload.de/img/16bitmgi4j.png
Next release will have all these fixed, including the difference in color in 16-bit mode.
EDIT: I've just released v2.0.1 with fixes for the bugs you reported and a few more. Could you let me know if that fixes the "always used nearest neighbor as downscaler problem"?
kostik
24th September 2014, 12:38
In your LAV video decoder, do you have YV12 output ticked?
MPDN currently only supports YV12 inputs from upstream (mainly to shorten dev time).
Thanks now it works, YV12 was unticked .
Full screen+16bit/10bit+direct3D10.1 works on my Quadro card
Zachs
24th September 2014, 12:49
Here are some of the driver bugs I discovered while developing / testing MPDN. I hope this will help those who encountered the same problem.
Bugs (Direct3D 9Ex):
Intel
My HD 3000 on Win8.1 (driver ver 15.28.22.64.3517) gets color corruption after exiting 10-bit FSE mode (i.e. Windows DWM color appears like GIF image's palette corruption).
Custom gamma settings in Intel graphics control panel also does not have any effects in 10-bit FSE mode
AMD
Frame drop in windowed mode only when monitor is set to 50Hz (non MPDN specific, affects Windows DWM too) on my HD4350 - see http://zachsaw.blogspot.com.au/2014/09/state-of-legacy-drivers-2014-amd-vs.html
NVIDIA
None
Bugs (Direct3D 10.1):
Intel
Custom gamma settings in Intel graphics control panel does not have any effects in 10-bit/16-bit output mode (FSE mode).
Additionally, 16-bit output (FSE mode) appears to have most of its colors set to black when it is sent through the monitor via non-deepcolor compatible links.
AMD
Same as D3D9Ex.
Additionally, 16-bit output mode in FSE mode has its gamma settings completely wrong on HD4350.
NVIDIA
Critical bug in FSE mode where it changes the monitor refresh rate even when *specifically* told not to. It also does not adhere to the custom refresh rates user has setup in the NVIDIA control panel.
E.g. At 23Hz refresh rate (23.976Hz), I have custom refresh rate setup that gets pretty close to the desired rate. Switching to FSE mode, the driver changes the composition rate to 24Hz but reverts the refresh rates to the default one for 23Hz! This bug occurs on all the NVIDIA cards I've tested - 8400GS, 9600GT and 560GTX (drivers from Jan 2014 to latest).
In light of my findings, I have brought back the Direct3D 9 renderer (this is the default and along with 8-bit output provides for the most stable daily use). MPDN now allows user to choose between the D3D9 and D3D10 renderer. Obviously if you have an NVIDIA card and relies on 23Hz custom refresh rate setup, you should use the D3D9 renderer for now until NVIDIA fixes their long standing bug.
Zachs
24th September 2014, 13:01
Thanks now it works, YV12 was unticked .
Full screen+16bit/10bit+direct3D10.1 works on my Quadro card
Thanks for testing.
Your Quadro card should have 10-bit working in D3D9 too!
MPDN v2.1 (latest version) allows you to choose D3D9 mode with 10-bit output. I haven't got a Quadro card to test but on all my consumer grade cards, the D3D10 mode runs into a driver bug where refresh rates are set wrongly in FSE mode.
Zachs
24th September 2014, 13:25
BTW, does anyone know how to submit a bug on the AMD website for their Graphics products? It was so easy to submit a bug on both Intel and NVIDIA websites.
Snowknight26
24th September 2014, 14:39
BTW, does anyone know how to submit a bug on the AMD website for their Graphics products? It was so easy to submit a bug on both Intel and NVIDIA websites.
http://www.amd.com/report or http://www.amd.com/betareport depending on driver being used.
Anime Viewer
24th September 2014, 14:40
tried 2.0V but I get this error :An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
No metter what bitdepth setting I choose, tried x64 and AnyCPU ver.
What GPU and driver version are you using?
If you're using Nvidia, do you have GeForce Experience 2.1.2 installed? The 2.1.2 update broke a not of functions, so if you have it you should try uninstalling it to see if the problem goes away.
Zachs
24th September 2014, 14:41
http://www.amd.com/report or http://www.amd.com/betareport depending on driver being used.
Ah thanks. Not sure if they would do anything with their legacy products though :)
huhn
24th September 2014, 16:10
Next release will have all these fixed, including the difference in color in 16-bit mode.
EDIT: I've just released v2.0.1 with fixes for the bugs you reported and a few more. Could you let me know if that fixes the "always used nearest neighbor as downscaler problem"?
not working.
it looks like it is not nearest neighbour it is bilinear when i select nearest neighbour it aliased even more the rest doesn't have an effect even softcubic 100.
http://abload.de/img/resizet3jkt.png
not the same screen i know it's not an comparison.
i play around with high bit deep next.
edit: in the first screen they don't use the same resizer. here one with both softcubic 100
http://abload.de/img/resizeiofce.png
huhn
24th September 2014, 16:28
my short experience with high bit deep.
i used a nvidia 760 gtx for the test and no display capable of 10 bit most likely not even 8 bit.
MPDN works only in full screen on the main screen not the second the second is always windowed or at least 8 bit.
16 bit can't deal with display calibrations. it looks like it is unloaded but the black is totally destroyed it's brown or something like that. without loaded calibration it works fine. 8 bit and 10 doesn't care about the calibration.
Anime Viewer
24th September 2014, 22:03
I haven't read through the entire thread (yet), but here are the list of issues I've seen on my Optimus equipped Windows 8.1 64-bit OS notebook:
If Nvidia control panel is set to use the Nvidia 680m GTX GPU (instead of the Intel 4000), and render technology is set to Direct3D 10.1 then there will be a black screen when the video plays. Audio will play, but no video is displayed - the screen is black, with the white "Play" word in the top left corner. There is no way to tab out and get back to desktop view. The black screen stays in the foreground, and the only way to escape is CTRL+ALT+Del and tell the system to Logout, Shutdown, or Restart. I suspect this is similar to the other Direct3D 10.1 issue currently known about with Nvidia cards, but I don't know if non-optimus systems experience the locked to black screen crash behavior of an Optimus system which is why I mention it.
LAV splitter error when trying to launch videos in 64-bit player. Error message box shown below as well as more extensive technical details inside the code tag below:
http://i59.tinypic.com/11afrjl.jpg
===================================
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
Error Type = Mpdn.VideoPlayer.DsGraphException
Error Message = Failed to render file 'E:\Users\NotMyName\Downloads\[HorribleSubs] One Piece - 662
[480p].mkv'
Error Source = Mpdn.VideoPlayer
Error Site = Void .ctor(System.String, RenderFrameEventHandler, GraphNotifyEventHandler, Int32,
Boolean, Filter, Filter[])
Error occurred = at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName,
RenderFrameEventHandler renderFrameEventHandler, GraphNotifyEventHandler graphNotifyEventHandler,
Int32 queueFrames, Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
at Mpdn.VideoPlayer.VideoPlayer.Load(String fileName, Int32 aspectRatioX,
Int32 aspectRatioY, YuvColorimetry yuvColorimetry, Boolean loadSubtitles, Filter audioRenderer,
Filter[] extraAudioFilters)
at MediaPlayerDotNet.MainForm.†††
††††”•(String )
at MediaPlayerDotNet.MainForm.†††
††††””(String , Boolean )
at MediaPlayerDotNet.MainForm.†††
††††”(String )
at MediaPlayerDotNet.MainForm.†††
††††”œ(Object , EventArgs )
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.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 = 13.5 GB
Date Time = 9/24/2014 1:34:52 PM
User Name = SAGER-NP9150\NotMyName
Application Startup Path = E:\Downloads\MediaPlayerDotNet_x64_2_1_0_1424
Application Executable Path = E:\Downloads\MediaPlayerDotNet_x64_2_1_0_1424\MediaPlayerDotNet.exe
CurrentDirectory = E:\Downloads\MediaPlayerDotNet_x64_2_1_0_1424
SystemDirectory = C:\Windows\system32
Ran As Admin = False
HasShutdownStarted = False
MachineName = SAGER-NP9150
ProcessorCount = 8
LogicalDrives = C:\, E:\, F:\, G:\, Z:\
EnvironmentVariables = COMPUTERNAME = SAGER-NP9150; USERPROFILE = C:\Users\NotMyName; HOMEPATH =
\Users\NotMyName;
LOCALAPPDATA = C:\Users\NotMyName\AppData\Local; PSModulePath =
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;
PROCESSOR_ARCHITECTURE = AMD64; Path = C:\Program Files (x86)\NVIDIA
Corporation\PhysX\Common;C:\Program Files\AuthenTec TrueSuite\;
C:\Program Files\AuthenTec TrueSuite\x86;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program
Files\Intel\iCLS Client\;C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\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\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files\AuthenTec TrueSuite\x86\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common
Files\Intel\WirelessCommon\;
C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;
CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files;
ProgramFiles(x86) = C:\Program Files (x86); NVIDIAWHITELISTED = 0x01; LOGONSERVER =
\\MicrosoftAccount; PATHEXT = .COM;.
EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;
HOMEDRIVE = C:;
SystemRoot = C:\Windows; SESSIONNAME = Console; ALLUSERSPROFILE = C:\ProgramData; PUBLIC =
C:\Users\Public; FP_NO_HOST_CHECK = NO;
APPDATA = C:\Users\NotMyName\AppData\Roaming; PROCESSOR_REVISION = 3a09; USERNAME = NotMyName;
CommonProgramW6432 = C:\Program Files\Common Files;
SHIM_MCCOMPAT = 0x810000001; CommonProgramFiles = C:\Program Files\Common Files; OS = Windows_NT;
USERDOMAIN_ROAMINGPROFILE = SAGER-NP9150; PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 58 Stepping
9, GenuineIntel;
ComSpec = C:\Windows\system32\cmd.exe; SystemDrive = C:; TEMP =
C:\Users\NotMyName\AppData\Local\Temp; ProgramFiles = C:\Program Files; NUMBER_OF_PROCESSORS = 8;
PROCESSOR_LEVEL = 6; TMP = C:\Users\NotMyName\AppData\Local\Temp; ProgramData = C:\ProgramData;
ProgramW6432 = C:\Program Files; windir = C:\Windows;
USERDOMAIN = SAGER-NP9150
RuntimeVersion = 4.0.30319.34014
Thread Count = 18
Handle Count = 367
VM Size = 771.8 MB
Peak VM Size = 771.8 MB
Working Set Size = 106.2 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, mscoreei.dll, SHLWAPI.dll, combase.dll, USER32.dll,
GDI32.dll, IMM32.DLL, MSCTF.dll, nvinitx.dll, detoured.dll, nvd3d9wrapx.dll, SETUPAPI.dll,
CFGMGR32.dll, nvdxgiwrapx.dll, clr.dll, MSVCR120_CLR0400.dll, mscorlib.ni.dll, ole32.dll,
kernel.appcore.dll, CRYPTBASE.dll, bcryptPrimitives.dll, uxtheme.dll, tiptsf.dll, OLEAUT32.dll,
clrjit.dll, System.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll, bcrypt.dll,
CRYPTSP.dll,
rsaenh.dll, DirectShowLib-2005.dll, SharpDX.Direct3D9.dll, SharpDX.dll, comctl32.dll, dwmapi.dll,
gdiplus.dll, DWrite.dll, WindowsCodecs.dll, System.Core.ni.dll, shell32.dll, SHCORE.dll,
YAXLib.dll,
System.Xml.Linq.ni.dll, System.Xml.ni.dll, System.Configuration.ni.dll,
VideoFrameServicesNative.dll, d3d9.dll, VERSION.dll, nvumdshimx.dll, igdumdim64.dll, igdusc64.dll,
nvd3dumx.dll, PSAPI.DLL,
DEVOBJ.dll, WINTRUST.dll, CRYPT32.dll, MSASN1.dll, nvspcap64.dll, nvapi64.dll, oleacc.dll,
Accessibility.ni.dll, clbcatq.dll, D3D9NativeServices.dll, WINMM.dll, WTSAPI32.dll, WINMMBASE.dll,
powrprof.dll, WINSTA.dll, dcomp.dll, d3dx9_43.dll, usp10.dll, CommandLine.dll, quartz.dll,
Microsoft.ExceptionMessageBox.dll, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll,
diasymreader.dll, SspiCli.dll
===================================
Failed to render file
'E:\Users\NotMyName\Downloads\[HorribleSubs] One Piece
- 662 [480p].mkv' (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, RenderFrameEventHandler
renderFrameEventHandler, GraphNotifyEventHandler graphNotifyEventHandler, Int32 queueFrames,
Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
at Mpdn.VideoPlayer.VideoPlayer.Load(String fileName, Int32 aspectRatioX, Int32 aspectRatioY,
YuvColorimetry yuvColorimetry, Boolean loadSubtitles, Filter audioRenderer, Filter[]
extraAudioFilters)
at MediaPlayerDotNet.MainForm.†††
††††”•(String )
at MediaPlayerDotNet.MainForm.†††
††††””(String , Boolean )
at MediaPlayerDotNet.MainForm.†††
††††”(String )
at MediaPlayerDotNet.MainForm.†††
††††”œ(Object , EventArgs )
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr
lparam)
===================================
Failed to load LAV Splitter Source DirectShow filter (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo.Load(String fileName, Boolean loadSubtitles)
at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, RenderFrameEventHandler
renderFrameEventHandler, GraphNotifyEventHandler graphNotifyEventHandler, Int32 queueFrames,
Boolean loadSubtitles, Filter audioRenderer, Filter[] extraAudioFilters)
===================================
Retrieving the COM class factory for component with CLSID {B98D13E7-55DB-4385-A33D-09FD1BA26338}
failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154
(REGDB_E_CLASSNOTREG)). (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo.LoadSourceFilter(IFilterGraph2 graph, String fileName)
In the General options area under Load subtitles
it says *requires DirectVobSub (auto loading version) to be installed, but going into the DirectShow area that is not listed under Available Filters (but things like XySubFilter and XYSubFilterAutoLoader are listed, but neither of them appears to work to play many softsubbed videos).
The good news is the 32-bit version appear to work without problems (aside from the subtitle issue) when Direct3D 9Ex is used. I'm perfectly content using the 32-bit in Direct3D 9Ex mode for the time being, and simply mention the other errors for reference (in case other users try that version or configuration and want to know a different version/configuration that may work in that situation).
kostik
24th September 2014, 22:14
I haven't read through the entire thread (yet), but here are the list of issues I've seen on my Optimus equipped Windows 8.1 64-bit OS notebook:
If Nvidia control panel is set to use the Nvidia 680m GTX GPU (instead of the Intel 4000), and render technology is set to Direct3D 10.1 then there will be a black screen when the video plays. Audio will play, but no video is displayed - the screen is black, with the white "Play" word in the top left corner. There is no way to tab out and get back to desktop view. The black screen stays in the foreground, and the only way to escape is CTRL+ALT+Del and tell the system to Logout, Shutdown, or Restart. I suspect this is similar to the other Direct3D 10.1 issue currently known about with Nvidia cards, but I don't know if non-optimus systems experience the locked to black screen crash behavior of an Optimus system which is why I mention it.
LAV splitter error when trying to launch videos in 64-bit player. Error message box shown below as well as more extensive technical details inside the code tag below:
http://i59.tinypic.com/11afrjl.jpg
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
The good news is the 32-bit version appear to work without problems when Direct3D 9Ex is used. I'm perfectly content using the 32-bit in Direct3D 9Ex mode for the time being, and simply mention the other errors for reference (in case other users try that version or configuration and want to know a different version/configuration that may work in that situation).
I think it's the exact issue I had. As suggested I had to turn on YV12 in Lav Filter (which is by default turned on but I had it unticked).
Anime Viewer
24th September 2014, 22:44
I think it's the exact issue I had. As suggested I had to turn on YV12 in Lav Filter (which is by default turned on but I had it unticked).
Thanks for the recommended setting change, but I already have YV12 checked in Output Formats in LAV Video Decoder, so something else may be the issue. (The only outputs I have unchecked in LAV Video decorder are AYUV and RGB48.
Zachs
25th September 2014, 01:22
it looks like it is not nearest neighbour it is bilinear when i select nearest neighbour it aliased even more the rest doesn't have an effect even softcubic 100.
my short experience with high bit deep.
i used a nvidia 760 gtx for the test and no display capable of 10 bit most likely not even 8 bit.
MPDN works only in full screen on the main screen not the second the second is always windowed or at least 8 bit.
16 bit can't deal with display calibrations. it looks like it is unloaded but the black is totally destroyed it's brown or something like that. without loaded calibration it works fine. 8 bit and 10 doesn't care about the calibration.
I'll definitely look into the downscaling problem.
To get MPDN to use your second screen with FSE mode, you need to change Adapter ID from 0 to 1.
I think there's still a fair bit of work from the GPU vendors to get 16-bit support up to scratch. I don't think there are too many renderers using that at the moment (does madVR?).
I don't know if non-optimus systems experience the locked to black screen crash behavior of an Optimus system which is why I mention it.
LAV splitter error when trying to launch videos in 64-bit player.
I don't have an Optimus equipped system to test with but I suspect it is specific to that setup only. On my various setups here with single, multiple and secondary NVIDIA cards in one system, there's no such problem. But thanks for pointing it out so others can watch out for such an issue in the D3D10.1 mode.
The LAV splitter error in 64-bit mode -- did you install x64 LAV Filters? :)
huhn
25th September 2014, 01:33
I'll definitely look into the downscaling problem.
To get MPDN to use your second screen with FSE mode, you need to change Adapter ID from 0 to 1.
I think there's still a fair bit of work from the GPU vendors to get 16-bit support up to scratch. I don't think there are too many renderers using that at the moment (does madVR?).
madVR outputs only 8 bit RGB nothing else. I highly doubt the GPU can output more than 12 bit and send this with DP or HDMi to a display.
so the output should be dithered to something the display accepts and is not round or dithering down to 8 bit. so 99.9% of all displays get the best result with dithered 8 bit. I highly doubt that the gpu driver can do this any better than madVr or MPDN.
so high bit deep output doesn't help most people at the moment but how to tell them X-)?
and we still don't know if the GPU doesn't round the 10 bit down to 8 bit even for 10 bit displays nothing I can test.
Zachs
25th September 2014, 01:47
madVR outputs only 8 bit RGB nothing else. I highly doubt the GPU can output more than 12 bit and send this with DP or HDMi to a display.
so the output should be dithered to something the display accepts and is not round or dithering down to 8 bit. so 99.9% of all displays get the best result with dithered 8 bit. I highly doubt that the gpu driver can do this any better than madVr or MPDN.
so high bit deep output doesn't help most people at the moment but how to tell them X-)?
and we still don't know if the GPU doesn't round the 10 bit down to 8 bit even for 10 bit displays nothing I can test.
NVIDIA GPUs will output 12-bit via HDMI v1.3 and above if set to 16-bit in D3D10. So with the driver dithering 16-bit to 12, it is still better than 10-bit output. Can't remember where I read it from though (I'll update this post when I have time to dig up my history to see where I read this from).
huhn
25th September 2014, 02:17
NVIDIA GPUs will output 12-bit via HDMI v1.3 and above if set to 16-bit in D3D10. So with the driver dithering 16-bit to 12, it is still better than 10-bit output. Can't remember where I read it from though (I'll update this post when I have time to dig up my history to see where I read this from).
yeah and you can force to output 12 bit with AMD too. that's not the point.
the point is is this properly used?
thanks to MPDN we can test this now. 10 bit displays are going to be totally mainstream in the future.
we don't know what is happening in the gpu and is 12 bit dithered/rounded from the GPU better for our 8 bit displays that have to get this to 8 bit too with there dithering/rounding compared to untouched dithered 8 bit RGB?
a lot of displays transform the input to 4:2:2 YCBCR how do they do this?
is the 12 bit dithered at all? is it better to send 10 bit dithered from the renderer because this can be used from the dispalys directly?
I can send 12 bit 4:4:4 RGB right now to my TV that accept this without downsampling it to 4:2:2 YCBCR. the display has to make 8 bit RGB out of it because this displays is for sure not 12 bit and 99.9% not 10 bit but why should the algorithm in my TV better than your dithering?
Anime Viewer
25th September 2014, 02:31
The LAV splitter error in 64-bit mode -- did you install x64 LAV Filters? :)
I already had it (both 64x and x86 versions) installed, but I re-downloaded, and reinstalled the x64 one again from:
https://github.com/Nevcairiel/LAVFilters/releases/tag/0.62
An error (same type) still appears, but now it lacks the LAV line, and has a bit different registry address. (shown below)
http://i58.tinypic.com/29nbggz.jpg
Edit:
Upon further investigation I found LAV Video Decoder listed as the lone Selected Fitlers item in Options DirectShow area. (Don't know how it got there since I don't recall adding it in my testing to find a solution to the 64-bit player error...) Removing it now lets videos load correctly.
Downloaded the 64-bit DirectVobsub, and fresh installed that, and now the 64-bit version seems to be working for subtitles. :)
http://www.videohelp.com/tools/VSFilter-DirectVobSub
Zachs
25th September 2014, 02:43
I already had it (both 64x and x86 versions) installed, but I re-downloaded, and reinstalled the x64 one again from:
https://github.com/Nevcairiel/LAVFilters/releases/tag/0.62
An error (same type) still appears, but now it lacks the LAV line, and has a bit different registry address. (shown below)
http://i58.tinypic.com/29nbggz.jpg
That's the CLSID for XySubFilter, which is weird as MPDN does not even attempt to load it. I think there's a non-MPDN specific DirectShow config problem on your machine in the x64 setup (whereas x86 has a different config set).
A quick try, disable "Load subtitles" in options. Also give MPC-HC x64 a try and see if you encounter the same problem.
EDIT: Ah I see you've solved it.
With regards to the Optimus bug in x86 -- it is definitely an NVIDIA driver bug since MPDN does not have a separate code branch for x86 / x64. If one works and the other doesn't, you can definitely point your finger to an underlying issue.
huhn
25th September 2014, 03:04
AMD
Same as D3D9Ex.
Additionally, 16-bit output mode in FSE mode has its gamma settings completely wrong on HD4350.
same with r9 270.
@Anime Viewer
I highly recommend you to use xy vobsub. there is a good reason this is the vsfilter in CCCP and KCP
Anime Viewer
25th September 2014, 03:24
@Anime Viewer
I highly recommend you to use xy vobsub. there is a good reason this is the vsfilter in CCCP and KCP
I prefer using xySubfilters or vsfilters to the DirectVobSub filters, but so far I've been unable to get either of them to work with MPDN. Installing the x64 version of DirectVobSubs was the best way I could think of to keep if from conflicting with the x86 configurations on the system that uses xySubfilters or vsfilters (depending on the player I'm using).
That's the CLSID for XySubFilter, which is weird as MPDN does not even attempt to load it. I think there's a non-MPDN specific DirectShow config problem on your machine in the x64 setup (whereas x86 has a different config set).
A quick try, disable "Load subtitles" in options. Also give MPC-HC x64 a try and see if you encounter the same problem.
EDIT: Ah I see you've solved it.
With regards to the Optimus bug in x86 -- it is definitely an NVIDIA driver bug since MPDN does not have a separate code branch for x86 / x64. If one works and the other doesn't, you can definitely point your finger to an underlying issue.
I jumped to conclusions on the DirectX 10.1 working. It was working in a window, but the minute I maximized it to full screen the video playback froze and took dominance of the system again (where I couldn't close MPDN again, and had to sign out of Windows again to get it to close).
I unchecked "Load Subtitles" in options, and not surprisingly the subtitles disappeared again. Having either of the xysubfilter (auto-load and not auto-load) didn't make a difference as neither displayed subtitles in the video(s). I'll download/install/test with the x64 MPC-HC and report back as to if that has the same problem.
The same video that was running without subtitles in MPDN is running with subtitles displayed in MPC-HC 1.7.6.253. The filters listed as running with the video (in MPC-HC x64) are: Default DirectSound Device, Enhanced Video renderer (custom presenter), audio switcher, LAV video decorder (internal), LAV audio decorder (internal), and LAV splitter source (internal). If I hover over LAV splitter source it shows the subtitle track correctly. In the past when I've used MPC-HC x86, MPC-BE x86, KCP (both versions) I've disabled all internal filters, so I did that as well. Now its the same filters (except not LAV internals) and File Source (Async.) is now there.
I'll continue testing with MPDN and see if I can get non-directVobsub working.
huhn
25th September 2014, 03:44
direct vobsub is just an alias for vsfilter (vs= vob sub).
the name difference is only XY.
the 64 bit version of xy is here https://code.google.com/p/xy-vsfilter/wiki/Downloads?tm=2
and works fine with mpdn.
edison
25th September 2014, 04:37
I have a sample which include some PGS, the subtitle position is not show correctly:
http://www.mediafire.com/download/geyrporisbp9etb/line_walker_sample.ts
huhn
25th September 2014, 05:00
this is a problem with the vsfilter.
mpdn has no influences on subtitle positions the subtitle are burn in the picture from the vsfilter be for npdn gets the picture.
I don't know the bug tracker for the vsfilter but using the vsfilter on interlaced videos is not a good idea at all.
foxyshadis
25th September 2014, 08:44
MPC-HC maintains vsfilter and a bug tracker (https://trac.mpc-hc.org/wiki/How_to_Report_Issues), but it's basically dead now except for crash fixes. Only xy-vsfilter is actively maintained.
Zachs
25th September 2014, 14:50
not working.
it looks like it is not nearest neighbour it is bilinear when i select nearest neighbour it aliased even more the rest doesn't have an effect even softcubic 100.
Found the bug. Will be fixed in the next release.
EDIT: Released as v2.1.1.
Zachs
26th September 2014, 04:56
Can someone let me know how to use XySubFilter (auto-load version) in GraphStudioNext?
It doesn't load subtitles at all and it doesn't even have an output pin?? How is it meant to be used?
EDIT: Ah nevermind. Found it: http://madshi.net/SubRenderIntf.h
kerimcem
26th September 2014, 13:54
volume bar and fly bar added?
Zachs
26th September 2014, 13:59
volume bar and fly bar added?
Sorry what's a fly bar?
I'm keeping the UI minimalist so there won't be a volume bar.
kerimcem
26th September 2014, 14:08
Sorry what's a fly bar?
I'm keeping the UI minimalist so there won't be a volume bar.
http://jpegshare.net/thumbs/bb/f8/bbf8bb02c853cd7446ab237e1427636a.jpg
ok :(
Zachs
26th September 2014, 14:33
http://jpegshare.net/thumbs/bb/f8/bbf8bb02c853cd7446ab237e1427636a.jpg
ok :(
Ah! Flybar actually suits the minimal UI concept very well. Come to think of it I could implement volume bar via drop down from one of the flybar buttons.
It'll be on my todo list.
kerimcem
26th September 2014, 15:08
Ah! Flybar actually suits the minimal UI concept very well. Come to think of it I could implement volume bar via drop down from one of the flybar buttons.
It'll be on my todo list.
:thanks:
littleD
28th September 2014, 10:33
I have 5470Mobility and suprisingly all render paths works. The only exception is that in dx9ex my card reject to render in 16bit and automatically fallback to 10 bit. 16 bit gives dark image in dx10 path though. I cant tell much about image quality, tested on built-in laptop display, but wanna report it works. Performance of renderer is also good considering 10 bit. Comparing to EVR in mpc-hc, 60 fps sample was good, but 120fps sample was slower in mpdn.
Zachs
28th September 2014, 12:20
I have 5470Mobility and suprisingly all render paths works. The only exception is that in dx9ex my card reject to render in 16bit and automatically fallback to 10 bit. 16 bit gives dark image in dx10 path though. I cant tell much about image quality, tested on built-in laptop display, but wanna report it works. Performance of renderer is also good considering 10 bit. Comparing to EVR in mpc-hc, 60 fps sample was good, but 120fps sample was slower in mpdn.
Yes AMD has a bug in their 16-bit mode. I'll provide a workaround in my code for AMD cards in a future release.
120fps! I haven't tried that yet TBH. But glad to know it works. EVR will always be faster since it lacks a lot of features MPDN have turned on by default (e.g. dithering).
Zachs
29th September 2014, 06:29
@littleD
Version 2.2.0 now has a workaround for AMD cards in 16-bit mode.
I've also added 10- and 16-bit input support (accepts P010 and P016 formats from LAV Video Decoder).
kerimcem
1st October 2014, 14:08
dont work vc1 wmv files intel grapichs lga 1150
Zachs
2nd October 2014, 01:18
dont work vc1 wmv files intel grapichs lga 1150
That's probably because you haven't setup LAV Audio Decoder to allow WMA audio decode (as mentioned a few pages ago, LAV Audio Decoder does not have WMA decode enabled by default).
kerimcem
2nd October 2014, 15:05
That's probably because you haven't setup LAV Audio Decoder to allow WMA audio decode (as mentioned a few pages ago, LAV Audio Decoder does not have WMA decode enabled by default).
:thanks::rolleyes:
Hera
5th October 2014, 17:01
I got exciting that this is in a .NET language (something I can understand).
But then, read that is closed source? Any reason given?
Zachs
6th October 2014, 05:07
On a side note, personally I find Lanczos, Spline and Jinc with 2 taps (in your case 4 taps) to be not worth the effort. They don't look better than Bicubic to my eyes. That's why madVR starts at 3 taps with those algorithms (which you count as 6 taps).
Just found some time to test some low res video clips. I find the above to be false - 4-tap (eq madVR 2 taps) Lanczos, Spline and Jinc look quite different to Bicubic as well as to one another. Try blackberry.mp4 (compare the BlackBerry text) on this page - http://download.wavetlan.com/SVV/Media/HTTP/http-mp4.htm.
You'll find that Jinc gives the best interpolation. In fact, I can't see the difference between 4 or 6 or 8 taps but I can immediately notice the difference going from Bicubic to 4-tap Jinc. Looking at the pictures side by side visually, I can't tell the difference (subjectively) between madVR's 3-tap (which is my 6 taps) to my 4 taps either.
not working.
it looks like it is not nearest neighbour it is bilinear when i select nearest neighbour it aliased even more the rest doesn't have an effect even softcubic 100.
Can you give v2.4.2 a test to see if downscaler bug is completely fixed?
I got exciting that this is in a .NET language (something I can understand).
But then, read that is closed source? Any reason given?
Sorry to disappoint but performance critical parts are actually in ASM and C / C++. C# merely provides the glue logic and it isn't very good at that too with GC stopping all managed threads when it feels like it (which means all MPDN's time critical threads are also in C++).
I can only share it as closed source or don't share it at all (for reasons I can't disclose). If you want to learn about writing a video renderer, there are plenty of resources on the net to get you started.
huhn
7th October 2014, 03:47
looks like the general bug is fixed.
but there are other issue.
lanczos creates very strange artefacts when used as downscaler and it is at least half an pixel off to the bottom right compared to spline 4 ar. spline as less deforming aliasing and it sharper at the same time. laczos even creates double lines.
here 2 screens:
spline 4 ar : http://abload.de/img/downsplinewvaq4.png
laczos 4 ar : http://abload.de/img/downlaczosn2l61.png
i added madVR 3 tab ar spline/laczos to show that the difference is very minimal compared to MPDN between them.
i'm currently using windows 10 preview so this can be an windows 10 issue.
on a 120 hz screen playback of 23p is very choppy and juddering a lot more than 23p on a 60 hz screen. madVr works fine with and without smoothmotion.
Zachs
7th October 2014, 06:01
looks like the general bug is fixed.
but there are other issue.
lanczos creates very strange artefacts when used as downscaler and it is at least half an pixel off to the bottom right compared to spline 4 ar. spline as less deforming aliasing and it sharper at the same time. laczos even creates double lines.
here 2 screens:
spline 4 ar : http://abload.de/img/downsplinewvaq4.png
laczos 4 ar : http://abload.de/img/downlaczosn2l61.png
i added madVR 3 tab ar spline/laczos to show that the difference is very minimal compared to MPDN between them.
i'm currently using windows 10 preview so this can be an windows 10 issue.
on a 120 hz screen playback of 23p is very choppy and juddering a lot more than 23p on a 60 hz screen. madVr works fine with and without smoothmotion.
Found the problem. Affects both Lanczos and Jinc. Fixed in next release. Looks like Jinc is actually quite a good downscaler - it has anti-aliasing features like softcubic but more faithfully retains original color.
You'll also notice that MPDN's downscalers are much faster than madVR, only sacrificing a little bit of image quality. With madVR, I couldn't play 4k downscaled to 1080p on my system with 560GTX but MPDN works without a fuss.
Also found the problem with choppy playback but to confirm, can you switch to D3D10 rendering path to see if it happens there too?
On my system, the choppy playback only happens in D3D9. That was the result of increasing backbuffer count (why this would cause choppy playback, I don't know). A few versions back would have been ok too.
madshi
7th October 2014, 08:26
You'll also notice that MPDN's downscalers are much faster than madVR, only sacrificing a little bit of image quality. With madVR, I couldn't play 4k downscaled to 1080p on my system with 560GTX but MPDN works without a fuss.
With or without anti-ringing? Or both? I wonder if your algorithm does the same work that madVR does? Maybe you're not reading in enough source pixels? :p FWIW, are you calculating the weights in real time? Or are you reading them from a texture? I'm reading them from a texture. I sometimes do wonder whether calculating them in real time would be faster. But it will probably differ, depending on GPU generation (and on the scaling algorithm). Older generations have less shader power than newer generations. So probably reading the weights from a pre-calculated texture is faster on older generation GPUs and using real time calculation could be faster on newer generation GPUs.
huhn
7th October 2014, 10:22
Found the problem. Affects both Lanczos and Jinc. Fixed in next release. Looks like Jinc is actually quite a good downscaler - it has anti-aliasing features like softcubic but more faithfully retains original color.
You'll also notice that MPDN's downscalers are much faster than madVR, only sacrificing a little bit of image quality. With madVR, I couldn't play 4k downscaled to 1080p on my system with 560GTX but MPDN works without a fuss.
Also found the problem with choppy playback but to confirm, can you switch to D3D10 rendering path to see if it happens there too?
On my system, the choppy playback only happens in D3D9. That was the result of increasing backbuffer count (why this would cause choppy playback, I don't know). A few versions back would have been ok too.
it's broken with directx 10.1 too but it's fine in full screen mode.
With or without anti-ringing? Or both? I wonder if your algorithm does the same work that madVR does? Maybe you're not reading in enough source pixels? :p FWIW, are you calculating the weights in real time? Or are you reading them from a texture? I'm reading them from a texture. I sometimes do wonder whether calculating them in real time would be faster. But it will probably differ, depending on GPU generation (and on the scaling algorithm). Older generations have less shader power than newer generations. So probably reading the weights from a pre-calculated texture is faster on older generation GPUs and using real time calculation could be faster on newer generation GPUs.
so with a UHD source on a FHD screen madVR does.
chroma upscales FHD to UHD (2 channels to UHD) chroma position correction and RGB conversation and now scaling the hole UHD RGB frame (3 channel) down to FHD.
MPDN has a option for chroma up and down so I guess it's not working like madVR that creates always 48 bit RGB first.
by just scaling the luma channel (1 channel) to 1080p, correct chroma position and by doing a RGB conversation in just 1080p it has to be a lot faster or not?
not sure about the quality through.
madshi
7th October 2014, 10:33
so with a UHD source on a FHD screen madVR does.
chroma upscales FHD to UHD (2 channels to UHD) chroma position correction and RGB conversation and now scaling the hole UHD RGB frame (3 channel) down to FHD.
MPDN has a option for chroma up and down so I guess it's not working like madVR that creates always 48 bit RGB first.
by just scaling the luma channel (1 channel) to 1080p, correct chroma position and by doing a RGB conversation in just 1080p it has to be a lot faster or not?
not sure about the quality through.
Good thinking. Yes, that would explain at least some of the difference. For linear light downscaling you *have* to upscale chroma first. I guess if you downscale in gamma light it should also be fine to downscale chroma directly to save performance. However, this also means that you can't do certain things in the original video resolution, like rendering 4:4:4 subtitles, doing color corrections, run certain filters etc. And how do you want to run custom pixel shaders in the original video resolution? That's not possible if you don't upscale chroma first. Also, you would need different rendering paths for different sources (4:2:0 vs. RGB etc). Because of all these reasons madVR always converts everything to RGB first, before even starting to scale anything.
Zachs
7th October 2014, 11:10
Good thinking. Yes, that would explain at least some of the difference. For linear light downscaling you *have* to upscale chroma first. I guess if you downscale in gamma light it should also be fine to downscale chroma directly to save performance. However, this also means that you can't do certain things in the original video resolution, like rendering 4:4:4 subtitles, doing color corrections, run certain filters etc. And how do you want to run custom pixel shaders in the original video resolution? That's not possible if you don't upscale chroma first. Also, you would need different rendering paths for different sources (4:2:0 vs. RGB etc). Because of all these reasons madVR always converts everything to RGB first, before even starting to scale anything.
Anything in YUV wouldn't be much hassle to support but RGB will need to be converted to YUV 4:4:4 first. It's slower where RGB is involved (MPDN doesn't do that yet) but it's only needed for RGB input formats (XySubFilter can render straight to the RGB scaled resolution, even for PGS subs -- everything needs to be scaled properly before it's being displayed anyway).
As such, I'm not too concerned about doing things in the original video res. You could always run custom pixel shaders in the scaled resolution rather than original. It's not something I have planned in the near term anyway.
But knowing that madVR converts chroma to RGB first definitely explains why UHD to FHD would fail to render in realtime on my 560GTX with 45ms render time while MPDN does it in 14ms when set to the same settings* (before the next release where I have further optimizations for MPDN's downscalers which will improve their speed and image quality at the same time).
* No dithering, softcubic, no AR, no linear light scaling, same video @23p. madVR specific: no smooth motion, no debanding.
EDIT: So does this mean that madVR doubles chroma res first and then scale RGB yet again?
Zachs
7th October 2014, 12:31
it's broken with directx 10.1 too but it's fine in full screen mode.
so with a UHD source on a FHD screen madVR does.
chroma upscales FHD to UHD (2 channels to UHD) chroma position correction and RGB conversation and now scaling the hole UHD RGB frame (3 channel) down to FHD.
MPDN has a option for chroma up and down so I guess it's not working like madVR that creates always 48 bit RGB first.
by just scaling the luma channel (1 channel) to 1080p, correct chroma position and by doing a RGB conversation in just 1080p it has to be a lot faster or not?
not sure about the quality through.
I do exactly the same thing in FSE mode vs windowed mode. I am not sure why it would stutter in windowed mode but not FSE. The D3D9 render path I get it (not really, since it doesn't make much sense why increasing back buffer count would cause it to stutter) but definitely not D3D10. Anyway, I've changed the backbuffer count of D3D10 to 2 (as the recommended minimum from MSDN docs). Please let me know if stuttering issue still occurs in either rendering paths in the next release.
Scaling luma and chroma just once should yield better quality if all else is equal, otherwise it would defy logic wouldn't it? :)
For example, you wouldn't have to upscale chroma once to luma size, and then scale it again from there. Human eyes aren't very sensitive to chroma though, so you may not notice the loss of quality the way madVR does it.
Not to mention I just can't get madVR to play 4K movies properly on any of the systems I own!
E.g. Softcubic 50, no dithering, no smooth motion, 560 GTX.
Test clip: Interstellar-TLR-F2-5.1-4K-HDTN.mp4
Render times:
MPDN: 11.7ms
madVR: 44.4ms
madVR also constantly racks up presentation glitches (~5 per second).
EDIT: Just realised my 560GTX was running at lowest power state with MPDN since it didn't need the extra clock speed. MPDN's time was in the 7ms range at max power state. So this explains the difference Shiandow was seeing with his 560ti vs my 560.
huhn
7th October 2014, 13:41
still not working fine it works sometime and sometimes not. don't forget i'm on windows 10 who knows what Microsoft has broken in this preview so please don't take it to serious.
about UHd downscaling.
i can easily use madVR to downscale with dithering using spline 3 ar for a 60 fps UHD source to FHD with about 11 ms at max powerstate using a gtx 760.
when i use MPDN I get about 14 ms and the powerstate is min running at ~135 mhz so it is about 6-10 times faster and there must be a reason for that.
are you using a 16 bit frame buffer like madVR? is the chroma position corrected at all?
Zachs
7th October 2014, 13:46
No its 32 bit all the way. No 16 bit crap until the final output where it is 8, 10 or 16 bits.
Chroma position correction is free as in it doesn't affect render time.
madshi
7th October 2014, 14:47
Scaling luma and chroma just once should yield better quality if all else is equal, otherwise it would defy logic wouldn't it? :)
Actually upscaling the image, then doing some processing (e.g. detail enhancement/sharpening), then downscaling again can be beneficial sometimes. There are several AviSynth sharpening scripts which internal upscale first, then process, then downscale to reduce aliasing. Furthermore, the chroma channel was downscaled by the studio. It might make sense to use a different algorithm to try to restore the original chroma resolution again, and then a different algorithm for image up/down scaling. Finally, for high downscaling factors using linear light downscaling can improve the image quality, which is only possible if you restore the original chroma resolution first. Whether the final result looks better or worse depends on the exact algorithms that were used.
Not to mention I just can't get madVR to play 4K movies properly on any of the systems I own!
Well, you probably could, by using DXVA downscaling, or Bilinear downscaling, but obviously that's not a good idea for image quality. I guess I could add a different rendering path to madVR to skip chroma upsampling under specific circumstances to speedup downscaled 4K playback. It would be quite a lot of extra work, though... :(
Shiandow
7th October 2014, 21:49
E.g. Softcubic 50, no dithering, no smooth motion, 560 GTX.
Test clip: Interstellar-TLR-F2-5.1-4K-HDTN.mp4
Render times:
MPDN: 11.7ms
madVR: 44.4ms
madVR also constantly racks up presentation glitches (~5 per second).
That doesn't sound right, if I play back that file on a resolution of 1920x1080 I get render times of ~23 ms using Bicubic 75 AR chroma doubling, Mitchell AR LL downscaling, debanding, ordered dithering and smooth motion on a GTX 560 Ti.
Edit: Turns out that MPDN only needs 5 ms (using default settings) so it seems that the performance difference remains relatively the same. Apparently there's a larger difference between the GTX 560 Ti and the GTX 560 than I thought.
Zachs
8th October 2014, 00:59
Actually upscaling the image, then doing some processing (e.g. detail enhancement/sharpening), then downscaling again can be beneficial sometimes. There are several AviSynth sharpening scripts which internal upscale first, then process, then downscale to reduce aliasing. Furthermore, the chroma channel was downscaled by the studio. It might make sense to use a different algorithm to try to restore the original chroma resolution again, and then a different algorithm for image up/down scaling. Finally, for high downscaling factors using linear light downscaling can improve the image quality, which is only possible if you restore the original chroma resolution first. Whether the final result looks better or worse depends on the exact algorithms that were used.
Well, you probably could, by using DXVA downscaling, or Bilinear downscaling, but obviously that's not a good idea for image quality. I guess I could add a different rendering path to madVR to skip chroma upsampling under specific circumstances to speedup downscaled 4K playback. It would be quite a lot of extra work, though... :(
I wouldn't take AviSynth scripts as the de facto standards on how things should be done, they are usually written to utilize what's readily available from AviSynth core functions when there are other ways to achieve the same quality or better (esp in the reducing aliasing department) in a much less expensive way.
Correct me if I'm wrong but are you saying luma is scaled by a third party and chroma is scaled separately by the studio? My thinking was that they were both scaled by the studio?? e.g. Production company shoots footage in IMAX res, studio scales both luma and chroma to 4:2:0 for Bluray/DVD release. Or in the consumer space, video cams record straight to 4:2:0. TBH I can't see how upscaling chroma twice in that regard could be beneficial as opposed to detrimental in any way.
Personally I have not seen the benefits of scaling in linear light so I haven't done much research into that. However, my thinking is linear light scaling could be done on the individual YUV planes too, couldn't it?
Zachs
8th October 2014, 01:02
That doesn't sound right, if I play back that file on a resolution of 1920x1080 I get render times of ~23 ms using Bicubic 75 AR chroma doubling, Mitchell AR LL downscaling, debanding, ordered dithering and smooth motion on a GTX 560 Ti.
Edit: Turns out that MPDN only needs 5 ms (using default settings) so it seems that the performance difference remains relatively the same. Apparently there's a larger difference between the GTX 560 Ti and the GTX 560 than I thought.
Your settings are too unfair for madVR. If you really want to compare the relative performance of MPDN vs madVR, you should really set them up so they are on a level playing field - e.g. debanding and smooth motion cost quite a bit of rendering time.
EDIT: Turns out my GTX 560 was running at lowest power state when I took the measurement because it could with MPDN. At max power state, I got 7ms, so it is quite close to your 560ti, which it should be (384 vs 336 cores). As with madVR, it seems that its performance was affected by presentation glitches. I will try swapping drivers and report back. In the meantime, try comparing with madVR settings Softcubic 50 no AR chroma doubling, softcubic 50 no AR no LL downscaling, no debanding, no dithering and no smooth motion. And set MPDN's dithering to none as well.
huhn
8th October 2014, 01:44
first of all rendertimes are hard to judge. the GPU powerstate is a huge problem in these cases and can easily make rendertimes miss leadering at least.
it's not rare that I see way higher rendertime with a lot easier content.
this usually happens with 1080p23 and 1080i30 60 fields.
it's not rare that the rendertimes of GPU deinterlaced 1080i 60 fields is way lower than the rendertimes of 1080p23 and the reason is the gpu powerstate.
Zachs
8th October 2014, 02:01
first of all rendertimes are hard to judge. the GPU powerstate is a huge problem in these cases and can easily make rendertimes miss leadering at least.
it's not rare that I see way higher rendertime with a lot easier content.
this usually happens with 1080p23 and 1080i30 60 fields.
it's not rare that the rendertimes of GPU deinterlaced 1080i 60 fields is way lower than the rendertimes of 1080p23 and the reason is the gpu powerstate.
Yes that's absolutely correct.
It's especially difficult when one is maxing out the GPU while the other was going over leisurely.
Is there a way of forcing the GPU to run at constant power state for testing purposes?
Zachs
8th October 2014, 02:42
OK this is on an old 8400GS card that has constant clock (i.e. there's only two power states: card is on, or it's off, there's nothing in between) to rule out any difference in power states :)
Downscaling from 1920x1080 23p video to a 1280x1024 (1280x720 after scaling with aspect ratio) screen in FSE mode for both, all settings equal (Softcubic 50 no AR no LL for all scaling modes with madVR smoothmotion debanding off, MPDN and madVR dithering set to None). Consider this a poor man's UHD 3K to FHD comparison ;)
MPDN: 32.8ms (max 35.8ms)
madVR: 90ms (max 133ms) ** average rendering time keeps crawling up non-stop even after 5 mins into the video
Using the max stats (madVR's max is more consistent vs its avg time hovering around the 130ms mark), it's again a ~4 times difference.
This time around, madVR does not suffer too many presentation glitches (only the occasional ones when stopping and playing video from the start). MPDN on the other hand has zero presentation glitches.
huhn
8th October 2014, 05:08
madVRT creates usually presentation glitches when it is not in focus. and there where always problem when a program like gpu-z was running when madVR was used. and madVr has a lot of presentation mode. for exsample windows 7 overlay does a good job for me.
but the more important part is that when upscaling MPDN is not faster. so it is simply the way madVr handles 4:2:0 downscaling.
it is pretty hard to force a newer GPU in highest powerstate because that is not the highest powerstate anymore. all new card overclock them self.
you can disable this in most cases and forcing the gpu in highest power mode is possible too. should be in the driver settings.
i took a 848x480p23 file for upsacling tests the rendertimes are in the 1-2 ms range with high powerstate and bicubic 75. it's a bad comparison there is simply nothing to do for the gpu.
848x480 at 858x480 has there values:
MPDN chroma bicubic 75 directx 10.1 3.46 ms at 135 mhz ~10 % GPU usage
madVR chroma bicubic 75 windows 7 overlay 3.57 ms at 135 mhz ~11% GPU usage
madVR chroma bicubic 75 window mode (new path) 9.10 ms at 135 mhz ~20% GPU usage
madVR chroma bicubic 75 window mode (old path) 2.67 ms at 135 mhz ~10% GPU usage
what did we learn new path is pretty slow. on this PC.
Zachs
8th October 2014, 07:37
@huhn
Can you let me know if the latest version is better in terms of stuttering and if Lanczos and Jinc work without problems this time?
madshi
8th October 2014, 08:39
I wouldn't take AviSynth scripts as the de facto standards on how things should be done, they are usually written to utilize what's readily available from AviSynth core functions when there are other ways to achieve the same quality or better (esp in the reducing aliasing department) in a much less expensive way.
I'm not sure if I would upscale (luma) first, then process, then downscale again myself. It could be beneficial, but I suppose the benefits could be too small to make it worth it. But there are some arguments to be made for doing some processing in the original video resolution.
If you look at scientific image scaling papers, often upscaling to a higher resolution, then later downscaling again can provide better PSNR (or similar) results. The differences are usually minor, though.
Correct me if I'm wrong but are you saying luma is scaled by a third party and chroma is scaled separately by the studio? My thinking was that they were both scaled by the studio?? e.g. Production company shoots footage in IMAX res, studio scales both luma and chroma to 4:2:0 for Bluray/DVD release. Or in the consumer space, video cams record straight to 4:2:0. TBH I can't see how upscaling chroma twice in that regard could be beneficial as opposed to detrimental in any way.
99.99% of all movie content is available in at least 4:2:2, maybe 4:4:4 to the studios. The studio provides a master to the encoding facility. This master could be the original data the studio has, or already some conversion (e.g. it could be a 2K version of the studio's 4K master). The encoding facility then does any further conversions. I didn't mean to say that luma is scaled by a differently party then chroma. This *could* be the case, but it doesn't have to be, and it wasn't the point I was trying to make, anyway.
One point I'm trying to make is that we have luma available in a higher resolution than chroma. This means that there's a certain chance to use the luma information to guide in chroma upscaling. This method is currently not used in madVR, but it might be in the future. If we downscale chroma to the target resolution first, we're giving away the chance to use the luma information to guide with chroma restauration. But since I'm not using this method yet, this is probably a moot point right now.
A more important point might be that using a somewhat softer algorithm for chroma upscaling can sometimes bring benefits (some studios use rather bad/aliased chroma subsampling algorithms), while for image up/downscaling usually a rather sharp algorithm is what most users would prefer. If you scale chroma directly to the target resolution, you can only use one algorithm: Either a softer one or a sharper one.
Originally madVR used to do the same you're doing: Namely scaling chroma directly to the target resolution. This proved to be suboptimal in some situations, e.g. because when using a softer algorithm for chroma upsampling, the final image got overly soft when using large scaling factors. Just try this with a test pattern: Use a somewhat soft chroma upscaling algorithm (e.g. SoftCubic), and a sharp image upscaling algorithm (e.g. Lanczos), then upscale a small chroma test image by 400% and you'll see that chroma will be blurred a lot. Using a combination of SoftCubic + Lanczos would achieve better results. Some users argue for using a sharp chroma upscaling algorithm, anyway, so for those it might make no difference, though.
Personally I have not seen the benefits of scaling in linear light so I haven't done much research into that. However, my thinking is linear light scaling could be done on the individual YUV planes too, couldn't it?
No, that would produce incorrect results. The only proper way to convert the video to linear light is to do Y'CbCr -> R'G'B' -> RGB. You can then convert RGB back to YCbCr if you like. But you *have* to go through R'G'B' -> RGB.
Tacio
8th October 2014, 10:32
@Zachs
Do you have any plan to implement DXVA scaling? I found out that MadVR's DXVA scaler is quite good for me using Intel HD3000.
huhn
8th October 2014, 12:04
@huhn
Can you let me know if the latest version is better in terms of stuttering and if Lanczos and Jinc work without problems this time?
scaling looks fine. i don't see an obvious issue at the moment.
jincs looks pretty good but very unsharp even 8 tabs maybe linear light helps in this case like it helps with catmull-rom.
playback is still not working well this time it didn't work well in fullscreen and windowed.
i guess the issue has something to do with this:
http://abload.de/img/issue4nskk.png
edit: forget that screen happens with very stable numbers too.
Zachs
8th October 2014, 12:38
Originally madVR used to do the same you're doing: Namely scaling chroma directly to the target resolution. This proved to be suboptimal in some situations, e.g. because when using a softer algorithm for chroma upsampling, the final image got overly soft when using large scaling factors. Just try this with a test pattern: Use a somewhat soft chroma upscaling algorithm (e.g. SoftCubic), and a sharp image upscaling algorithm (e.g. Lanczos), then upscale a small chroma test image by 400% and you'll see that chroma will be blurred a lot. Using a combination of SoftCubic + Lanczos would achieve better results. Some users argue for using a sharp chroma upscaling algorithm, anyway, so for those it might make no difference, though.
Yes I notice it wasn't that long ago that madVR switched to the new algo. The thing about chroma is that our eyes aren't very sensitive to it which is why 4:2:0 exists in the first place. And making every user pay for the extra processing (and power bill) just to satisfy a few vocal ones isn't what I would do. I have plans (longer term) to allow scripting to add stages to the rendering pipeline (such as doubling chroma) via pixel shaders and a script file. It actually isn't that hard to do.
@Zachs
Do you have any plan to implement DXVA scaling? I found out that MadVR's DXVA scaler is quite good for me using Intel HD3000.
Yes I noticed that on my Intel HD 3000 too. However, MPDN isn't written with using DXVA at any stage in mind (hence no support for deinterlacing), so supporting it would be quite a massive rewrite. Besides, you *should* be getting DXVA scaling if you were using EVR on every other media player on Windows.
scaling looks fine. i don't see an obvious issue at the moment.
jincs looks pretty good but very unsharp even 8 tabs maybe linear light helps in this case like it helps with catmull-rom.
playback is still not working well this time it didn't work well in fullscreen and windowed.
i guess the issue has something to do with this:
http://abload.de/img/issue4nskk.png
edit: forget that screen happens with very stable numbers too.
Jinc generally gives a very smooth appearance even when used in upscaling. To get sharper images you could try Lanczos.
If playback stutters this time even in FSE mode, then it is definitely to do with backbuffer count (that's the only thing I changed in regards to playback - D3D9 backbuffer count to 4, D3D10 to 2). Are you still testing on Windows 10 preview? Can you try D3D9 path to see if it is better this time?
From the stats, if the present time is low and delayed frame count doesn't go up, then it's outside of MPDN's control (it'll be Windows or drivers from the moment you call Present()).
madshi
8th October 2014, 13:03
Yes I notice it wasn't that long ago that madVR switched to the new algo. The thing about chroma is that our eyes aren't very sensitive to it which is why 4:2:0 exists in the first place. And making every user pay for the extra processing (and power bill) just to satisfy a few vocal ones isn't what I would do.
Downscaling is rather the exception than the rule, though. Today most displays are either 1080p or higher, and 99.9% of all content available today is 1080p or lower. So in most cases you need to upscale. Sure, if you have 4K content, there's a chance you need to downscale instead today. But that won't be the norm for long, either. 4K displays are soon going to be everywhere. Handling chroma separately is a very big performance advantage when downscaling 4K to 1080p, but in most other cases, the performance benefit of scaling chroma separately is much smaller.
Zachs
8th October 2014, 13:25
Downscaling is rather the exception than the rule, though. Today most displays are either 1080p or higher, and 99.9% of all content available today is 1080p or lower. So in most cases you need to upscale. Sure, if you have 4K content, there's a chance you need to downscale instead today. But that won't be the norm for long, either. 4K displays are soon going to be everywhere. Handling chroma separately is a very big performance advantage when downscaling 4K to 1080p, but in most other cases, the performance benefit of scaling chroma separately is much smaller.
Not that soon as most people would've just bought new big screen LCDs in the past few years. I certainly won't be upgrading until my current LCDs kick the dust.
Not to mention a lot of the laptops sold today still spot a 1366x768 screen! In which case, even 1080p videos need to be downscaled. 4K Blu-rays are coming in April 2015. It'll take some time before 4k panels are ubiquitous, definitely not in half a years time!
My point is, pick any given point in time, you'll find that downscaling is a necessity -- 1080p on 1280x1024 or 1366x768 screens, 4K on 1080p screens, and in the future, where 4k screens are ubiquitous (long way yet), 8k on 4k screens and so on.
I'd say it is just as important as upscaling -- you could argue that we should all be watching 1080p contents now, which means you will never need to upscale, only downscale in windowed mode. ;) Or even at 720p, you will never need to upscale chroma to 400%, hence there's no benefits for chroma doubling. In fact, a couple of years back, I threw away my entire DVD collection because I bought a 1080p TV! Even my wife couldn't bare to watch DVDs on a 55" HDTV, regardless of upscaling algo used.
madshi
8th October 2014, 13:33
Who is going to buy 4K media for an 1080p display? In my experience the majority of madVR users are asking about upscaling algorithms. Some are asking about downscaling, but it seems to be the minority, at least that's my subjective impression.
BTW, April 2015 appears to be a bit too optimistic for 4K Blu-Ray:
http://www.techradar.com/news/television/4k-blu-ray-disks-will-be-on-the-shelves-by-christmas-2015-1264317
dukey
8th October 2014, 13:36
Over here there are a lot of 4k tvs on sale.
Zachs
8th October 2014, 13:42
Who is going to buy 4K media for an 1080p display?
Who wouldn't if it's around the same price?
Eventually, you'd want to get a 4K display. It's definitely worth while to spend that extra bucks to get 4k media.
Personally I have 3 monitors and 2 TVs at home. If I get a 4k display, the other 2 TVs are still going to be only 1080p.
Anyway this discussion is going nowhere. To each his own really. Freedom of choice is always good.
Zachs
8th October 2014, 13:43
Over here there are a lot of 4k tvs on sale.
That's hardly the point is it?
huhn
8th October 2014, 14:15
Yes I noticed that on my Intel HD 3000 too. However, MPDN isn't written with using DXVA at any stage in mind (hence no support for deinterlacing), so supporting it would be quite a massive rewrite. Besides, you *should* be getting DXVA scaling if you were using EVR on every other media player on Windows.
how about adding a simple bob deinterlacer better than nothing and no need for something like openCL.
Jinc generally gives a very smooth appearance even when used in upscaling. To get sharper images you could try Lanczos.
I just wonder how the result would look. I very very rarely downscale.
If playback stutters this time even in FSE mode, then it is definitely to do with backbuffer count (that's the only thing I changed in regards to playback - D3D9 backbuffer count to 4, D3D10 to 2). Are you still testing on Windows 10 preview? Can you try D3D9 path to see if it is better this time?
From the stats, if the present time is low and delayed frame count doesn't go up, then it's outside of MPDN's control (it'll be Windows or drivers from the moment you call Present()).
yes I'm still at windows 10 preview. current driver geforce 344.11
v2.5.1
in general the issue sometimes comes after some time
both fail directx 9 and 10.1
directx 9 fullscreen usually fails most up to issue like this:
http://abload.de/img/untitledmni96.png
if the issue isn't there from the start it can be started by changing the position in the file.
madVR runs totally fine.
I try it later on my windows 7 HTPC to make sure this isn't a issue with windows 10 preview
other new issue.
if the window of the is in the background video or audio can get stuck.
when audio crashes it give this error
TITLE: mscorlib Error
------------------------------
An unexpected error 'System.Runtime.InteropServices.COMException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Exception from HRESULT: 0x88780096 (mscorlib)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
===================================
An unexpected error 'System.Runtime.InteropServices.COMException' has occurred.
------------------------------
Error Type = System.Runtime.InteropServices.COMException
Error Message = Exception from HRESULT: 0x88780096
Error Source = mscorlib
Error Site = Void ThrowExceptionForHRInternal(Int32, IntPtr)
Error occurred = at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at MediaPlayerDotNet.MainForm.
(Int32 )
at MediaPlayerDotNet.MainForm.
(Int32 )
at MediaPlayerDotNet.MainForm.
()
at MediaPlayerDotNet.MainForm.
()
at MediaPlayerDotNet.MainForm.
(Object , MouseEventArgs )
at System.Windows.Forms.ScrollableControl.OnMouseWheel(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseWheel(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at MediaPlayerDotNet.MainFormBase.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 = 13,3 GB
Date Time = 08.10.2014 14:58:36
User Name = KRAUSER\Administrator
Application Startup Path = C:\probs
Application Executable Path = C:\probs\MediaPlayerDotNet.exe
CurrentDirectory = C:\probs
SystemDirectory = C:\WINDOWS\system32
Ran As Admin = True
HasShutdownStarted = False
MachineName = KRAUSER
ProcessorCount = 8
LogicalDrives = C:\, D:\, E:\
EnvironmentVariables = COMPUTERNAME = KRAUSER; USERPROFILE = C:\Users\Administrator; HOMEPATH = \Users\Administrator; LOCALAPPDATA = C:\Users\Administrator\AppData\Local; PSModulePath = C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\; PROCESSOR_ARCHITECTURE = AMD64; Path = C:\ProgramData\Oracle\Java\javapath;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 (x86)\Livestreamer; CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files; ProgramFiles(x86) = C:\Program Files (x86); PROCESSOR_LEVEL = 6; LOGONSERVER = \\KRAUSER; PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC; HOMEDRIVE = C:; SystemRoot = C:\WINDOWS; SESSIONNAME = Console; ALLUSERSPROFILE = C:\ProgramData; PUBLIC = C:\Users\Public; FPS_BROWSER_APP_PROFILE_STRING = Internet Explorer; APPDATA = C:\Users\Administrator\AppData\Roaming; PROCESSOR_REVISION = 3a09; USERNAME = Administrator; CommonProgramW6432 = C:\Program Files\Common Files; TEMP = C:\Users\ADMINI~1\AppData\Local\Temp; CommonProgramFiles = C:\Program Files\Common Files; OS = Windows_NT; USERDOMAIN_ROAMINGPROFILE = KRAUSER; PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 58 Stepping 9, GenuineIntel; ComSpec = C:\WINDOWS\system32\cmd.exe; SystemDrive = C:; FPS_BROWSER_USER_PROFILE_STRING = Default; ProgramFiles = C:\Program Files; NUMBER_OF_PROCESSORS = 8; TMP = C:\Users\ADMINI~1\AppData\Local\Temp; ProgramData = C:\ProgramData; ProgramW6432 = C:\Program Files; windir = C:\WINDOWS; USERDOMAIN = KRAUSER
RuntimeVersion = 4.0.30319.36323
Thread Count = 52
Handle Count = 758
VM Size = 1,2 GB
Peak VM Size = 1,2 GB
Working Set Size = 458,8 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, 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, CRYPTBASE.dll, bcryptPrimitives.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, DirectShowLib-2005.dll, SharpDX.Direct3D9.dll, SharpDX.dll, comctl32.dll, dwmapi.dll, System.Configuration.ni.dll, System.Core.ni.dll, System.Xml.ni.dll, gdiplus.dll, DWrite.dll, WindowsCodecs.dll, shell32.dll, SHCORE.dll, YAXLib.dll, System.Xml.Linq.ni.dll, VideoFrameServicesNative.dll, d3d9.dll, nvd3dumx.dll, PSAPI.DLL, VERSION.dll, nvspcap64.dll, D3D9NativeServices.dll, SETUPAPI.dll, CFGMGR32.dll, WTSAPI32.dll, WINMM.dll, WINMMBASE.dll, DEVOBJ.dll, powrprof.dll, nvSCPAPI64.dll, WINSTA.dll, nvapi64.dll, WINTRUST.dll, CRYPT32.dll, MSASN1.dll, dxgi.dll, dcomp.dll, d3dx9_43.dll, usp10.dll, CommandLine.dll, clbcatq.dll, dataexchange.dll, TWINAPI.dll, twinapi.appcore.dll, quartz.dll, LAVSplitter.ax, avformat-lav-56.dll, WS2_32.dll, NSI.dll, avutil-lav-54.dll, libbluray.dll, avcodec-lav-56.dll, qcap.dll, sxs.dll, LAVVideo.ax, avfilter-lav-5.dll, swscale-lav-3.dll, qedit.dll, COMDLG32.dll, MSVFW32.dll, mfplat.dll, RTWorkQ.DLL, AVRT.dll, wmvdecod.dll, msdmo.dll, mfperfhelper.dll, LAVAudio.ax, avresample-lav-2.dll, DDRAW.dll, DCIMAN32.dll, devenum.dll, URLMon.DLL, WININET.dll, iertutil.dll, MMDevAPI.DLL, wdmaud.drv, ksuser.dll, AUDIOSES.DLL, msacm32.drv, MSACM32.dll, midimap.dll, DSOUND.DLL, ntmarta.dll, NETAPI32.dll, netutils.dll, srvcli.dll, wkscli.dll, CallbackFilter.ax, Microsoft.ExceptionMessageBox.dll, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll, diasymreader.dll, SspiCli.dll
===================================
Exception from HRESULT: 0x88780096 (mscorlib)
------------------------------
Program Location:
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at MediaPlayerDotNet.MainForm.
(Int32 )
at MediaPlayerDotNet.MainForm.
(Int32 )
at MediaPlayerDotNet.MainForm.
()
at MediaPlayerDotNet.MainForm.
()
at MediaPlayerDotNet.MainForm.
(Object , MouseEventArgs )
at System.Windows.Forms.ScrollableControl.OnMouseWheel(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseWheel(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at MediaPlayerDotNet.MainFormBase.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
huhn
8th October 2014, 14:23
Who wouldn't if it's around the same price?
Eventually, you'd want to get a 4K display. It's definitely worth while to spend that extra bucks to get 4k media.
Personally I have 3 monitors and 2 TVs at home. If I get a 4k display, the other 2 TVs are still going to be only 1080p.
Anyway this discussion is going nowhere. To each his own really. Freedom of choice is always good.
aren't the industry selling way more DVD than BD even in year 2014?
don't forget we need a way to get them ripped be for we can use them with madVR or MPDN. this may take sometime...
so getting UHD BD for fall/winter 2015 and using them for madVR or MPDN are to totally different things.
XMonarchY
8th October 2014, 18:40
This looks interesting, but there is no way to use 3DLUT's with this player, isn't there? Is that something that will be added later? I also noticed that some other madVR options/settings are missing and that it has some options and settings not present in native madVR. What's the advantage of this player over others, like MPC-HC + madVR combination?
I also think that upscaling is more important than downscaling at this point. madVR is not for laptops that use sub-1080p or sub-720p resolutions, although they can also use madVR's features to improve video playback rendering quality. madVR is for high-end HTPC / Gaming PC systems that can handle its demanding rendering improvement methods/techniques. madVR actually requires you have a high-end videocard to use the most demanding and most image-improving features it has, which happen to be image and chroma upscaling, NNEDI3, doubling/quadrupling, artifact removal, dithering, 3DLUTs, etc. No other renderers have those features, which is what madVR unique.
I actually think that madVR does an incredible job at making DVD content look superb on HDTV 1080p screens on systems that can handle NNEDI3 quadrupling, artifact removal, dithering, and 3DLUT utilization. It actually makes such low resolution content watchable on 1080p screens. Eventually, people will switch to 4K, which isn't going to happen so soon. I am not sure whether today's high-end videocards can easily handle 1080p to 4K NNEDI 3upscaling, doubling/quadrupling, etc., but it is usually gamers who own such high-end cards. Seeing how no single-core GPU card can handle all games @ 4K @ 60fps, I doubt there will be a massive switch to 4K screens in the near future as it would require very expensive investment into the screens themselves and hardware needed to use them for entertainment purposes. Personally, I feel that there are still plenty of room to improve video image @ 1080p.
foxyshadis
9th October 2014, 00:59
aren't the industry selling way more DVD than BD even in year 2014?
In the US it's ~45%/55%, in Japan it's up to ~70%/30%. Of course, among AV enthusiasts like us, it's probably nearly 90%/10% where it's possible to get BDs.
huhn
9th October 2014, 02:04
In the US it's ~45%/55%, in Japan it's up to ~70%/30%. Of course, among AV enthusiasts like us, it's probably nearly 90%/10% where it's possible to get BDs.
I only found a chart for germany (wikipedia) it's still 25%/75% there. I wonder about the rest of Europe.
Zachs
9th October 2014, 06:19
how about adding a simple bob deinterlacer better than nothing and no need for something like openCL.
other new issue.
if the window of the is in the background video or audio can get stuck.
when audio crashes it give this error
Bob deinterlacer isn't really adding much value? Doesn't LAV video decoder have DXVA deinterlacing built in?
The audio crashing is due to your audio device suddenly disappearing - when you scrolled your mouse wheel, MPDN tried to adjust volume but failed.
This looks interesting, but there is no way to use 3DLUT's with this player, isn't there? Is that something that will be added later? I also noticed that some other madVR options/settings are missing and that it has some options and settings not present in native madVR. What's the advantage of this player over others, like MPC-HC + madVR combination?
No 3DLUT support yet. I will look into supporting that in the future.
There's no advantage using this player. Not trying to pry people away from their beloved madVR, just sharing this player as an alternative. There are some features that MPDN have and not madVR such as fast downscaling, Jinc downscaling, 4-tap Lanczos Spline Jinc upscaling, 10- and 16-bit output modes. MadVR has a lot more features tough like what you mentioned 3DLUT, NNEDI3, linear light scaling etc.
Anyway, no one was disputing madVR doesn't do a good job or that upscaling isn't important. But I simply can't play 4K videos with madVR on my 1080p screen. Forget bluray, OnePlusOne has 4k 24fps recording capabilities. MPDN isn't as good as madVR in the picture quality department (namely it's missing advanced features but madVR wasn't written in one day either) but it works across a wider spectrum (namely downscaling from 4k). The goal of MPDN is not for the pedantic ones who want utmost quality regardless of cost but one for the pragmatists who want decent quality and at a reasonable cost. If there's an option to add higher picture quality features, I would but only if they do not affect those who don't need / want them.
huhn
9th October 2014, 07:37
Bob deinterlacer isn't really adding much value? Doesn't LAV video decoder have DXVA deinterlacing built in?
no dxva but CUVID/QS and of cause software YADIF.
YADIF can be pretty slow with FHD sources.
Zachs
9th October 2014, 08:17
@huhn
Can you test this version (http://www.zachsaw.com/downloads/MediaPlayerDotNet/MediaPlayerDotNet_x86_2_5_2_1891.zip) to see if it solves the problem of frame dropping / stuttering for you?
Did you get dropped frames when stuttering happens?
madshi
9th October 2014, 10:56
There's no advantage using this player. Not trying to pry people away from their beloved madVR, just sharing this player as an alternative. There are some features that MPDN have and not madVR such as fast downscaling, Jinc downscaling, 4-tap Lanczos Spline Jinc upscaling, 10- and 16-bit output modes. MadVR has a lot more features tough like what you mentioned 3DLUT, NNEDI3, linear light scaling etc.
FWIW, Jinc downscaling and 10bit output has been on my to-do-list for a long time, it's just a question of time when these will come to madVR.
MPDN isn't as good as madVR in the picture quality department (namely it's missing advanced features but madVR wasn't written in one day either) but it works across a wider spectrum (namely downscaling from 4k). The goal of MPDN is not for the pedantic ones who want utmost quality regardless of cost but one for the pragmatists who want decent quality and at a reasonable cost.
I don't like this part of your comment much, to be honest. Probably you didn't mean it this way, but you do sound as if madVR were for pedantic users, only, and not for those who want decent quality at a reasonable cost. That's not really the case at all.
As mentioned before, madVR is currently written in such a way that all sources are converted to RGB first. I didn't anticipate that this would slow downscaling down *that* much. So I might have to reconsider this decision for downscaling (at least if certain conditions are met, e.g. if there are no pre-scale custom shaders active and if linear light downscaling is deactivated etc). I haven't decided yet.
huhn
9th October 2014, 11:09
not working as intended.
directx 9 can drop frames like crazy after i resized or switch to full screen. directx 10.1 doesn't drop frames at start or after some resizing it does a wrong pullup every 0.5 - 1.0 sec so a huge lag is to seen.
I guess this is a windows 10 problem no one else reported something like this.
Zachs
9th October 2014, 11:17
FWIW, Jinc downscaling and 10bit output has been on my to-do-list for a long time, it's just a question of time when these will come to madVR.
I don't like this part of your comment much, to be honest. Probably you didn't mean it this way, but you do sound as if madVR were for pedantic users, only, and not for those who want decent quality at a reasonable cost. That's not really the case at all.
As mentioned before, madVR is currently written in such a way that all sources are converted to RGB first. I didn't anticipate that this would slow downscaling down *that* much. So I might have to reconsider this decision for downscaling (at least if certain conditions are met, e.g. if there are no pre-scale custom shaders active and if linear light downscaling is deactivated etc). I haven't decided yet.
I absolutely don't mean madVR is for pedantic users only but what I was trying to point out was MPDN doesn't cater for these people at the moment and that I wouldn't add any features unless it doesn't penalise those who don't want it. That was the point I was trying to make for MPDN. What is wrong with letting people choose to use MPDN if madVR doesn't do the job for them? Or do you feel that MPDN is completely worthless that no one should even bother?
I wasn't trying to convince you to implement it the way I feel should be implemented. I was only stating my own believes for the direction I would take MPDN. I apologise if it sounded like I was criticising madVR but I wasn't. I merely wanted to point out there are certain things I would do and have done differently. Everyone believes in different things and that is perfectly fine with me. That's the beauty of the world we live in.
kostik
9th October 2014, 11:32
Will it be possible to resize the video ? (Pan&Scan)?
Everything else is pretty much works good :)
madshi
9th October 2014, 12:01
What is wrong with letting people choose to use MPDN if madVR doesn't do the job for them?
I didn't say anything like that. I just wanted to make sure that readers of this thread don't get a wrong impression about which user groups madVR might be intended/optimized for.
Zachs
9th October 2014, 12:12
not working as intended.
directx 9 can drop frames like crazy after i resized or switch to full screen. directx 10.1 doesn't drop frames at start or after some resizing it does a wrong pullup every 0.5 - 1.0 sec so a huge lag is to seen.
I guess this is a windows 10 problem no one else reported something like this.
Not Win10 problem!
I just encountered this myself!
Zachs
9th October 2014, 12:13
Will it be possible to resize the video ? (Pan&Scan)?
Everything else is pretty much works good :)
Ah no, the only thing you could do is change aspect ratio.
ajp2k11
9th October 2014, 12:25
Not Win10 problem!
I just encountered this myself!
I get strange stutters every few seconds if I set my display to 120Hz, 60Hz is much smoother. Is this the same problem? Doesn't matter if I use DX9 or DX10.1, fullscreen or not. Using Win 8.1 with an AMD 6650M. MadVR is smooth at 120Hz (if I can get it to work at all).
Zachs
9th October 2014, 12:54
I get strange stutters every few seconds if I set my display to 120Hz, 60Hz is much smoother. Is this the same problem? Doesn't matter if I use DX9 or DX10.1, fullscreen or not. Using Win 8.1 with an AMD 6650M. MadVR is smooth at 120Hz (if I can get it to work at all).
Do you get dropped frames when that happens? And is present times up in the teens (more than 10ms)?
ajp2k11
9th October 2014, 13:03
Do you get dropped frames when that happens? And is present times up in the teens (more than 10ms)?
No dropped frames. Pretty sure present times are more than 10ms, I use Jinc upscaling and my GPU is pretty old so... not at home right now so I can't check the exact times.
huhn
9th October 2014, 13:04
the present times are stable for me.
it MPDN presenting 120 frame on a 120 hz screen or is it leaving this task to "aero" or directx vsync and just give it 24 frame a sec?
huhn
9th October 2014, 13:06
No dropped frames. Pretty sure present times are more than 10ms, I use Jinc upscaling and my GPU is pretty old so... not at home right now so I can't check the exact times.
are you using windows 7 without aero?
it is totally normal to get very high present times in this case was always the case with madVR.
ajp2k11
9th October 2014, 13:18
are you using windows 7 without aero?
it is totally normal to get very high present times in this case was always the case with madVR.
Nope, using Win 8.1... not sure about my present times though, will have to check tonight.
Zachs
9th October 2014, 13:22
@huhn
24 frame a sec but it's based on directshow "reference time", not your system time. The reference time is from your audio source, and it is rather inaccurate and it gets adjusted quite frequently but that is what MSDN's documentation asks renderers to sync to. However, the behavior is completely different for Dx9 and Dx10 render paths! So that isn't the problem there.
Did you say at some stage that it worked for you in FSE mode but not windowed?
The problem I'm seeing is completely different then. I get a period where frames keep getting dropped after switching out from FSE mode. My present time goes to 20ms and frames drop like mad.
huhn
9th October 2014, 14:08
@huhn
24 frame a sec but it's based on directshow "reference time", not your system time. The reference time is from your audio source, and it is rather inaccurate and it gets adjusted quite frequently but that is what MSDN's documentation asks renderers to sync to. However, the behavior is completely different for Dx9 and Dx10 render paths! So that isn't the problem there.
Did you say at some stage that it worked for you in FSE mode but not windowed?
The problem I'm seeing is completely different then. I get a period where frames keep getting dropped after switching out from FSE mode. My present time goes to 20ms and frames drop like mad.
so the audio clock can be a problem too? I use a ESI Prodigy X-Fi NRG R in this PC i try the onboard later can only hurt my ears.
the problem is it sometimes works so my reports are maybe totally wrong. because i didn't managed to break it in the first 5 tries.
in the last test directx 9 fullscreen and windows was the mode that can drops frames like crazy I check for the present times later but all mode showed choppy playback.
this screen I posted earlier http://abload.de/img/untitledmni96.png shows the frame dropping issue but the present times are fine in the last 5 sec.
ajp2k11
9th October 2014, 20:00
Nope, using Win 8.1... not sure about my present times though, will have to check tonight.
Just checked, present times below 1ms.
SamuelMaki
10th October 2014, 00:08
Hey! I have a problem with external subtitles (.srt and .sub files at least). I do select them with directvobsub, but only the embedded subtitles work. Is this a feature/to-do or have I missed something? Embedded subtitles work just fine, and the tray icon appears, only the "open" dialog in directvobsub doesn't. Using x64 version and have x64 LAV and x64 Directvobsub installed properly.
Also the LAV-splitters choises are ignored (loading italian audio and subtitles when selected english on LAV).
Zachs
10th October 2014, 02:36
Just a quick update for all the testers (I'm very appreciative, thank you!)
I believe there could be 2 issues here with the stuttering issue.
The first one, I have replicated on both NVIDIA and AMD GPUs. Intel GPU does not have this problem.
Namely, after coming out of FSE mode, I can't present anything for a few seconds (some times a lot longer on NVIDIA cards).
This I have attributed it to bad drivers as it is not returning from my Present() call even after I have made sure it is a new VBlank (again this happens only for a few seconds after exiting from FSE mode). The net result is you get a lot of dropped frames for that few seconds and after which Present times will go back to the sub 1ms it should be. This issue, I have implemented a workaround.
The second issue may be related to 120Hz monitors only. I am not so sure about this particular one as I don't have a 120Hz monitor to test with, but I do have a 75Hz monitor. On that monitor, I couldn't replicate the problem. It could be due to the same problem too, so give the new version (2.5.3) a try.
Zachs
10th October 2014, 02:39
Hey! I have a problem with external subtitles (.srt and .sub files at least). I do select them with directvobsub, but only the embedded subtitles work. Is this a feature/to-do or have I missed something? Embedded subtitles work just fine, and the tray icon appears, only the "open" dialog in directvobsub doesn't. Using x64 version and have x64 LAV and x64 Directvobsub installed properly.
Also the LAV-splitters choises are ignored (loading italian audio and subtitles when selected english on LAV).
External subs should work. You need to make sure the file names are exactly as per your media file except for the extension though. The other thing I would check is make sure your DirectVobSub has the external sub paths setup properly.
Regarding LAV-Splitter choices, I didn't even know there's such a thing, so I made it default to the first track for both audio and sub :)
I'll look into that one.
Zachs
10th October 2014, 06:30
@huhn @ajp2k11
Can you try v2.5.3 to see if it helps with the frame drop and stuttering issues?
I have introduced a new windowed mode rendering path for both D3D9 and D3D10.
There's now an additional option in the Video Renderer settings page to choose "New windowed mode rendering path".
This "new" path is actually the one I've been using all the time (with fixes I mentioned in the earlier post), so basically I've added an "old" rendering path to MPDN.
Anyway, if you could try both old and new paths with both D3D9 and D3D10, I'd truly appreciate it!
Some systems work better with the old path in D3D9 while doesn't make a difference in D3D10 and some prefer the new path.
ajp2k11
10th October 2014, 07:33
@huhn @ajp2k11
Can you try v2.5.3 to see if it helps with the frame drop and stuttering issues?
I have introduced a new windowed mode rendering path for both D3D9 and D3D10.
There's now an additional option in the Video Renderer settings page to choose "New windowed mode rendering path".
This "new" path is actually the one I've been using all the time (with fixes I mentioned in the earlier post), so basically I've added an "old" rendering path to MPDN.
Anyway, if you could try both old and new paths with both D3D9 and D3D10, I'd truly appreciate it!
Some systems work better with the old path in D3D9 while doesn't make a difference in D3D10 and some prefer the new path.
I will try it when I get home tonight, thanks! :)
Zachs
10th October 2014, 08:29
OK I've just tried an earlier version of NVIDIA drivers 340.52 -- it is definitely an NVIDIA drivers bug.
This is with D3D9.
Old rendering path:
With the earlier drivers, switching from FSE back to windowed mode never causes long present times but can occasionally still stutter.
Latest drivers, it blocks present() when stutter occurs - this behavior was changed from previous driver version to the current one.
However, they still haven't fixed that issue where FSE mode to windowed mode would cause long present times.
New rendering path:
Both drivers report low present() times and smoothness issue only noticeable when viewing rolling credits.
For D3D10, latest drivers can appear as if it has that pull up issue huhn mentioned when switching back to windowed from FSE mode.
Old driver is hardly noticeable.
FSE mode isn't affected by all of these.
AMD & Intel both seem happy with either rendering paths including D3D10 ones.
@huhn @ajp2k11: Can you guys verify the above and see if that's the same issue you are having?
EDIT: Just tested madVR with default settings and its behavior is exactly the same as MPDN's new rendering path for this particular issue.
SamuelMaki
10th October 2014, 10:46
External subs should work. You need to make sure the file names are exactly as per your media file except for the extension though. The other thing I would check is make sure your DirectVobSub has the external sub paths setup properly.
Regarding LAV-Splitter choices, I didn't even know there's such a thing, so I made it default to the first track for both audio and sub :)
I'll look into that one.
Tried that already, have no way to enable the external subtitles since the "subtitles" section show only embedded ones. Made the path simple and used simple filenames (same on both), but still doesn't work. When I select "no subtitles", it does show "undetermined, no subtitles" in the directvobsub window. So basically it does load the external one when chosen "no subtitles" in the player, but hides the subtitles as well?
I don't know, just a hunch :P Maybe do some simple drag and drop system for subtitles or make the open/browse dialog to work on directvobsub if you can? Seems a lot more faster than running with madVR+mpc-hc in my opinion otherwise.
Zachs
10th October 2014, 10:50
Ah you mean that media has embedded subs and you are trying to use external sub instead right?
That's one thing I haven't anticipated. I'll take a look at that too!
SamuelMaki
10th October 2014, 10:54
Ah you mean that media has embedded subs and you are trying to use external sub instead right?
That's one thing I haven't anticipated. I'll take a look at that too!
That's exactly what I am doing! Thanks for working on it, waiting eagerly for the fix, since this is something kinda lot of people from "smaller countries" experience when trying to watch import movies.
huhn
10th October 2014, 12:54
OK I've just tried an earlier version of NVIDIA drivers 340.52 -- it is definitely an NVIDIA drivers bug.
This is with D3D9.
Old rendering path:
With the earlier drivers, switching from FSE back to windowed mode never causes long present times but can occasionally still stutter.
Latest drivers, it blocks present() when stutter occurs - this behavior was changed from previous driver version to the current one.
However, they still haven't fixed that issue where FSE mode to windowed mode would cause long present times.
New rendering path:
Both drivers report low present() times and smoothness issue only noticeable when viewing rolling credits.
For D3D10, latest drivers can appear as if it has that pull up issue huhn mentioned when switching back to windowed from FSE mode.
Old driver is hardly noticeable.
FSE mode isn't affected by all of these.
AMD & Intel both seem happy with either rendering paths including D3D10 ones.
@huhn @ajp2k11: Can you guys verify the above and see if that's the same issue you are having?
EDIT: Just tested madVR with default settings and its behavior is exactly the same as MPDN's new rendering path for this particular issue.
a lot better still not always perfect. it took me awhile to run in any problems.
Zachs
10th October 2014, 13:04
a lot better still not always perfect. it took me awhile to run in any problems.
Yeah it's an NVIDIA bug. I can reproduce the exact same problem on madVR too when switching back from FSE mode. It doesn't report present times to be high too like my new render path but you can notice jerky playback especially on rolling credits. The old rendering path of MPDN reported the true present times (only with NVIDIA's latest drivers) but that means it also tried to correct it by dropping frames, which made the situation worse. By ignoring present time (as with the older NVIDIA drivers), MPDN pretends that everything is fine. It is still not smooth with the latest drivers (blame NVIDIA), but there is nothing more that could be done from an application's perspective.
Someone needs to report the bug to NVIDIA. :)
EDIT: You'll notice further improvements if you switch back to geforce drivers v340.52.
@ajp2k11
I bet you have an NVIDIA card with latest drivers too? :)
ajp2k11
10th October 2014, 13:50
Yeah it's an NVIDIA bug. I can reproduce the exact same problem on madVR too when switching back from FSE mode. It doesn't report present times to be high too like my new render path but you can notice jerky playback especially on rolling credits. The old rendering path of MPDN reported the true present times (only with NVIDIA's latest drivers) but that means it also tried to correct it by dropping frames, which made the situation worse. By ignoring present time (as with the older NVIDIA drivers), MPDN pretends that everything is fine. It is still not smooth with the latest drivers (blame NVIDIA), but there is nothing more that could be done from an application's perspective.
Someone needs to report the bug to NVIDIA. :)
EDIT: You'll notice further improvements if you switch back to geforce drivers v340.52.
@ajp2k11
I bet you have an NVIDIA card with latest drivers too? :)
Nope, I have an AMD 6650M with Catalyst 14.9 drivers but maybe it's not the same problem? I only see stuttering when using 120Hz display mode, can easily be seen when there's movement. Haven't noticed any when running in 60Hz. Not a major problem but it's nice to be able to use 120Hz since it's a multiple of 24. I'll try and provide some better debug info this weekend...
Zachs
10th October 2014, 18:03
Is that on the latest version of mpdn though?
ajp2k11
10th October 2014, 20:14
Is that on the latest version of mpdn though?
Nope, I'll try the new version this weekend... thanks!
Hera
12th October 2014, 00:51
Is dxva2n support missing or did I set things up wrong? Using this with LAV filter (testing right now), Video decoder says "DXVA2 (native)" is "Available". (DX 10.1, Win 8.1, NV 660).
EDIT: Just found my answer - "MPDN isn't written with using DXVA at any stage in mind", well that is a performance bummer.
Anyway, some suggestions,
Going to "File" then "Open" brings up a dialog which then brings up a Windows dialog.
After choosing a file in the Windows dialog, the MPDN dialog remains and you have to close it.
Four clicks.
Suggestion, "Open" should bring up Windows dialog directly then when I choose a file in the Windows dialog, it should start playing the file.
Two clicks.
Ease of setup,
Can you include subtitle renderer as part of MPDN (I fathom this is a legal question)? Requiring separate download and install is a negative in my opinion.
Options,
Some questions that the options menu can answer:
(1) "What is faster?" (2) "What this does?" (3) "What is this options recommended for?"
Sorry to disappoint but performance critical parts are actually in ASM and C / C++. C# merely provides the glue logic and it isn't very good at that too with GC stopping all managed threads when it feels like it (which means all MPDN's time critical threads are also in C++).
I can only share it as closed source or don't share it at all (for reasons I can't disclose). If you want to learn about writing a video renderer, there are plenty of resources on the net to get you started.
Oh yeah, C++ is too complicated (for me) compared to unsafe C# code. Also, have you tried native .net native? I hope you'll reconsider; it would be a major bummer if development stopped and no one could take over.
huhn
12th October 2014, 02:21
it's not rare that DXVA uses more power than normal software decoding making it pretty useless for normal content like a BD on system with a dedicated GPU.
and this is closed software. for a reason the creator knows but didn't want to tell us.
Zachs
13th October 2014, 05:06
@Hera
Quick Open File menu added in v2.6.1.
A setup package will be used some time in the future when I get some time to do it.
If someone wants to do a write up for the options, I'd be happy to assist and post the link on the OP but I don't want to clutter the options page further.
.NET native won't make a difference to MPDN's performance (GC will still be present and like I said before, performance critical parts are in ASM). And you do know it's not available for desktop apps yet, don't you? :)
ajp2k11
13th October 2014, 07:24
Tried v2.5.3 this weekend and it's smooth at 120Hz, even with "prefer new renderer" checked... weird?
Zachs
13th October 2014, 07:58
@ajp2k11
Not really weird :) It's because the new rendering path has some tweaks done to it too!
Glad to know it's working for ya!
ajp2k11
14th October 2014, 10:11
@ajp2k11
Not really weird :) It's because the new rendering path has some tweaks done to it too!
Glad to know it's working for ya!
Ah ok, I see! Works very well for me, good subjective quality but not too heavy for my laptop. It has become my default player now, thanks! :)
aufkrawall
16th October 2014, 18:57
Have you tried Custom Resolution Utility to prevent Nvidia bugs with D3D10 FSE?
Hoping for Catmull-Rom LL downscaling, smooth motion and NNEDi stuff. :)
Zachs
17th October 2014, 00:46
Have you tried Custom Resolution Utility to prevent Nvidia bugs with D3D10 FSE?
Hoping for Catmull-Rom LL downscaling, smooth motion and NNEDi stuff. :)
Yes it is the custom res utility that got me close to 23.976Hz in the first place but D3D10 FSE mode has a mind of its own and decides to ignore the custom settings. Its D3D9 implementation has no such issues. This is definitely due to the lack of test coverage on NVIDIA's part.
MPDN has Catrom but does not do LL scaling (my understanding is that LL only benefits in extreme downscaling of >= 400%). To get catrom, use bicubic with sharpness of 100 (this is equivalent to catrom mathematically).
I'm not a big fan of smooth motion (that's an understatement :)) but SVP is readily available as a postprocessing filter.
aufkrawall
17th October 2014, 01:37
Can't confirm, it shows 23,97xHz in player OSD in D3D10 FSE on a Geforce 9600 GT.
I meant the tool CRU, not Nvidia driver custom resolution tool:
http://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU
http://abload.de/thumb/crujrkvf.jpg (http://abload.de/image.php?img=crujrkvf.jpg)
It's important to untick the extension block checkbox and to do a restart after setting up resolutions.
Or are you referring to some command line switches for auto resolution change, since I can't find that functionality in the MPDN GUI. :)
Zachs
17th October 2014, 02:35
Can't confirm, it shows 23,97xHz in player OSD in D3D10 FSE on a Geforce 9600 GT.
I meant the tool CRU, not Nvidia driver custom resolution tool:
http://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU
http://abload.de/thumb/crujrkvf.jpg (http://abload.de/image.php?img=crujrkvf.jpg)
It's important to untick the extension block checkbox and to do a restart after setting up resolutions.
Or are you referring to some command line switches for auto resolution change, since I can't find that functionality in the MPDN GUI. :)
9600GT - that's the exact card I was testing it on!
I tested with both CRU and nvidia custom res.
While in windowed mode, MPDN shows my custom refresh rate. But once I go into FSE mode, MPDN's display rate rapidly changes to approach the new rates (which is the default rate).
What driver version are you using anyway? I'd love to get D3D10 to work on my 9600GT too, especially since it fully supports 10-/16-bit output mode.
MPDN doesn't do auto res change, so if refresh rate changes when going into FSE mode, then it's the driver doing it. I'll give it another try with CRU but your screen shot doesn't show manual timing? I had to set manual timing to get close to 23.976Hz (my TV reports 23Hz mode properly so I only need CRU to set the card up via manual timing to get closer to my audio ref clock).
huhn
17th October 2014, 08:30
both on windows 8?
you may read this
http://bugs.madshi.net/view.php?id=90
Zachs
17th October 2014, 12:26
Not only Win8. My win7 is the same. Only with D3D10 rendering path though. D3D9 has no problem.
aufkrawall
17th October 2014, 18:00
I'll give it another try with CRU but your screen shot doesn't show manual timing? I had to set manual timing to get close to 23.976Hz (my TV reports 23Hz mode properly so I only need CRU to set the card up via manual timing to get closer to my audio ref clock).
What timings do you suggest?
I'm using a LCD monitor with bypass panel and with my usual timings (which are said to have more frequent vblank) I can't hit 23.976 very precisely, neither with LCD standard.
Driver is plain 340.52 and OS is Windows 8.1. Hopefully I'll have a GM204 card again next week.
jkauff
19th October 2014, 22:50
Downloaded the latest MPDN last night and tried it for the first time. For 1080p, it's as good as or better than madVR (nothing touches madVR on doubled SD). Nice work!
I have one feature request. Please add "resume playback at last position" to the General Options. Quick Open File and Recent Files are less useful without it.
Anime Viewer
19th October 2014, 23:30
I don't know if its been previously mentioned in the thread (I did a quick search, but didn't turn it up), but I think a useful feature for the MPDN player somewhere down the line would be the play next in folder option (and possibly a loop at end of of folder) that is common in quite a few other players.
Edit: Just wanted to add a note about how impressed I am with the current version of MPDN. Back in late September I posted about problems I had with what was then version x64_2_1_0_1424. With the current version x64_2_6_3_1912 I have none of those problems. Before I couldn't run in fullscreen using Direct3D 10.1 render mode now I have no problem running in that mode (as long as I don't put a check in the Use new windowed mode rendering path when possible box). I can't credit my gpu (dated 9/18/2014, so it hasn't changed), so I credit the changes made to MPDN during that time. Given its very good image quality, fast render times, 0 dropped frames, 0 presentation glitches, and smooth video playback (smooth video during panning/scrolling scenes) it is currently my preferred media player.
http://r18.imgfast.net/users/1813/58/83/10/smiles/779362.gif
I'd use it all the time if it had a few more basic features (like noted above). ;)
Please add "resume playback at last position" to the General Options.
I'd find that useful as well. As far as I know that's something lacking in a lot of video players (including MPC).
Zachs
20th October 2014, 06:53
I have one feature request. Please add "resume playback at last position" to the General Options. Quick Open File and Recent Files are less useful without it.
Good idea!
I don't know if its been previously mentioned in the thread (I did a quick search, but didn't turn it up), but I think a useful feature for the MPDN player somewhere down the line would be the play next in folder option (and possibly a loop at end of of folder) that is common in quite a few other players.
Along with that, I've got playlist on my todo list as well. It will tie in quite well with playlist.
Just a heads up, MPDN v2.7.0 has been released and features 12- and 16-tap Lanczos and Jinc. It's also massively faster. First time I've been able to use Jinc 16-tap (or its equivalent) on my GTX560 without it sounding like a plane taking off! :)
toniash
20th October 2014, 08:43
Wouldn't it be possible to release your renderer alone (as Madvr)? I'm very happy with the rendering part but the player lacks many features that others have.
Only dreaming ..:):)
italospain
20th October 2014, 09:45
Wouldn't it be possible to release your renderer alone (as Madvr)? I'm very happy with the rendering part but the player lacks many features that others have.
Only dreaming ..:):)
i have the same dream :p
Zachs
20th October 2014, 11:50
Wouldn't it be possible to release your renderer alone (as Madvr)? I'm very happy with the rendering part but the player lacks many features that others have.
Only dreaming ..:):)
There's actually a few reasons for MPDN to have its own player but the technical one is .NET isn't exactly DirectShow filter friendly. MPDN needed a lot of tricks to get .NET to play nice, it's going to be quite difficult to make it into a pure DirectShow renderer.
BetA13
20th October 2014, 22:36
Do you plan shader support in future releases?
i really like this player so far, it has so much less performance impact on my system, finally i can watch movies with madvr but without having teh gpu at 60% all the time...
i do really miss shader support....
greetz BetA
patul
20th October 2014, 22:50
I got "Failed to connect filter to graph (Mpdn.VideoPlayer)" exception when tried to use ffdshow raw video decoder as post processing filter. Could you take a look in to it, since I can use this filter in other players? Or I misunderstood the usage of DS filter in your app?
Detailed exception is as per following:
Unable to cast COM object of type 'System.__ComObject' to interface type 'DirectShowLib.IBaseFilter'.
This operation failed because the QueryInterface call on the COM component for the interface with IID
'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' failed due to the following error:
No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
(Mpdn.VideoPlayer)
If you could add playlist and pixel shader support then it will be great. Thanks
madshi
20th October 2014, 23:05
finally i can watch movies with madvr but without having teh gpu at 60% all the time...
FWIW, when using MPDN you're not using madVR! MPDN and madVR have nothing to do with each other, except that MPDN is "borrowing" a lot of ideas from madVR.
Anime Viewer
21st October 2014, 00:02
Just a heads up, MPDN v2.7.0 has been released and features 12- and 16-tap Lanczos and Jinc. It's also massively faster. First time I've been able to use Jinc 16-tap (or its equivalent) on my GTX560 without it sounding like a plane taking off! :)
Render times are definitely lower then reported with the previous version(s) I used, but I don't see any noticeable visual difference between the different tap settings (at least with the content I've tested with). (I was actually afraid it might over sharpen images with 16-taps set, but since it looks like the others that doesn't appear to occur). As a result I'll probably keep it at a 6 or 8 taps setting unless someone can offer a reason I should set it to one of the other tap settings.
turbojet
21st October 2014, 00:21
+1 on shader support and is there any plans for ivtc and auto hiding caption like how auto hide control bar works?
Zachs
21st October 2014, 00:26
I got "Failed to connect filter to graph (Mpdn.VideoPlayer)" exception when tried to use ffdshow raw video decoder as post processing filter. Could you take a look in to it, since I can use this filter in other players? Or I misunderstood the usage of DS filter in your app?
Detailed exception is as per following:
Unable to cast COM object of type 'System.__ComObject' to interface type 'DirectShowLib.IBaseFilter'.
This operation failed because the QueryInterface call on the COM component for the interface with IID
'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' failed due to the following error:
No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
(Mpdn.VideoPlayer)
If you could add playlist and pixel shader support then it will be great. Thanks
I'll take a look at the error.
Custom pixel shader support is definitely pretty high on my todo list. I am looking to do a prescale and postscale shader. I'm still toying with the idea of whether to incorporate scripting straight into it too - so you could do things like, scale to a much larger image size than display with sharpest scaler, call an external pixel shader to sharpen it further, then scale it back down for display. I'd imagine this to take quite a bit of time to implement so for the first stage I might just do prescale / postscale custom shader. Does madVR do that at the moment?
Render times are definitely lower then reported with the previous version(s) I used, but I don't see any noticeable visual difference between the different tap settings (at least with the content I've tested with). (I was actually afraid it might over sharpen images with 16-taps set, but since it looks like the others that doesn't appear to occur). As a result I'll probably keep it at a 6 or 8 taps setting unless someone can offer a reason I should set it to one of the other tap settings.
16-tap causes a lot of ringing (especially noticeable for >200% upscale). Jinc is by nature a much softer scaler than Lanczos so ringing is not as noticeable on the higher order scalers. You can definitely tell the difference for low res (say 320x240) image with high contrast edges that has been blown up to a 1920x1080 screen. If you are happy with 8 taps, by all means use that. The lower it is, the cheaper it is to run (quieter too).
+1 on shader support and is there any plans for ivtc and auto hiding caption like how auto hide control bar works?
DXVA Deinterlacing - If there's a small example of how it is done, I'd love to incorporate that into MPDN. I know the API calls I need but I haven't looked into it much yet as all my systems have QuickSync and LAV video decoder does deinterlacing already. Auto hide caption is a great idea. I'll see what I could do.
Anime Viewer
21st October 2014, 01:37
16-tap causes a lot of ringing (especially noticeable for >200% upscale). Jinc is by nature a much softer scaler than Lanczos so ringing is not as noticeable on the higher order scalers. You can definitely tell the difference for low res (say 320x240) image with high contrast edges that has been blown up to a 1920x1080 screen. If you are happy with 8 taps, by all means use that. The lower it is, the cheaper it is to run (quieter too).
I was already aware of the ringing at higher taps settings which madVR did a good job of displaying with its visual effects bar when people change scalers in madVR, but checking the anti-ringing boxes always seem to cancel out that problem (at a hit to render speed), but in MPDN that hit is what I consider insignificant. I'll have to test some 320x240 videos that you mentioned to see if I can see the difference there (usually the lowest resolution video I tend to view are 400p).
Something interesting/strange I noticed in my testing is that 64-bit MPDN seems to render twice as fast as the 32-bit version. (See linked screen shots below). The left image is from the 64-bit MPDN, and the right image is from the 32-bit version (both with all the same settings in MPDN).
http://postimg.org/image/se2558l1r/full/
BetA13
21st October 2014, 01:46
FWIW, when using MPDN you're not using madVR! MPDN and madVR have nothing to do with each other, except that MPDN is "borrowing" a lot of ideas from madVR.
ooops...yeah i see now.. my bad, im sorry ;) poor choice of words from my site..
also, i just found out that MPDN is not using 60fps@60hz but 23/29/etc fps@60hz
that also might explain why my gpu usage with MPCHC+madvr is so damn high, haha...its not allways easy to perform 60fps on very High HQ content..
Greetz
Zachs
21st October 2014, 01:53
Something interesting/strange I noticed in my testing is that 64-bit MPDN seems to render twice as fast as the 32-bit version. (See linked screen shots below). The left image is from the 64-bit MPDN, and the right image is from the 32-bit version (both with all the same settings in MPDN).
http://postimg.org/image/se2558l1r/full/
Are you sure they are exactly the same settings? 32- and 64-bit have separate config files. I have not noticed this on my machines and it shouldn't make a difference as it's the exact same code for 32- and 64-bit paths. Could be the drivers if both have exactly the same settings.
Anime Viewer
21st October 2014, 02:34
Are you sure they are exactly the same settings? 32- and 64-bit have separate config files. I have not noticed this on my machines and it shouldn't make a difference as it's the exact same code for 32- and 64-bit paths. Could be the drivers if both have exactly the same settings.
Yes, they are the same settings. I've set them both to Direct3D 10.1 render, unchecked full screen exclusive, set both to the same video bit depth, set both to ordered dithering, and set all scalers to Jinc 6 taps with anti-ringing checked in all.
I was very surprised by it too expecting the same performance from 32 and 64 bit versions, and like you mentioned the only thing I can think of to explain it is the 32-bit vs 64-bit drivers with the 64-bit drivers working better for some reason.
Zachs
21st October 2014, 02:50
Yes, they are the same settings. I've set them both to Direct3D 10.1 render, unchecked full screen exclusive, set both to the same video bit depth, set both to ordered dithering, and set all scalers to Jinc 6 taps with anti-ringing checked in all.
I was very surprised by it too expecting the same performance from 32 and 64 bit versions, and like you mentioned the only thing I can think of to explain it is the 32-bit vs 64-bit drivers with the 64-bit drivers working better for some reason.
I see your machine is Optimus equipped. Could be the drivers being optimized a lot more for 64-bit since newer games are mostly 64-bit now. I don't know for sure though, just a guess.
jkauff
21st October 2014, 03:33
FWIW, when using MPDN you're not using madVR! MPDN and madVR have nothing to do with each other, except that MPDN is "borrowing" a lot of ideas from madVR.
madshi, maybe you could "borrow" the MPDN feature of allowing the user to choose which version of Direct3D to use. That would allow XP users to continue to use madVR, while others could take advantage of newer technology.
patul
21st October 2014, 03:55
I'll take a look at the error.
I'd imagine this to take quite a bit of time to implement so for the first stage I might just do prescale / postscale custom shader. Does madVR do that at the moment?
Thank you. Pre-scale/post scale would be enough. madVR has been supporting custom pixel shader since v0.85.0 if I'm not mistaken.
DXVA Deinterlacing - If there's a small example of how it is done, I'd love to incorporate that into MPDN.
http://msdn.microsoft.com/en-us/library/windows/desktop/cc307964%28v=vs.85%29.aspx
+DXVA Deinterlacing, MPDN will help users with sh*tty CPU and GPU (like me) a lot. I even tested it on my 5 years old laptop (Dual core Athlon Neo X2 L335 + ATi Mobility Radeon HD 3400), DirectX 10.1, 16 bit output!!!!! :p
Zachs
21st October 2014, 04:52
Thank you. Pre-scale/post scale would be enough. madVR has been supporting custom pixel shader since v0.85.0 if I'm not mistaken.
http://msdn.microsoft.com/en-us/library/windows/desktop/cc307964%28v=vs.85%29.aspx
+DXVA Deinterlacing, MPDN will help users with sh*tty CPU and GPU (like me) a lot. I even tested it on my 5 years old laptop (Dual core Athlon Neo X2 L335 + ATi Mobility Radeon HD 3400), DirectX 10.1, 16 bit output!!!!! :p
How important is pre-scale custom ps? The reason I'm asking is MPDN scales YUV individually to its target size instead of combining them into RGB first (lots of performance benefits). While I could definitely make pre-scale custom ps for MPDN, it would not be compatible with the ps files that expect RGB textures for pre-scale. It would have to be rewritten to work with YUV individually. Postscale is RGB, so there's no problem.
For post-scaled custom PS, I am need some clarifications on the following:
Existing custom pixel shader parameters:
s0 = scaled texture (RGB)
p0, p1:
#define width (p0[0])
#define height (p0[1])
#define counter (p0[2]) // what is this? Increment by 1.0f per frame?
#define clock (p0[3]) // what is this? Performance counter clock, or video clock in float?
#define px (p1[0]) //one_over_width (of s0 I presume?)
#define py (p1[1]) //one_over_height (of s0 I presume?)
MPDN specifics:
y0, u0, v0 = unscaled y, u, v textures
p2: // unscaled luma and chroma sizes (reciprocal, i.e. 1/width, 1/height)
#define rcp_luma_width (p2[0])
#define rcp_luma_height (p2[1])
#define rcp_chroma_width (p2[2])
#define rcp_chroma_height (p2[3])
#define COLORIMETRIC
#define CM_FULL 0
#define CM_601 1
#define CM_709 2
Specifically, I'd like to know what counter and clock params should contain (I assume these are used for PRNGs but some expect their input values to be in certain ranges).
I would also like to add some MPDN specific params. With those parameters, you could basically write your own scalers.
COLORIMETRIC will be assigned CM_FULL/CM_601/CM_709 when the custom PS is compiled, so you could do your own YUV to RGB conversion too!
patul
22nd October 2014, 08:38
How important is pre-scale custom ps?
Personally, I only use pre-scale custom ps for color manipulation/effect because it is faster to work with smaller size of pixels on contrary to if do it post-scale. I put sharpening/convolution shaders post-scale.
For the shader parameters, I can't confirm since I don't know either. Sorry. Probably JanWillem32, madshi, or nevcairiel can confirm on these parameters.
edison
22nd October 2014, 12:36
When playing a x264 rgb lossless avi file(http://www.mediafire.com/download/i86ob2ydx2i9hbh/guide_codeblocks_portable_x264.avi):
http://i.imgur.com/36TMeie.png
Zachs
22nd October 2014, 12:40
MPDN doesn't support RGB inputs (yet), so it relies on upstream filters (LAV Video Decoder) to convert to one of the 4 supported input formats. In other words, this is expected for RGB encoded videos.
EDIT: Just tested the file myself. Upstream (LAV? Media?) is reporting incorrect YUV colorimetrics. Manually set it to either bt709 or bt601 and you will get correct colors.
Zachs
22nd October 2014, 13:27
I got "Failed to connect filter to graph (Mpdn.VideoPlayer)" exception when tried to use ffdshow raw video decoder as post processing filter. Could you take a look in to it, since I can use this filter in other players? Or I misunderstood the usage of DS filter in your app?
Detailed exception is as per following:
Unable to cast COM object of type 'System.__ComObject' to interface type 'DirectShowLib.IBaseFilter'.
This operation failed because the QueryInterface call on the COM component for the interface with IID
'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' failed due to the following error:
No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
(Mpdn.VideoPlayer)
If you could add playlist and pixel shader support then it will be great. Thanks
I've just looked into this. I'm not seeing this error here. I could even see ffdshow raw video filter as one of the entries in the filter list.
EDIT: ffdshow version tested: ffdshow_rev4532_20140717_clsid.exe
patul
22nd October 2014, 13:34
I've just looked into this. I'm not seeing this error here. I could even see ffdshow raw video filter as one of the entries in the filter list.
Ouch.. that's unfortunate. What is your OS? I've tested on two different hardware and OSes (Win7 and Vista), both gave me the same exception. Thanks anyway for looking into it.
Zachs
22nd October 2014, 13:40
Ouch.. that's unfortunate. What is your OS? I've tested on two different hardware and OSes (Win7 and Vista), both gave me the same exception. Thanks anyway for looking into it.
Win7 x64. Not that it matters I don't think.
Try the ffdshow version in my edited reply.
The error message sounds like the coders of that version you are using have forgotten to report one of its interface (IBaseFilter) when queried. The same thing happened with XySubFilter.
The Old New Thing: The ways people mess up IUnknown::QueryInterface (http://blogs.msdn.com/b/oldnewthing/archive/2004/03/26/96777.aspx)
patul
22nd October 2014, 13:45
Win7 x64. Not that it matters I don't think.
Try the ffdshow version in my edited reply.
The error message sounds like the coders of that version you are using have forgotten to report one of its interface (IBaseFilter) when queried. The same thing happened with XySubFilter.
The Old New Thing: The ways people mess up IUnknown::QueryInterface (http://blogs.msdn.com/b/oldnewthing/archive/2004/03/26/96777.aspx)
Tested with ffdshow_rev4533_20140929_clsid (latest revision) and ffdshow_rev4530_20140209_clsid (previous revision to ffdshow_rev4532_20140717_clsid), both versions threw the exception. I'll try to revert to ffdshow_rev4532_20140717_clsid and report back. Thanks
Zachs
22nd October 2014, 13:50
Tested with ffdshow_rev4533_20140929_clsid (latest revision) and ffdshow_rev4530_20140209_clsid (previous revision to ffdshow_rev4532_20140717_clsid), both versions threw the exception. I'll try to revert to ffdshow_rev4532_20140717_clsid and report back. Thanks
Strange. I didn't have to do anything besides adding it to the video post processing list to get it to work. I did find a bug with how I was detecting input format though so I'll correct that in the future. It was to do with how YUV format was changed from what LAV Video Decoder reported and I was using the format from that instead of the ffdshow filter.
As a workaround, just have ffdshow output to YV12 for now.
patul
22nd October 2014, 14:02
Strange. I didn't have to do anything besides adding it to the video post processing list to get it to work. I did find a bug with how I was detecting input format though so I'll correct that in the future. It was to do with how YUV format was changed from what LAV Video Decoder reported and I was using the format from that instead of the ffdshow filter.
As a workaround, just have ffdshow output to YV12 for now.
After full install of ffdshow_rev4532_20140717_clsid, it works somehow, I also noticed the bug you mentioned just now. Previously I only installed the raw video decoder filter, since I only need its post processing. Thanks
Zachs
22nd October 2014, 14:04
I haven't tried svp but does that mean you could run svp with MPDN now?
Blight
22nd October 2014, 14:07
Zachs,
Any plan to release just the renderer as a separate filter?
Why limit the renderer to only support a locked-in GUI and player feature set?
If you release the renderer as a stand-alone filter, I'll be happy to add support for it in Zoom Player.
Zachs
22nd October 2014, 14:13
I explained before that it's not possible as it's not written as a DirectShow renderer. .NET is not friendly when it comes to writing DirectShow renderers unfortunately. Believe me when I said I have tried. It will take some c++ shims and a lot of effort to turn it into a DirectShow renderer.
patul
22nd October 2014, 14:47
I haven't tried svp but does that mean you could run svp with MPDN now?
Sure, I can run SVP with MPDN. Tried and confirmed. :):)
Blight
22nd October 2014, 15:22
Zachs:
That's a shame, it severely limits the exposure of your cool work.
Anime Viewer
23rd October 2014, 01:06
Sure, I can run SVP with MPDN. Tried and confirmed. :):)
Anything special people should know about configuring it for use with MPDN?
I had never used SVP before, and just downloaded and installed it getting the results shown in the picture below. Here is what I did:
Downloaded SVP_3.1.6 from the SVP website (http://www.svp-team.com/wiki/Download), installed SVP unchecking everything except SVP 3.1.6 and Options (since there is no need for the SVPTube player, or anything MPC, LAV, or MadVR related (since LAV is already installed, and none of the other things would be used with MPDN and SVP)), left Install AviSynth and Install FFDShow checked and left the other Extras unchecked.
Launched MPDN, Options, DirectShow, Video and added ffdshow raw video filter to selected filters.
What (if anything) is wrong or missing compared to your (patul) setup?
http://s11.postimg.org/4hzqu8csv/SVP_MDPN_test.jpg (http://postimg.org/image/4hzqu8csv/)
patul
23rd October 2014, 01:17
Anything special people should know about configuring it for use with MPDN?
Make sure you use YV12 as "Primary output color space" in ffdshow under "Output" tab, and you could try to turn off the "Set interlaced flag in output media type" check box. In fact, to make it simple, I use YV12 in the whole DS graph.
Zachs
23rd October 2014, 01:18
There's a bug in MPDN that requires ffdshow to be set to output YV12 only as a workaround for now. I'll be fixing that in the next release along with the new feature "RenderScript".
Anime Viewer
23rd October 2014, 03:43
Make sure you use YV12 as "Primary output color space" in ffdshow under "Output" tab, and you could try to turn off the "Set interlaced flag in output media type" check box. In fact, to make it simple, I use YV12 in the whole DS graph.
There's a bug in MPDN that requires ffdshow to be set to output YV12 only as a workaround for now. I'll be fixing that in the next release along with the new feature "RenderScript".
Thanks for the replies, but unfortunately changing the output to only YV12 in ffdshow video decoder configuration didn't eliminate the problem. I'll wait until the next release and test it again after that. (I testing by adding ffdshow raw video filter in external filters in MPC-HC, and it worked with that player so once the fix is instituted hopefully it will work in MPDN too). (Not that its perfect in MPC either - it smears subtitles in MPC-HC).
patul
23rd October 2014, 04:50
Have you tried to turn off the "Set interlaced flag in output media type" check box? I had exactly same problem, but after changed the output color space and turn off the "Set interlaced flag...", the problem gone.
Anime Viewer
23rd October 2014, 05:47
Have you tried to turn off the "Set interlaced flag in output media type" check box? I had exactly same problem, but after changed the output color space and turn off the "Set interlaced flag...", the problem gone.
Yes, I tried with the set interlaced flag unchecked. I also tried unchecking everything except YV12 in addition to setting YV12 as the primary output color space.
I also tried setting other things in the ffdshow video decoder configuration program to only use YV12 (like AviSynth), but that made no difference. Prior to that test I was running with all the boxes in the left column of the configuration program unchecked. I experimented with checking and changing settings in Postprocessing and codec. I also tried unchecking all output formats except for Yv12 in LAV video decoder. None of those experiments worked either.
I noticed if I hover over the ffdshow video decoder raw square on the startbar while video is playing it reads:
Input: YV12 (uncompressed)
Output: NV12
Zachs
23rd October 2014, 06:25
Guys, I'm about to release the next version in the next half an hour and it should fix that problem. Might wanna save your time testing the newer version instead.
EDIT: Version 2.8.0 is now released.
I've tested ffdshow with 2.8.0. Working fine now.
Anime Viewer
23rd October 2014, 09:42
Guys, I'm about to release the next version in the next half an hour and it should fix that problem. Might wanna save your time testing the newer version instead.
EDIT: Version 2.8.0 is now released.
I've tested ffdshow with 2.8.0. Working fine now.
The 2.8 version did indeed fix the color issues when playing with ffdshow and SVP. However SVP causes graphic anomalies (what I previously referred to as subtitle smearing, but I now see isn't just the subtitles - see picture linked below). Since I see it occur in both MPC-HC and MPDN I suspect it would have to be fixed by SVP, and there may not be anything that can be done to resolve it from the video player side.
Screen shot taken from MPDN 2.8.1:
http://postimg.org/image/71jxvhiqt/
Edit: I found the issue causing the SVP blurring (aka double contours and interpolated frames issue). Unfortunately the solution talked about on the linked page doesn't entirely get rid of the problem since SVP removed some of the options from their profile options. (Decrease grid step and search radius are no longer selectable options).
http://www.svp-team.com/wiki/Watching_anime
edison
23rd October 2014, 10:23
It seems the XySubFilter does not work with 2.8.1 here.
Zachs
23rd October 2014, 10:28
It seems the XySubFilter does not work with 2.8.1 here.
No that still remains on my todo list.
Zachs
23rd October 2014, 10:31
The 2.8 version did indeed fix the color issues when playing with ffdshow and SVP. However SVP causes graphic anomalies (what I previously referred to as subtitle smearing, but I now see isn't just the subtitles - see picture linked below). Since I see it occur in both MPC-HC and MPDN I suspect it would have to be fixed by SVP, and there may not be anything that can be done to resolve it from the video player side.
Screen shot taken from MPDN 2.8.1:
http://postimg.org/image/71jxvhiqt/
Edit: I found the issue causing the SVP blurring (aka double contours and interpolated frames issue). Unfortunately the solution talked about on the linked page doesn't entirely get rid of the problem since SVP removed some of the options from their profile options. (Decrease grid step and search radius are no longer selectable options).
http://www.svp-team.com/wiki/Watching_anime
I'm not a big fan of frame interpolation. Can't stand the artefacts and soap opera feel. Hated the hfr hobbit!
huhn
23rd October 2014, 10:43
please don't put frame interpolation and HFR in the same box this is like apple and moonstone.
Zachs
23rd October 2014, 10:49
please don't put frame interpolation and HFR in the same box this is like apple and moonstone.
I guess I wasn't clear. I meant I personally feel HFR = soap opera. Using frame interpolation to achieve HFR with unwanted artefacts is... worse. Again, personal feeling. But to each his own.
Zachs
23rd October 2014, 11:54
MPDN v2.8.4 (To be updated to v2.9.0 soon!!!)
IRenderer.cs
using System.Drawing;
using Mpdn.RenderScript.Scaler;
using SharpDX;
using SharpDX.Direct3D9;
using Point = System.Drawing.Point;
namespace Mpdn.RenderScript
{
public interface IRenderer
{
// Returns original video size
Size VideoSize { get; }
// Returns original luma size
Size LumaSize { get; }
// Returns original chroma size
Size ChromaSize { get; }
// Returns the aspect ratio (nominator=X and denominator=Y)
Point AspectRatio { get; }
// Returns the target window size (after applying letterboxing)
// Can change mid-playback (OnTargetSizeChanged will be called)
Size TargetSize { get; }
// Returns the YUV colorimetrics type (as seen on Ctrl-J stats screen)
// Can change mid-playback (OnTargetSizeChanged will be called)
YuvColorimetric Colorimetric { get; }
// Returns the input format (as seen on Ctrl-J stats screen)
FrameBufferInputFormat InputFormat { get; }
// Returns the current output bit depth
// Can change mid-playback (OnTargetSizeChanged will be called)
BitDepth OutputBitDepth { get; }
// Original Y plane texture
ITexture TextureY { get; }
// Original U plane texture
ITexture TextureU { get; }
// Original V plane texture
ITexture TextureV { get; }
// The active luma upscaler (as set in MPDN options menu)
IScaler LumaUpscaler { get; }
// The active luma downscaler (as set in MPDN options menu)
IScaler LumaDownscaler { get; }
// The active chroma upscaler (as set in MPDN options menu)
IScaler ChromaUpscaler { get; }
// The active chroma downscaler (as set in MPDN options menu)
IScaler ChromaDownscaler { get; }
// The input render target that holds the MPDN prescaled texture
ITexture InputRenderTarget { get; }
// The output render target that MPDN will display on screen
// InputRenderTarget can the same as OutputRenderTarget if both can share the same texture
ITexture OutputRenderTarget { get; }
// When render scripts are chained, the next render script in the chain could request for its input in YUV
bool OutputYuv { get; }
// Create a render target of 'size' to use in the script
ITexture CreateRenderTarget(Size size);
// Create a texture of 'size' to use in the script
ITexture CreateTexture(Size size);
// Update the texture created via 'CreateTexture'
// 'data' is of type Half (16-bit float) and the length of the array must be equals to
// texture width * 4 (RGBA) * height
void UpdateTexture(ITexture texture, Half[] data);
// Compile shader program (hlsl) and return a shader object
IShader CompileShader(string filename);
// Load precompiled shader program (compiled shader object) and return a shader object
IShader LoadShader(string filename);
// Render to renderTarget using the specified shader
void Render(ITexture renderTarget, IShader shader);
// Render to renderTarget using the specified texture (no pixel shader)
// enableHwFiltering = true sets to linear filter, false sets it to point filtering
void Render(ITexture renderTarget, ITexture texture, bool enableHwFiltering);
// Same as above except it uses MPDN's internal scaler
// 'Scale' automatically determines which scaler (upscaler or downscaler, or none) to use depending
// on whether the render to renderTarget is an upscale, downscale or straight blit
void Scale(ITexture renderTarget, ITexture texture, IScaler upscaler, IScaler downscaler);
}
}
IScriptRenderer.cs
namespace Mpdn.RenderScript
{
public interface IScriptRenderer
{
ScriptDescriptor Descriptor { get; }
ScriptInputDescriptor InputDescriptor { get; }
// Called immediately when this class is instantiated
// 'instanceId' is zero-based index of the instance of this class
// in a render script chain
void Initialize(int instanceId);
// Will not be called if InputDescriptor.HasConfigDialog returns false
void ShowConfigDialog();
// Called when this object is assigned to MPDN's renderer
// This will happen before OnTargetSizeChanged() and Render() ever gets called
void Setup(IRenderer renderer);
// Called when target size has changed (e.g. window resize)
void OnTargetSizeChanged();
// Render your frame to IRenderer.OutputRenderTarget here
void Render();
}
}
ITexture.cs
using SharpDX.Direct3D9;
namespace Mpdn.RenderScript
{
public interface ITexture
{
Texture Texture { get; }
Surface Surface { get; }
int Width { get; }
int Height { get; }
}
}
IShader.cs
using System;
using System.IO;
using SharpDX.Direct3D9;
namespace Mpdn.RenderScript
{
public interface IShader : IDisposable
{
void SetConstant<T>(string identifier, T value, bool throwOnError) where T : struct;
void SetTextureConstant(string identifier, Texture value, bool enableHwFiltering, bool throwOnError);
void SetTextureConstant(string identifier, BaseTexture value, bool enableHwFiltering, bool throwOnError);
}
}
ScriptDescriptor.cs
using System;
namespace Mpdn.RenderScript
{
public class ScriptDescriptor
{
// Each script needs a unique GUID
public Guid Guid = Guid.Empty;
public string Name;
public string Description;
public string Copyright;
public bool HasConfigDialog;
}
}
ScriptInputDescriptor.cs
using System.Drawing;
namespace Mpdn.RenderScript
{
public class ScriptInputDescriptor
{
// IRenderer object's InputRenderTarget will be provided in this size
public Size Size;
// If true is returned, dithering is disabled and the prescaled texture will
// be provided in YUV format
public bool WantYuv;
// Set Prescale to false if don't need MPDN to prescale Y, U and V textures
// In which case, IRenderer object's InputRenderTarget will be blank
// Typically, you'd only set this to false if you are doing your own scaling
// and you are using TextureY, TextureU and TextureV directly to render your
// target (which means you don't need MPDN's prescaled texture)
// Default is true
public bool Prescale = true;
}
}
Scalers.cs
using SharpDX.Direct3D9;
namespace Mpdn.RenderScript.Scaler
{
public interface IScaler
{
ImageScaler ScalerType { get; }
}
}
// Scaler types and their constructors:
// HwPoint();
// HwBilinear();
// Bilinear();
// Softcubic(float softness); // softness 0.0f - 1.0f
// Bicubic(float sharpness, bool antiRingingEnabled); // sharpness 0.0f - 1.0f
// Lanczos(Lanczos.Taps tapCount, bool antiRingingEnabled) // tapCount Lanczos.Taps.Four, Six, Eight, Twelve, Sixteen
// Spline(Spline.Taps tapCount, bool antiRingingEnabled) // tapCount Spline.Taps.Four, Six, Eight
// Jinc(Jinc.Taps tapCount, bool antiRingingEnabled) // tapCount Jinc.Taps.Four, Six, Eight, Twelve, Sixteen
// Usage example:
// IScaler upscaler = new HwPoint();
// IScaler upscaler = new Jinc(Jinc.Taps.Sixteen, true);
Declarations.cs
using System.ComponentModel;
namespace Mpdn.RenderScript
{
public enum FrameBufferInputFormat
{
[Description("NV12 8-bit 4:2:0")]
Nv12,
[Description("YV12 8-bit 4:2:0")]
Yv12,
[Description("P010 10-bit 4:2:0")]
P010,
[Description("P016 16-bit 4:2:0")]
P016
}
public enum YuvColorimetric
{
[Description("Full Range")]
FullRange,
[Description("ITU-R Rec BT.601")]
ItuBt601,
[Description("ITU-R Rec BT.709")]
ItuBt709
}
public enum BitDepth
{
[Description("8 bits")]
EightBits,
[Description("10 bits")]
TenBits,
[Description("16 bits")]
SixteenBits
}
public enum ImageScaler
{
Hardware,
Bilinear,
Bicubic,
Softcubic,
Lanczos,
Spline,
Jinc
}
}
Anime Viewer
23rd October 2014, 14:10
Hi everyone,
Starting v2.8.0, MPDN has a new feature called "Render Script". This takes advantage of C#-script to allow user to fully customize / rewrite the entire rendering pipeline of MPDN. Essentially, all of MPDN's current scaling algorithms could be fully implemented via its Render Script system and run as fast and efficient as it is implemented in MPDN. In other words, there is no advantage for your custom algo to be coded in MPDN. In fact, in moving forward, any new scaling algorithms I implement for MPDN will be via its Render Script system. In the RenderScript folder, you will find some sample scripts which by no means showcase anywhere near its full capabilities. Detailed documentation and more advanced samples to follow (this will take some time - some help appreciated).
[/CODE]
I'm guessing I'm not understanding how the Renderscripts and example SweetFX shaders enable. Selecting the monochrome option does turn the video black and white, but the other SweetFX doesn't appear to change the picture in any way from when the none setting is selected instead, and in all cases the configuration button is greyed out when the SweetFX options are selected.
The SweetFX is supposed to have an effect like shown in the comparison pictures at the link below, correct?
http://forums.elderscrollsonline.com/discussion/89444/sweetfx-the-enhancement-that-your-eso-game-is-likely-missing
Zachs
23rd October 2014, 14:27
SweetFX is a suite of Pixel Shader files for post processing. The two render scripts are really just examples of what could be done. The luma shapen one, take a look at the corresponding files in the SweetFX folder (LumaSharpen.hlsl) for the different settings you could choose.
MPDN render scripts are like winamp dsp plugins except there is no need to compile them into DLLs. If you have used post processing shaders before then render script is similar but is much more flexible.
As to why configure button is disabled, that's because the example render scripts say there's nothing to configure.
Ultimately this opens up MPDN for full extensibility by the community. For example, Shiandow's amazing NEDI scaling algo could be implemented and it would be just a click away to activate it.
patul
24th October 2014, 06:06
Thanks for the new version. A bit unusual approach to implement custom shader support, on contrary to other players. I was bit skeptical to this approach, but then I realized the full potential of this approach, it will be easier to port custom scalers into MPDN, I would love to see Shiandow's NEDI scaler ported to MPDN.
However, I still think you probably have to consider non-developer users too, if you want this player to be widely used. Convenience of usage is needed, for example stacking, ordering of shaders.
Zachs
24th October 2014, 06:21
Thanks for the new version. A bit unusual approach to implement custom shader support, on contrary to other players. I was bit skeptical to this approach, but then I realized the full potential of this approach, it will be easier to port custom scalers into MPDN, I would love to see Shiandow's NEDI scaler ported to MPDN.
However, I still think you probably have to consider non-developer users too, if you want this player to be widely used. Convenience of usage is needed, for example stacking, ordering of shaders.
Already well into this chaining/ordering of scripts (current implementation of render script lacks the ability to stack/order multiple scripts). However, stacking/ordering "plain old" shaders can be easily created via the current implementation of render script. If anyone wants to have a go at creating such a script, I'll be happy to provide any assistance. If not, I'll be doing that when I get some time.
Render script is at its infancy now for end-users especially. The whole render script system was created in consultation with Shiandow based on his experience on what was lacking in other players / renderers' custom pixel shader system. I could use with a little help though especially with that plain old pixel shader as post processing filter stacking script.
chainik_svp
24th October 2014, 10:58
Tested on i5-2430M + AMD 6470M
Common settings: LAV Video decoder (DXVA2 Copy-back mode) + ffdshow raw filter
MPC-HC setting: EVR-CP (bilinear resizer)
MPDN settings: D3D9 renderer on adapter 0, bilinear upscalers, no dithering
SVP settings: the very same in all cases, up to 60 fps, GPU accelerated through AMD's card
Video file: 1280x720 @24
Measured CPU load:
- MPC-HC x32, no SVP: 0-10%
- MPC-HC x64, no SVP: 5-15%
- MPDN x32, no SVP: 10-20%
- MPDN x64, no SVP: 20-30%
- MPC-HC x32, SVP: ~20%
- MPC-HC x64, SVP: ~30%
- MPDN x32, SVP: ~40%
- MPDN x64, SVP: 55-60%
o_O
Zachs
24th October 2014, 11:22
As said a few pages ago MPDN does a lot more than mpchc EVR CP even with the same settings. Among others there is frame drop / delay prevention that sacrifices some cpu cycles to guarantee smooth playback.
EDIT: I've just tested a 50fps HD clip on both MPC-HC EVR CP and MPDN, both without SVP. Both Bilinear. Both without ffdshow raw video filter. Both x86 builds.
GTX560, i5-3470
MPDN: 7-8%
MPC-HC: 6-7%
That's a difference of 1% in MPC-HC EVR CP's favour.
Letting the clip play further, both dropped MPC-HC and MPDN dropped to 5%. BTW, I used "low update speed" on my task manager to get a more stable average.
toniash
24th October 2014, 12:05
Tested on i5-2430M + AMD 6470M
Common settings: LAV Video decoder (DXVA2 Copy-back mode) + ffdshow raw filter
MPC-HC setting: EVR-CP (bilinear resizer)
MPDN settings: D3D9 renderer on adapter 0, bilinear upscalers, no dithering
SVP settings: the very same in all cases, up to 60 fps, GPU accelerated through AMD's card
Video file: 1280x720 @24
Measured CPU load:
- MPC-HC x32, no SVP: 0-10%
- MPC-HC x64, no SVP: 5-15%
- MPDN x32, no SVP: 10-20%
- MPDN x64, no SVP: 20-30%
- MPC-HC x32, SVP: ~20%
- MPC-HC x64, SVP: ~30%
- MPDN x32, SVP: ~40%
- MPDN x64, SVP: 55-60%
o_O
I can't understand why x32 builds are more efficient!
chainik_svp
24th October 2014, 12:27
Seems like just adding "ffdshow raw" (w/o any filters) in MPDN increases CPU consumption by 10-15%.
That 60fps video file (http://www.svp-team.com/files/demo/space_60.mkv): 35-45% CPU load w/o ffdshow raw in both MPC-HC and MPDN and up to 60% in MPDN with ffdshow.
BTW it really doesn't like frame size changing in the post processor ;)
Zachs
24th October 2014, 12:40
Seems like just adding "ffdshow raw" (w/o any filters) in MPDN increases CPU consumption by 10-15%.
That 60fps video file (http://www.svp-team.com/files/demo/space_60.mkv): 35-45% CPU load w/o ffdshow raw in both MPC-HC and MPDN and up to 60% in MPDN with ffdshow.
BTW it really doesn't like frame size changing in the post processor ;)
Can you elaborate on what you mean by the frame size changing part?
Anyway ffdshow raw filter increasing CPU consumption is really odd. But that's kind of out of my control really.
Zachs
24th October 2014, 12:41
I can't understand why x32 builds are more efficient!
Not with MPDN. The additional CPU consumption is from upstream filters (ffdshow / AviSynth). It's likely that they haven't coded x64 ASM functions, so the build is non-optimized unlike x86 where performance critical parts would've been fully optimized in ASM/SSE/SSE2 etc. Only a guess. Any SSE2 optimized functions I wrote for MPDN are used in both x64 and x86 builds.
chainik_svp
24th October 2014, 12:47
Zachs
Can you elaborate on what you mean by the frame size changing part?
ffdshow raw -> Resize & aspect -> check "Resize"
frame size CAN change after opening the video and all standard renderers (plus madVR) handle this correctly
Anyway ffdshow raw filter increasing CPU consumption is really odd. But that's kind of out of my control really.
still it doesn't with MPC-HC
Zachs
24th October 2014, 13:09
Zachs
Can you elaborate on what you mean by the frame size changing part?
ffdshow raw -> Resize & aspect -> check "Resize"
frame size CAN change after opening the video and all standard renderers (plus madVR) handle this correctly
Anyway ffdshow raw filter increasing CPU consumption is really odd. But that's kind of out of my control really.
still it doesn't with MPC-HC
Ah that frame size. What is it used for and how often is it used btw? Unlikely I'll be supporting that in the near future though.
It doesn't with MPC-HC doesn't mean there's no bug in ffdshow that is causing this problem. I don't do anything special to cater for ffdshow. In fact, I do the bare minimum after opening the media file, less than MPC-HC as you have noted with frame size changing.
chainik_svp
24th October 2014, 13:14
Ah that frame size. What is it used for.
frame cropping at the first place - to cut off black fields/borders or distorted edges, to change aspect ratio
to fill black fields with SVP ;)
It doesn't with MPC-HC doesn't mean there's no bug in ffdshow that is causing this problem. I don't do anything special to cater for ffdshow.
just letting you know...
Zachs
24th October 2014, 13:22
frame cropping at the first place - to cut off black fields/borders or distorted edges, to change aspect ratio
to fill black fields with SVP ;)
Is it a must for SVP to work?
chainik_svp
24th October 2014, 13:34
SVP assumes it's working.
One more example is watching 1080p on a smaller screen. One can save a lot of horsepower downscaling the video to screen size before motion interpolation.
In fact I know only ONE video renderer that can't handle this - the one built into Stereoscopic Player.
Zachs
24th October 2014, 13:41
SVP assumes it's working.
One more example is watching 1080p on a smaller screen. One can save a lot of horsepower downscaling the video to screen size before motion interpolation.
In fact I know only ONE video renderer that can't handle this - the one built into Stereoscopic Player.
Now you know two :)
Anime Viewer
24th October 2014, 14:44
Tested on i5-2430M + AMD 6470M
Common settings: LAV Video decoder (DXVA2 Copy-back mode) + ffdshow raw filter
MPC-HC setting: EVR-CP (bilinear resizer)
MPDN settings: D3D9 renderer on adapter 0, bilinear upscalers, no dithering
SVP settings: the very same in all cases, up to 60 fps, GPU accelerated through AMD's card
Video file: 1280x720 @24
Measured CPU load:
- MPC-HC x32, no SVP: 0-10%
- MPC-HC x64, no SVP: 5-15%
- MPDN x32, no SVP: 10-20%
- MPDN x64, no SVP: 20-30%
- MPC-HC x32, SVP: ~20%
- MPC-HC x64, SVP: ~30%
- MPDN x32, SVP: ~40%
- MPDN x64, SVP: 55-60%
o_O
Are you sure SVP (and/or ffdshow64) is working with your x64 players. You're the only one I've seen report it running without crashing out with an error message. If you're share which files you installed, and what setup configurations you went with in ffdshow64 and MPDN x64 I'll see if Intel GPU report the same increase or not. For me MPDN x64 runs faster (render times) than x32...
Is it a must for SVP to work?
I'm still experimenting with SVP, but like you I think I may prefer MPDN with SVP off (too many graphic anomalies on subtitle video with it on which may be more annoying than any judder that may be present with it off) .
chainik_svp
25th October 2014, 00:32
Are you sure SVP (and/or ffdshow64) is working with your x64 players
Yeah I'm pretty sure about it ;)
Not so sure about the numbers as they were taken from one particular system. On my home rig with AMD Phenom X6 it not look so bad...
toniash
25th October 2014, 11:08
@Zachs So, what I've to do to insert lumasharpen as a postscaling shader?
Zachs
25th October 2014, 11:40
@Zachs So, what I've to do to insert lumasharpen as a postscaling shader?
Just use the luma sharpen render script.
In that script (in RenderScripts folder, SweetFxSample.LumaSharpen.cs), it uses LumaSharpen.hlsl under the SweetFX folder to do pixel shading. In that file, there are several parameters you could change. If you want to stack pixel shaders, have a look at the Luma->Monochrome render script.
toniash
25th October 2014, 12:04
Just use the luma sharpen render script.
In that script (in RenderScripts folder, SweetFxSample.LumaSharpen.cs), it uses LumaSharpen.hlsl under the SweetFX folder to do pixel shading. In that file, there are several parameters you could change. If you want to stack pixel shaders, have a look at the Luma->Monochrome render script.
Ok thanks, I'll try!:)
It works! :thanks:
BetA13
25th October 2014, 20:11
monochrome works, but lumasharpen doesnt do anything, even when i set it 1.25, wich should totaly oversharpen the picture.. but it didnt change anything...
dunno whats wrong.. i double checked everything, even restarted teh player after selecting teh sharpen shader...
in mpchc etc, this works perfect...
But there im using these here:
---> http://forum.doom9.org/showthread.php?t=170357&highlight=sweetfx
greetz ;)
Shiandow
25th October 2014, 20:20
As an example of what the new render scripts can do I've implemented the NEDI shaders I developed (for more information see this thread (http://forum.doom9.org/showthread.php?p=1682901#post1682901)). The configuration process is now considerably easier. Simply download NEDIRenderScripts.rar (http://www.mediafire.com/download/rdzl5taqtpzudp5/NEDIRenderScripts.rar) and extract it in MPDN's RenderScript folder. Then go to MPDN's options and enable the NEDI render script. The script then doubles the image using NEDI and scales the result to the correct output size (using linear scaling, but this should be replaced by something better soon).
People interested in creating their own render scripts may also want to look at the Filter.cs file that is included, this script defines some classes that take care of some of the housekeeping you need to apply and chain shaders. I've asked Zachs to look at whether parts of this script can be included as part of the default render script code. Until that time using Filter.cs should at least make it easier to try things out.
EDIT: Use version 2.8.2. Older version won't work.
EDIT2: Minor improvements to code: NEDIFilter didn't report size correctly and Filter.cs now allows you to try to reuse Textures (fails gracefully and silently).
Shiandow
25th October 2014, 22:09
Did you perhaps use version 2.8.2? The name ITexture didn't exist yet in 2.8.0. I should probably have mentioned that, sorry about that.
Anime Viewer
25th October 2014, 22:12
Did you perhaps use version 2.8.2? The name ITexture didn't exist yet in 2.8.0. I should probably have mentioned that, sorry about that.
Yep, that was the problem. I wasn't running 2.8.2, so now the scripts are running fine after updating the version.
toniash
25th October 2014, 23:38
As an example of what the new render scripts can do I've implemented the NEDI shaders I developed (for more information see this thread (http://forum.doom9.org/showthread.php?p=1682901#post1682901)). The configuration process is now considerably easier. Simply download NEDIRenderScripts.rar (http://www.mediafire.com/download/rdzl5taqtpzudp5/NEDIRenderScripts.rar) and extract it in MPDN's RenderScript folder. Then go to MPDN's options and enable the NEDI render script. The script then doubles the image using NEDI and scales the result to the correct output size (using linear scaling, but this should be replaced by something better soon).
People interested in creating their own render scripts may also want to look at the Filter.cs file that is included, this script defines some classes that take care of some of the housekeeping you need to apply and chain shaders. I've asked Zachs to look at whether parts of this script can be included as part of the default render script code. Until that time using Filter.cs should at least make it easier to try things out.
EDIT: Use version 2.8.2. Older version won't work.
Could you create a script with Lumasharpen on top of NEDI?:thanks:
Shiandow
26th October 2014, 00:35
Could you create a script with Lumasharpen on top of NEDI?:thanks:
Hopefully it will soon be possible to do this from within MPDN. It should be fairly trivial to add LumaSharpen after NEDI, but you seem to have found a bug, which I'll need to fix to actually make it trivial. I probably won't release a separate version with the LumaSharpen, but after I've fixed the bug you should be able to add it by changing 1~2 lines of code, so I'll just show you which lines you need to change.
Shiandow
26th October 2014, 01:14
Turns out it wasn't a major bug (yet) but I've removed it anyway. If you want to use LumaSharpen then what you need to do is: redownload the script, open Nedi.cs, find line 150 (last line of the NEDI.Render method) and add the line:
m_NediFilter = new ShaderFilter(m_NediFilter, m_Renderer.CompileShader(Path.Combine(ShaderDataFilePath, @"..\SweetFX\LumaSharpen.hlsl")));
just after
m_NediFilter = new NEDIFilter(InputFilter, ShaderDataFilePath);
fairchild
26th October 2014, 01:19
I just get a black screen when trying to use NEDI shader, the other 2 built in ones work fine. (black screen occurs when going full-screen)
patul
26th October 2014, 01:24
Shiandow, thanks for porting your NEDI shader to MPDN, however I found a possible bug, I got blank screen if I resize the window, or go to full screen.
Edit: Ooops, fairchild beats me to it. I wrote the post while retesting the finding.
Shiandow
26th October 2014, 02:15
That's odd, I don't seem to be able to reproduce that. Perhaps something weird happens when allocating the new textures. Can't think of anything in the NEDI script that should cause that though, not without crashing.
Edit: Do you still have sound by the way? That would suggest that it is at least doing something.
fairchild
26th October 2014, 03:03
Edit: Do you still have sound by the way? That would suggest that it is at least doing something.
Yes, I get sound continuing to play while the screen is just black.
I also just tested with a 1080p file, basically since it has to scale down to a smaller window when not full screen (on a 1080p screen) then I have the black screen. When I go fullscreen with the 1080p movie, I get an image. So basically when it has to resize to a resolution that is not the default, I get a black screen.
Shiandow
26th October 2014, 03:21
Could be that the hardware scaling doesn't work for some reason. Could you try changing the extension of "MyOwnUniqueNamespace.MyScaler.cs_" to ".cs", change the "IRenderTarget" on line 24 to "ITexture", and then check if that render script has the same problem?
patul
26th October 2014, 04:00
Could be that the hardware scaling doesn't work for some reason. Could you try changing the extension of "MyOwnUniqueNamespace.MyScaler.cs_" to ".cs", change the "IRenderTarget" on line 24 to "ITexture", and then check if that render script has the same problem?
No, it does not have the same problem. MyOwnUniqueNamespace.MyScaler works just fine.
Edit: But, if I read the code correctly, it supposed to run LumaSharpen first, then monochrome. If my understanding is right, then it's not working, I saw no such effect although no blank screen.
Zachs
26th October 2014, 04:55
No, it does not have the same problem. MyOwnUniqueNamespace.MyScaler works just fine.
Edit: But, if I read the code correctly, it supposed to run LumaSharpen first, then monochrome. If my understanding is right, then it's not working, I saw no such effect although no blank screen.
Hmm this is odd.
Finally got a few minutes to test NEDI. It's working for me both upscale and downscale. Bloody fast too! 2ms render time for a 320x180 video upscaled to 1080. And the edge is perfectly smooth too on that fav test video of mine - it's highly compressed and has very jagged edges on a lot of the lines - NEDI is much better than Jinc! On several other free to air records, its quality combined with Softcubic chroma doubling is BETTER than my Samsung 55" Series 8 LED TV. It's very similar to NNEDI3 (although *personally* I feel NEDI is more natural - NNEDI3 draws a lot of hard lines when it detects edges while Shiandow's improved NEDI is like a better Jinc). Love it!
Amazing job Shiandow! (btw, this is without superres too right?)
As for the problems everyone else is seeing, when you enable MyOwnUniqueNamespace.MyScaler, you should see monochrome results. If you don't, then something is obviously broken. I've tested this and NEDI on both Intel and NVIDIA GPUs (don't have access to AMD cards at the moment) and both worked fine.
From the reports, I believe some of you are seeing an exception in the rendering pipeline. It sounds like intermediate texture creation has failed silently (if it seems to work in unscaled output, it's because MPDN is sharing texture with the script internally and would've painted something on it). In the next release of MPDN, I've changed the code quite a bit to enable debug output in the rendering pipeline for errors. What you could do is run DebugView and see if there's any errors. Unfortunately this feature isn't available in v2.8.2 yet, so a little more patience is required. My apologies.
Anima123
26th October 2014, 05:40
I might not follow, but how the NEDI script work with together chroma scaling or luma scaling algorithms offered by MPN?
patul
26th October 2014, 06:05
As for the problems everyone else is seeing, when you enable MyOwnUniqueNamespace.MyScaler, you should see monochrome results. If you don't, then something is obviously broken. I've tested this and NEDI on both Intel and NVIDIA GPUs (don't have access to AMD cards at the moment) and both worked fine.
Well, I happen to test it on AMD A5400K APU (Radeon HD 7540D) with 14.9 driver.
Zachs
26th October 2014, 06:45
Well, I happen to test it on AMD A5400K APU (Radeon HD 7540D) with 14.9 driver.
AMD again. My code is already filled with If AMD then... Looks like I need more of those! There's no specific code branch for Nvidia and Intel.
is everyone else with the problem also using AMD card?
Zachs
26th October 2014, 06:47
I might not follow, but how the NEDI script work with together chroma scaling or luma scaling algorithms offered by MPN?
Chroma is usually half the size of luma in width and height. MPDN does the first scaling to get Chroma up to the size of luma. Then NEDI takes over.
Zachs
26th October 2014, 06:52
Could you create a script with Lumasharpen on top of NEDI?:thanks:
This will be possible with the next version of MPDN where you can stack multiple render scripts.
toniash
26th October 2014, 11:07
This will be possible with the next version of MPDN where you can stack multiple render scripts.
Thanks!
Would it be possible to overscale(over device resolution) + sharpen + downscale(to device resolution) ??
Zachs
26th October 2014, 11:35
Thanks!
Would it be possible to overscale(over device resolution) + sharpen + downscale(to device resolution) ??
That will depend on the specific render script. There's no restriction for creating such a script. If you mean Nedi specifically you'll have to ask Shiandow. But I believe the Nedi algo allows for such an implementation.
Shiandow
26th October 2014, 11:36
Amazing job Shiandow! (btw, this is without superres too right?)
Thanks, yes this is still without SuperRes, I will probably implement that one as well but there are some things that I will want to try out that have now become possible, so it will take some more time.
Too bad it doesn't seem to work in some cases, hopefully it will become clear why this happens soon.
By the way I've made some slight changes to Filter.cs that now make it possible to prevent textures from being allocated unnecessarily. So now NEDI renders directly onto the output texture if it doesn't need to rescale. I've updated NEDIRenderScript.rar to include these changes.
Shiandow
26th October 2014, 11:46
Would it be possible to overscale(over device resolution) + sharpen + downscale(to device resolution) ??
That would be possible, although with the current interface render scripts are forced to a specific output size, which makes this harder. You could make a sharpening filter which requires the input to be double the video size, and use that one after NEDI, but I'm not sure if that is the best solution.
Zachs
26th October 2014, 12:14
That would be possible, although with the current interface render scripts are forced to a specific output size, which makes this harder. You could make a sharpening filter which requires the input to be double the video size, and use that one after NEDI, but I'm not sure if that is the best solution.
Wouldn't it be possible to overscale using an intermediate ITexture and then output to the final size? i.e. The final chained filter would have an over sized texture. This then gets blitted to the size forced output target. I could definitely allow arbitrary output size but following that I would need to scale it to the size of the display window anyway. What I'm doing with the render script interface is I'm allowing scripts to determine how to scale this to the target window. What it currently lacks is a scale function to get MPDN to do the final scaling. Or is there something I'm missing here?
Shiandow
26th October 2014, 12:21
Wouldn't it be possible to overscale using an intermediate ITexture and then output to the final size? i.e. The final chained filter would have an over sized texture. This then gets blitted to the size forced output target. I could definitely allow arbitrary output size but following that I would need to scale it to the size of the display window anyway. What I'm doing with the render script interface is I'm allowing scripts to determine how to scale this to the target window. What it currently lacks is a scale function to get MPDN to do the final scaling. Or is there something I'm missing here?
Welll if the output size of NEDI is fixed then I'd have to do the downscaling in the NEDI script itself. So you can't simply do something like NEDI -> sharpening -> downscaling, without changing the script.
Zachs
26th October 2014, 12:22
Thanks, yes this is still without SuperRes, I will probably implement that one as well but there are some things that I will want to try out that have now become possible, so it will take some more time.
Too bad it doesn't seem to work in some cases, hopefully it will become clear why this happens soon.
By the way I've made some slight changes to Filter.cs that now make it possible to prevent textures from being allocated unnecessarily. So now NEDI renders directly onto the output texture if it doesn't need to rescale. I've updated NEDIRenderScript.rar to include these changes.
I'll be testing render script on an AMD card as soon as I have access to one. It would appear that all of those affected are running AMD cards. This may take some time as it usually means I have to come up with a workaround for one specific vendor.
I'm thinking of just including filter.cs as part of MPDN's standard distribution if you haven't got any objections?
Zachs
26th October 2014, 12:32
Welll if the output size of NEDI is fixed then I'd have to do the downscaling in the NEDI script itself. So you can't simply do something like NEDI -> sharpening -> downscaling, without changing the script.
I get it now.
But it's definitely possible to do (NEDI -> downscaled to target size) -> sharpening in the next version of MPDN. If a script needs implicit sharpening before downscaling to target size, that would need to be done in the script itself. But I don't believe that's what most users were asking for. What they wanted was (correct me if I'm wrong) to sharpen Luma after it's been scaled to display window size.
Otherwise, I'm open to suggestions as to how we could allow a script to define both input and output sizes and still chain them together.
e.g.
Script 1: input size X, output size Y
Script 2: input size Z, output size W
In other words, how should MPDN deal with Y -> Z scaling when user puts script1 and script2 stacked up in that order?
Shiandow
26th October 2014, 12:40
I'm thinking of just including filter.cs as part of MPDN's standard distribution if you haven't got any objections?
No, please do. I think it might also be beneficial to change the render script interface somewhat. For instance, adding an InputFilter to IRenderer.
I think it would also greatly simplify the chaining of render scripts if you force render scripts to expose a filter. If you don't change the way "OutputSize" works for Filters then this would also add a way of allowing Filters to control their own output size. Unfortunately Filters can't currently be trusted to always return the correct output size, so you may have to do something about that.
Shiandow
26th October 2014, 12:49
I get it now.
But it's definitely possible to do (NEDI -> downscaled to target size) -> sharpening in the next version of MPDN. If a script needs implicit sharpening before downscaling to target size, that would need to be done in the script itself. But I don't believe that's what most users were asking for. What they wanted was (correct me if I'm wrong) to sharpen Luma after it's been scaled to display window size.
Otherwise, I'm open to suggestions as to how we could allow a script to define both input and output sizes and still chain them together.
e.g.
Script 1: input size X, output size Y
Script 2: input size Z, output size W
In other words, how should MPDN deal with Y -> Z scaling when user puts script1 and script2 stacked up in that order?
Well toniash was asking specifically if it would be possible to add sharpening on the overscaled image.
Anyway when you have scripts where the sizes don't match then obvious thing to do is to have MPDN scale the result of script1 to the wanted input size of script2. If you implemented this then you could have something like:
X --NEDI--> 2X --Auto Scaling--> Y
But if you added a sharpening algorithm (which always keeps the size the same), then it would become:
X --NEDI--> 2X --Sharpening--> 2X --Auto Scaling--> Y
Of course you could make the sharpening even more complicated and have it to choose as input size either 2X or Y, whichever is greater.
Zachs
26th October 2014, 12:50
No, please do. I think it might also be beneficial to change the render script interface somewhat. For instance, adding an InputFilter to IRenderer.
I think it would also greatly simplify the chaining of render scripts if you force render scripts to expose a filter. If you don't change the way "OutputSize" works for Filters then this would also add a way of allowing Filters to control their own output size. Unfortunately Filters can't currently be trusted to always return the correct output size, so you may have to do something about that.
I think I see what you're saying now.
If render scripts are forced to expose IFilter interface, then MPDN's job would be much simpler - simply chain all filters together and call Render!
Each script could then have 1 Filter, or multiple filters chained.
At the very end of the chain, the last IFilter still needs to scale it to target size doesn't it?
EDIT: You've just answered it in the post above this one :)
I'll have a think about your method. It's definitely much more flexible than my original idea of stacking render scripts which I've already implemented but that could easily be undone.
EDIT#2:
Question. How would you let the Filter ask for a specific Input size then? Such as what NEDI is doing via InputDescriptor.Size? Another auto-scale? Those auto-scales that get added in automatically may actually degrade image quality and cost a lot of GPU time?
Shiandow
26th October 2014, 13:02
You may want to change the implementation of OutputSize somewhat, It's currently somewhat fickle. Basically if you ask the script what it's OutputSize is then it will simply return whatever size it wants, and setting the output size may or may not have an effect. I'm don't think this is going to work too well in more complicated cases.
Shiandow
26th October 2014, 13:11
EDIT#2:
Question. How would you let the Filter ask for a specific Input size then? Such as what NEDI is doing via InputDescriptor.Size? Another auto-scale? Those auto-scales that get added in automatically may actually degrade image quality and cost a lot of GPU time?
Yeah, it's probably not a good idea to let render scripts return arbitrary filters. I'm also wondering if it was a good idea to allow OutputSize to be set for Filters, the fact that it may fail silently is very annoying.
Perhaps it's best if you create a more restricted class RenderFilter which has a property InputSize and allows you to set a TargetSize. Perhaps also force it to make it's OutputSize equal to TargetSize.
You could then easily create a RenderFilter from a GenericFilter by adding a scaler to the GenericFilter output.
I think it's best if I create an example of this for the NEDIFilter, shouldn't take too long.
Zachs
26th October 2014, 13:13
Yeah, it's probably not a good idea to let render scripts return arbitrary filters. I'm also wondering if it was a good idea to allow OutputSize to be set for Filters, the fact that it may fail silently is very annoying.
Perhaps it's best if you create a more restricted class RenderFilter which has a property InputSize and allows you to set a TargetSize. Perhaps also force it to make it's OutputSize equal to TargetSize.
You could then easily create a RenderFilter from a GenericFilter by adding a scaler to the GenericFilter output.
I think it's best if I create an example of this for the NEDIFilter, shouldn't take too long.
That'll be great if you could.
I'll take a look at it tomorrow!
fairchild
26th October 2014, 15:06
I downloaded the NEDIRenderScripts.rar timestamped 10-26-14 and I still get a black screen when changing the default resolution of any video. I am using the latest official 14.9 drivers on my AMD 7870.
Shiandow
26th October 2014, 15:47
I downloaded the NEDIRenderScripts.rar timestamped 10-26-14 and I still get a black screen when changing the default resolution of any video. I am using the latest official 14.9 drivers on my AMD 7870.
Unfortunately that hasn't been solved yet. It seems to be a problem with all AMDs. As far as I have been able to figure out there's not much I can do to make NEDI work on AMDs. Zachs will have to figure out what exactly goes wrong.
That'll be great if you could.
I'll take a look at it tomorrow!
Well turns out that it didn't go exactly as I had thought, but I think I succeeded anyway. The gist of it is that there is now a class "ResizeableFilter". This class promises to resize everything to a specified TargetSize, but if TargetSize is not specified it should try to do nothing. This TargetSize is allowed to reset after every Render, to avoid unnecessary scaling (I'm not sure if this is best, but you should update the TargetSize every Render anyway).
You can make an arbitrary Filter into a ResizeableFilter using a scaler. I've currently implemented a simple HW linear scaler which could be replaced with MPDN's scaling algorithms. Anyway the resulting code is simply: "new Scaler(Filter)". I'm not entirely happy with the names, so feel free to change them. This also holds for most of the other code I wrote.
The idea then is to have each RenderScript expose a method: CreateFilter, which has as input some ResizeableFilter and should return a Filter (I'm not sure if this filter should be a ResizeableFilter as well or if MPDN should take care of this conversion when necessary). Anyway, this allows you to assume the Input is a ResizeableFilter if you want to, but this can also be ignored (If so then the Scaler Filter should try to do nothing).
Currently this method adds an annoying unnecessary Scaler to InputTexture, but that shouldn't be the case after defining an InputFilter. Since, as far as I can tell, it should be possible to package the process that you currently use to create InputTexture into a ResizeableFilter.
Than all that remains to chain the render scripts is to call CreateFilter for each one.
Edit: Still taking care of some final bugs.
Edit2: Bugs are fixed now; for some reason rendering a texture to another texture of the same size using linear scaling doesn't simply copy the Texture.
Edit3: Some changes to the Filter definitions. Removing the RenderFilter class since it had essentially become a copy of GenericFitler. Changed description above accordingly.
Note: For people who only want to try NEDI there's no need to re-download anything yet.
Anime Viewer
26th October 2014, 15:51
Can someone let me know how to use XySubFilter (auto-load version) in GraphStudioNext?
It doesn't load subtitles at all and it doesn't even have an output pin?? How is it meant to be used?
EDIT: Ah nevermind. Found it: http://madshi.net/SubRenderIntf.h
Were you working on getting XySubFilter (auto-load version) working, so that DirectVobSub (auto loading version) wouldn't have to be installed separately for future versions of MPDN?
There might be a way to tie it into the install/setup similar to how KCP did it (http://haruhichan.com/forum/showthread.php?7545-KCP-Kawaii-Codec-Pack).
Edit: I see things are tided up with XySubFilter elsewhere, so I guess you're hands are tied on getting it working with MPDN in the near future.
http://forum.doom9.org/showthread.php?t=168282&page=34
http://forum.doom9.org/showthread.php?p=1693444#post1693444
toniash
26th October 2014, 16:57
@zachs @shiandow many people do overscaling + sharpening with ffdshow + avisynth because it wasn`t possible with shaders:thanks:
Shiandow
26th October 2014, 18:02
Well a few pages back I posted a method to do NEDI -> Scaling -> Sharpen, but I think that method may not work anymore in combination with some of the changes I made.
Anyway If you want to do: NEDI -> Sharpen -> Scaling, then the easiest way to do this is to download the newest script files, and add the line:
FinalPass = new ShaderFilter(FinalPass, Renderer.CompileShader(Path.Combine(ShaderPath, @"..\SweetFX\LumaSharpen.hlsl")));
to Nedi.cs at line 77, just after:
FinalPass = new NEDIVInterleave(FirstPass,NEDI_II,
Renderer.CompileShader(Path.Combine(ShaderPath, @"NEDI-VInterleave.hlsl"))););
This adds another step after the NEDI algorithm, where it performs LumaSharpen on the doubled image.
When it becomes possible to chain shaders this should be possible without changing any code, and hopefully it will even become possible to add a sharpening filter which either does: upscaling -> sharpening or sharpening -> downscaling. But this might take a while.
Zachs
27th October 2014, 00:55
Were you working on getting XySubFilter (auto-load version) working, so that DirectVobSub (auto loading version) wouldn't have to be installed separately for future versions of MPDN?
There might be a way to tie it into the install/setup similar to how KCP did it (http://haruhichan.com/forum/showthread.php?7545-KCP-Kawaii-Codec-Pack).
Edit: I see things are tided up with XySubFilter elsewhere, so I guess you're hands are tied on getting it working with MPDN in the near future.
http://forum.doom9.org/showthread.php?t=168282&page=34
http://forum.doom9.org/showthread.php?p=1693444#post1693444
XySubFilter is still a WIP. I just haven't had time to finish implementing it. It's so vastly different to normal DirectShow filter that it requires quite a bit of effort to support.
Zachs
28th October 2014, 13:02
I just get a black screen when trying to use NEDI shader, the other 2 built in ones work fine. (black screen occurs when going full-screen)
Shiandow, thanks for porting your NEDI shader to MPDN, however I found a possible bug, I got blank screen if I resize the window, or go to full screen.
Edit: Ooops, fairchild beats me to it. I wrote the post while retesting the finding.
This problem with AMD GPUs is now fixed in v2.8.3.
Zachs
28th October 2014, 13:08
Thanks!
Would it be possible to overscale(over device resolution) + sharpen + downscale(to device resolution) ??
I'm working on render scripts that will enable that.
In the meantime, Chroma Scaler script essentially converts MPDN's rendering pipeline to be similar to madVR's in which chroma is first upscaled to luma size and converted to RGB before Luma Scaler is applied to the entire image in RGB. This is faster for some GPUs in upscale but will most certainly be slower in downscaling 4K materials. madshi said scaling it this way could yield better PQ.
Anime Viewer
28th October 2014, 13:41
This problem with AMD GPUs is now fixed in v2.8.3.
I installed 2.8.3 on top of the 2.8.2 I had on my system, and on launching MediaPlayerDotNet I get the following renderscript error:
TITLE: CSScriptLibrary Error
------------------------------
An unexpected error 'csscript.CompilerException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(100,36): error CS0246: The type or namespace name 'IScriptRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(20,46): error CS0246: The type or namespace name 'IScriptRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(20,49): error CS0246: The type or namespace name 'IScriptRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(21,16): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(25,25): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(37,25): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(50,28): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(58,16): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(66,25): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(91,17): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(92,16): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(103,32): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(112,37): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(139,16): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(149,32): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(149,48): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(163,37): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(170,46): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(191,32): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(191,50): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(203,37): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(215,56): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\Filter.cs(224,37): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(31,61): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(48,61): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(65,41): error CS0246: The type or namespace name 'ITexture' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(102,12): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(105,11): error CS0246: The type or namespace name 'ScriptDescriptor' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(120,11): error CS0246: The type or namespace name 'ScriptInputDescriptor' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\NEDI.cs(148,22): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(22,21): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(23,30): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(26,20): error CS0246: The type or namespace name 'ScriptDescriptor' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(41,20): error CS0246: The type or namespace name 'ScriptInputDescriptor' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(75,31): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaMono.cs(109,39): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(22,21): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(23,30): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(26,20): error CS0246: The type or namespace name 'ScriptDescriptor' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(41,20): error CS0246: The type or namespace name 'ScriptInputDescriptor' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(75,31): error CS0246: The type or namespace name 'IRenderer' could not be found (are you missing a using directive or an assembly reference?)
e:\Program Files (x86)\MediaPlayerDotNet(x86)\RenderScripts\SweetFxSample.LumaSharpen.cs(106,39): error CS0246: The type or namespace name 'IShader' could not be found (are you missing a using directive or an assembly reference?)
(CSScriptLibrary)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
If I click ignore, and go into the renderscript area of settings, everything is empty (no scripts are listed). I'll try a clean install first (deleteing the contents of the MediaPlayerDotNet directory), and if that doesn't work my next step will be to find Shiandow's link to the NEDI, and reinstall/copy the scripts over on top of the 2.8.3 ones. I'll post to let people know what solves it in case others encounter the issue.
Update: deleting the contents of the directory worked to get rid of the error message on launch, but the renderscript directory is still empty. (Both in program and in the renderscript directory, so I guess Shiandow's scripts aren't being packaged with the MPDN files yet). Next, I'm going to find Shiandow's link to the NEDI render script file (many a post back), and try to copy that into the renderscript directory to see if it shows up properly in the program.
Update 2:
I redownloaded Shiandow's NEDI render script for MPDN (http://www.mediafire.com/download/rdzl5taqtpzudp5/NEDIRenderScripts.rar), and extracted it to the MPDN render script directory which brought the the render script MPDN error back at launch.
Update 3:
I tried the 2.8.3 x64 version, and encountered the same error(s). I extracted the 2.8.2 files on top of the 2.8.3 x86 files, and everything was back to error free again, so something may be off with the coding/paths in 2.8.3.
toniash
28th October 2014, 14:31
Well a few pages back I posted a method to do NEDI -> Scaling -> Sharpen, but I think that method may not work anymore in combination with some of the changes I made.
Anyway If you want to do: NEDI -> Sharpen -> Scaling, then the easiest way to do this is to download the newest script files, and add the line:
FinalPass = new ShaderFilter(FinalPass, Renderer.CompileShader(Path.Combine(ShaderPath, @"..\SweetFX\LumaSharpen.hlsl")));
to Nedi.cs at line 77, just after:
FinalPass = new NEDIVInterleave(FirstPass,NEDI_II,
Renderer.CompileShader(Path.Combine(ShaderPath, @"NEDI-VInterleave.hlsl"))););
This adds another step after the NEDI algorithm, where it performs LumaSharpen on the doubled image.
When it becomes possible to chain shaders this should be possible without changing any code, and hopefully it will even become possible to add a sharpening filter which either does: upscaling -> sharpening or sharpening -> downscaling. But this might take a while.
it works.
toniash
28th October 2014, 14:35
I installed 2.8.3 on top of the 2.8.2 I had on my system, and on launching MediaPlayerDotNet I get the following renderscript error:
[code]
TITLE: CSScriptLibrary Error
------------------------------
An unexpected error 'csscript.CompilerException' has occurred.
.
Have you redownloaded the new render scripts in the first page?
(there is a change in API):confused:
patul
28th October 2014, 15:31
Anime Viewer, you have to delete/overwrite the RenderScripts folder with new one, now separate package, you have to download RenderScripts.zip, link is available in the first page.
Zachs, initial test, the shaders work now, NEDI scaler works, I'll have to test it more.
EDIT1: Frame dropped/delayed when NEDI is selected, however scaling is not needed (video size matches target render size).
Shiandow
28th October 2014, 17:45
I haven't had much chance to look at the new API changes yet, but it seems Zachs made a RenderScript pack which contains a modified version of NEDI that works with the new API so you can download that one instead.
When I have time I'll make a version of NEDI that takes full advantage of the new API, until then you should use the one in the "sample render scripts" pack.
Zachs
28th October 2014, 22:57
Anime Viewer, you have to delete/overwrite the RenderScripts folder with new one, now separate package, you have to download RenderScripts.zip, link is available in the first page.
Zachs, initial test, the shaders work now, NEDI scaler works, I'll have to test it more.
EDIT1: Frame dropped/delayed when NEDI is selected, however scaling is not needed (video size matches target render size).
I've informed Shiandow about this. There's also a problem when 4K video is used with NEDI - current crops of video cards don't support texture sizes that is beyond 4k x 4k, so for the case you've just mentioned and one that downsizes, NEDI should be bypassed.
@Shiandow I believe this could be done quite easily in the ResizeableFilter class?
Anima123
29th October 2014, 03:22
How do we get NEDI work through a correct script chain with the latest version?
In my mind, the pipeline be like this:
MPDN chroma scaling -> NEDI resolution doubling (if needed) -> MPDN image scaling (either upscale or downscale) to the display resolution + dithering to the set bit-depth
Since I don't know exactly how the MPDN script works, but shouldn't the MPDN processing be separated into pre-NEDI and post-NEDI processing?
toniash
29th October 2014, 11:17
Well a few pages back I posted a method to do NEDI -> Scaling -> Sharpen, but I think that method may not work anymore in combination with some of the changes I made.
Anyway If you want to do: NEDI -> Sharpen -> Scaling, then the easiest way to do this is to download the newest script files, and add the line:
FinalPass = new ShaderFilter(FinalPass, Renderer.CompileShader(Path.Combine(ShaderPath, @"..\SweetFX\LumaSharpen.hlsl")));
to Nedi.cs at line 77, just after:
FinalPass = new NEDIVInterleave(FirstPass,NEDI_II,
Renderer.CompileShader(Path.Combine(ShaderPath, @"NEDI-VInterleave.hlsl"))););
This adds another step after the NEDI algorithm, where it performs LumaSharpen on the doubled image.
When it becomes possible to chain shaders this should be possible without changing any code, and hopefully it will even become possible to add a sharpening filter which either does: upscaling -> sharpening or sharpening -> downscaling. But this might take a while.
It's still valid for new version 2.8.3? :confused:
Zachs
29th October 2014, 13:24
It should still work.
There are several render scripts that is yet to be done. When these are completed, I'll explain how a full render script chain is used to create pre- / post-processing etc.
jkauff
29th October 2014, 17:14
I know you're very busy, but when you get some time please provide a way to resume a movie. I'm using MPDN as my regular player and it's a real pain to have to seek back to the last position played.
NEDI works great, BTW. Thanks for all the great work (and to Shiandow)!
Zachs
30th October 2014, 04:38
I know you're very busy, but when you get some time please provide a way to resume a movie. I'm using MPDN as my regular player and it's a real pain to have to seek back to the last position played.
NEDI works great, BTW. Thanks for all the great work (and to Shiandow)!
Yeah I'll do that once I'm done with getting Render Script to a somewhat usable state.
Anima123
30th October 2014, 06:10
MPDN still cannot playback .wmv files, it gives the following error:
Mpdn.VideoPlayer Error
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
Additional information:
Failed to render file '????.wmv' (Mpdn.VideoPlayer)
Exception from HRESULT: 0x80040217 (Mpdn.VideoPlayer)
Hope this can help you debug. Plus, I have tried to change settings of LAVFilters with no luck though.
Zachs
30th October 2014, 06:39
MPDN still cannot playback .wmv files, it gives the following error:
Mpdn.VideoPlayer Error
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
Additional information:
Failed to render file '????.wmv' (Mpdn.VideoPlayer)
Exception from HRESULT: 0x80040217 (Mpdn.VideoPlayer)
Hope this can help you debug. Plus, I have tried to change settings of LAVFilters with no luck though.
Does MPC-HC when configured to use LAV splitter and LAV video + audio decoders play that wmv file? That error message means upstream filters do not know how to decode the file.
Anima123
30th October 2014, 07:07
No problem with MPC-HC.
Zachs
30th October 2014, 07:21
No problem with MPC-HC.
Check MPC-HC's filters and make sure they are exactly the same as MPDN's. If they are, could you upload the wmv file somewhere so I could take a look?
Anima123
30th October 2014, 07:30
I just could not playback any .wmv files with MPDN (64-bit btw).
Zachs
30th October 2014, 07:38
I just could not playback any .wmv files with MPDN (64-bit btw).
I have no problems with wmv files with 64-bit MPDN. Have you made sure wmv files decode option is checked in LAV Video Filter too along with the wma audio ones in LAV Audio Filter?
Zachs
31st October 2014, 12:04
With MPDN v2.11.0, scripts can now call other scripts, and have them in a chain either via GUI or via your own script.
Pre-/Post processing with NEDI
http://i.imgur.com/lFv6ND1.png
Create a render script chain such as the above (You can get to this screen via Options | Render Script | Select Script Chain | Press the Configure button).
The first "Image Processor" render script is your pre-processing filter. Click configure and you can add as many MPC-HC style pixel shader files as you wish.
The second "NEDI" render script doubles the image.
The third "Resizer" render script scales the image to target size. There's a plethora of options in the "Resizer" config menu. Target size is simply "target rectangle" as seen in the Ctrl+J stats screen (i.e. display resolution). Video size means the luma size (MPDN implicitly scales chroma to luma size). Feel free to experiment.
The last render script, also an "Image Processor", is essentially your post-processing filter. It is exactly the same filter as the first, except it is a post-processing filter this time around because it processes the post-scaled image.
If you choose to use MPDN's built in scalers, all you have to change from the above setup is remove "NEDI" from the list.
Pre-/Post processing with SuperResChroma + SuperRes with NEDI
Choose Script Chain:
http://i.imgur.com/2YwBDOe.png
Configure your chain to look like this (Note: the pre-/post-processing filters are represented by ImageProcessor scripts):
http://i.imgur.com/Ops0DX3.png
Enable NEDI in SuperRes:
* You can fine tune SuperRes via its various parameters
* Note: The following is my personal preference and yours may be different:
http://i.imgur.com/E1ffB0k.png
Chain Scripting
The GUI based script chain creator tool is meant for simple script chaining. If you find yourself limited by what the GUI tool offers, you should use a chain script to let MPDN know when and how you want to use certain script chain.
Let's start with a simple example. You can say to MPDN,
Preprocess with Bloom.hlsl, LiftGammaGain.hlsl etc.
Next, use NEDI to double the image if we need to upscale
Then, Resize to target size with Softcubic (softness 90)
Lastly, if Video is below 1080p, Sharpen luma.
A more complicated example:
if Video is 720p, preprocess with FineSharp shaders, then upscale using NEDI.
if Video is 1080p or higher, don't do anything.
if Video is less than 720p, do the following:
Upscale with ChromaScaler (Preset=Catrom)
Preprocess with Bloom.hlsl, LiftGammaGain.hlsl etc.
Next, keep using NEDI to double the image until we get past target size
Then, Resize (downscale) to target size with Bicubic (sharpness 50) with linear light scaling
Lastly, if Video is below 1080p, Sharpen luma.
To get started, have a look at Custom.MyRenderScript.cs (https://github.com/zachsaw/RenderScripts/blob/master/RenderScripts/Custom.MyRenderScript.cs).
Zachs
31st October 2014, 12:47
I know you're very busy, but when you get some time please provide a way to resume a movie. I'm using MPDN as my regular player and it's a real pain to have to seek back to the last position played.
This is now available in v2.8.4.
Anime Viewer
31st October 2014, 13:47
Anyone else seeing the following error after installing MPDN 2.8.4 (http://www.zachsaw.com/downloads/MediaPlayerDotNet/MediaPlayerDotNet_x86_2_8_4_2563.zip)and then copying the contents of MPDN renderscript pack (http://www.zachsaw.com/downloads/MediaPlayerDotNet/RenderScripts_2_8_4.zip) into the RenderScripts folder in 2.8.4?
TITLE: CSScriptLibrary Error
------------------------------
An unexpected error 'System.ApplicationException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Cannot parse "//css_import..." (CSScriptLibrary)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
In fact after extracting the RenderScripts zip content into the RenderScripts folder and getting that error at launch I can't do anything in MPDN (everything is greyed out -> File, View, Play, Window, Help.
Edit: It only seems to happen with the 32-bit version. The 64-bit version appear to work fine.
Zachs
31st October 2014, 13:58
Hmm. That's odd. Can you click the details button when you get the error and give me the detailed errors including stack trace please?
EDIT:
You might want to delete your config files and start from fresh since it only happens on 32-bit. You can find the location of MPDN's config files in the OP (make a backup first).
Just tested all 3 versions on my PC and I can't reproduce the error.
On second thought, what is your MPDN path for x86 and x64? i.e. where did you extract them? Might be related to how scripts are being handled in C# script library (long path names with spaces etc.).
EDIT2:
OK. Problem found. Your path has a comma, which is a delimiter for C# script and that was the thing causing a conflict.
river1
31st October 2014, 14:15
It crashes when I put xy-vsfilter or xysubfilter in the filter chain.
TITLE: Mpdn.VideoPlayer Error
------------------------------
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Failed to render file '****.mkv' (Mpdn.VideoPlayer)
------------------------------
Failed to connect filter to graph (Mpdn.VideoPlayer)
------------------------------
Error HRESULT E_FAIL has been returned from a call to a COM component. (mscorlib)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
Zachs
31st October 2014, 14:21
It crashes when I put xy-vsfilter or xysubfilter in the filter chain.
TITLE: Mpdn.VideoPlayer Error
------------------------------
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Failed to render file '****.mkv' (Mpdn.VideoPlayer)
------------------------------
Failed to connect filter to graph (Mpdn.VideoPlayer)
------------------------------
Error HRESULT E_FAIL has been returned from a call to a COM component. (mscorlib)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
Xy-vsfilter is supported implicitly so you shouldn't add it to the graph.
XySubFilter is *not* supported yet (in the works).
river1
31st October 2014, 14:30
Xy-vsfilter is supported implicitly so you shouldn't add it to the graph.
XySubFilter is *not* supported yet (in the works).
:thanks:
jkauff
31st October 2014, 20:16
This is now available in v2.8.4.
Thank you, Zachs!
toniash
31st October 2014, 20:21
@Zachs Thank you, now I can do what I asked you!
Two questions: MPDN has some kind of smooth motion?
Do you plan to implement automatic refresh changing? ;)
jkauff
31st October 2014, 20:35
Anyone else seeing the following error after installing MPDN 2.8.4 (http://www.zachsaw.com/downloads/MediaPlayerDotNet/MediaPlayerDotNet_x86_2_8_4_2563.zip)and then copying the contents of MPDN renderscript pack (http://www.zachsaw.com/downloads/MediaPlayerDotNet/RenderScripts_2_8_4.zip) into the RenderScripts folder in 2.8.4?
TITLE: CSScriptLibrary Error
------------------------------
An unexpected error 'System.ApplicationException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Cannot parse "//css_import..." (CSScriptLibrary)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
In fact after extracting the RenderScripts zip content into the RenderScripts folder and getting that error at launch I can't do anything in MPDN (everything is greyed out -> File, View, Play, Window, Help.
Edit: It only seems to happen with the 32-bit version. The 64-bit version appear to work fine.
Same behavior here. Error in 32-bit, no error 64-bit.
Anime Viewer
31st October 2014, 20:57
Hmm. That's odd. Can you click the details button when you get the error and give me the detailed errors including stack trace please?
EDIT:
You might want to delete your config files and start from fresh since it only happens on 32-bit. You can find the location of MPDN's config files in the OP (make a backup first).
Just tested all 3 versions on my PC and I can't reproduce the error.
On second thought, what is your MPDN path for x86 and x64? i.e. where did you extract them? Might be related to how scripts are being handled in C# script library (long path names with spaces etc.).
EDIT2:
OK. Problem found. Your path has a comma, which is a delimiter for C# script and that was the thing causing a conflict.
I've been doing fresh installs since moving from 2.8.2 to 2.8.3 (deleting the old versions before extracting the new ones), so that rules out left behind files.
x86 version installed to:
E:\Program Files (x86)\MediaPlayerDotNet(x86)
x64 version installed to:
E:\Program Files\MediaPlayerDotNet
A comma in my path?!? I don't see that... There are a couple of ()'s but those are the only characters. I'll try extracting a copy to other locations and see if I get different results.
Here is a longer log from the All Messages section of the Advanced information area:
===================================
An unexpected error 'System.ApplicationException' has occurred.
------------------------------
Error Type = System.ApplicationException
Error Message = Cannot parse "//css_import..."
Error Source = CSScriptLibrary
Error Site = Void .ctor(System.String, System.String)
Error occurred = at csscript.CSharpParser.ImportInfo..ctor(String statement, String parentScript)
at csscript.CSharpParser.Init(String code, String file, String[] directivesToSearch)
at csscript.CSharpParser..ctor(String script, Boolean isFile)
at CSScriptLibrary.FileParser.ProcessFile()
at CSScriptLibrary.FileParser..ctor(String fileName, ParsingParams prams, Boolean process, Boolean imported, String[] searchDirs, Boolean throwOnError)
at CSScriptLibrary.ScriptParser.Init(String fileName, String[] searchDirs)
at CSScriptLibrary.ScriptParser..ctor(String fileName, String[] searchDirs)
at csscript.CSExecutor.Compile(String scriptFileName)
at csscript.CSExecutor.Compile(String scriptFile, String assemblyFile, Boolean debugBuild)
at CSScriptLibrary.CSScript.LoadWithConfig(String scriptFile, String assemblyFile, Boolean debugBuild, Settings scriptSettings, String compilerOptions, String[] refAssemblies)
at CSScriptLibrary.CSScript.Load(String scriptFile)
at MediaPlayerDotNet.MainForm.†††
†††‰(Object )
at MediaPlayerDotNet.MainForm.†††
††††˜(Object )
at MediaPlayerDotNet.MainForm.†††
††††˜()
at MediaPlayerDotNet.MainForm.†††
††††œŽ()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
OS Version = Microsoft Windows NT 6.3.9600.0
Total Physical Memory = 15.9 GB
Available Physical Memory = 12.7 GB
Date Time = 10/31/2014 12:54:20 PM
User Name = SAGER-NP9150\Tom
Application Startup Path = E:\Program Files (x86)\MediaPlayerDotNet(x86)
Application Executable Path = E:\Program Files (x86)\MediaPlayerDotNet(x86)\MediaPlayerDotNet.exe
CurrentDirectory = E:\Program Files (x86)\MediaPlayerDotNet(x86)
SystemDirectory = C:\Windows\system32
Ran As Admin = False
HasShutdownStarted = False
MachineName = SAGER-NP9150
ProcessorCount = 8
LogicalDrives = C:\, E:\, F:\, G:\, Z:\
EnvironmentVariables = Path = C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\AuthenTec TrueSuite\;
C:\Program Files\AuthenTec TrueSuite\x86;
C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\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\DAL;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\AuthenTec TrueSuite\x86\;
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 = SAGER-NP9150; PROCESSOR_ARCHITECTURE = x86; ProgramW6432 = C:\Program Files;
PUBLIC = C:\Users\Public;
APPDATA = C:\Users\AV\AppData\Roaming; windir = C:\Windows; LOCALAPPDATA = C:\Users\AV\AppData\Local;
CommonProgramW6432 = C:\Program Files\Common Files; USERNAME = AV; TMP = C:\Users\AV\AppData\Local\Temp;
USERPROFILE = C:\Users\AV;
ProgramFiles = C:\Program Files (x86); PROCESSOR_LEVEL = 6; FP_NO_HOST_CHECK = NO; HOMEPATH = \Users\AV;
COMPUTERNAME = SAGER-NP9150;
PROCESSOR_ARCHITEW6432 = AMD64; NVIDIAWHITELISTED = 0x01; NUMBER_OF_PROCESSORS = 8;
PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 58 Stepping 9, GenuineIntel; SystemRoot = C:\Windows;
ComSpec = C:\Windows\system32\cmd.exe; LOGONSERVER = \\MicrosoftAccount;
TEMP = C:\Users\AV\AppData\Local\Temp; ProgramFiles(x86) = C:\Program Files (x86);
SystemDrive = C:; CommonProgramFiles = C:\Program Files (x86)\Common Files; USERDOMAIN_ROAMINGPROFILE = SAGER-NP9150;
PROCESSOR_REVISION = 3a09;
CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files;
ALLUSERSPROFILE = C:\ProgramData; SHIM_MCCOMPAT = 0x810000001;
PSModulePath = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;
OS = Windows_NT; ProgramData = C:\ProgramData; HOMEDRIVE = C:
RuntimeVersion = 4.0.30319.34014
Thread Count = 16
Handle Count = 360
VM Size = 370.1 MB
Peak VM Size = 370.1 MB
Working Set Size = 56.9 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, nvinit.dll, detoured.dll, nvd3d9wrap.dll,
SETUPAPI.dll, CFGMGR32.dll, nvdxgiwrap.dll, clr.dll, MSVCR120_CLR0400.dll, mscorlib.ni.dll, ole32.dll, kernel.appcore.dll,
uxtheme.dll, tiptsf.dll, OLEAUT32.dll,
clrjit.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,
nvumdshim.dll, igdumdim32.dll, igdusc32.dll, nvd3dum.dll, PSAPI.DLL, DEVOBJ.dll, WINTRUST.dll, CRYPT32.dll, MSASN1.dll, nvspcap.dll,
oleacc.dll, Accessibility.ni.dll,
clbcatq.dll, msiltcfg.dll, msi.dll, D3D9NativeServices.dll, WINMM.dll, WTSAPI32.dll, WINMMBASE.dll, powrprof.dll, WINSTA.dll, dxgi.dll,
d3d10_1.dll, d3d10_1core.dll,
d3d11.dll, nvwgf2um.dll, igd10iumd32.dll, ncrypt.dll, NTASN1.dll, d3dx10_43.dll, usp10.dll, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll,
diasymreader.dll
===================================
Cannot parse "//css_import..." (CSScriptLibrary)
------------------------------
Program Location:
at csscript.CSharpParser.ImportInfo..ctor(String statement, String parentScript)
at csscript.CSharpParser.Init(String code, String file, String[] directivesToSearch)
at csscript.CSharpParser..ctor(String script, Boolean isFile)
at CSScriptLibrary.FileParser.ProcessFile()
at CSScriptLibrary.FileParser..ctor(String fileName, ParsingParams prams, Boolean process, Boolean imported, String[] searchDirs, Boolean throwOnError)
at CSScriptLibrary.ScriptParser.Init(String fileName, String[] searchDirs)
at CSScriptLibrary.ScriptParser..ctor(String fileName, String[] searchDirs)
at csscript.CSExecutor.Compile(String scriptFileName)
at csscript.CSExecutor.Compile(String scriptFile, String assemblyFile, Boolean debugBuild)
at CSScriptLibrary.CSScript.LoadWithConfig(String scriptFile, String assemblyFile, Boolean debugBuild, Settings scriptSettings, String compilerOptions, String[] refAssemblies)
at CSScriptLibrary.CSScript.Load(String scriptFile)
at MediaPlayerDotNet.MainForm.†††
†††‰(Object )
at MediaPlayerDotNet.MainForm.†††
††††˜(Object )
at MediaPlayerDotNet.MainForm.†††
††††˜()
at MediaPlayerDotNet.MainForm.†††
††††œŽ()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
Edit: Your right the name has something to do with it [ "()" issue?]. I copied to e:\temp, tried and failed. Renamed it to MPDN, and it worked, renamed it to MPDN(x86) and it failed. Renamed it to MPDN[x86] and it worked. Renamed it to MediaPlayerDotNet[x86] and it worked. Copied that directory back to "E:\Program Files (x86)\" and if failed again. Must be a conflict with the script you rewrote because I had extracted the old versions to the same E:\Program Files (x86)\MediaPlayerDotNet(x86) and not had problems.
Same behavior here. Error in 32-bit, no error 64-bit.
jkauff,
Did you also extract it to your "Program Files (x86)" directory, or have you included a "(" and or ")" in your file name? If so try moving the folder and/or renaming the directory.
jkauff
31st October 2014, 21:45
jkauff,
Did you also extract it to your "Program Files (x86)" directory, or have you included a "(" and or ")" in your file name? If so try moving the folder and/or renaming the directory.
Yes, it's in my "Program Files (x86)" directory, and there are no special characters in the MediaPlayerDotNet folder name.
Also, when I tried playing a movie in the 64-bit version, I got an error that MPDN couldn't find SharpDX, which is sitting in the same folder as the other .dll program files.
I opened Application.64.config in a text editor and didn't see any path info in there that might be causing a problem.
kerimcem
31st October 2014, 21:55
good player..:thanks:
please ,association and volume bar added?
Anima123
1st November 2014, 00:49
With MPDN 2.8.4, NEDI enabled only, while playing a 1080p file (no need to upscale at all), open another SD file, NEDI seems not working anymore, the result was like nearest neighbor been used which is horrible, and lots of dropped frames.
I guess there may be a bug that's worth digging into.
Zachs
1st November 2014, 00:56
With MPDN 2.8.4, NEDI enabled only, while playing a 1080p file (no need to upscale at all), open another SD file, NEDI seems not working anymore, the result was like nearest neighbor been used which is horrible, and lots of dropped frames.
I guess there may be a bug that's worth digging into.
Do you use a postprocessing filter? If you do the it's the same one as the known bug as described in the OP. This has been fixed in the next release.
Shiandow
1st November 2014, 01:09
Do you use a postprocessing filter? If you do the it's the same one as the known bug as described in the OP. This has been fixed in the next release.
Actually I think that bug is cause by the fact that NEDI doesn't update its own input size. More specifically InputFilter is created precisely once, and may not have the correct size.
I think I have found a way to fix it but it requires changes to Filter.cs, and may have other issues. I'll put some more details in a PM.
Zachs
1st November 2014, 01:40
@Zachs Thank you, now I can do what I asked you!
Two questions: MPDN has some kind of smooth motion?
Do you plan to implement automatic refresh changing? ;)
No smooth motion. But I may implement it in the future.
Automatic refresh changing isn't on my todo list at the moment.
I've been doing fresh installs since moving from 2.8.2 to 2.8.3 (deleting the old versions before extracting the new ones), so that rules out left behind files.
x86 version installed to:
E:\Program Files (x86)\MediaPlayerDotNet(x86)
x64 version installed to:
E:\Program Files\MediaPlayerDotNet
A comma in my path?!? I don't see that... There are a couple of ()'s but those are the only characters. I'll try extracting a copy to other locations and see if I get different results.
Yes, it's in my "Program Files (x86)" directory, and there are no special characters in the MediaPlayerDotNet folder name.
Also, when I tried playing a movie in the 64-bit version, I got an error that MPDN couldn't find SharpDX, which is sitting in the same folder as the other .dll program files.
I opened Application.64.config in a text editor and didn't see any path info in there that might be causing a problem.
Thanks for all the help to track down this problem guys/gals! I've found it's actually a problem with how CSScript library parses the path of the render scripts (nothing to do with MPDN's config files). I'll look into fixing that for the next release (may have to hack CSScript lib's code, but luckily it's MIT license).
good player..:thanks:
please ,association and volume bar added?
Not yet. Will look into player enhancements after I sort out render scripts.
Anime Viewer
1st November 2014, 01:57
I'm not sure that the NEDI (or any script for that matter) is taking effect on my videos (aka working on my system). Here is screen shots I took with the scripts set, and with no scripts set. I don't see any difference. Anyone care to upload before and after screen shots to show what it should look like with scripts taking effect?
Screen shot comparison (http://i.imgur.com/2WhAGmV.jpg)
Zachs
1st November 2014, 02:00
I'm not sure that the NEDI (or any script for that matter) is taking effect on my videos (aka working on my system). Here is screen shots I took with the scripts set, and with no scripts set. I don't see any difference. Anyone care to upload before and after screen shots to show what it should look like with scripts taking effect?
Screen shot comparison (http://i.imgur.com/2WhAGmV.jpg)
Try enabling the "Always double image" option in NEDI scaler for the current version of MPDN as there's a bug that causes it to not take effect. See if that makes a difference?
EDIT:
NEDI with bicubic50
http://i.imgur.com/mcSjm6e.jpg
Jinc8
http://i.imgur.com/YnfiXws.jpg
Both without pre-/post-processing.
Try with just NEDI as the sole render script first. Otherwise you'll run into the MPDN bug as described.
Anime Viewer
1st November 2014, 02:51
Try enabling the "Always double image" option in NEDI scaler for the current version of MPDN as there's a bug that causes it to not take effect. See if that makes a difference?
EDIT:
NEDI with bicubic50
http://i.imgur.com/mcSjm6e.jpg
Jinc8
http://i.imgur.com/YnfiXws.jpg
Both without pre-/post-processing.
Try with just NEDI as the sole render script first. Otherwise you'll run into the MPDN bug as described.
That is what I thought might be the case when I was testing this morning, but even with Always checked I still didn't notice a difference. Here is a screen capture with it having "always" checked.
http://i.imgur.com/jmyAuH0.jpg
One other thing I noticed this morning, and again now. Is if I click the configure button while a video is paused I get trapped with no way to exit (like I reported a few months ago that happened when new render mode and DX10 were selected together). The only way out of it is to log out of windows, or restart the computer. If no video is running or paused when going into the configuration screen there is no problem changing settings.
Edit:
Here is with only NEDI in the scripts:
http://i.imgur.com/WN4UW12.jpg
Zachs
1st November 2014, 02:57
Try without image processors first.
Can u elaborate further on the getting stuck part? I tried pausing and going into the options screen, click configure and found no problems.
What UI Mode are you running? Is it in fse mode? Etc.
Shiandow
1st November 2014, 03:00
That is what I thought might be the case when I was testing this morning, but even with Always checked I still didn't notice a difference. Here is a screen capture with it having "always" checked.
http://i.imgur.com/jmyAuH0.jpg
One other thing I noticed this morning, and again now. Is if I click the configure button while a video is paused I get trapped with no way to exit (like I reported a few months ago that happened when new render mode and DX10 were selected together). The only way out of it is to log out of windows, or restart the computer. If no video is running or paused when going into the configuration screen there is no problem changing settings.
Edit:
Here is with only NEDI in the scripts:
http://i.imgur.com/WN4UW12.jpg
NEDI seems to be working in those two screenshots.
Anime Viewer
1st November 2014, 03:25
Try without image processors first.
Can u elaborate further on the getting stuck part? I tried pausing and going into the options screen, click configure and found no problems.
What UI Mode are you running? Is it in fse mode? Etc.
General:
Player startup mode : Normal
Everything in that screen uncheck except load subtitles
No directshow video or audio filters selected.
Rendering Technology: Direct3d 10.1
graphics adapter id : 0
all boxes in that screen unchecked (so no new windowed mode or fse) and render priority at the default +2
Composition: video output levels automatic
video output bit depth 10 bit
boxes unchecked
Dithering: ordered dithering
All up and downscalers at jinc 6 tap
Nvidia control panel is set to force the nvidia gpu, but I'll try with the Intel selected too, and see if it has the same MPDN lockup.
Edit:
It occurs regardless of whether the Nvidia or Intel gpu is selected for use.
It occurs when the video is maximized to fullscreen (non-fse and with fse enabled), but not when in its default windows size. The "always" bar quickly and briefly flashes on the screen when the configuration button is pressed. I believe it might be being hidden behind the -edit- option -edit- window, and not be able to be switched back to again (and the options window can not be drug away).
It occurs in Direct3D 9Ex render mode as well.
It occurs in video bit depth 8-bit as well.
Edit 2:
Everything seems to point to it occurring when the video screen is maximized to take up the whole screen regardless of what settings are active in the program, and again it never seems to happen when the video is running or paused in its original window.
NEDI seems to be working in those two screenshots.
How can you tell? To me those two look identical to the two in the other screen capture I attached (http://i.imgur.com/2WhAGmV.jpg) which included one with no renderscripts.
Shiandow
1st November 2014, 04:30
How can you tell? To me those two look identical to the two in the other screen capture I attached (http://i.imgur.com/2WhAGmV.jpg) which included one with no renderscripts.
There's not a huge difference, especially not on that image, but if you switch back and forth you'll notice that the ones with NEDI have slightly sharper lines. Also the ones with NEDI are shifted to the top-left slightly. You can also see some NEDI artifacts on luffy's shirt but that is probably hard to recognize if you haven't seen it before.
I suspect that the image wasn't too sharp too begin with and you seem to have upcsaled it quite a bit, so the result was bound to be quite blurry. Even so, NEDI seems to improve the image quality. Maybe you'll get even better results if you combine NEDI with a sharper uspcaler.
Anima123
1st November 2014, 05:22
For now the NEDI include the process of scaling to the screen resolution right?
I wonder if NEDI can be kept single task as double the resolutions of the original image, (which actually is the image that has already been chrome upscaled to image size with Video Renderer settings I guess), and use the Luma Downscaler to scale the doubled image to the screen size. Or there's some misunderstanding with the mechanism behind NEDI?
Zachs
1st November 2014, 06:32
That's exactly what it does now. The final up or down scale depends on what you've set in your MPDN scaler options.
Anime Viewer
1st November 2014, 18:33
@Zachs Thank you, now I can do what I asked you!
Two questions: MPDN has some kind of smooth motion?
Do you plan to implement automatic refresh changing? ;)
What type of refresh rate changing are you asking for?
Something like madVR where it detects and sets the screen Hz based on what it detects. Ex: It detects the video as 23.97, 24, or 25, and switches to 24hz if its on the switch to list.
Or
Something like MPC EVR-custom where the same video (which it shows with OSD ctrl+J fluctuating between 28 and 48 fps) and has it set to 59 hz.
Or
something else?
MadVR's way of doing things leads to much more jerky looking video, and as a result isn't something I recommend mimicking. MPDN with the way it currently handles those types of videos much better than madVR (and plays them much smoother as it is).
Edit:
On a somewhat related note I was experimenting with different renders and got a error after starting MPDN with Reclock selected as an Audio renderer. (Not that I care since I don't think reclock does a very good job of making videos run any better).
TITLE: Mpdn.VideoPlayer Error
------------------------------
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Failed to render file 'G:\Anime\One Piece\One Piece 401-500\[yibis]_One_Piece_471-480_[720p]\[yibis]_One_Piece_471_[720p][9E2D3B13].mkv' (Mpdn.VideoPlayer)
------------------------------
Error HRESULT E_FAIL has been returned from a call to a COM component. (Mpdn.VideoPlayer)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
turbojet
1st November 2014, 19:24
What type of videos play jerky in MadVR but not MPDN? Realizing madvr's film/video detection could use a lot of work. With film mode on all the telecined film and 29 fps video I deal with plays fine. With the little 59 fps video I watch it still works but missing half the frames are noticeable in high motion scenes. OTOH mpdn plays telecined 1080i terribly, with the dupe frames just like any other renderer except madvr's film mode, with the exception of wmc. How does wmc play everything very smoothly? Would be interesting to know. AFAIK it uses the same renderer and default decoder as wmp but wmp doesn't play things smoothly.
If it's wanted I could make a batch script that checks video framerate, monitor refresh rate and switches, if needed, before playing a file in MPDN. I had done something awhile ago to test madvr not switching to certain refresh rates. The only downside to this is all video files need to be opened with the batch script.
huhn
1st November 2014, 19:34
madVR takes these information from the source filter. as long as this information is right madVR choice is rock solid.
if this inrformation is wrong you run in trouble.
EVR doesn't have a refreshrate option. MPC-HC/BE have one but that works with every render even with madVR.
and checking the file for the real frame rate is not easy the render need to look at the hole file to find this information reliable. maybe getting the hole time file code can do something like that but is this the same for every container?
Zachs
2nd November 2014, 01:50
What type of videos play jerky in MadVR but not MPDN? Realizing madvr's film/video detection could use a lot of work. With film mode on all the telecined film and 29 fps video I deal with plays fine. With the little 59 fps video I watch it still works but missing half the frames are noticeable in high motion scenes. OTOH mpdn plays telecined 1080i terribly, with the dupe frames just like any other renderer except madvr's film mode, with the exception of wmc. How does wmc play everything very smoothly? Would be interesting to know. AFAIK it uses the same renderer and default decoder as wmp but wmp doesn't play things smoothly.
If it's wanted I could make a batch script that checks video framerate, monitor refresh rate and switches, if needed, before playing a file in MPDN. I had done something awhile ago to test madvr not switching to certain refresh rates. The only downside to this is all video files need to be opened with the batch script.
MPDN doesn't do deinterlacing at all.
turbojet
2nd November 2014, 07:29
My batch, which I've tossed, always matched madvr and could switch to refresh rates that madvr couldn't switch to for some reason 72 and 75 hz.
Even if MPDN deinterlaced it probably wouldn't look much different then other renderers deinterlaced, except wmc, which isn't much better. If wmc's method could be figured out and implemented then no need for ivtc or refresh rate changes.
huhn
2nd November 2014, 09:43
What type of videos play jerky in MadVR but not MPDN? Realizing madvr's film/video detection could use a lot of work. With film mode on all the telecined film and 29 fps video I deal with plays fine. With the little 59 fps video I watch it still works but missing half the frames are noticeable in high motion scenes. OTOH mpdn plays telecined 1080i terribly, with the dupe frames just like any other renderer except madvr's film mode, with the exception of wmc. How does wmc play everything very smoothly? Would be interesting to know. AFAIK it uses the same renderer and default decoder as wmp but wmp doesn't play things smoothly.
If it's wanted I could make a batch script that checks video framerate, monitor refresh rate and switches, if needed, before playing a file in MPDN. I had done something awhile ago to test madvr not switching to certain refresh rates. The only downside to this is all video files need to be opened with the batch script.
madVR can play 29i at 60 fps so what are you talking about?
and it uses the same deinterlacer as WMC the DXVA deinterlacer from your GPU. there is a trade quality for performence option that deinterlace 29i to 30 fps but this is optional.
feel free to post such an major issue in the madVR thread.
turbojet
2nd November 2014, 13:17
With film mode on it doesn't play 29i at 59 fps and the film/video auto detection is mostly broken.
If WMC uses the same dxva deinterlacer than it's doing something else that plays all 29i telecine material smoothly without dupes at 60hz, it doesn't look like interpolation. SiliconDust's proprietary player QuickTV plays 29i just as smooth as WMC with less cpu/gpu load. No other free players/renderers handles it nearly as good as these 2 except madvr with ivtc which works great with most material at the correct refresh rate or smoothmotion enabled. MadVR and EVR deinterlacing 29i telecine is nearly unwatchable imo, it's just not the same as what you get on your tv from consumer electronics, WMC and QuickTV. If you don't believe me comparehttp://www.mediafire.com/watch/rkctkp9cldmbb69/29i_telecined.mpg in WMC to the others.
If WMC's deinterlacing method was available it's the one to use. There's judder with 25p, 24p and lower progressive video at 60hz with it though.
huhn
2nd November 2014, 17:59
think about a new thread or we should at least switch to the madVR thread. this thread is not the best choice i guess
i just checked your sample on my windows 10 preview PC it is a normal 3:2 cadence telecine file that should be detelecined and dispalyed with 23p. WMC is no part of windows 10 so i check it later with my windows 7 PC.
will be interesting to see how WMC get's this smooth with a deinerlacer that should be the DXVA deinterlacer.
turbojet
2nd November 2014, 23:03
I don't think any of this belongs in the madvr thread. I brought it up in here because I asked if ivtc would be considered in the future and Zachs says he'd like to add a deinterlacer but needed examples (of code?). If he didn't want to mess with ivtc may as well aim for a deinterlacing method that is nearly as good which WMC is. Dxva deinterlacing by itself is not very good on telecined material.
huhn
2nd November 2014, 23:31
I created this thread for this:
http://forum.doom9.org/showthread.php?p=1698551#post1698551
Zachs
6th November 2014, 12:31
Edit:
It occurs regardless of whether the Nvidia or Intel gpu is selected for use.
It occurs when the video is maximized to fullscreen (non-fse and with fse enabled), but not when in its default windows size. The "always" bar quickly and briefly flashes on the screen when the configuration button is pressed. I believe it might be being hidden behind the -edit- option -edit- window, and not be able to be switched back to again (and the options window can not be drug away).
It occurs in Direct3D 9Ex render mode as well.
It occurs in video bit depth 8-bit as well.
Edit 2:
Everything seems to point to it occurring when the video screen is maximized to take up the whole screen regardless of what settings are active in the program, and again it never seems to happen when the video is running or paused in its original window.
I just tested this on several machines and none exhibit the problem you described. The options form is shown as a modal dialog - nothing special there.
The "always" bar quickly and briefly flashes on the screen when the configuration button is pressed. I believe it might be being hidden behind the -edit- option -edit- window, and not be able to be switched back to again"
What is an "always" bar?
Dazog
7th November 2014, 04:35
Excellent player, Any chance for "Always ontop while playing" feature?
So we don't lose focus on the same screen while multi-tasking.
Zachs
7th November 2014, 11:29
Excellent player, Any chance for "Always ontop while playing" feature?
So we don't lose focus on the same screen while multi-tasking.
I'll put that on my todo list.
Anime Viewer
7th November 2014, 15:15
What is an "always" bar?
Good question. Unfortunately I can't recall what I meant by that when I typed it 8 days ago (while it says it was posted on the first I actually typed and posted in on the 31st while handing out candy to trick-or-treat-ers). Since I'm typing on a notebook/laptop its possible the cursor jumped and replaced what every word may have been in that space. I suspect I may have been referring to the window/box (what I believe you are calling a "modal dialog") that always pops up when the configuration button in the shader configuration screen is pressed.
You said you tested on numerous systems without being able to replicate it. To rule out certain possibilities did you test it on all of the following type systems?:
Computer with an Optimus setup?
(Since I was able to recreate the bug when both forcing the Nvidia GPU and when forcing the Intel GPU it may not be a connected to either one, but a system that has the mixed GPU setup).
Notebook/laptop?
Its not just the NEDI configuration dialog box, but any of the shader configuration windows that pop up when the configuration button is pressed.
Would someone else with an Optimus system test this problem?
(Open MPDN, Maximize MPDN to full screen, right click on the screen, choose options, enter the Render script settings area, click a script in the script chain area, click the configure button). Does anyone else have the configuration box/window quickly flash on the screen and then vanish (I suspect hide behind the "Options" window)?
Zachs,
Is there perhaps a way to code it so that the Options window/box can be dragged or moved while the related modal dialog boxes are on the screen. That way I could verify the dialog boxes are actually being hidden as opposed to something else.
To give an example of the state it puts things in launch one of the boxes using the configuration button, but instead of interacting with the dialog box try to interact with the options or MPDN video window. Its similar to that state except the screen can not be alt-tabbed away from, and the task can't be ended. When done in this test with the dialog box in the fore-screen the dialog box flashes, but if its being hidden in the background that effect/occurrence may not be seen.
Its also similar (if not identical) to the state (locked fore-ground screen) that occurred with the combination of new windowed mode and DirectX10.1 render both chosen, and the video screen then maximized to full screen. Is it known what was/does happen as far as the type of error that occurs in that type of situation since they may be connected in this case as well?
Shiandow
7th November 2014, 15:33
If the dialog is only hidden then you should be able to close it by pressing enter.
Anime Viewer
7th November 2014, 15:41
If the dialog is only hidden then you should be able to close it by pressing enter.
That worked, so it looks like it is in fact being hidden. (Don't know how I missed hitting Enter to try and get out of it during my testing. :o)
Anima123
7th November 2014, 18:52
Actually I think that bug is cause by the fact that NEDI doesn't update its own input size. More specifically InputFilter is created precisely once, and may not have the correct size.
I think I have found a way to fix it but it requires changes to Filter.cs, and may have other issues. I'll put some more details in a PM.
Shiandow, how's it going on with a proper fix for this bug? I will be looking forward to the next version of your NEDI script.
Shiandow
7th November 2014, 20:17
Shiandow, how's it going on with a proper fix for this bug? I will be looking forward to the next version of your NEDI script.
Zachs and I are still working on improving how render scripts work. Part of this is making it easier to react to a change in input size, which is what went wrong with NEDI and caused that bug. Anyway that bug and a lot of other things have been fixed/improved and the improved scripts will be release when the next version of MPDN comes along.
Although if you can't wait, I think we did eventually find a silly mistake which turned out to cause that bug. It should be fixed if you add the line:
base.OnTargetSizeChanged();
at line 99 of Shiandow.NEDI.NediScaler(). This is nowhere near as nice as the way it's fixed in the next version of MPDN, but it should work.
Zachs
8th November 2014, 01:35
Would someone else with an Optimus system test this problem?
(Open MPDN, Maximize MPDN to full screen, right click on the screen, choose options, enter the Render script settings area, click a script in the script chain area, click the configure button). Does anyone else have the configuration box/window quickly flash on the screen and then vanish (I suspect hide behind the "Options" window)?
Ah hah! When you said Maximize MPDN to full screen, I thought you meant normal maximize - not change to full screen mode (non-exclusive). I was testing by maximizing the window instead.
So yes, I've finally managed to replicate the bug - so thank you for your persistence! It looks like the script's dialog isn't getting its parent correctly - potentially a .NET framework winform design oversight.
Zachs
8th November 2014, 14:02
Excellent player, Any chance for "Always ontop while playing" feature?
So we don't lose focus on the same screen while multi-tasking.
Added in v2.9.0.
That worked, so it looks like it is in fact being hidden. (Don't know how I missed hitting Enter to try and get out of it during my testing. :o)
Fixed in v2.9.0. It was caused by .NET framework not finding the right parent when the modal dialog was shown.
Dazog
8th November 2014, 18:53
Added in v2.9.0.
Fixed in v2.9.0. It was caused by .NET framework not finding the right parent when the modal dialog was shown.
Thanks so much for the quick addition to always on top.
jkauff
8th November 2014, 20:23
Is there a new Render Scripts .zip file for version 2.9.0, or does the one for the previous version still work? I didn't see a link on Page 1.
EDIT: Nevermind, I found the link. Thanks.
Anime Viewer
8th November 2014, 21:07
Added in v2.9.0.
Fixed in v2.9.0. It was caused by .NET framework not finding the right parent when the modal dialog was shown.
Yep it certainly is fixed now.
I did some experimenting with the old error I used to encounter with the screen freezing with a combination of New Windowed Mode and Direct3D 10.1 as the render. Now instead of the freeze it generates error messages. An interesting thing about this error is it occurs when switching back and forth from full screen to windowed mode repeatedly, and when doing so in quick succession. Start a video in windowed mode, double click to expand video to full screen, quickly (as soon as its full screen) double click again to go to windowed size, quickly (as soon as its windowed size) double click to expand to full screen. After repeating for awhile it generates the following errors:
First:
TITLE: SharpDX Error
------------------------------
An unexpected error 'SharpDX.SharpDXException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
HRESULT: [0x887A0005], Module: [SharpDX.DXGI], ApiCode: [DXGI_ERROR_DEVICE_REMOVED/DeviceRemoved], Message: The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action.
(SharpDX)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
then
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)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
I find the D3d9videorender error particularly interesting considering it occurs while the Direct3D 10.1 is still set and showing as the running presenter/renderer.
Its a pretty minor error that probably doesn't matter much since both Direct3D 10.1 mode with old windowed mode, and Direct3D 9 Ex mode with or without new windowed mode both seem to work without causing those errors.
burfadel
9th November 2014, 06:47
I get a render error as well...
Zachs
9th November 2014, 12:54
I get a render error as well...
Can you give me the stack trace please?
feelingblue
9th November 2014, 22:02
Hello
a little question, is possible to use in the shader chain the FineSharp avisynth script ported to MPC-HC Shaders?
http://forum.doom9.org/showthread.php?t=171346
the problem is that the first shader of the chain must convert source rgb into yuv.
Shiandow
9th November 2014, 23:49
Hello
a little question, is possible to use in the shader chain the FineSharp avisynth script ported to MPC-HC Shaders?
http://forum.doom9.org/showthread.php?t=171346
the problem is that the first shader of the chain must convert source rgb into yuv.
How is that a problem? It should work if you just use the Image Processing render script and add those shaders.
That said, I did recently discover some weird bugs that seemed to cause problems with shaders that used the alpha channel. Those shaders might run into the same problem. However Zachs was able to find what caused those bugs, so that shouldn't be a problem for long.
Anime Viewer
9th November 2014, 23:55
Hello
a little question, is possible to use in the shader chain the FineSharp avisynth script ported to MPC-HC Shaders?
http://forum.doom9.org/showthread.php?t=171346
the problem is that the first shader of the chain must convert source rgb into yuv.
It looks like the scripts function in MPDN. I extracted those shaders to E:\Program Files\MediaPlayerDotNet\RenderScripts\ImageProcessingShaders\MPC-HC on my system and then set the files and their order from the readme inside an image processor script:
ToYUV
RemoveGrain11
RemoveGrain4
FineSharpA
FineSharpB
FineSharpC
ToRGB
Doesn't look very good on my system, but your results may be different depending on your system and the video you're watching.
Edit: just read Shiandow's post above about the bug. Perhaps that is why they don't look good when I added them.
Edit: adding them as post-shaders (after NEDI - if you use NEDI) looked a lot better then adding it as a pre-shaders (before NEDI).
BetA13
10th November 2014, 00:00
Finesharp looks great to me, if you dont overdo it.. i tested once with only PRE shader and then with both pre and post..
pre and post is to strong for my liking, but the pre only works and looks great with 720p sources and up..
but i use it in MPCHC with MADvr, doh^^
Zachs
10th November 2014, 00:42
I did some experimenting with the old error I used to encounter with the screen freezing with a combination of New Windowed Mode and Direct3D 10.1 as the render. Now instead of the freeze it generates error messages. An interesting thing about this error is it occurs when switching back and forth from full screen to windowed mode repeatedly, and when doing so in quick succession. Start a video in windowed mode, double click to expand video to full screen, quickly (as soon as its full screen) double click again to go to windowed size, quickly (as soon as its windowed size) double click to expand to full screen. After repeating for awhile it generates the following errors:
I find the D3d9videorender error particularly interesting considering it occurs while the Direct3D 10.1 is still set and showing as the running presenter/renderer.
Its a pretty minor error that probably doesn't matter much since both Direct3D 10.1 mode with old windowed mode, and Direct3D 9 Ex mode with or without new windowed mode both seem to work without causing those errors.
I can't replicate this problem on all the machines I've tested (7 graphics cards in total). Granted none had an Optimus setup. Would it possible to disable Optimus to test if it happens on a more traditional setup to rule out driver errors?
Zachs
10th November 2014, 00:46
It looks like the scripts function in MPDN. I extracted those shaders to E:\Program Files\MediaPlayerDotNet\RenderScripts\ImageProcessingShaders\MPC-HC on my system and then set the files and their order from the readme inside an image processor script:
ToYUV
RemoveGrain11
RemoveGrain4
FineSharpA
FineSharpB
FineSharpC
ToRGB
Doesn't look very good on my system, but your results may be different depending on your system and the video you're watching.
Edit: just read Shiandow's post above about the bug. Perhaps that is why they don't look good when I added them.
Edit: adding them as post-shaders (after NEDI - if you use NEDI) looked a lot better then adding it as a pre-shaders (before NEDI).
Just to make sure everyone understands how to use the new render scripts. For "post-shaders" you should put a Resizer (to 100% target size) right after NEDI before your Image Processor. Otherwise it processes the image at twice the video size instead of the target size.
IOW, your renderscript chain should look like this:
ImageProcessor --> NEDI --> Resizer (100% target size) --> ImageProcessor.
Shiandow
10th November 2014, 00:53
Oh. just tried it out, apparently there is some slight problem with using the Finesharp shaders. The naming for the variables is slightly different from the one MPDN uses, so it didn't get the size information properly.
Edit: Fix no longer needed in latest version of MPDN.
Dazog
10th November 2014, 05:04
Can I request a few more features?
A "On Top while playing only" setting.
File type associations in options.
Also in the minimalist mode, no way to tell how far we are into a video if we have to close it and come back and resume from that point.
kostik
10th November 2014, 13:09
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
Zachs
10th November 2014, 13:23
Can I request a few more features?
A "On Top while playing only" setting.
File type associations in options.
Also in the minimalist mode, no way to tell how far we are into a video if we have to close it and come back and resume from that point.
I guess if you're not playing, then perhaps just minimize the MPDN window?
File associations is on my todo list, haven't had time to get to that.
Can you elaborate a little on what exactly you mean with the last one? If you move your mouse over the seek bar, doesn't that show you how far into the video?
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 have plans to do pan and scan that allows you to fill screen (i.e. no letterboxing) only. Or do you want something more than that?
kostik
10th November 2014, 13:37
I guess if you're not playing, then perhaps just minimize the MPDN window?
File associations is on my todo list, haven't had time to get to that.
Can you elaborate a little on what exactly you mean with the last one? If you move your mouse over the seek bar, doesn't that show you how far into the video?
I have plans to do pan and scan that allows you to fill screen (i.e. no letterboxing) only. Or do you want something more than that?
yeap to fill the screen is great. Thanks :)
Anima123
10th November 2014, 19:31
FineSharp has the following steps
ToYUV
RemoveGrain11
RemoveGrain4
FineSharpA
FineSharpB
FineSharpC
ToRGB
I wonder if the first and last step are obsolete when used within MPDN's script chain?
Zachs
10th November 2014, 21:20
No. If it is applicable to mpchc it's applicable to mpdn.
When you place a pre resize image processor and a post resize one in the chain, mpdn converts YUV to RGB before invoking the scripts. MPDN then expects the result of the render chain to be also in RGB.
Zachs
11th November 2014, 04:47
I've updated GitHub with a bunch of changes we (Shiandow and I) have made to improve the render scripts.
Feel free to head over (https://github.com/zachsaw/RenderScripts) to grab the updated version.
Cheers.
EDIT: Added linear light scaling support via ImageProcessor with the following render script chain:
ImageProcessor - When downscaling video: ConvertToLinearLight.hlsl
ImageProcessor - (Your Pre-scaled Shaders - swap with above if you want shaders to work in gamma light)
Resizer - Resize to: 100% of target size
ImageProcessor - (Your Post-scaled Shaders - swap with below if you want shaders to work in gamma light)
ImageProcessor - When downscaling video: ConvertToGammaLight.hlsl
Anima123
11th November 2014, 08:00
You guys are awesome!
Now I am encounter a new problem when playing a 720p file with full HD screen. Namely with NEDI and linear light, when play it in windows mode (target size is the same as original size), MPDN used to avoid NEDI in that case, now it's in full chain mode, which means every script in the chain is active.
Any thoughts to avoid unnecessary calculation power consumption in that case?
BTW my script chain is like the following:
NEDI
ImageProcessor - When downscaling video: ConvertToLinearLight.hlsl
esizer - Resize to: 100% of target size
ImageProcessor - When downscaling video: ConvertToGammaLight.hlsl
Edit: So is with 1080p file played in full HD screen resolution. Or I just has the wrong settings with NEDI?
Edit2: The other issue I noticed is that when use linear light without NEDI, playing 1080p file in windows mode, in which case it's downscaling after Resize, which triggers ConvertToGammaLight.hlsl, yet not trigger the ConvertToLinearLight.hlsl in first step, causes the color in windows mode like washed out.
Zachs
11th November 2014, 09:18
I think there's a bug that I've fixed in the best version of mpdn that is causing that.
To see if it is that bug, once you have set up the chain can you restart mpdn before testing?
Shiandow
11th November 2014, 10:44
I think I've managed to replicate this bug (http://forum.doom9.org/showthread.php?p=1699325#post1699325), it seems to occur when you add the shaders during playback, without resizing. I'll have a quick look to see if I can find what causes it.
Edit: Found it, apparently we forgot to allocate textures when Image Processor updated the filter, again. Let's try a more general fix this time.
Zachs
11th November 2014, 10:47
This should be fixed in the version where mpdn triggers output size changed event when apply button is pressed.
Haven't got time right now to release that version yet. But will do ASAP.
Shiandow
11th November 2014, 11:03
I actually prefer the method I just proposed on git, maybe have a look?
Zachs
11th November 2014, 11:40
I'll take a look.
But MPDN calls output size changed internally anyway to activate its settings :)
Anyway I'll take a look at git.
EDIT: I've merged your changes to master.
Zachs
11th November 2014, 22:06
Now I am encounter a new problem when playing a 720p file with full HD screen. Namely with NEDI and linear light, when play it in windows mode (target size is the same as original size), MPDN used to avoid NEDI in that case, now it's in full chain mode, which means every script in the chain is active.
Any thoughts to avoid unnecessary calculation power consumption in that case?
BTW my script chain is like the following:
NEDI
ImageProcessor - When downscaling video: ConvertToLinearLight.hlsl
esizer - Resize to: 100% of target size
ImageProcessor - When downscaling video: ConvertToGammaLight.hlsl
Edit: So is with 1080p file played in full HD screen resolution. Or I just has the wrong settings with NEDI?
Edit2: The other issue I noticed is that when use linear light without NEDI, playing 1080p file in windows mode, in which case it's downscaling after Resize, which triggers ConvertToGammaLight.hlsl, yet not trigger the ConvertToLinearLight.hlsl in first step, causes the color in windows mode like washed out.
Your last issue is fixed with latest render script / MPDN version.
With regards to the first issue, ImageProcessor isn't compatible to be used in that manner yet - When downscaling 'video' means comparing video size with target size, while NEDI doubles the video size before feeding it into ImageProcessor. What is supported at the moment is to have NEDI come after ImageProcessor. EDIT: Scratch that, your usage should be fine. Don't know what I was thinking. If video is being downscaled then NEDI shouldn't be active. In which case, there shouldn't be any problem with using video size vs target size to find out if we're downscaling.
EDIT2: There's still a bug that causes NEDI to be always active when used in that way. I'll fix that.
EDIT3: Fixed in git.
Anima123
11th November 2014, 22:25
Shiandow, is there any quality-wise problem with NEDI handled after being converted in linear light, as Zachs suggested right now?
Zachs
11th November 2014, 22:31
Shiandow, is there any quality-wise problem with NEDI handled after being converted in linear light, as Zachs suggested right now?
NEDI will be disabled if you don't force enable it in downscaling cases. It won't make a difference.
Shiandow
11th November 2014, 23:08
Shiandow, is there any quality-wise problem with NEDI handled after being converted in linear light, as Zachs suggested right now?
Well, as Zachs said there's no problem with the chain you posted since NEDI and linear light conversion won't be on at the same time.
That said I wouldn't recommend performing NEDI in linear light, it tends to make the artefacts more noticeable. And as far as I know there's not much benefit in doing NEDI in linear light. However I could be mistaken so you should probably at least give it a try if you want to be sure.
Anima123
12th November 2014, 05:44
I tried the latest version of the player and the script, it's behavior is still not ideal to me.
Let's assume Video Size as the original size of the video, Doubled Video Size is doubled size via NEDI, Target Size is the screen resolution (full screen) mode or a smaller one (windows mode), the following is the ideal behavior in my mind:
if (Video Size >= Target Size) { //which means downscaler should be used
disable NEDI;
trigger linear light if downscaler is used for real;
}
else { // Video Size < Target Size, in which case upscaler should be in use
enable NEDI;
if (Doubled Video Size > Target Size) // in which case the downscaler should be in use
trigger linear light if configured;
}
Any idea if this can be down?
The current latest version does not act like the ideal case, hence there's potential bug to me.
Zachs
12th November 2014, 06:05
I have an idea that will do that but I'll discuss with Shiandow in PM first.
feelingblue
12th November 2014, 12:19
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.
Zachs
13th November 2014, 06:09
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.
MPDN's Softcubic and Bicubic covers a lot of the 'bicubic' style resize via the softness/sharpness parameter. Not sure about blackman but the last I tried gaussian, it's so similar to softcubic it's quite unnecessary.
Zachs
13th November 2014, 06:34
I tried the latest version of the player and the script, it's behavior is still not ideal to me.
Let's assume Video Size as the original size of the video, Doubled Video Size is doubled size via NEDI, Target Size is the screen resolution (full screen) mode or a smaller one (windows mode), the following is the ideal behavior in my mind:
if (Video Size >= Target Size) { //which means downscaler should be used
disable NEDI;
trigger linear light if downscaler is used for real;
}
else { // Video Size < Target Size, in which case upscaler should be in use
enable NEDI;
if (Doubled Video Size > Target Size) // in which case the downscaler should be in use
trigger linear light if configured;
}
Any idea if this can be down?
The current latest version does not act like the ideal case, hence there's potential bug to me.
The GUI script chain creator is always going to have limitations - it's just plain unintuitive to use for complicated situations.
As such, MPDN v2.9.3 allows you to write your own chain in a script, as an example:
protected override RenderScript[] GetScriptChain()
{
var result = new List<RenderScript>();
// Pre resize shaders, followed by NEDI image doubler
result.Add(PreProcess);
var size = Renderer.VideoSize;
// Use NEDI once only.
// Note: To use NEDI as many times as required to get the image past target size,
// Change the following *if* to *while*
if (IsUpscalingFrom(size)) // See RenderScriptChain for other comparer methods
{
result.Add(Nedi);
size = DoubleSize(size);
}
if (IsDownscalingFrom(size))
{
// Use linear light for downscaling
result.Add(ToLinear);
result.Add(ResizeToTarget);
result.Add(ToGamma);
}
else
{
// Otherwise, scale with gamma light
result.Add(ResizeToTarget);
}
// Post resize shaders
result.Add(PostProcess);
return result.ToArray();
}
To activate it, choose the "Custom Render Script Chain" script. It must be the sole script in the chain, or its behaviour would be undefined.
Get the latest scripts from github. Example is shown in MyRenderScripts.cs.
You can customize it beyond what is shown by checking for VideoSize - for SD, do X, for super small video size, do Y, for HD, do Z.
Feel free to share your script in the forum!
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.
Zachs
27th November 2014, 11:55
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..
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.
Not sure what you mean by continuing with this as an option vs MPC+madVR. But I'm just trying to get the extensions bit done so the community could chip in to help extend the capabilities of the MPDN, because I can't keep working on this at this pace forever. At some time I'll have to work on other things and at that stage, I'll be adding features mainly can't be added via plugins (If I have infinite time to work on this, I'd like to make the whole app fully extensible, from GUI to renderer).
Oh by the way, could you summarise the keyboard shortcuts you want to see implemented? One of the things I wanted to do was to have a "Player plugin" where you could write your own playlist manager etc. and be able to call into the player's functions like Play, Seek, Pause etc. That way, you could also then write your own plugin to add / change keyboard shortcuts. Think Winamp plugins (General plugins I believe?)
I have a lot of ideas, just not going through them nearly fast enough unfortunately.
Anime Viewer
27th November 2014, 14:58
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)
And the following needs no introduction... (don't go and grab them just yet - they won't work with the current version of MPDN)
It'll be ready when it's ready. :p
Looks interesting. With the openness of custom there will be a lot of options, but when that is ready and running would it be possible to get a break down of what some of the scalers may be similar to? (Like how MPDN's Bicubic with sharpness set to 66 is similar to Mitchell, how Bicubic@100 in MPDN is similar to Catrom, etc)? It might also be useful for people to know what types of new custom scalers might be good for different types of content. (Similar to how to how the article posted by Shiandow revealed that Mitchell was a recommended option for line drawn content (animated content) and Jinc is recommended for live (human/animal) object reproduction. That may give people an idea of what types of custom to try to use in MPDN with all the new options that will be opened up.
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.
Even if NNEDI3 was an option I don't know that I'd ever use it. I'm not a fan of the large resource taxing it does and how even when it appears to be doing very little work (anti-aliasing) it causes system fans to kick up to high (at least when it comes to using it in madVR). I'm much more apt to stick with SuperRes+NEDI if it gives similar quality with less noise and resource hogging.
One of the things I wanted to do was to have a "Player plugin" where you could write your own playlist manager etc. and be able to call into the player's functions like Play, Seek, Pause etc. That way, you could also then write your own plugin to add / change keyboard shortcuts. Think Winamp plugins (General plugins I believe?)
I have a lot of ideas, just not going through them nearly fast enough unfortunately.
I know in the past you mentioned that you were looking into tying in a play next in folder feature into the playlist feature(s) you were working on/thinking about. That is the only thing that currently comes to mind that MPDN doesn't yet do that many other players offer (and that I use). Aside from that MPDN seems like a player with a good combination of video playback quality and relatively little crash inducing bugs (many of which - like the DX10 issue(s) - seem to be Nvidia/AMD/Intel driver related issues).
Zachs
28th November 2014, 03:27
Looks interesting. With the openness of custom there will be a lot of options, but when that is ready and running would it be possible to get a break down of what some of the scalers may be similar to?
That article you read covers a lot of the linear scalers out there, and it was based on that article that MPDN's original scalers were implemented. In fact, the additional ones via custom linear scaler plugins are from there too (Sinc-window). Lanczos is actually Sinc-Lanczos window, and the various additional options you see in that drop down list are mainly varying the window functions of Sinc (you'll find this explained in that same article). As far as I can gather from that article, different people swear by different window functions for a Sinc based scaler.
kostik
28th November 2014, 16:01
Is it possible to create a pixel shader for callibration? something like YCMS? so you can input gamut measurements and grayscale measurements?
BTW thanks, great work.
Zachs
29th November 2014, 02:33
Is it possible to create a pixel shader for callibration? something like YCMS? so you can input gamut measurements and grayscale measurements?
BTW thanks, great work.
This is definitely possible via render script.
3dlut is also a possibility.
We are tied up with other things at the moment so if anyone wants to give it a go, we would surely appreciate it.
It is not too hard since there are plenty of related materials available on the net.
feelingblue
29th November 2014, 11:05
it would be possible to implement the ICC support?
Similar to "ICC color management in Media Player Classic Home Cinema"?
Zachs
29th November 2014, 12:23
Render script can do that too if someone writes one.
I'm tied up with other parts of MPDN at the moment though.
kostik
29th November 2014, 15:23
This is definitely possible via render script.
3dlut is also a possibility.
We are tied up with other things at the moment so if anyone wants to give it a go, we would surely appreciate it.
It is not too hard since there are plenty of related materials available on the net.
Here is a script from AVS Yesgrey posted it a long time ago for matrix correction.
http://www.avsforum.com/forum/26-home-theater-computers/912720-color-correction-htpc-simpler-solution-now-really-works.html
Zachs
1st December 2014, 06:25
Here is a script from AVS Yesgrey posted it a long time ago for matrix correction.
http://www.avsforum.com/forum/26-home-theater-computers/912720-color-correction-htpc-simpler-solution-now-really-works.html
Thanks for that info. It'll come in handy when I get some time to implement it.
Zachs
1st December 2014, 06:28
Heads up!
v2.12.0 has just been released with the promised features.
On top of that, the updated RenderScript API also fully supports Direct3D 11 (for cards that support the API obviously), which means SM5.0 and DirectCompute can now be used in the rendering pipeline. There's no scripts that take advantage of these new features yet, so if anyone feels like contributing, we would surely appreciate it!
ryrynz
1st December 2014, 06:56
Better than NNEDI might be difficult, combining it with NEDI will improve this.
Likely your code will be the future of high quality upscaling on PC.
At any rate using SuperRes for chroma up-scaling beats any other algorithm I've seen
Resources wise how demanding is it vs Jinc? That SuperRes image is very nice BTW.
But I'm just trying to get the extensions bit done so the community could chip in to help extend the capabilities of the MPDN, because I can't keep working on this at this pace forever. At some time I'll have to work on other things and at that stage, I'll be adding features mainly can't be added via plugins (If I have infinite time to work on this, I'd like to make the whole app fully extensible, from GUI to renderer).
Answers my question nicely, thanks.
Oh by the way, could you summarise the keyboard shortcuts you want to see implemented?
Right now I'd be interested in shortcuts for play, pause, stop, forward and rewind (small, medium, large) displaying the filename, remaining time, properties, next file, previous file, switching between subtitle options.
Anima123
1st December 2014, 07:49
Wow, you guys are awesome. I am quite happy with the effect of script chain SuperChromaRes -> SuperRes, though it is also quite expensive, resourcefully speaking, since my nVidia Geforce GT 640M can barely handle 1024x576 -> 1920x1080 @ 24p fluently.
Dreaming of that you guys can make it a little bit more efficient without suffer too much of the quality.
BTW, I remember Shiandow has mentioned somewhere that the SuperRes can resize to any resolution, so I guess there's really no other resizer needed at the last step at all.
kerimcem
1st December 2014, 14:40
best result pixel table? image quality..
luma up: ?
chorma up:?
sorry ,may bad english..
Garteal
1st December 2014, 14:55
Been keeping a close eye on this project and its really shaping up nicely.
At the moment I have the following in my Script Chain:
-> SuperChromeRes
-> SuperNEDIRes
madVR runs with NNEDI3 with 64 neurons on the Luma and Chroma is being upscaled with Lanczos 3t+AR. Image upscaling is done with Lanczos3t+AR+LL.
So far the difference is mostly negligible to me.
madVR: http://abload.de/img/l_madvrdic5p.png
MPDN: http://abload.de/img/l_mpdn2sehi.png
The rendertimes for the MPDN chain is about 10ms higher than madVR (22ms, 12ms on avg for both).
(I'm using the x64 build of MPDN)
I'm going to test some HD content now and see how they perform.
As for a feature request; since it's kind of hard to precisely grab the same frame for comparison sake mostly, would it be possible to implement a "Go to" dialog similar to how MPC-HC handles it? Not a huge priority though.
Anime Viewer
1st December 2014, 14:59
Heads up!
v2.12.0 has just been released with the promised features.
After extracting 2.12.0 as well as the new RenderScripts and CustomLinerScalers when I click on some of those new scalers (to configure them in the script chain) they produce error messages:
When I click on SuperChromaRes and/or SuperRes it produces the error:
TITLE: Framework Error
------------------------------
An unexpected error 'System.NotImplementedException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Config dialog has not been implemented (Framework)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
The error only pops up when clicking on them in the script chain configuration screen. Clicking on them in non-chain mode produces no error message, but also doesn't produce a configuration box either.
NEDI shows its configure screen properly, so it appears it may only be certain scripts.
Garteal
1st December 2014, 15:04
After extracting 2.12.0 as well as the new RenderScripts and CustomLinerScalers when I click on some of those new scalers (to configure them in the script chain) they produce error messages:
It's just as the error says; these don't have any config dialogs yet so the "error" is normal until they create one.
Oh yeah, another request: chapter markers on the timeline as well as the ability to jump to them with a shortcut.
Shiandow
1st December 2014, 15:47
At the moment I have the following in my Script Chain:
-> SuperChromeRes
-> SuperNEDIRes
madVR runs with NNEDI3 with 64 neurons on the Luma and Chroma is being upscaled with Lanczos 3t+AR. Image upscaling is done with Lanczos3t+AR+LL.
So far the difference is mostly negligible to me.
madVR: http://abload.de/img/l_madvrdic5p.png
MPDN: http://abload.de/img/l_mpdn2sehi.png
The rendertimes for the MPDN chain is about 10ms higher than madVR (22ms, 12ms on avg for both).
(I'm using the x64 build of MPDN)
I'm going to test some HD content now and see how they perform.
With those settings scaling 480p -> 1080p I'm getting render times of 19ms and 24ms for MPDN and MadVR respectively. But I've noticed that for some reason SuperRes tends to have high rendertimes without much GPU usage, I'll see if I can improve that somehow.
Thunderbolt8
1st December 2014, 15:59
Been keeping a close eye on this project and its really shaping up nicely.
At the moment I have the following in my Script Chain:
-> SuperChromeRes
-> SuperNEDIRes
madVR runs with NNEDI3 with 64 neurons on the Luma and Chroma is being upscaled with Lanczos 3t+AR. Image upscaling is done with Lanczos3t+AR+LL.
So far the difference is mostly negligible to me.
madVR: http://abload.de/img/l_madvrdic5p.png
MPDN: http://abload.de/img/l_mpdn2sehi.png
The rendertimes for the MPDN chain is about 10ms higher than madVR (22ms, 12ms on avg for both).
(I'm using the x64 build of MPDN)
I'm going to test some HD content now and see how they perform.
As for a feature request; since it's kind of hard to precisely grab the same frame for comparison sake mostly, would it be possible to implement a "Go to" dialog similar to how MPC-HC handles it? Not a huge priority though.the subs looks better with madvr, they are blurred with MPDN
toniash
1st December 2014, 16:19
the subs looks better with madvr, they are blurred with MPDN
Do you use XYSubFilter?
Thunderbolt8
1st December 2014, 16:41
yes, but thats irrelevant as I was comparing the two screenshots linked there.
madshi
1st December 2014, 16:52
the subs looks better with madvr, they are blurred with MPDN
This is probably due to a different subtitle renderer, and so outside of the intended comparison purpose. However, I find the lines in the image to be clearer and cleaner in the NNEDI3 screenshot. Look at the lower left side of the face/image. A bit less aliasing and less mosquito noise in the NNEDI3 screenshot, I believe. Not a dramatic difference, though.
Garteal
1st December 2014, 17:40
I'm using xySubFilter with both players but it appears that it renders a bit differently in MPDN (possibly not at the desktop resolution as I have it set to in MPC-HC).
With those settings scaling 480p -> 1080p I'm getting render times of 19ms and 24ms for MPDN and MadVR respectively. But I've noticed that for some reason SuperRes tends to have high rendertimes without much GPU usage, I'll see if I can improve that somehow.
Interestingly enough, I get the exact opposite for HD content where MPDNs chain is 10ms lower than madVR. (12ms to 22ms)
Here are some 10bit HD shots (720p -> 1080p). Again nothing too noticeable. Yes I'm aware madVR has a red tint going over it. Not sure what causes it though.
madVR: http://abload.de/img/akgesdesu_madvrh4f8t.png
MPDN: http://abload.de/img/akgesdesu_mpdngyekr.png
As for the GPU usage; from my testing I get the following for Death Note (480p):
- approximately 25% usage with madVR
- approximately 35% usage with MPDN
As for Akame ga Kill (720p):
- approximately 55% usage with madVR
- approximately 30% usage with MPDN
Forgot to mention my specs, but here they are:
CPU: Intel i5-2500K @ 4.5GHz
GPU: AMD Sapphire R9-280X Dual-X
Scyna
1st December 2014, 21:39
Hi I'm currently using Jinc 16 on everything to watch anime. Are the new custom scalers better suited for anime? If someone can point me to an article about them would be great thanks.
Shiandow
1st December 2014, 22:08
As for the GPU usage; from my testing I get the following for Death Note (480p):
- approximately 25% usage with madVR
- approximately 35% usage with MPDN
As for Akame ga Kill (720p):
- approximately 55% usage with madVR
- approximately 30% usage with MPDN
Your GPU usage with MPDN is higher than I expected. I get more or less the same values when I use SuperChromaRes + SuperNEDIRes, but there's simply no way I'm ever going to get smooth playback with NNEDI3 64 neurons.
By the way, did you still have SuperChromaRes enabled? Because that uses a lot of GPU power as well and it's a bit unfair to compare the performance of NNEDI3 (which only does luma upscaling) to that of SuperChromaRes + SuperNEDIRes.
Garteal
1st December 2014, 22:53
By the way, did you still have SuperChromaRes enabled? Because that uses a lot of GPU power as well and it's a bit unfair to compare the performance of NNEDI3 (which only does luma upscaling) to that of SuperChromaRes + SuperNEDIRes.
Yeah I did and you're right. I forgot about it. Though to be honest, it's kind of hard to measure the usage with MPDN and the scripts since the usage is very jumpy which fluctuates the GPU clocks (MPC-HC+madVR has a steady usage and has the GPU on its max clocks).
http://abload.de/img/gpu-usagemii84.png
Though if I had to give an approximation, I'd say it dropped to around the madVR range (25% or so).
Anima123
1st December 2014, 23:17
Yeah I did and you're right. I forgot about it. Though to be honest, it's kind of hard to measure the usage with MPDN and the scripts since the usage is very jumpy which fluctuates the GPU clocks (MPC-HC+madVR has a steady usage and has the GPU on its max clocks).
Well, that may explained some of what I encountered: playback is jiggly despite the statistics tell me otherwise, no dropped frames nor delayed frames.
Edit: If it's really a power state issue then it may be helpful by Setting Power management mode from "Adaptive" to "Maximum Performance". I will try it after I got home.
Zachs
1st December 2014, 23:59
Well, that may explained some of what I encountered: playback is jiggly despite the statistics tell me otherwise, no dropped frames nor delayed frames.
Edit: If it's really a power state issue then it may be helpful by Setting Power management mode from "Adaptive" to "Maximum Performance". I will try it after I got home.
Power state switching shouldn't make a difference to smoothness of render queue isn't exhausted. It takes nothing at all to present from queue to screen. Maybe it's Optimus thinking it should switch to intel gpu when usage drops? Is there a way to force it to use nvidia gpu only? Anyone else on a more traditional setup seen this issue?
cyberbeing
2nd December 2014, 00:02
This is probably due to a different subtitle renderer, and so outside of the intended comparison purpose.
madVR output is correct, so you don't need to worry about that. I can reproduce this blurryness issue when using XySubFilter with MPDN. Though you have to keep in mind that the XySubFilter consumer implementation in MPDN is not fully completed.
I'd suspect it has something to do with how MPDN still requests subtitle bitmaps desktop resolution and then rescales to output resolution. Since the positioning seems slightly off with MPDN, I would speculate that either there is a texture resolution/positioning mismatch between the subtitle bitmaps the the video which results in a bilinear shift, or worse that MPDN may be downscaling the high resolution subtitle bitmaps to video resolution before upscaling the video. Either way, this would seem to be a MPDN bug.
http://screenshotcomparison.com/comparison/102493
Zachs
2nd December 2014, 00:28
madVR output is correct, so you don't need to worry about that. I can reproduce this blurryness issue when using XySubFilter with MPDN. Though you have to keep in mind that the XySubFilter consumer implementation in MPDN is not fully completed.
I'd suspect it has something to do with how MPDN still requests subtitle bitmaps desktop resolution and then rescales to output resolution. Since the positioning seems slightly off with MPDN, I would speculate that either there is a texture resolution/positioning mismatch between the subtitle bitmaps the the video which results in a bilinear shift, or worse that MPDN may be downscaling the high resolution subtitle bitmaps to video resolution before upscaling the video. Either way, this would seem to be a MPDN bug.
http://screenshotcomparison.com/comparison/102493
I'm aware of that as I've described in my earlier post. It scales down from desktop resolution to target size. Like i said this will change when i get some time to work on it further. It also currently only use bilinear to downscale. So you should expect only maximal quality when target size == desktop resolution.
Edit: what is the resolution of your desktop when you to the screenshot?
Anima123
2nd December 2014, 01:01
Power state switching shouldn't make a difference to smoothness of render queue isn't exhausted. It takes nothing at all to present from queue to screen. Maybe it's Optimus thinking it should switch to intel gpu when usage drops? Is there a way to force it to use nvidia gpu only? Anyone else on a more traditional setup seen this issue?
I was running MPDN with right click and chose the nVidia under 'Run with Graphics Processor' options. Does that mean the program still can get back to the integrated video card automatically?
If not, then there's something to do with the nVidia settings itself maybe. For my assumption, the nVidia 640M with my laptop should be powerful enough of handling SuperChromaRes + SuperRes for 1024x768 -> 1920x1080 upscaling fluently.
Zachs
2nd December 2014, 01:05
Is there anyway at all to disable igp in the BIOS? That way you can find out if optimus is the culprit.
Anima123
2nd December 2014, 01:09
I will try later.
FYI, here's the link of how to force nVidia in your own programs: http://stackoverflow.com/questions/15372931/force-system-with-nvidia-optimus-to-use-the-real-gpu-for-my-application
Hope it of any help.
Zachs
2nd December 2014, 01:43
Thanks for the link.
I don't know how this could be done with a .NET executable though - but I've asked the question on stackoverflow.
If someone knows the answer, please let me know and I'll add that into MPDN. I don't mind if it could be done as a postbuild step either.
EDIT: It seems that if you add MPDN in to your optimus profile, it'll use your NVIDIA GPU. Have you tried that yet?
EDIT2: Oh this is bad news for Optimus setup. It seems that the flaw is in its design itself. You see, NVIDIA GPU isn't connected directly to the display port. It writes its output to the Intel GPU and have it present instead. This is quite bad for smoothness of video (and I have experimented a lot with Intel GPUs) because Intel GPUs clock waaaaay down (i.e. too low for even copying frame buffers) when it's not loaded. Clocking it up causes quite a bit of delay (the Intel driver seems to be quite reluctant to ramp up its clock - it usually takes about 50ms of high workload before it will do that). This is detectable if MPDN writes straight to the Intel GPU but Optimus abstracts it away by telling MPDN everything is fine when it's not (i.e. waiting for Intel GPU to clock up). The problem in this case is, the clock rates on Intel GPU will fluctuate a lot because it's too lightly loaded when NVIDIA GPU is doing most of the work. To verify my theory, see if you can get GPU-Z to show the clock rates on both your NVIDIA GPU and the Intel one (Not sure if it'll show 2 distinct GPUs). If the Intel one shows its clock fluctuating or remains low, then that's where the problem is. Optimus driver should really force Intel GPU to run at max clock when user forces an app to use NVIDIA GPU, but I don't think they have implemented that (not even sure if Intel GPU drivers allow that).
EDIT3: This is why MPDN usually shows delayed frame when used on Intel GPUs for the first couple of frames.
Anime Viewer
2nd December 2014, 02:17
it's a bit unfair to compare the performance of NNEDI3 (which only does luma upscaling) to that of SuperChromaRes + SuperNEDIRes.
I'd been experimenting around with the SuperChromaRes -> NEDI ->SuperRes chain, but I'm guessing you might advocate SuperChromaRes -> SuperNEDIRes since that's less scripts to do the same thing. (Would that make a difference and be less taxing on a system, or would the results generally be the same.
I don't know if I'm noticing any difference between having SuerChromaRes as part of the chain or not part of the chain. If its working correctly what should I be looking for? A change in the lighting/brightness, shading of colors, ringing?
Zachs
2nd December 2014, 02:25
@Anime Viewer
BTW, are you sure your 640M can handle SuperChromaRes -> NEDI -> SuperRes?
My 560GTX took 24.5ms for 720x576 -> 1080p. That's not even fast enough for 50fps materials. I expect 1024x768 to be even more demanding.
Anima123
2nd December 2014, 02:26
Why does it only affect SuperChromaRes + SuperRes, instead of the NEDI + resizer I used before?
Zachs
2nd December 2014, 02:36
Perhaps the NVIDIA GPU is now taxed a lot more and running out of time to do that extra work to copy the frame buffer to the system memory to be accessed by Intel GPU, and then having to wait for that extra delay to have it presented etc. Unless NVIDIA engineers explain how they are doing that frame buffer copying part (e.g. whether it's fully parallel which I highly doubt), it'll just be speculation. The part of which it sends to the IGP frame buffer for presentation definitely isn't being measured by MPDN, so you may find that it's running out of resources without MPDN reporting so.
cyberbeing
2nd December 2014, 02:57
It also currently only use bilinear to downscale. So you should expect only maximal quality when target size == desktop resolution.
Edit: what is the resolution of your desktop when you to the screenshot?
Yes, my Desktop resolution for that comparison was 1920x1080, and the bitmaps XySubFilter was sending were also 1920x1080 (target size == desktop resolution). There should be no reason for blurriness or additional scaling in this instance, even with MPDN always requesting desktop size subtitle bitmaps. Since subtitle positioning was also slightly skewed, it would seem that MPDN must have applied an undesired bilinear shift to the subtitle bitmap for some reason.
Zachs
2nd December 2014, 03:08
Yes, my Desktop resolution for that comparison was 1920x1080, and the bitmaps XySubFilter was sending were also 1920x1080 (target size == desktop resolution). There should be no reason for blurriness or additional scaling in this instance, even with MPDN always requesting desktop size subtitle bitmaps.
Yeah exactly. In that case I'll need to find out what is going on.
MPDN draws the bitmaps to the screen in the most straight forward manner i.e using hardware filtering, after all processing e.g. RenderScript is done. Can you post a sample of the media file so I could find out what's wrong?
cyberbeing
2nd December 2014, 03:28
I think this issue may occur with all subtitles, but I'll send you the sample and also a XySubFilter build for dumping bitmaps+alpha in case you'd find it useful for debugging.
Anime Viewer
2nd December 2014, 03:45
@Anime Viewer
BTW, are you sure your 640M can handle SuperChromaRes -> NEDI -> SuperRes?
My 560GTX took 24.5ms for 720x576 -> 1080p. That's not even fast enough for 50fps materials. I expect 1024x768 to be even more demanding.
I have a 680M (GTX) as noted in my signature. Anima123 is the one with the 640M. I haven't noticed any problems playing videos with the SuerChromaRes->NEDI->SuperRes. I did notice (on one file I was testing) the render times were fluctuating from between ~18ms-~28ms, but surprisingly there didn't seem to be any playback problems during those 28ms times. SuperNEDIRes by itself (with all scalers set to Jic 6 taps) fluctuates between 16-24ms on a file I was testing recently.
(Edit: Watching the Railgun S intro to compare subtitles rendered by XySubFilter to cyberbeing's screen captures noticed Render under Max durations read 93+ms :confused: Clearly its not rendering at that speed (:sly: as far as my eyes tell me), so something is making the readings short circuit (the electricity of that intro?) :rolleyes: - not that I care since everything is running smoothly).
There should be no reason for blurriness or additional scaling in this instance, even with MPDN always requesting desktop size subtitle bitmaps.
(People encountering the blurring cyverbeing, Thunderbolt8, and Garteal?) Do you have ffdshow or SVP active when running MPDN? I remember seeing blurry subtitles back when I was testing those out, and I recall it disappearing when I had changed some settings in one or both of those. I eventually determined that I didn't see significant benefit to running with SVP, and it was always kicking the fan up more then I liked. As a result disabled both when it comes to playing videos in MPDN. If you have both or either of those programs running try with them disabled/shut off, and see if your subtitles clear up.
(BTW: All of the video I've tested with XYsubFilter has been clear. (Mostly 720 and 480 videos). What is the resolution of the videos people are seeing blurry subtitles with? I saw the Scientific Railgun screen shot(s), and if I'm reading that screen correctly it was 720p upscaled to 1080p, correct?)
Anima123
2nd December 2014, 03:58
Yes, I had the one with a 640M card in my laptop.
Just tested with SuperNEDIRes only, it'll do. I have to sacrifice something, in this case SuperChromaRes, to get visually pleasure.
NNEDI3 is totally unwatchable with that configuration due to the high resource demand.
Anime Viewer
2nd December 2014, 04:25
madVR output is correct, so you don't need to worry about that. I can reproduce this blurryness issue when using XySubFilter with MPDN. Though you have to keep in mind that the XySubFilter consumer implementation in MPDN is not fully completed.
I'd suspect it has something to do with how MPDN still requests subtitle bitmaps desktop resolution and then rescales to output resolution. Since the positioning seems slightly off with MPDN, I would speculate that either there is a texture resolution/positioning mismatch between the subtitle bitmaps the the video which results in a bilinear shift, or worse that MPDN may be downscaling the high resolution subtitle bitmaps to video resolution before upscaling the video. Either way, this would seem to be a MPDN bug.
http://screenshotcomparison.com/comparison/102493
Attached below is screen shots I took of UTW_Mazui Railgun S ep 03 720p upscaled to 1080p opening on my system with madVR (top image) and MPDN (bottom image).
Both are using XySubFilter. MPDN settings are Jinc 6-tap for all scalers (no anti-ringing checked), random dithering (default 2.0 setting), and SuperNEDIRes the only running script. madVR settings are chroma upscaling - mitchell (with anti-ringing), image upscaing - mitchell (ant-ringing and scale in linear light checked), and downscaling -mitchell (anti-rining and liner light checked), SM off, ordered dithering (colored noise and change dither every frame checked), no trade quality checked.
I can just make out a bit of alaising with madVR (could be the mitchell setting) while the MPDN looks smoother (I wouldn't call it blurred IMO). (Check out the bottom right leg of the k(s) and the w(s), or any of the letters with straight lines). (Edit: Tried with all madVR scaling set to Jinc (except for downscaler of course), unchecking anti-ringing and linear lights, but it still maintained the same amount of alaising to the subtitles at the top shown in the attachment).
Railgun S opening test (http://postimg.org/image/spd5yk5xn/full/)
(BTW: I think both players subtitles look good, and probably wouldn't notice the difference under normal conditions where video is playing, and eyes are more drawn to the action of the scenes then the quick karaoke animating and disappearing from the screen.)
Zachs
2nd December 2014, 04:36
That is what the others are calling blurriness with MPDN's XySubFilter.
Technically if the target size == desktop resolution, MPDN should not scale the subs at all, so it should appear all aliased if that's what XySubFilter has provided MPDN with.
EDIT: LOL. It might be a bug but I actually prefer MPDN's anti-aliased subs personally :)
EDIT2: Found the problem and fixed in next build.
cyberbeing
2nd December 2014, 05:08
Do you have ffdshow or SVP active when running MPDN?
No.
LOL. It might be a bug but I actually prefer MPDN's anti-aliased subs personally :)
Well you could certainly add an optional subtitle softening setting if you wanted to. In the past we were considering adding dynamic blur based on the scale factor so typesetting would blend better onto upscaled video with high resolution subtitles, but we never got around to it. This is mostly an issue with older scripts though. Nowadays, typesetters are more in the practice of of adding \blur to their subtitles which allows them to blend properly even when upscaled. XySubFilter does have a non-default "8x8 (bilinear)" subpixel positioning setting which will yield a softer appearance, but since not all edges require subpixel positioning the results can be rather inconsistent on dialog lines.
Found the problem and fixed in next build.
Out of curiosity, what did the problem end up being? [Edit: nevermind, I see you mentioned it in your PM]
Anime Viewer
2nd December 2014, 05:16
EDIT: LOL. It might be a bug but I actually prefer MPDN's anti-aliased subs personally :)
Me too, I like the smoother look that I see during the MPDN paused screen shot(s) I attached compared to the more jagged madVR look (http://postimg.org/image/spd5yk5xn/full/). Not that it matters now that its been patched. :rolleyes:
I will concur that cyberbeing's example with the subtitles of "sister's noise" lines look blurry in his/her example (http://screenshotcomparison.com/comparison/102493), but to me it doesn't look like mine were anywhere never that level of un-sharpness, so something else may have been a factor too. It also would probably be more noticeable the larger the screen the video is being watched on (ex: tv vs notebook screen).
Zachs
2nd December 2014, 05:31
Me too, I like the smoother look that I see during the MPDN paused screen shot(s) I attached compared to the more jagged madVR look (http://postimg.org/image/spd5yk5xn/full/). Not that it matters now that its been patched. :rolleyes:
I will concur that cyberbeing's example with the subtitles of "sister's noise" lines look blurry in his/her example (http://screenshotcomparison.com/comparison/102493), but to me it doesn't look like mine were anywhere never that level of un-sharpness, so something else may have been a factor too. It also would probably be more noticeable the larger the screen the video is being watched on (ex: tv vs notebook screen).
Don't worry, I kept that smoother version as an option since I prefer that too. I simply hate jagged lines and rather prefer it a bit softer to reduce distraction it creates when other parts of the video isn't as 'sharp'.
Edit: I think I know why you prefer cyberbeing's screenshot being less blurry -- perhaps it's because it hasn't got a background.
Anima123
2nd December 2014, 07:02
I had two findings for the new version related to SuperRes stuff.
1. Adding SuperChromaRes into the top of the script chain and then remove it, then the video became unwatchable due to lack of a plane of color like, all I saw is shadows of people;
2. When using SuperNEDIRes to playback a video, after scroll the video a few times, it can be very juggy to watch due to lots of dropped and delayed frames, while re-playback this video will get it back to normal.
Garteal
2nd December 2014, 08:55
Awesome. Great to see such fast debugging happening. I too like the "anti-aliased" subs and it is nice to have an option for it. Thanks Zachs.
1. Adding SuperChromaRes into the top of the script chain and then remove it, then the video became unwatchable due to lack of a plane of color like, all I saw is shadows of people;
It appears that the script chain does not "update" its settings if you make changes afterwards. Changing to another render script entirely and back to the script chain should fix it though for now.
2. When using SuperNEDIRes to playback a video, after scroll the video a few times, it can be very juggy to watch due to lots of dropped and delayed frames, while re-playback this video will get it back to normal.
I cannot reproduce this.
Shiandow
2nd December 2014, 09:11
EDIT: LOL. It might be a bug but I actually prefer MPDN's anti-aliased subs personally :)
EDIT2: Found the problem and fixed in next build.
FWIW XySubFilter has a setting "SubPixel-Position" under Settings->More; changing this to "8x8 (bilinear)" results in smoother subtitles like the one MPDN (accidentally) showed.
I'd been experimenting around with the SuperChromaRes -> NEDI ->SuperRes chain, but I'm guessing you might advocate SuperChromaRes -> SuperNEDIRes since that's less scripts to do the same thing. (Would that make a difference and be less taxing on a system, or would the results generally be the same.
I don't know if I'm noticing any difference between having SuerChromaRes as part of the chain or not part of the chain. If its working correctly what should I be looking for? A change in the lighting/brightness, shading of colors, ringing?
Yeah it's probably better to use SuperNEDIRes instead of NEDI ->SuperRes, in fact in that last configuration SuperRes won't do anything unless the image needs to be scaled by a factor > 2.
Using SuperChromaRes should result in slightly more vibrant colours, it should also prevent chroma bleed which is usually visible as a dark outline, especially with a red object on a white background.
Zachs
2nd December 2014, 13:01
I had two findings for the new version related to SuperRes stuff.
1. Adding SuperChromaRes into the top of the script chain and then remove it, then the video became unwatchable due to lack of a plane of color like, all I saw is shadows of people;
2. When using SuperNEDIRes to playback a video, after scroll the video a few times, it can be very juggy to watch due to lots of dropped and delayed frames, while re-playback this video will get it back to normal.
#1 should now be fixed with latest GitHub commit.
#2 Can't reproduce here either.
romulous
2nd December 2014, 13:18
This is really shaping up very nicely Zachs (and to Shiandow as well) - good work :) Though I don't really have an understanding of the render scripts (code wise), I do like the UI when it comes to selecting them for use (though instead of a right pointing arrow to signify the currently active script, I would personally prefer to see a tick mark, just to make it a bit more obvious).
Just wondering if the following was intended or not - if you have MPDN fullscreen and go File->Open, and open a new video, MPDN jumps back to windowed mode (I would have expected that it would have stayed in fullscreen mode).
romulous
Zachs
2nd December 2014, 13:23
Just wondering if the following was intended or not - if you have MPDN fullscreen and go File->Open, and open a new video, MPDN jumps back to windowed mode (I would have expected that it would have stayed in fullscreen mode).
romulous
That was done on purpose, since it resizes to video size too if it's not in full screen mode. I should probably add an option to prevent that.
romulous
2nd December 2014, 13:58
I should probably add an option to prevent that.
I think that would be nice :)
romulous
groen
2nd December 2014, 15:30
I just tried this player out and looks good.
Some features that i found missing is keyboard shortcuts. I am sure there are more pressing issues at this point in development. Just want to request that.
The main ones i like to use is the ctrl+1 -3 to change the size of the player. But not critical.
The other "missing" feature is the ability to set file type associations from within the options.
Also the lack of player controls in fullscreen including volume indicator and I would prefer a thinner seek bar but thats just my preference. ill give this a try and see if i notice any issues.
Thanks for developing this.
cyberbeing
2nd December 2014, 21:41
Zachs, could you add a window resize/zoom setting to the next version, and add it to the context menu similar to MPC-HC?
Improving the resizing behavior when dragging the edges or corners of the video window when "Lock to Video Aspect Ratio" is enabled would also be welcome.
Anima123
2nd December 2014, 22:41
"Touch window from outside"/"Touch window from inside" options from mpc-hc would also be very useful sometimes.
Zachs
4th December 2014, 07:58
Guys,
Please redownload v2.12.1 if you have downloaded before this post as I botched up the release.
cyberbeing
4th December 2014, 09:52
MPDN 2.12.1 introduced a new bug with the sample I sent you.
The top 1px of the subtitle frame is being displayed as the bottom 1px, and the entire frame is shifted diagonally up-left.
http://screenshotcomparison.com/comparison/102796
Zachs
4th December 2014, 11:52
I can't replicate this issue on nVidia and Intel GPUs. I have no access to AMD GPUs at the moment. Are you using an AMD card?
cyberbeing
4th December 2014, 12:43
I'm using an NVIDIA GTX 770.
Zachs
4th December 2014, 12:45
Hmm I did manage to replicate the issue of it shifting one pixel -1,-1, but it doesn't overflow.
I'll do another quick build to see if it resolves the problem.
cyberbeing
4th December 2014, 12:57
I just discovered it only seems to overflow in v2.12.1 with DirectX 10.1 selected as the Presentation API. This overflow issue did not occur in v2.12.0.
Though with both DirectX 10.1 & 9Ex the subtitles are shifted, and even seem to shake on that sample when viewed at 1280x720 on a 1920x1080 display. No shake when viewed at desktop size.
It appears this shaking issue isn't new and also exists in 2.11 & 2.10 as well.
Zachs
4th December 2014, 13:01
Ah ok, replicated the issue.
Zachs
5th December 2014, 13:53
Issues reported by cyberbeing have been fixed with v2.12.2.
Anime Viewer
5th December 2014, 14:46
Issues reported by cyberbeing have been fixed with v2.12.2.
I installed 2.12.2 (leaving the user configuration files the same, so the settings carried over from one version to the other), and noticed that double clicking (or pressing the configuration button) on one of the already present scripts in the carried over script chain did the hidden dialogue box again (previously fixed with version 2.9.0 - this time for error messages since that is what is generated when clicking on scripts that don't have configuration settings - like SuperChromaRes and SuperNEDIRes). Interestingly adding a new item to the script chain (regardless of keeping it or deleting it doesn't matter) made the dialogue boxes appear correctly in the foreground. Only appeared to happen with chain items, and once its fixed (by adding sometime to the chain) it can no longer be replicated - since its fixed again.
Expanding on the error dialogue boxes. They only seem to appear when clicking on the scripts when inside the script chain window. They don't occur when clicking on those same scripts in the Video Render - Render Script screen window (where only one script can be used at a time).
Yeah it's probably better to use SuperNEDIRes instead of NEDI ->SuperRes, in fact in that last configuration SuperRes won't do anything unless the image needs to be scaled by a factor > 2.
Using SuperChromaRes should result in slightly more vibrant colours, it should also prevent chroma bleed which is usually visible as a dark outline, especially with a red object on a white background.
Since SuperNEDIRes combines NEDI with SuperRes shouldn't clicking on it to launch a configuration window launch an configuration for Use NEDI image doubling even when not upscaling like clicking on NEDI does when clicking on it?
Shiandow
5th December 2014, 15:17
Since SuperNEDIRes combines NEDI with SuperRes shouldn't clicking on it to launch a configuration window launch an configuration for Use NEDI image doubling even when not upscaling like clicking on NEDI does when clicking on it?
Well, SuperRes doesn't make sense when not upscaling so there's not much need for that option. I could add it but then it shouldn't ever be used so I don't see the point.
Anime Viewer
5th December 2014, 22:23
Well, SuperRes doesn't make sense when not upscaling so there's not much need for that option. I could add it but then it shouldn't ever be used so I don't see the point.
I can understand the SuperRes not being used when not upscaling. I was thinking more along the lines of the NEDI part of the SuperNEDIRes. In the linked image it has the same pictures on top and bottom. The top one is using SuperChromaRes -> SuperNEDIRes and the bottom with only NEDI. With the top one NEDI will not be active (producing more of a aliasing/noisy look) but with vibrant (ex: carpet? grass?) colors (the SuperChromaRes?) while the bottom one has only NEDI active. (Smoother lines -some might say blurrier look- as seen by the lines of characters arms/legs, bill of Chopper's hat, etc on the bottom picture). One work around to get the SuperChromaRes +NEDI+SuperRes is to break them into separate parts of the chain, but like you said previously that may be less efficient.
An odd thing is switching between the two (Script Chain -SuperChromaRes +NEDI+SuperRes-of and NEDI alone) and then clicking apply. It doesn't always appear to active/deactivate the effects in the script chain after clicking the apply button...
http://postimg.org/image/txiasyexh/
Edit: Is SuperRes causing the increased aliasing in that top image? Flipping between different scripts seems to show that aliasing occurring if SuperRes (by itself/no chain), SuperNEDIRes (by itself/no chain), or SuperNEDIRes (inside a chain) is selected, but it doesn't occur if the chain is SuperChromaRes+NEDI+SuperRes, or if any of the other scripts are chosen. I'm a little confused why its not occurring in the NEDI+SuperRes chain, but it does occur in all the other configurations that have SuperRes as a part of them. :confused:
Also odd...customer render script chain (advanced) with nothing configured/set seems to produce a brighter pictures than all other Render Scripts when selected...
Shiandow
5th December 2014, 22:57
I can understand the SuperRes not being used when not upscaling. I was thinking more along the lines of the NEDI part of the SuperNEDIRes. In the linked image it has the same pictures on top and bottom. The top one is using SuperChromaRes -> SuperNEDIRes and the bottom with only NEDI. With the top one NEDI will not be active (producing more of a aliasing/noisy look) but with vibrant (ex: carpet? grass?) colors (the SuperChromaRes?) while the bottom one has only NEDI active. (Smoother lines -some might say blurrier look- as seen by the lines of characters arms/legs, bill of Chopper's hat, etc on the bottom picture). One work around to get the SuperChromaRes +NEDI+SuperRes is to break them into separate parts of the chain, but like you said previously that may be less efficient.
An odd thing is switching between the two (Script Chain -SuperChromaRes +NEDI+SuperRes-of and NEDI alone) and then clicking apply. It doesn't always appear to active/deactivate the effects in the script chain after clicking the apply button...
http://postimg.org/image/txiasyexh/
Edit: Is SuperRes causing the increased aliasing in that top image? Flipping between different scripts seems to show that aliasing occurring if SuperRes (by itself/no chain), SuperNEDIRes (by itself/no chain), or SuperNEDIRes (inside a chain) is selected, but it doesn't occur if the chain is SuperChromaRes+NEDI+SuperRes, or if any of the other scripts are chosen. I'm a little confused why its not occurring in the NEDI+SuperRes chain, but it does occur in all the other configurations that have SuperRes as a part of them. :confused:
Also odd...customer render script chain (advanced) with nothing configured/set seems to produce a brighter pictures than all other Render Scripts when selected...
I'm noticing some odd behaviour in the new v2.12.2, did you use that version? And if so could you try v2.12.0?
Anime Viewer
5th December 2014, 23:10
I'm noticing some odd behaviour in the new v2.12.2, did you use that version? And if so could you try v2.12.0?
I was indeed using 2.12.2, and I've now gone back to 2.12.0. You are right that the oddities (aliasing, applies not working) appear to be tied to 2.12.2 in some way. The aliasing (if still present - hard to tell) is far less noticeable in 2.12.0, and the apply button applies the effects right away in 2.12.0 unlike 2.12.2.
Zachs
5th December 2014, 23:59
Does 2.12.1 exhibit the same odd behaviour?
Shiandow
6th December 2014, 00:08
Does 2.12.1 exhibit the same odd behaviour?
As far as I can tell 2.12.1 seems to be behaving correctly (apart from shifting the image 1 pixel).
Zachs
6th December 2014, 01:09
I built it on a different machine and I'm guessing the native cpp files which aren't included in the build script are probably out of date.
I don't have my usual build pc with me at the moment but I'll try to find out if I could do a complete build with this pc.
cyberbeing
6th December 2014, 01:36
Another issue I'm noticing, is MPDN has dither noise on solid black R0-G0-B0 backgrounds.
I seem to remember madVR came up with a fix for this, so maybe you could do something similar.
Zachs
6th December 2014, 02:09
Random dithering with high enough strength (even the default 2.0) is supposed to do that.
Ordered dithering won't.
Zachs
6th December 2014, 03:12
v2.12.3 should correct the oddities in v2.12.2.
Shiandow
6th December 2014, 03:23
Yep, v2.12.3 seems to work correctly.
Zachs
6th December 2014, 03:36
@Shiandow
You won't believe what caused it!
I must've accidentally hit a numeric key and added an extra number in one of the constants in a vertex buffer. It was quite late so I didn't go through my code changes when I checked in and did a build.
Luckily that was easy enough to spot with source control!
cyberbeing
6th December 2014, 03:44
Random dithering with high enough strength (even the default 2.0) is supposed to do that.
Ordered dithering won't.
I was seeing 0R-1G-0B noise on Black with Ordered dithering as well, it was just much less than Random dither.
Here is a levels-enhanced example of the 0R-1G-0B pattern MPDN Ordered dithering produces on flat 0R-0G-0B black backgrounds:
http://i.imgbox.com/0UVYsGy9.png
madVR doesn't produce any dither noise on black, except with Colored Random Dither.
Using Ordered dither, Error Diffusion, or Mono Random dither, a pure black video will remain black.
Anime Viewer
6th December 2014, 04:11
Another issue I'm noticing, is MPDN has dither noise on solid black R0-G0-B0 backgrounds.
I seem to remember madVR came up with a fix for this, so maybe you could do something similar.
Random dithering with high enough strength (even the default 2.0) is supposed to do that.
Ordered dithering won't.
I was seeing 0R-1G-0B noise on Black with Ordered dithering as well, it was just much less than Random dither.
madVR doesn't have this issue, except with Colored Random Dither.
Using Ordered dither, Error Diffusion, or Mono Random dither a pure black video will remain black.
I thought it looked a bit noiser than I remember too. There is a very noticable pattern/noise to black objects went using ordered dithering, and to a slightly lesser degree random dithering. I took screen shots, saved a comparison picture in mspaint, but the minute I upload it to an image host-er or try to upload it here as an attachment all the sudden it becomes stripped of its dithering. :confused:
I also compared it to madVR, and noticed the two appeared quite different looking even though they should be using the same dithering effects.
By thinking about the differences between madVR and MPDN I reasoned that having render scripts running might be having an effect on the dithering pattern(s)/noise shown in video. Sure enough testing proved that to be true for me. Cyberbeing try changing your scripts to none, and see if the patterns/noise disappears. With the current MPDN/scripts it looks like a trade off either scripts or dithering. Since my screen(s) looks good at 8-bits channel with no dithering that is what I'm going to go with for now as opposed to using a dithering method, but loosing script functions.
Edit: For reference I tested with 2.12.0 and 2.12.3 and it exists in both, so it isn't related just to version 2.12.3
huhn
6th December 2014, 04:46
I thought it looked a bit noiser than I remember too. There is a very noticable pattern/noise to black objects went using ordered dithering, and to a slightly lesser degree random dithering. I took screen shots, saved a comparison picture in mspaint, but the minute I upload it to an image host-er or try to upload it here as an attachment all the sudden it becomes stripped of its dithering. :confused:
if you use print screen and not a screenshoot function this can't be happening. and of cause save them as lossless PNG.
I also compared it to madVR, and noticed the two appeared quite different looking even though they should be using the same dithering effects.
AFAIK madshi has tweaked the dithering algorithm so they shouldn't look the same.
and make sure your laptop panel is not a dithering TN panel.
dithering TN panel are still the best panel for gaming so there is a good reason to use such panel for a gaming oriented laptop.
cyberbeing
6th December 2014, 05:01
Cyberbeing try changing your scripts to none, and see if the patterns/noise disappears.
FWIW, I've not experimented with any RenderScripts in MPDN since it's not my day-to-day player for actually watching stuff.
I've only been using MPDN for brief XySubFilter testing at the moment, so unless stated otherwise I'm likely using MPDN defaults.
fairchild
6th December 2014, 06:59
I was seeing 0R-1G-0B noise on Black with Ordered dithering as well, it was just much less than Random dither.
Here is a levels-enhanced example of the 0R-1G-0B pattern MPDN Ordered dithering produces on flat 0R-0G-0B black backgrounds:
http://i.imgbox.com/0UVYsGy9.png
madVR doesn't produce any dither noise on black, except with Colored Random Dither.
Using Ordered dither, Error Diffusion, or Mono Random dither, a pure black video will remain black.
I noticed this as well, black level is elevated at pure black with the patterns I use to test this. It's very easy to see on my plasma. Only way I can get MPDN to not elevate the black at pure black level and to match MadVR or even EVR.CP is to totally disable dithering in MPDN.
Zachs
6th December 2014, 08:10
I'll take a look at this. Which yuv colorimetric was active at the time btw? Or does it affect both 601 & 709?
Anima123
6th December 2014, 22:18
Perhaps the NVIDIA GPU is now taxed a lot more and running out of time to do that extra work to copy the frame buffer to the system memory to be accessed by Intel GPU, and then having to wait for that extra delay to have it presented etc. Unless NVIDIA engineers explain how they are doing that frame buffer copying part (e.g. whether it's fully parallel which I highly doubt), it'll just be speculation. The part of which it sends to the IGP frame buffer for presentation definitely isn't being measured by MPDN, so you may find that it's running out of resources without MPDN reporting so.
Unchecking the 'Use new windowed mode rendering path when possible' option help with rendering time detection, it seems. Now MPDN can report rendering time longer than the framerate time of played video file when using SuperNEDIRes only.
It seems there's something to do with the new rendering path in terms of rendering time calculation.
fairchild
7th December 2014, 02:15
I'll take a look at this. Which yuv colorimetric was active at the time btw? Or does it affect both 601 & 709?
Mine is set to BT.709 but it shouldn't matter since the file itself is encoded as such. I don't have a BT.601 black clipping pattern to test the other older color standard.
Zachs
7th December 2014, 03:19
OK found and fixed the bugs (both random and ordered dithering).
Well, random is really just due to the strength trackbar in options not going down low enough (a value of 0.5 is equivalent to ordered dithering's strength).
Anime Viewer
7th December 2014, 03:20
if you use print screen and not a screenshoot function this can't be happening. and of cause save them as lossless PNG.
I'm not understanding your sentence are you saying to use, or not use print screen? I used print screen to capture the shots, and I did save it as a PNG image. Still it strips out the dithering even when I add it as an attachment on this board (which keeps the extension if nothing else).
Regardless I probably will not worry about posting the examples since everyone appears to be able to replicate the dithering effects...
Edit: and because Zachs posted right before my post that he fixed the bugs. :o
cyberbeing
7th December 2014, 03:51
I'll take a look at this. Which yuv colorimetric was active at the time btw? Or does it affect both 601 & 709?
BT.709 was active, since I was just testing that same 720p sample I sent before. Same issue occurs when I force MPDN to BT.601 on that sample.
OK found and fixed the bugs (both random and ordered dithering).
I can confirm I'm no longer seeing the issue with MPDN 2.12.4
Zachs
7th December 2014, 03:55
Yes. Fixed in v2.12.4.
Anime Viewer
7th December 2014, 03:57
BT.709 was active, since I was just testing that same 720p sample I sent before. Same issue occurs when I force MPDN to BT.601 on that sample.
Good to hear.
Did you test the new 2.12.4 version, and if you chose random dithering did you try the 0.5 value Zachs referenced?
Edit: never mind I see you edited your previous post to report that you no longer see the problem.
OK found and fixed the bugs (both random and ordered dithering).
I can confirm that ordered looks much better on my system now. I don't see the distracting diagonal lines that were appearing in previous versions when using ordered dithering.
cyberbeing
7th December 2014, 03:59
It's fixed. I just overlooked Zach's bugfix post and the new MPDN 2.12.4 build when I originally posted.
Anima123
7th December 2014, 07:11
Shiandow, could you please double-check your implementation of the SuperRes serie algorithms? I still believe there's something wrong within it, the symptom is that rendering time will increase gradually until my GPU (nVidia 640M) cannot handle it (noticed by a lot of dropped frames).
Maybe it is due to my weak GPU that reveals some potential bugs, while for a stronger GPU, it will always be enough power left after playback of a 2 hours movie.
Edit: To be more specific, after more testing, it was found that the behavior of SuperChromaRes is quite stable, and does not suffer from rendering time increase at all.
Actually, it was SuperNEDIRes I was talking about that suffers from gradually increasing of rendering time.
romulous
7th December 2014, 07:23
I have a test file (download link below) that instantly crashes MPDN on my system (no render scripts in use):
https://mega.co.nz/#!YMAwwTja!blxHH99-7dEPBTxncUUw4SwULDZqUEEYjU7Y80C46DI
It's an 800MB ProRes encoded game trailer. So I just go file->open, select the file and click ok, and a couple of seconds later, MPDN crashes.
romulous
Zachs
7th December 2014, 08:38
When you say crash what exactly do you mean?
After a few seconds of playback or did it not play at all?
Which edition of MPDN?
romulous
7th December 2014, 08:56
Both 32bit and 64bit editions crash, and no playback, no (file->open, immediate crash). It just pops up the standard Windows 'program has stopped working' dialog, no information at all otherwise.
romulous
Zachs
7th December 2014, 09:54
Well I just downloaded the file and played it from start to end with absolutely no problem.
When you get a hard crash like that, it's always because of a crash in unmanaged code - e.g. a DirectShow filter.
Are you sure it is not due to one of your DirectShow filters crashing?
romulous
7th December 2014, 10:39
I suppose it could be - but MPDN uses LAV, right? My main player uses that same LAV installation and works fine.
Zachs
7th December 2014, 10:49
You haven't added any additional DirectShow filters?
romulous
7th December 2014, 11:47
Nope, none at all. Not even using any render scripts.
Zachs
7th December 2014, 11:54
What about audio renderer? Using the default directsound?
I'm out of ideas, seeing as I can play it without any troubles. I have yet to encounter a file that would hard crash MPDN.
romulous
7th December 2014, 12:31
Yep, default audio renderer. I have no ideas either, it is very strange.
Zachs
7th December 2014, 12:36
Perhaps try updating your LAV filters to the latest version?
Does it only crash with this particular file?
romulous
7th December 2014, 13:28
Already using the latest LAV (just set to software decoding, no hardware acceleration). This was the first file that MPDN crashed on that I had found - but I have since found another that causes problems. It's not the same crash, but MPDN hangs instead:
http://forum.doom9.org/showpost.php?p=1701865&postcount=701
For what it is worth, here is the report from Windows Action Center (for the crash, not the hang):
Problem signature
Problem Event Name: APPCRASH
Application Name: MediaPlayerDotNet.exe
Application Version: 2.12.4.2808
Application Timestamp: 5483baf5
Fault Module Name: VideoFrameServicesNative.dll
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 5428e6cc
Exception Code: c000001d
Exception Offset: 00000000000014d7
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 3081
Additional Information 1: 237f
Additional Information 2: 237f43c2238b444448f2ca41ae9944ef
Additional Information 3: 5b72
Additional Information 4: 5b7284c99f1b466f036e33b40ef09d7f
Anime Viewer
7th December 2014, 14:21
I have a test file (download link below) that instantly crashes MPDN on my system (no render scripts in use):
https://mega.co.nz/#!YMAwwTja!blxHH99-7dEPBTxncUUw4SwULDZqUEEYjU7Y80C46DI
It's an 800MB ProRes encoded game trailer. So I just go file->open, select the file and click ok, and a couple of seconds later, MPDN crashes.
romulous
The game trailer plays fine on my system using MPDN.
Already using the latest LAV (just set to software decoding, no hardware acceleration). This was the first file that MPDN crashed on that I had found - but I have since found another that causes problems. It's not the same crash, but MPDN hangs instead:
http://forum.doom9.org/showpost.php?p=1701865&postcount=701
Your 55mb file crashes on my system too, but not just with MPDN, but other video players as well (MPC-HC). MPC-HC generates a crash dump report. You should open it with MPC-HC and submit the crash dump that way you have another means of researching the crash to find out what is causing it.
Shiandow
7th December 2014, 17:26
Shiandow, could you please double-check your implementation of the SuperRes serie algorithms? I still believe there's something wrong within it, the symptom is that rendering time will increase gradually until my GPU (nVidia 640M) cannot handle it (noticed by a lot of dropped frames).
Maybe it is due to my weak GPU that reveals some potential bugs, while for a stronger GPU, it will always be enough power left after playback of a 2 hours movie.
Edit: To be more specific, after more testing, it was found that the behavior of SuperChromaRes is quite stable, and does not suffer from rendering time increase at all.
Actually, it was SuperNEDIRes I was talking about that suffers from gradually increasing of rendering time.
That's odd. I haven't noticed anything like that. Could you try running DebugView (http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx) and see if that turns up anything interesting?
Anima123
7th December 2014, 18:26
BTW, I was running 64-bit MPDN, can DebugView handle 64-bit too?
Edit: Please check the dropbox log files: https://www.dropbox.com/s/uhtl4sk1j3pkfbw/MPDN_SuperNEDIRes.LOG?dl=0
Shiandow
7th December 2014, 20:32
Well those "Frame dropped" errors are definitely from MPDN so it is logging something but unfortunately it's not logging much else. Whatever is happening doesn't seem to be causing errors, which also means that it's unlikely to be a mistake in SuperNEDIRes but it could be a mistake in some of the other renderscript code. Or it could be related to the hardware, especially since SuperNEDIRes is the most demanding of all SuperRes scripts. Any chance that the GPU is getting hot or running out of memory?
Anima123
7th December 2014, 21:06
That has been into my consideration, util I found using SuperChromaRes when watching 1080p videos also demanding, the fan is more active than using SuperNEDIRes, yet without such problems.
It seems to me, that the implementation of SuperNEDIRes seems to suffer from some kind of resource leak or something else similar.
I have to disagree with you on the hardware problem, since SuperNEDIRes works just fine in the beginning, even it's demanding, and as a comparison, SuperChromaRes works steady like a charm.
I will try SuperRes later to see if it has similar behavior as SuperNEDIRes.
Edit: Shiandow, once you have idea on debugging further with this problem, please don't hesitate to let me know.
Shiandow
7th December 2014, 21:38
Edit: Shiandow, once you have idea on debugging further with this problem, please don't hesitate to let me know.
Well, you could run some utility like GPU-Z to check if anything weird happens to GPU usage / GPU memory usage or anything else. And maybe check CPU usage / RAM usage as well for good measure. That should at least give a rough idea of where the problem is. But if those are all stable then there's not much else I can think of, unless someone figures out a way to reproduce the problem.
Anima123
7th December 2014, 23:21
Just tried with GPU-Z, nothing peculiar found. The 640M has 2GB memory, only 400M or so used by MPDN, and the GPU load was about 64% with some kind of fluctuations, temperature around 65 degrees, all seems normal.
Anyone else experienced similar phenomenon?
Zachs
7th December 2014, 23:34
Problem signature
Problem Event Name: APPCRASH
Application Name: MediaPlayerDotNet.exe
Application Version: 2.12.4.2808
Application Timestamp: 5483baf5
Fault Module Name: VideoFrameServicesNative.dll
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 5428e6cc
Exception Code: c000001d
Exception Offset: 00000000000014d7
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 3081
Additional Information 1: 237f
Additional Information 2: 237f43c2238b444448f2ca41ae9944ef
Additional Information 3: 5b72
Additional Information 4: 5b7284c99f1b466f036e33b40ef09d7f
Exception code c000001d is caused by an attempt to execute instruction that is not supported by your CPU (or it could be simply bad opcode).
This could be due to a couple of things: corrupt DLL file (VideoFrameServicesNative.dll) or your CPU indeed doesn't support an asm instruction I used.
So this begs the question: What CPU are you using?
In the meantime, try redownloading MPDN and verify against its corresponding MD5.
EDIT: The faulting address isn't even an SSE2 instruction - it's a simple xor eax,eax!
Zachs
7th December 2014, 23:36
Just tried with GPU-Z, nothing peculiar found. The 640M has 2GB memory, only 400M or so used by MPDN, and the GPU load was about 64% with some kind of fluctuations, temperature around 65 degrees, all seems normal.
Anyone else experienced similar phenomenon?
This is really odd. Perhaps try disabling NVIDIA GPU and run just with the IGP to see if the problem persists? That will rule out NVIDIA driver problems. I know it'll be slow but you should at least get relatively consistent render times.
Anima123
8th December 2014, 06:39
Zachs, you're right about it. After revert to the vendor's video driver, instead of the nVidia's latest, all seems right.
Sorry for the false alarm.
romulous
8th December 2014, 09:40
So this begs the question: What CPU are you using?
It's an original Intel Q6600 (quad core).
In the meantime, try redownloading MPDN and verify against its corresponding MD5.
I shall download again just to be sure, but the archiver threw no errors when opening the zip files.
romulous
8th December 2014, 10:06
Ok, re-downloaded, verified the md5, but no change. No idea why it only appears to crash on my system :(
ehat
Zachs
8th December 2014, 10:17
That's just really odd. The assembly instruction that caused it to crash was nothing special too! Xor eax,eax is as old as it gets and runs on 80386!
Anyone else has a core 2 cpu of that generation and face the same problem?
EDIT: MD5 of VideoFrameServicesNative.dll
b2bb9d95c4f685f3251574b24c0a2d4c
Zachs
8th December 2014, 10:33
Ah ha! Found the problem.
I have inadvertently used an SSE4.1 instruction! :eek:
BTW, the crash info you gave is for 64-bit edition. I kept thinking it was for 32-bit.
romulous
8th December 2014, 11:13
Ah, I wasn't sure what edition it was that I copied that report from to be honest. Both 32bit and 64bit had crashed, and I simply opened up the latest report in Control Panel. Good to hear you tracked down the problem though :)
Zachs
8th December 2014, 11:31
Ah, I wasn't sure what edition it was that I copied that report from to be honest. Both 32bit and 64bit had crashed, and I simply opened up the latest report in Control Panel. Good to hear you tracked down the problem though :)
...and fixed in 2.12.5. :)
romulous
8th December 2014, 11:53
...and fixed in 2.12.5. :)
Can confirm that MPDN does not crash now. After all that - performance on my system with that clip and MPDN is awful! There are so many dropped frames, MPDN reports a *** after the number! Sigh - if it isn't one thing, it is another (my main player uses the exact same LAV install with madVR, and not a single dropped frame unless I enter FSE with madVR). Oh well, the crash is gone, that is the main thing.
Zachs
8th December 2014, 11:59
What's your GPU and CPU usage like?
Edit: this clip can't be decoded on the GPU (tried both cuvid and quicksync) and MPDN doesn't support dxva so that may explain the difference.
romulous
8th December 2014, 12:12
Overall CPU usage is between 45% to 50%. GPU usage:
http://i.imgur.com/5cNdF7t.gif
Before this, I had not touched the MPDN defaults - so no renderscripts, and everything was set to whatever the default was (softcubic I think). For this test, I disabled dithering, and set everything to bilinear. Didn't seem to make any difference. Even resizing MPDN down to about 320x240 does not help - it is a slideshow either way.
romulous
Edit: Even enabling hardware acceleration in LAV Video does not help.
Zachs
8th December 2014, 12:18
Try playing back on your main player with dxva disabled and you'll probably get the same stats.
BTW anyone knows why this clip causes LAV to use avcodec instead of cuvid or quicksync? It's a P010 clip so that may be the reason but can dxva decode it?
romulous
8th December 2014, 12:36
Nope, main player works fine with LAV set to software decoding (which is how I run normally). One single dropped frame - and that was caused when I went from windowed to fullscreen mode. It's purely MPDN only I'm afraid.
Edit: Had a theory it may have been audio related, as my main player was not using LAV Audio (was using LAV Splitter, LAV Video and madVR). So told it to use LAV Audio as well - no change, still works perfectly there. Just don't understand why MPDN set to bilinear for everything can't even handle it at ultra low window size, yet I can use madVR at fullscreen on my main player with algorithms that take considerably more power (such as Lanczos and Jinc) with zero problems.
Zachs
8th December 2014, 12:47
I don't think this has anything to do with GPU.
Try disabling p010 & p016 outputs on LAV video decoder. See if it makes any difference.
romulous
8th December 2014, 13:27
Yes, that fixed it. So that begs the question - why does having those checked not cause problems for my main player, but does for MPDN?
Asmodian
8th December 2014, 20:11
BTW anyone knows why this clip causes LAV to use avcodec instead of cuvid or quicksync? It's a P010 clip so that may be the reason but can dxva decode it?
None of the hardware decoders support anything other than 8-bit. No DXVA for P010.
Yes, that fixed it. So that begs the question - why does having those checked not cause problems for my main player, but does for MPDN?
Could it be GPU memory related? I am not sure what the GPU memory footprint of MPDN is but running out of memory can cause terrible performance.
Zachs
8th December 2014, 22:28
Yes, that fixed it. So that begs the question - why does having those checked not cause problems for my main player, but does for MPDN?
Well, that narrows it down to the P010 / P016 code branch, which is good. What is your CPU usage like when you uncheck those boxes?
pirlouy
8th December 2014, 23:53
@Zachs: I see you are interested in image improvement. Are you also interested in motion improvement ? For example, Madshi has created an algorithm to avoid 3:2 pulldown. In general I don't see differences between bilinear and Jinc, but I really see a difference between 3:2 pulldown and Madshi excellent smooth motion.
I wonder if you also had an algorithm in mind for this problem. FYI, I can't change refresh rate (60Hz).
Zachs
9th December 2014, 00:48
The blend version of FRC isn't hard to implement (MPDN has a render queue that can quite easily enable this), just haven't got around to implementing it. (My TV does 23.976Hz natively so that's why I haven't made it a top priority)
Zachs
9th December 2014, 06:14
Yes, that fixed it. So that begs the question - why does having those checked not cause problems for my main player, but does for MPDN?
Well, P210 format isn't supported by MPDN natively (yet).
Like in my initial suspicion, the high CPU usage isn't in MPDN. It's because P210 needs to be converted to P016 first before MPDN can accept it. I suspect LAV is more efficient in converting P210 to NV12 / YV12.
I probably mentioned this before but I'll say it again, I'll implement the various input formats when I run out of pressing issues to fix and higher priority stuff to implement. There just isn't a lot of media with those input formats out there that is worth investing my time into just yet.
romulous
9th December 2014, 09:10
I probably mentioned this before but I'll say it again, I'll implement the various input formats when I run out of pressing issues to fix and higher priority stuff to implement. There just isn't a lot of media with those input formats out there that is worth investing my time into just yet.
Ah, ok - future player improvement. Gotcha.
Zachs
9th December 2014, 09:29
Yes. You could see from the OP MPDN only supports yv12 nv12 p010 & p016 natively.
BTW what percentage would you say your clips are made up of non yuv 4:2:0 formats?
romulous
9th December 2014, 10:03
Yes. You could see from the OP MPDN only supports yv12 nv12 p010 & p016 natively.
Ah, no idea what they even are.
BTW what percentage would you say your clips are made up of non yuv 4:2:0 formats?
I have no idea, I have seen references to 4:2:0 but as with po10 and po16, have no idea what it is.
Zachs
9th December 2014, 10:14
BTW does anyone know where I could find test clips of the various formats?
huhn
9th December 2014, 10:18
nv12/yv12 = 8bit 4:2:0
p010 = 10 bit 4:2:0
p016= 16 bit 4:2:0
p210= 10 bit 4:2:2
cyberbeing
9th December 2014, 10:42
You can find various codec samples at:
http://samples.mplayerhq.hu/V-codecs/
Though if you just force LAV Video to output the color format you want to test (disable all others), that should already cover most anything you'd want to support.
Zachs
9th December 2014, 10:53
Ah thanks! Didn't think of that lol
Zachs
10th December 2014, 23:49
Does anyone happen to know the matrix for RGB to YUV conversion for both PC.601 and PC.709?
patul
11th December 2014, 00:19
Does anyone happen to know the matrix for RGB to YUV conversion for both PC.601 and PC.709?
http://en.wikipedia.org/wiki/YUV
http://www.equasys.de/colorconversion.html
Shiandow
11th December 2014, 00:33
Does anyone happen to know the matrix for RGB to YUV conversion for both PC.601 and PC.709?
The exact matrices are given by the following:
RGB -> YUV:
{{Kr , 1-Kb-Kr , Kb},
{-(1/2)Kr/(1-Kb), -(1/2)(1-Kb-Kr)/(1-Kb), 1/2},
{ (1/2) , -(1/2)(1-Kb-Kr)/(1-Kr),-(1/2)Kb/(1-Kr)}}
YUV -> RGB:
{{1, 0 , 2(1-Kr)},
{1,-2(1-Kb)Kb/(1-Kb-Kr),-2(1-Kr)Kr/(1-Kb-Kr)},
{1, 2(1-Kb) , 0}}
Just set Kr = 0.114, Kb = 0.299 for BT.601 and Kr = 0.2126, Kb = 0.0722 for BT.709.
Zachs
11th December 2014, 00:53
The exact matrices are given by the following:
RGB -> YUV:
{{Kr , 1-Kb-Kr , Kb},
{-(1/2)Kr/(1-Kb), -(1/2)(1-Kb-Kr)/(1-Kb), 1/2},
{ (1/2) , -(1/2)(1-Kb-Kr)/(1-Kr),-(1/2)Kb/(1-Kr)}}
YUV -> RGB:
{{1, 0 , 2(1-Kr)},
{1,-2(1-Kb)Kb/(1-Kb-Kr),-2(1-Kr)Kr/(1-Kb-Kr)},
{1, 2(1-Kb) , 0}}
Just set Kr = 0.114, Kb = 0.299 for BT.601 and Kr = 0.2126, Kb = 0.0722 for BT.709.
:thanks:
Zachs
11th December 2014, 06:10
Ah, no idea what they even are.
I have no idea, I have seen references to 4:2:0 but as with po10 and po16, have no idea what it is.
Can you check if your CPU can play that P210 file with the latest MPDN version?
The slowest CPU I could get hold of is an i5-2520M @ 2.5GHz (dual core with HT). It plays fine with its built-in Intel GPU. CPU usage ~37%. GPU wasn't being taxed much but it barely just managed to play the clip without dropping any frames. However, I did notice with this laptop that it was running out of memory bandwidth (both CPU and GPU share the same dual channel DDR3 bandwidth), which accounts for the low GPU utilization (GPU frequency remains in power save state) but high render times (33.33ms).
On the other hand, I've tested the clip on an i7 (4 cores + HT) with an old and very low end ATI 4350HD DDR2 card and found it to be more than capable of running the clip with MPDN's default settings. CPU usage on the i7 was ~10%.
Interestingly, I then switched the output formats of LAV Video Decoder to YUV 4:4:4 16-bit (Y416) and found madVR to also behave in the same manner - i.e. CPU usage was around 50%, GPU usage was very low, yet dropping frames like crazy.
I would say the problem you encountered was probably due to the fact that your system ran out of *system* memory bandwidth. MadVR probably required less memory bandwidth and you found it to work on your machine whereas MPDN just used that little bit more.
I've optimized how MPDN uses system memory bandwidth as well as some general CPU performance optimizations. See if that helps your machine.
Anima123
11th December 2014, 06:28
I have the following error messages when I tried to use DirectX 10.1 interface with MPDN:
TITLE: SharpDX Error
------------------------------
An unexpected error 'SharpDX.SharpDXException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
HRESULT: [0x887A0005], Module: [SharpDX.DXGI], ApiCode: [DXGI_ERROR_DEVICE_REMOVED/DeviceRemoved], Message: The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action.
(SharpDX)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
Any idea what the problem is?
Zachs
11th December 2014, 06:31
My guess is your nvidia driver crashed probably due to overclock or unstable drivers.
EDIT: read https://forums.geforce.com/default/topic/786554/pc-games/call-of-duty-advanced-warfare-issue-direct3ddevice-present-failed-the-gpu-device-instance-has-been/
Anima123
11th December 2014, 06:38
The latest nVidia whql driver I am using.
Zachs
11th December 2014, 06:58
Did it happen with older drivers? I certainly haven't seen that error before and I've got 3 nvidia cards from different generations.
Anime Viewer
11th December 2014, 07:19
I have the following error messages when I tried to use DirectX 10.1 interface with MPDN:
TITLE: SharpDX Error
------------------------------
An unexpected error 'SharpDX.SharpDXException' has occurred.
------------------------------
Any idea what the problem is?
I recall encountering a SharpDXException error that talked about device removed (like yours is) once after a install of a new version of MPDN. If I recall correctly it had to do with shader chain settings, where the files were copied, and maybe the version Rederscript files I was using.
Are you using the most recent version of Render Scripts?
http://forum.doom9.org/showpost.php?p=1698272&postcount=322
Do you have the RenderScripts folder copied from that file into the directory your MPDN executable is installed in?
As a test if you've any render scripts set to run try temporarily removing them, close out the player, and re-open it. Does the error still occur with no scripts selected in settings?
Also do you have a check in new windowed render mode? I seem to also recall seeing that message when that was checked and DX10.1 was also chosen. If so uncheck the new windowed render mode box, restart the MPDN program, and see if it still occurs.
feelingblue
11th December 2014, 08:58
Could you give me an explanation?
How "Video Output Levels" interacts with "Pixel Format" in the Video Card Control Panel?
romulous
11th December 2014, 09:22
Can you check if your CPU can play that P210 file with the latest MPDN version?
Great job, it plays perfectly now :) The only dropped or delayed frames happens when I switch from windowed to fullscreen - the same thing happens with madVR's FSE mode though (I have FSE disabled in madVR but I have left it enabled in MPDN).
My video card is a GTX 660Ti for reference (running at native resolution of 1920x1200).
romulous
Zachs
11th December 2014, 12:41
Could you give me an explanation?
How "Video Output Levels" interacts with "Pixel Format" in the Video Card Control Panel?
I'm not sure what pixel format you are referring to in your video card control panel? I looked into both nvidia and intel control panels and can't find the option.
However, I can tell you what MPDN's video output level is - it's basically how MPDN converts YUV to RGB (i.e. which YUV conversion matrix it uses). MPDN simply assumes the video card outputs RGB.
feelingblue
11th December 2014, 23:31
I'm not sure what pixel format you are referring to in your video card control panel? I looked into both nvidia and intel control panels and can't find the option.
However, I can tell you what MPDN's video output level is - it's basically how MPDN converts YUV to RGB (i.e. which YUV conversion matrix it uses). MPDN simply assumes the video card outputs RGB.
Video Card pixel format can be RBG or YCBCR.
I know that Video Card Driver internally uses always RGB Full.
In fact, for MADVR, best setting is RGB FULL and 0-255 in the render.
Your player uses the same logic?
The less destructive settings are RGB Full in the driver and 0-255 in the render?
exuse for my english
foxyshadis
11th December 2014, 23:53
Video Card pixel format can be RBG or YCBCR.
I know that Video Card Driver internally uses always RGB Full.
In fact, for MADVR, best setting is RGB FULL and 0-255 in the render.
Your player uses the same logic?
The less destructive settings are RGB Full in the driver and 0-255 in the render?
exuse for my english
Isn't that what it outputs to the monitor/TV, not what is input? The video card will always convert to RGB even if passed YUV, and then optionally convert back to YCbCr for display. You won't get passthrough even if you try to keep the same format, and you should ALWAYS avoid outputting YCbCr on a PC because it makes text significantly harder to read. Everyone has enough HDMI bandwidth to not need it anymore, anyway, unless you're running 4K over HDMI 2.0 and want full 60Hz.
poorplayer
12th December 2014, 05:18
Hi, great program! Have you seen the new suggested scheme for jinc 8 tap? Found here:
http://forum.doom9.org/showthread.php?p=1678996#post1678996
P.S. I want to add another request for FRC, madvr's never worked for my setup.
Zachs
12th December 2014, 07:28
Guys, just a quick update - there's a bug fix for render scripts in github so please download and use the latest version.
feelingblue
12th December 2014, 09:52
Isn't that what it outputs to the monitor/TV, not what is input? The video card will always convert to RGB even if passed YUV, and then optionally convert back to YCbCr for display. You won't get passthrough even if you try to keep the same format, and you should ALWAYS avoid outputting YCbCr on a PC because it makes text significantly harder to read. Everyone has enough HDMI bandwidth to not need it anymore, anyway, unless you're running 4K over HDMI 2.0 and want full 60Hz.
With a player as PowerDVD i'm not sure that video card convert always to RGB.
Perhaps it output YCbCr 444.
I refer to Pc range vs Video Range in the player together with Video card settings (PC / Video Levels)
which setting provides less banding and reduntant conversions?
huhn
12th December 2014, 14:09
as long as the windows desktop is there it is RGB. so you should need a fullscreen exclusive mode for YCbCr input in the GPU.
nothing to win by outputting YCbCr even 4:4:4.
the highest quality you can output with a normal limited range video like a BD is:
full range RGB from Video renderer -> full range RGB GPU out -> in a display with full range RGB support.
place 2 is:
limited range RGB from the video render -> full range RGB out of the GO (the GPU doesn't touch it this way so it is still limited) -> in a display that expect limited range. the desktop has wrong black/white level this way but that's not the point.
the rest is simply not as good because the GPU is touching the input and an extra conversation is not good.
feelingblue
12th December 2014, 17:46
tks
The some MADVR logic.
the only my doubt is if commercial player exit untouched Ycbcr 444 by Protect video path mode.
It will be possibile in the future use also for this player?
Blackfyre
12th December 2014, 22:37
I've been waiting five days to comment here... First of all I want to say thank you to the developer (zachs) for this amazing project.
I just upgraded my PC this week, and videos all of a sudden began to stutter for me lately using the same settings as before and watching the same episodes. I updated my motherboard and CPU.
Current Rig:
Core i7 - 4790K @4.4Ghz
AMD 7970 OC @ Core 1050Mhz / Memory 1400 Mhz
Gigabyte Z97X-Gaming GT Motherboard
Patriot Extreme DDR3 @ 2000Mhz (9,14,14,36,2T).
SoundBlaster Z Soundcard
Edit: (forgot to add Operating System / Monitor)
Windows 8.1 64-Bit
Yamakasi Catleap Q270 - 2560*1440 @ 65hz.
That's all that you need to know anyway.
Previous CPU + Motherboard (Core i5 3570K @ 4.3Ghz + AsRock Z77 Extreme 6)...
I realised I was using the 32Bit Player before, so I decided to use the ANY CPU Edition. Which improved stuttering SO MUCH!
My question is this... Shouldn't the GPU be responsible for rendering the video? not the CPU?
Unless for some reason the player is using the built-in Intel APU rather than my 7970 OC?
Also can I make a request Zack?
You know how there's 64-Bit/32-Bit/Any Cpu versions?
Can you make a 4th Version for Enthusiasts? those who don't mind the player using 80% of my CPU Power and 80% of my GPU Power to remove stuttering when using a lot of Chain Scripts?
I hate seeing stuttering and looking at my keyboard which says CPU Usuage 7%... I'd rather it uses 80% and runs smoothly than having to see that... Also smooth motion feature talked about earlier would be great in the enthusiasts edition.
Again I have to say thank you so much for this project @Zachs
:thanks::thanks:
EDIT:
Updating the render scripts seems to have removed stuttering, but motion fluidity is still missing; by that I mean if there is a scene with fast camera movement or a fast action sequence scene with a lot of movement or a racing movie, it's not as "smooth" or as "fluid" as I wish it could be (the movement of the object)... I'm not sure if more CPU+GPU usage could help that, but I'd still love to see an Enthusiast Edition released for the "high-end users" who have high-end PC's.
PetitDragon
13th December 2014, 08:30
I'm wondering why you think more powerful cpu+gpu will remove stuttering. :D
Zachs
13th December 2014, 09:22
When you say stutter did you experience any dropped or delayed frames? Is this with the same version of MPDN you were running with the old CPU as well?
Blackfyre
13th December 2014, 13:58
When you say stutter did you experience any dropped or delayed frames? Is this with the same version of MPDN you were running with the old CPU as well?
No Zachs, that's the weird thing; with Madvr I get dropped/delayed frames when it stutters, with MPDN it either stutters or it doesn't, I've never got dropped/delayed frames other than when I'm switching from normal mode to full-screen and vice versa. (Also the 32-Bit Player I tested with my old and new CPU, was backed UP with all of its settings on my backup HDD).
BTW - I have 3 scenes that I always use for testing, I have used those same scenes for over 3 months now with any player/settings I set. It's 2 scenes from one episode and another scene from another video (if these scenes work smoothly, everything else is smooth).
Thanks again. Also as I stated earlier after updating to the NEW render scripts, it seems to have fixed stuttering, but I'm missing the smooth-motion feature of Madvr.
To Note, my monitor runs at 2560*1440 @ 65Hz and doesn't support any other resolution officially, so everything I watch gets up-scaled.
Dazog
13th December 2014, 22:01
No Zachs, that's the weird thing; with Madvr I get dropped/delayed frames when it stutters, with MPDN it either stutters or it doesn't, I've never got dropped/delayed frames other than when I'm switching from normal mode to full-screen and vice versa. (Also the 32-Bit Player I tested with my old and new CPU, was backed UP with all of its settings on my backup HDD).
BTW - I have 3 scenes that I always use for testing, I have used those same scenes for over 3 months now with any player/settings I set. It's 2 scenes from one episode and another scene from another video (if these scenes work smoothly, everything else is smooth).
Thanks again. Also as I stated earlier after updating to the NEW render scripts, it seems to have fixed stuttering, but I'm missing the smooth-motion feature of Madvr.
To Note, my monitor runs at 2560*1440 @ 65Hz and doesn't support any other resolution officially, so everything I watch gets up-scaled.
No reason to run your monitor at 65 hz. It does not evenlly divde by 24.
60, 72, 96 ect.. are what you should use. Don't bother with 5hz extra. Not worth it for any thing.
Blackfyre
13th December 2014, 22:19
No reason to run your monitor at 65 hz. It does not evenlly divde by 24.
60, 72, 96 ect.. are what you should use. Don't bother with 5hz extra. Not worth it for any thing.
Amazing! Nice catch, that worked, completely removed stuttering. I used Custom Resolution Utility (CRU) and set my monitor to 60Hz.
By the way just to note, prior to formatting, and prior to upgrading the CPU&Motherboard, I had my monitor clocked at 65Hz, and videos ran smooth and fine, both using Madvr & MPDN.
:thanks::thanks::thanks:
Anima123
14th December 2014, 00:48
Shiandow, right now the SuperRes and SuperNEDIRes are related with Bilinear and NEDI relatively, is there possible to offer a less complex than SuperNEDIRes, yet more superior than SuperRes quality wise, like something based on 'Bicubic'?
There's some discussion on SuperRes based NNEDI3 before, which tend to offer as good quality as possible without considering complexity, i.e., computing power it demand at realtime speed which would need a really high-end gpu. For average uses like me, an affordable algorithm with closer to SuperNEDIRes, better than SuperRes based on bilinear would be really nice to have.
Shiandow
14th December 2014, 01:45
Shiandow, right now the SuperRes and SuperNEDIRes are related with Bilinear and NEDI relatively, is there possible to offer a less complex than SuperNEDIRes, yet more superior than SuperRes quality wise, like something based on 'Bicubic'?
There's some discussion on SuperRes based NNEDI3 before, which tend to offer as good quality as possible without considering complexity, i.e., computing power it demand at realtime speed which would need a really high-end gpu. For average uses like me, an affordable algorithm with closer to SuperNEDIRes, better than SuperRes based on bilinear would be really nice to have.
You're slightly off on the details. SuperRes uses the default scalers to create an initial guess where SuperNEDIRes uses a slightly modified NEDI. For internal processing they both use bilinear in some places.
Anyway I've since improved SuperRes a bit by including anti-aliasing. This removes the need for NEDI when you're not scaling too much (e.g. 720p -> 1080p). The method I've used also made it easy to add sharpening, so I included that as well. This version isn't officially released yet, but hopefully it will be soon.
Anime Viewer
14th December 2014, 15:24
Anyway I've since improved SuperRes a bit by including anti-aliasing. This removes the need for NEDI when you're not scaling too much (e.g. 720p -> 1080p). The method I've used also made it easy to add sharpening, so I included that as well.
I like the sound of those changes. Although I don't watch as much 720p files as I used to with the high quality upscaling of programs like MPDN and madVR 480p upscale to 1080p looks nearly as good if not as good as the 720p upscale to 1080p (obviously still depends on the video encoding, file quality, and settings in the video player).
With madVR rules could be used to run certain settings under certain conditions (for example have profiles that ran using certain settings when content is detected of a certain nature be it file resolution : 480p,720p,1080p or certain frame rates: 23hz, 24hz, 29hz, 30hz, 60hz. Could something similar be done in MPDN? Perhaps in the custom render script? For example have it detect file resolution, and if it is >=720p SuperRes if it is <720p (or whatever resolution the NEDI benefits are significantly noticeable) then SuperNEDIRes?
Shiandow
14th December 2014, 15:56
With madVR rules could be used to run certain settings under certain conditions (for example have profiles that ran using certain settings when content is detected of a certain nature be it file resolution : 480p,720p,1080p or certain frame rates: 23hz, 24hz, 29hz, 30hz, 60hz. Could something similar be done in MPDN? Perhaps in the custom render script? For example have it detect file resolution, and if it is >=720p SuperRes if it is <720p (or whatever resolution the NEDI benefits are significantly noticeable) then SuperNEDIRes?
That should be possible with the custom render script system. It's slightly more complicated than MadVR's pseudo language but simply checking file resolution and switching between SuperRes and SuperNEDIRes shouldn't be too hard to do.
Anima123
15th December 2014, 05:20
Shiandow,
Thanks for sharing with us the latest SuperRes algorithms. Would you please put some brief description of all the parameters that the user can adjust, what does it mean, recommendations, etc.?
Edit: Besides, how to configure to get the same effect as the original SuperRes / SuperNEDIRes algorithm, which might help us understand it.
Zachs
15th December 2014, 05:28
Quick note: Github has updated renderscripts!
Shiandow
15th December 2014, 15:13
Shiandow,
Thanks for sharing with us the latest SuperRes algorithms. Would you please put some brief description of all the parameters that the user can adjust, what does it mean, recommendations, etc.?
Edit: Besides, how to configure to get the same effect as the original SuperRes / SuperNEDIRes algorithm, which might help us understand it.
Well, "sharpness", "anti aliasing" and "anti ringing" sort of speak for themselves. But I'll try to explain why you probably shouldn't use the maximum value for all of those. The main problem is that the anti ringing algorithm is very basic and will cause artifacts when you rely to heavily on it. To see the artifacts more clearly try putting anti-ringing to 1.0, raise strength and sharpness and lower anti aliasing.
I'll now go into some more detail for the individual values:
Anti ringing says how much ringing SuperRes will remove each step. The standard value of 0.8 means that it will remove 80% of ringing each step. Since most of the ringing occurs in the first step this value will usually be enough since after two steps 96% of the ringing in the first step will have been removed.
Anti aliasing simply controls the strength of the anti aliasing algorithm. The main reason to be careful with this is that a high value will not only remove aliasing, but also detail and, worse, corners. To prevent this I decrease anti-aliasing by 50% each successive step, this part will become configurable in a future version. To some extent you can also prevent loss of detail by raising sharpness, although you'll risk causing other artifacts that way.
Sharpening does essentially the same thing as with all other sharpening algorithms, although in this case it is combined with an anti-ringing and anti-aliasing algorithm so you don't need to be too afraid of adding ringing and aliasing. This value also accepts negative values, if for some reason you want to blur the image. Fun fact: the sharpening algorithm works by running the heat equation (http://en.wikipedia.org/wiki/Heat_equation) in reverse, which goes against all rules of thermodynamics.
The other main values strength and passes control how strong the effects are and how many times it will apply them, respectively. If you also enable NEDI then you should probably lower the strength, otherwise it will obliterate whatever advantage NEDI can give. If you set the value for strength too high you risk 'overshooting' the optimal value, which will not only make the algorithm converge slower, but will also cause artifacts. Using more passes at a lower strength will give a nicer result but requires more power.
You should also take into account that anti-aliasing and sharpness will make the image stray from it's original, lowering these values and raising strength and/or anti-ringing will make it stay closer to the original.
You can get behaviour similar to the previous SuperRes and SuperNEDIRes by setting anti-aliasing and sharpness to 0, anti-ringing to 1, and setting the number of passes to 3 and 2 respectively, and obivously enabling NEDI for SuperNEDIRes.
toniash
16th December 2014, 00:13
Well, "sharpness", "anti aliasing" and "anti ringing" sort of speak for themselves. But I'll try to explain why you probably shouldn't use the maximum value for all of those. The main problem is that the anti ringing algorithm is very basic and will cause artifacts when you rely to heavily on it. To see the artifacts more clearly try putting anti-ringing to 1.0, raise strength and sharpness and lower anti aliasing.
Where do I can find these parameters?
Zachs
16th December 2014, 01:06
Where do I can found these parameters?
They can be found under RenderScripts -> SuperRes -> Configure.
Zachs
16th December 2014, 13:35
Anyone wants to give it a go at naming MPDN's frame rate conversion feature? I've implemented a simple blend FRC and it seems to work quite well.
toniash
16th December 2014, 17:44
Anyone wants to give it a go at naming MPDN's frame rate conversion feature? I've implemented a simple blend FRC and it seems to work quite well.
Smoothing by Frame Blending
Can we try it?:thanks:
fagoatse
16th December 2014, 19:05
So, how do those dx9ex/dx11 renderers compare to evr-cp performance wise?
Zachs
16th December 2014, 22:59
Smoothing by Frame Blending
Can we try it?:thanks:
It'll be ready very soon.
So, how do those dx9ex/dx11 renderers compare to evr-cp performance wise?
There's CPU performance, and then there's GPU performance. Both are highly dependent on the following aspects:
1) Number of CPU cores
2) CPU speed
3) System memory size
4) System memory bandwidth
5) GPU interconnect
6) GPU drivers
7) GPU type
8) Audio drivers
9) DirectShow filters you use
10) Settings of the renderer
11) Video you play
12) Display refresh rate
I've seen MPDN use lower CPU vs MPC-HC's EVR-CP in some cases and on a PCIE 1x link EVR-CP even stutters when MPDN worked flawlessly. Someone reported that if ffdshow filters were used in the DS graph, MPDN's CPU usage would shoot up (suspected bug in ffdshow filter since no other filters would cause this problem). In other cases, they are about the same.
GPU usage is even harder to compare.
Blackfyre
16th December 2014, 23:34
It'll be ready very soon.
That's great news. I'm going to assume this is the "smooth motion" feature? If you can get "fast pace motion scenes" running smoothly on my monitor that would be amazing man, won't even bother me if it uses 100% CPU+GPU Power.
I wanted to get a 144Hz Monitor that has "motion-blur-eliminating strobe backlights" built into it, but I wasn't going to risk paying $800+ if it only worked for gaming and didn't do anything for shows/movies.
nevcairiel
16th December 2014, 23:46
That's great news. I'm going to assume this is the "smooth motion" feature? If you can get "fast pace motion scenes" running smoothly on my monitor that would be amazing man, won't even bother me if it uses 100% CPU+GPU Power.
Its similar to the feature madVR has.
Its not a motion interpolator like many TVs have, as in it doesn't make motion any more smooth than the source material, it just ensures the presentation on your monitor doesn't make it "less" smooth due to a mismatch in FPS and the monitor refresh rate.
Zachs
17th December 2014, 02:36
In windowed mode, old rendering path requires more GPU memory bandwidth, and can be the cause of stuttering (see the next point).
On systems with low GPU memory bandwidth, stuttering can occur in desktop mode even when MPDN reports no dropped frames. Windows still needs to perform the final composition which draws the rest of the desktop and can snub a requested update if it runs out of resources - this can be detected using DWM API but MPDN does not currently do this simply because apart from detecting it, there's not much it could do to prevent frames dropping out.
No such problems under full screen exclusive mode. So if you encounter stuttering, switch to FSE mode (and all scalers set to Nearest Neighbour, dithering and render scripts to none) to check if it's simply Windows being starved for GPU resource and/or memory bandwidth.
Another point to keep in mind is if you see high presentation times, it probably means you're running short of GPU memory bandwidth as well. Fluid Motion doesn't use much GPU power but it does incur greater GPU memory bandwidth penalty.
Apart from that, AMD drivers are notorious for stuttering under DWM mode when a display refresh rate other than 59-60Hz is used (see this blog post (http://zachsaw.blogspot.com.au/2014/09/state-of-legacy-drivers-2014-amd-vs.html) I wrote months ago).
Lastly, MPDN needs some time to hone in on the actual display rate of your chosen graphics adapter (Options -> Video Renderer -> General -> Graphics Adapter ID) - so while this is happening, Fluid Motion may not work well. On multi-monitor systems, make sure you set your adapter ID to the monitor you intend to run MPDN on.
ryrynz
17th December 2014, 03:48
Apart from that, AMD drivers are notorious for stuttering under DWM mode when a display refresh rate other than 59-60Hz is used
If you haven't reported already might wanna do so here (http://www.amdsurveys.com/se.ashx?s=5A1E27D216F2CD32).
AMD seem to be taking the Catalyst software more seriously now.
Blackfyre
17th December 2014, 03:58
In windowed mode, old rendering path requires more GPU memory bandwidth, and can be the cause of stuttering (see the next point).
On systems with low GPU memory bandwidth, stuttering can occur in desktop mode even when MPDN reports no dropped frames. Windows still needs to perform the final composition which draws the rest of the desktop and can snub a requested update if it runs out of resources - this can be detected using DWM API but MPDN does not currently do this simply because apart from detecting it, there's not much it could do to prevent frames dropping out.
No such problems under full screen exclusive mode. So if you encounter stuttering, switch to FSE mode (and all scalers set to Nearest Neighbour, dithering and render scripts to none) to check if it's simply Windows being starved for GPU resource and/or memory bandwidth.
Another point to keep in mind is if you see high presentation times, it probably means you're running short of GPU memory bandwidth as well. Fluid Motion doesn't use much GPU power but it does incur greater GPU memory bandwidth penalty.
Apart from that, AMD drivers are notorious for stuttering under DWM mode when a display refresh rate other than 59-60Hz is used (see this blog post (http://zachsaw.blogspot.com.au/2014/09/state-of-legacy-drivers-2014-amd-vs.html) I wrote months ago).
Lastly, MPDN needs some time to hone in on the actual display rate of your chosen graphics adapter (Options -> Video Renderer -> General -> Graphics Adapter ID) - so while this is happening, Fluid Motion may not work well. On multi-monitor systems, make sure you set your adapter ID to the monitor you intend to run MPDN on.
I'll do some more testing later, only had a minute or two to test the new version. Seems to be working smoothly from the initial look of things after I overclocked my monitor back to 65Hz (with fluid motion active).
BTW can you add this feature:
While CTRL + J is active... Pressing CTRL + R will RESET the values to 0 - So we can monitor dropped frames and delayed frames from 0 after switching to Full Screen (Exclusive) mode.
Zachs
17th December 2014, 03:59
If you haven't reported already might wanna do so here (http://www.amdsurveys.com/se.ashx?s=5A1E27D216F2CD32).
AMD seem to be taking the Catalyst software more seriously now.
The only AMD card (or anything AMD) I have is an old HD4350 and it's been relegated to legacy status for quite a while. I doubt they'd even be remotely interested in fixing legacy bugs. Anyway, if anyone encounters such problems with their newer cards, please report them to AMD.
Zachs
17th December 2014, 04:01
I'll do some more testing later, only had a minute or two to test the new version. Seems to be working smoothly from the initial look of things after I overclocked my monitor back to 65Hz (with fluid motion active).
BTW can you add this feature:
While CTRL + J is active... Pressing CTRL + R will RESET the values to 0 - So we can monitor dropped frames and delayed frames from 0 after switching to Full Screen (Exclusive) mode.
LOL I've been meaning to do this since forever but kept forgetting.
EDIT: Done. v2.14.1.
Zachs
17th December 2014, 04:12
Anyone wants to take up the task of writing a File Association program so MPDN could invoke externally?
MPDN can be asked to open and play a file from command line as follows.
MediaPlayerDotNet.exe FileToPlay.mkv
All the File Association program needs to do is add a bunch of keys to the registry. I could do this myself but I feel my time would be better spent on things the community can't contribute.
If anyone's interested, please let me know.
Tacio
17th December 2014, 12:58
Has anyone found appropriate settings to use this player with i5-2410M and HD3000? :) With Fluid motion enabled, bicubic scalers and w/o any render scripts I have 80% GPU load with almost all videos :)) Or HD3000 is to slow for it?
pirlouy
17th December 2014, 14:23
Nice, the Fluid motion.
Some requests (some have already been asked I'm afraid).
1) How to be sure we're in exclusive mode ? Could it be displayed in statistics ?
2) Hotkeys/mouse personalization; for example:
I disable double-click, and use middle click to go Full Screen.
I use "mouse wheel up" to go back in time, and "wheel down" to jump forward
3) ability to prevent window resizing; a fixed size (video downscaled)
ryrynz
17th December 2014, 23:59
1) How to be sure we're in exclusive mode ? Could it be displayed in statistics ?
If you enable 10 bit output (generally recommended for quality and also performance) when you're in exclusive it will show displaying 10 bits per channel, windowed mode will only display in 8 bits.
The rendering time in my experience is also lower than that of windowed mode, at this time that is the only way you can know. I haven't yet had any issues preventing me from entering exclusive when I have the option ticked.
Has anyone found appropriate settings to use this player with i5-2410M and HD3000? :) With Fluid motion enabled, bicubic scalers and w/o any render scripts I have 80% GPU load with almost all videos :)) Or HD3000 is to slow for it?
Try enabling 10 bit output with exclusive mode enabled (only works in fullscreen) disabling dithering. Also using Dx10 output on my HD4000 uses 2% less GPU processing, so give that a shot too and
make sure you're running the latest drivers and the latest DirectX.
Zachs
18th December 2014, 00:06
The rendering time in my experience is also lower than that of windowed mode, at this time that is the only way you can know.
Track bar down at the bottom is also different in exclusive mode.
Anyway, I've changed stats screen again to show "Direct3D xx Windowed / Exclusive".
romulous
18th December 2014, 09:34
A minor thing, but would it be possible to get a couple of preset window sizing options? These four in particular:
50%
100%
150%
200%
Zachs
19th December 2014, 07:39
As of v2.15, MPDN has a new feature called Player Extensions.
This allows the player to be extended via C# Script.
Here's a simple example where it adds a "Go to time" option (place these files under "PlayerExtensions" folder).
GoToTime.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Mpdn.PlayerExtensions.ZachSaw
{
public class GoToTime : IPlayerExtension
{
private IPlayerControl m_PlayerControl;
public ExtensionDescriptor Descriptor
{
get
{
return new ExtensionDescriptor
{
Guid = new Guid("7C3BA1E2-EE7B-47D2-B174-6AE76D65EC04"),
Name = "Go To Time",
Description = "Jump to a specified timecode in media",
Copyright = "Copyright Zach Saw 2014. All rights reserved."
};
}
}
public void Initialize(IPlayerControl playerControl)
{
m_PlayerControl = playerControl;
m_PlayerControl.KeyDown += PlayerKeyDown;
}
public void Destroy()
{
m_PlayerControl.KeyDown -= PlayerKeyDown;
}
public IList<Verb> Verbs
{
get
{
return new[]
{
new Verb(Category.Play, string.Empty, "Go To...", "Ctrl+G", string.Empty, GotoPosition)
};
}
}
private void GotoPosition()
{
using (var form = new GoToTimeForm())
{
if (form.ShowDialog(m_PlayerControl.Form) != DialogResult.OK)
return;
if (m_PlayerControl.PlayerState == PlayerState.Closed)
return;
if (m_PlayerControl.PlayerState == PlayerState.Stopped)
{
m_PlayerControl.PauseMedia(false);
}
m_PlayerControl.SeekMedia(form.Position * 1000);
}
}
private void PlayerKeyDown(object sender, PlayerKeyEventArgs e)
{
switch (e.Key.KeyData)
{
case Keys.Control | Keys.G:
GotoPosition();
break;
}
}
}
}
GoToTimeForm.cs
using System;
using System.Globalization;
using System.Windows.Forms;
namespace Mpdn.PlayerExtensions.ZachSaw
{
public partial class GoToTimeForm : Form
{
public GoToTimeForm()
{
InitializeComponent();
}
public long Position
{
get
{
TimeSpan timespan;
if (TimeSpan.TryParseExact(textBoxPos.Text, @"hh\:mm\:ss\.fff", CultureInfo.CurrentCulture, out timespan))
return (long) timespan.TotalMilliseconds;
return -1;
}
}
private void ButtonOkClick(object sender, EventArgs e)
{
if (Position < 0)
{
errorProvider.SetError(textBoxPos, "Invalid time");
DialogResult = DialogResult.None;
}
else
{
errorProvider.SetError(textBoxPos, "");
}
}
}
}
GoToTimeForm.Designer.cs
namespace Mpdn.PlayerExtensions.ZachSaw
{
partial class GoToTimeForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.ButtonOK = new System.Windows.Forms.Button();
this.ButtonCancel = new System.Windows.Forms.Button();
this.textBoxPos = new System.Windows.Forms.MaskedTextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
this.SuspendLayout();
//
// ButtonOK
//
this.ButtonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.ButtonOK.Cursor = System.Windows.Forms.Cursors.Default;
this.ButtonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.ButtonOK.Location = new System.Drawing.Point(50, 85);
this.ButtonOK.Name = "ButtonOK";
this.ButtonOK.Size = new System.Drawing.Size(75, 23);
this.ButtonOK.TabIndex = 3;
this.ButtonOK.Text = "OK";
this.ButtonOK.UseVisualStyleBackColor = true;
this.ButtonOK.Click += new System.EventHandler(this.ButtonOkClick);
//
// ButtonCancel
//
this.ButtonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.ButtonCancel.Cursor = System.Windows.Forms.Cursors.Default;
this.ButtonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.ButtonCancel.Location = new System.Drawing.Point(131, 85);
this.ButtonCancel.Name = "ButtonCancel";
this.ButtonCancel.Size = new System.Drawing.Size(75, 23);
this.ButtonCancel.TabIndex = 4;
this.ButtonCancel.Text = "Cancel";
this.ButtonCancel.UseVisualStyleBackColor = true;
//
// textBoxPos
//
this.errorProvider.SetIconPadding(this.textBoxPos, 3);
this.textBoxPos.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite;
this.textBoxPos.Location = new System.Drawing.Point(85, 22);
this.textBoxPos.Mask = "00:00:00.000";
this.textBoxPos.Name = "textBoxPos";
this.textBoxPos.PromptChar = '0';
this.textBoxPos.ResetOnPrompt = false;
this.textBoxPos.Size = new System.Drawing.Size(97, 20);
this.textBoxPos.TabIndex = 0;
this.textBoxPos.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.textBoxPos.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(25, 25);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(54, 13);
this.label1.TabIndex = 6;
this.label1.Text = "Timecode";
//
// label2
//
this.label2.Location = new System.Drawing.Point(85, 45);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(97, 14);
this.label2.TabIndex = 7;
this.label2.Text = "( hh:mm:ss.msec )";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// errorProvider
//
this.errorProvider.ContainerControl = this;
//
// GoToTimeForm
//
this.AcceptButton = this.ButtonOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.ButtonCancel;
this.ClientSize = new System.Drawing.Size(218, 120);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.textBoxPos);
this.Controls.Add(this.ButtonCancel);
this.Controls.Add(this.ButtonOK);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "GoToTimeForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Go To Time";
((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button ButtonOK;
private System.Windows.Forms.Button ButtonCancel;
private System.Windows.Forms.MaskedTextBox textBoxPos;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ErrorProvider errorProvider;
}
}
kopija
19th December 2014, 07:40
Thanks for constant improvements.
Fluid motion feature sounds very tempting.
I might try out your little piece of software after lurking all these months.
BTW, whats the difference between Madshis Smooth Motion and your Fluid Motion?
Zachs
19th December 2014, 07:41
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Mpdn.PlayerExtensions.Example
{
public class Test : IPlayerExtension
{
private IPlayerControl m_PlayerControl;
public ExtensionDescriptor Descriptor
{
get
{
return new ExtensionDescriptor
{
Guid = new Guid("7C3BA1E2-EE7B-47D2-B174-6AE76D65ED04"),
Name = "Test",
Description = "Player Extension Test",
Copyright = "Copyright Test 2014. All rights reserved."
};
}
}
public void Initialize(IPlayerControl playerControl)
{
m_PlayerControl = playerControl;
m_PlayerControl.KeyDown += PlayerKeyDown;
}
public void Destroy()
{
m_PlayerControl.KeyDown -= PlayerKeyDown;
}
public IList<Verb> Verbs
{
get
{
return new[]
{
new Verb(Category.Help, string.Empty, "Test", "Ctrl+Shift+T", "test test test 1", Test1Click),
new Verb(Category.Help, "Test sub category", "Test", "Ctrl+Shift+R", "test test test 2", Test2Click)
};
}
}
private void Test1Click()
{
MessageBox.Show("Test1");
}
private void Test2Click()
{
MessageBox.Show("Test2");
}
private void PlayerKeyDown(object sender, PlayerKeyEventArgs e)
{
switch (e.Key.KeyData)
{
case Keys.Control | Keys.Shift | Keys.T:
Test1Click();
break;
case Keys.Control | Keys.Shift | Keys.R:
Test2Click();
break;
}
}
}
}
Zachs
19th December 2014, 07:46
Nice, the Fluid motion.
Some requests (some have already been asked I'm afraid).
1) How to be sure we're in exclusive mode ? Could it be displayed in statistics ?
2) Hotkeys/mouse personalization; for example:
I disable double-click, and use middle click to go Full Screen.
I use "mouse wheel up" to go back in time, and "wheel down" to jump forward
3) ability to prevent window resizing; a fixed size (video downscaled)
#1 and #3 are done in v2.15.0.
#2 can be done via Player Extensions.
Thanks for constant improvements.
Fluid motion feature sounds very tempting.
I might try out your little piece of software after lurking all these months.
BTW, whats the difference between Madshis Smooth Motion and your Fluid Motion?
Fluid Motion does blend FRC, which I believe is what madvr does as well.
A minor thing, but would it be possible to get a couple of preset window sizing options? These four in particular:
50%
100%
150%
200%
Done.
Enjoy!
romulous
19th December 2014, 10:33
Done.
Thanks! Interestingly, the first video I opened I set to 50%, and I noticed some fairly obvious image corruption. Seems to be related to SuperRes though, as I had that enabled. Corruption goes away when I disable that (it only shows at 50%).
Shiandow
19th December 2014, 10:37
Thanks! Interestingly, the first video I opened I set to 50%, and I noticed some fairly obvious image corruption. Seems to be related to SuperRes though, as I had that enabled. Corruption goes away when I disable that (it only shows at 50%).
SuperRes isn't even supposed to be active at that size. Could you try using ImageProcessor without any shaders and see if that has the same result?
romulous
19th December 2014, 11:06
Yes, appears to be the same corruption present when ImageProcessor with nothing in it is active.
Zachs
19th December 2014, 11:52
Yes, appears to be the same corruption present when ImageProcessor with nothing in it is active.
I can't replicate the problem. Anyone else?
ryrynz
19th December 2014, 12:09
I can't replicate the problem. Anyone else?
Me neither.
romulous
19th December 2014, 12:18
With this video?
https://dl.dropboxusercontent.com/u/105555957/Test.mp4 (9.01 MB)
No changes to the default MPDN config (except to install the renderscripts and enable SuperRes or ImageProcessor), and then go straight to 50%. Hopefully you should see lots of little blocks appear all over the video as it plays. LAV Video is set to software mode, and I have a NVIDIA card (GTX 660Ti).
Zachs
19th December 2014, 12:25
With this video?
https://dl.dropboxusercontent.com/u/105555957/Test.mp4 (9.01 MB)
No changes to the default MPDN config (except to install the renderscripts and enable SuperRes or ImageProcessor), and then go straight to 50%. Hopefully you should see lots of little blocks appear all over the video as it plays. LAV Video is set to software mode, and I have a NVIDIA card (GTX 660Ti).
Still no problem.
EDIT: Tested on both NVIDIA GTX560 and Intel HD3000.
romulous
19th December 2014, 12:37
Hm, strange. I'm even using the most current versions of the renderscripts, so no idea why it is only on my system. This is what it looks like FWIW:
http://i.imgur.com/O5Kxo40.png
Zachs
19th December 2014, 12:48
Hm, strange. I'm even using the most current versions of the renderscripts, so no idea why it is only on my system. This is what it looks like FWIW:
http://i.imgur.com/O5Kxo40.png
Using ImageProcessor without shader is exactly the same as using no renderscripts. Not sure why it would change its behaviour - especially since no one else seems to be able to replicate the problem. Does it work fine in any other sizes?
ryrynz
19th December 2014, 12:51
With this video?
https://dl.dropboxusercontent.com/u/105555957/Test.mp4 (9.01 MB)
Tested on my HD3000 and 750Ti. No problems. Try an install of the drivers ticking the clean install box.
Zachs
19th December 2014, 12:58
@ryrynz
How's 750ti's performance using SuperChromaRes + SuperRes 3 pass with NEDI like?
My ailing old HTPC 9600GT is definitely due for an upgrade! LOL!
romulous
19th December 2014, 12:59
Does it work fine in any other sizes?
Yes, it only happens at 50% on this particular video (have not found another vide that has the problem as yet, though none of them have been that same small resolution to begin with either).
It is clearly size related - if I manually resize the MPDN window bigger, at some point, the corruption stops occurring.
Zachs
19th December 2014, 12:59
Player Extensions now available on github - https://github.com/zachsaw/PlayerExtensions
I'll make a playlist extension next.
romulous
19th December 2014, 13:04
I tried to test another 320x240 video (same as test video) to see if it had the same problem - MPDN crashed:
TITLE: Mpdn.VideoPlayer Error
------------------------------
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
ADDITIONAL INFORMATION:
Failed to render file 'K:\Videos\Video Game\F.E.A.R\E3 2004 Demo [t_fear_e3_2k4_demo].wmv' (Mpdn.VideoPlayer)
------------------------------
Exception from HRESULT: 0x80040217 (Mpdn.VideoPlayer)
------------------------------
BUTTONS:
&Ignore
&Abort
------------------------------
Not very specific, but that is all it gave me.
romulous
19th December 2014, 13:07
But I did find another 320x240 video that MPDN would play without crashing, and it too at 50% shows the corruption. Not that I would actually play a video that small at 50% (I would bump it up to 200%), but 50% was just the first combination I hit, so I stumbled across it by accident (it won't affect me, was just curious as to why it happened).
Zachs
19th December 2014, 13:20
See OP for WMV files. Perhaps I should make that line BOLD and RED so people would bother reading :)
EDIT: For the record, any DsGraphException that causes a file to fail to render is usually due to LAV Video Decoder not being able to decode the file. MPC-HC shows the same "fail to render" message too if you make it use the same LAV Video Decoder (and not the built-in ones).
romulous
19th December 2014, 13:31
Do you mean the bit about needing to enable WMA in LAV? It seems odd that a filter rejecting a stream would cause the player to crash.
Zachs
19th December 2014, 13:41
Do you mean the bit about needing to enable WMA in LAV? It seems odd that a filter rejecting a stream would cause the player to crash.
That isn't a crash. It is just a custom error message box that happens to show more information. I could just as well show a message box that says "Fail to render file", but I chose to include more information in there so if there's a real problem, I could debug it.
Perhaps I should make it default to just a simple message box and to enable debugging, you'd have to change some settings. Otherwise it seems most people consider it a crash when they see that box.
pirlouy
19th December 2014, 14:25
The scriptish way to use hotkeys allows powerful config for advanced users.
For classical users, it would be good if someone manage to read a .txt file like in video games when you can "bind keys".
For example, in a file named hotkeys.txt, there would be:
LClick=Pause
DLClick=None
MClick=FullScreen
WheelUp=JumpBackward
WheelDn=JumpForward
Ctrl+Shift+M=AnyFunction
And the player extension would read it.
romulous
19th December 2014, 14:44
Perhaps I should make it default to just a simple message box and to enable debugging, you'd have to change some settings.
I would suggest that is a good idea!
Otherwise it seems most people consider it a crash when they see that box.
Yes, I personally think more people are likely to think that is a crash, than those that would not.
Anima123
19th December 2014, 21:51
It can get enjoyable quality with SuperRes of 2 passes, NEDI enabled, strength 0.16 and other parameters 0.
Only my poor nVidia 640M still suffers rendering time increasing with time. I am considering buying a gaming laptop even.
Still need to be sure there's definitely no other options left before I do that which would cost me a lot of money.
Zachs
20th December 2014, 01:59
I would suggest that is a good idea!
Yes, I personally think more people are likely to think that is a crash, than those that would not.
Done. v2.15.1.
Zachs
20th December 2014, 02:01
The scriptish way to use hotkeys allows powerful config for advanced users.
For classical users, it would be good if someone manage to read a .txt file like in video games when you can "bind keys".
For example, in a file named hotkeys.txt, there would be:
LClick=Pause
DLClick=None
MClick=FullScreen
WheelUp=JumpBackward
WheelDn=JumpForward
Ctrl+Shift+M=AnyFunction
And the player extension would read it.
Yeah player extension could be written to allow for that too. I might write an example of how to remap keys and hopefully someone would be able to take it further to allow what you suggested.
Again, if anyone knows C# and would like to help out, send me a PM. :thanks:
Anima123
20th December 2014, 04:49
It can get enjoyable quality with SuperRes of 2 passes, NEDI enabled, strength 0.16 and other parameters 0.
Only my poor nVidia 640M still suffers rendering time increasing with time. I am considering buying a gaming laptop even.
Still need to be sure there's definitely no other options left before I do that which would cost me a lot of money.
Just noticed, SuperRes with NEDI enabled, even 1 round, the rendering time still increases gradually, which strongly suggest that there's something not right.
I really hope that Shaindow can dig a little deeper on this issue, once there's one.
Edit: As comparison, I also tested SuperRes without NEDI, though in heavy load, the GPU can handle 4-passes, without rendering time increase issue at all.
Zachs
20th December 2014, 05:25
Is your GPU ram constant or increasing?
Anima123
20th December 2014, 07:54
It was constant, and so are GPU load and the temperature.
ryrynz
20th December 2014, 11:39
@ryrynz
How's 750ti's performance using SuperChromaRes + SuperRes 3 pass with NEDI like?
My ailing old HTPC 9600GT is definitely due for an upgrade! LOL!
Fluid motion active, 10bit output on DX 10.1.
3 pass SuperRes and SuperChromaRes on defaults.
712x480 30 fps
Render 20ms Display 0.26ms GPU load 39% render queue 8/8
1280x720 24fps
Render 25ms Display 0.25ms GPU load 55% render queue 5/8
Shiandow
20th December 2014, 17:41
It was constant, and so are GPU load and the temperature.
Unfortunately it's very unlikely that I'll be able to do something about your problem, unless you can find out what is increasing your render times. It's also very odd that it's apparently becoming slower without affecting GPU load. Maybe your CPU or RAM usage is gradually increasing somehow?
Zachs
23rd December 2014, 06:42
Added a very simple playlist player extension in github. Must be used with MPDN v2.15.2 and above.
There's also a KeyRemap example script in the Examples folder. If you want to use it, you'll need to copy/move the file up a folder (into MPDN's PlayerExtensions folder). Feel free to customize it.
strangeluck
23rd December 2014, 07:00
Added a very simple playlist player extension in github. Must be used with MPDN v2.15.2 and above.
There's also a KeyRemap example script in the Examples folder. If you want to use it, you'll need to copy/move the file up a folder (into MPDN's PlayerExtensions folder). Feel free to customize it.
When placing the playlist extensions folder downloaded from github in my MPDN directory I receive the following error message when starting the player:
https://i.imgur.com/Pgwj8qS.png
Am I doing something wrong?
Zachs
23rd December 2014, 07:29
Sorry. I'll get it fixed in a while.
EDIT: Should be fixed. Grab the latest player extensions from github (or replace the designer file I just updated).
strangeluck
23rd December 2014, 07:39
Sorry. I'll get it fixed in a while.
EDIT: Should be fixed. Grab the latest player extensions from github (or replace the designer file I just updated).
No more error and the playlist extension is now working, thank you.
ryrynz
23rd December 2014, 10:31
Pasted all .cs files from github into the playerextensions dir of .2, many errors.. with playerextension.cs, CS1001 identifier expected, CS1513 expected. What did I dumb?
Can't close from taskbar when this happens, have to close the task via task manager. A more graceful error system would be cool, not a big deal though at this stage.
Zachs
23rd December 2014, 10:54
Have you made sure all the files there? Also make sure you delete all files / folders in PlayerExtensions before you extract the new ones.
Zachs
23rd December 2014, 10:56
BTW, I can't make multi-extended-select drag-drop reordering work with the ListBox control without it exhibiting weird behaviours. If anyone wants to take a stab at it, please do and let me know how it could be added.
ryrynz
23rd December 2014, 12:22
Have you made sure all the files there? Also make sure you delete all files / folders in PlayerExtensions before you extract the new ones.
Downloaded the zip rather than the individual files which were a lot bigger.. loads fine now.
Playlist window snapping would be cool.
Changelog for .2?
Zachs
23rd December 2014, 12:52
Hit Ctrl+F5 if you're not getting the updated change logs.
BTW, .3 is out. Also more updates on github :)
Zachs
24th December 2014, 04:39
Added drag-drop reordering for playlist editor. Get latest from github.
Blackfyre
27th December 2014, 22:38
Hey Zachs I noticed that sometimes even though there is no delayed frames or dropped frames there could be lag/stuttering (by that I mean the video doesn't "appear" as smooth that's all).
For example, using Image Processor = LumaSharpen on a 720p video, when I press CTRL+J, the two "render" times at the bottom are 5.8ms and 7.12ms (when in full-screen exclusive mode).
My resolution is 2560x1440 @ 60Hz
Second Example, using SuperRes (Passes 10, Sharpness 1.2, Anti-Aliasing 1.0, Anti-Ringing 1.0, Use Nedi), on the same 720p video, the two "render" times at the bottom are 26ms and 28ms.
In both instances there is 0 dropped frames and delayed frames. None. However during the second example the video appears to be stuttering slightly. Because the render times take longer?
Is that normal? Or are my eyes seeing things?
Also I know there's Directx 9 & 10.1 support for the Video Renderer... But is there a way to get DirectX 11 for those of us who have a DX11 card?
Zachs
28th December 2014, 01:57
Both in full screen exclusive mode? Fluid motion enabled for both? I haven't seen such issues myself in fse mode where the driver usually does what it's told.
What do you think you would gain with dx11 vs 10.1?
EDIT: What's your avg. / max render and present times?
EDIT2: I just tested this myself and I can get very close to it just about to drop frames but not quite, and I don't get any stuttering at all.
Blackfyre
28th December 2014, 08:08
Both in full screen exclusive mode? Fluid motion enabled for both? I haven't seen such issues myself in fse mode where the driver usually does what it's told.
What do you think you would gain with dx11 vs 10.1?
EDIT: What's your avg. / max render and present times?
EDIT2: I just tested this myself and I can get very close to it just about to drop frames but not quite, and I don't get any stuttering at all.
Hey Zach, sorry for the late reply. Yeah it's definitely not placebo. I just tested it with Game of Throne Season 4 Episode 6 720p Episode.
There's a scene of a camera moving away from a chair, in both instances it's in full-screen exclusive mode, and in both instances smooth motion is enabled.
Is there a way to actually for average max render and present times?
I look at it live with CTRL+J... In both instances there's ZERO dropped frames and delayed frames. But in the latter option with SuperRes and the settings I described above, there is definite apparent lateness.
So firstly the voice is slightly away from the picture (barely noticeable) and the motion isn't smooth at all.
I'm using Luma-Sharpen it looks better anyway, but not in every video obviously.
It's definitely weird. No dropped frames or delayed frames but clear motion stutter.
With LumaSharpen it's a smooth clear motion away from the chair, with SuperRes it's a cutting motion followed by a scene of unsynced talking.
I'm going to double check now by downloading Scripts & Latest version of MPDN and see how it goes.
:thanks:
Zachs
28th December 2014, 08:11
What Max times are you getting for present and render?
Also try changing your process priority to real time using task manager to see if that helps.
Blackfyre
28th December 2014, 08:47
What Max times are you getting for present and render?
Also try changing your process priority to real time using task manager to see if that helps.
http://imgur.com/9XUgUh2,CJjRJCI
There's two pictures (First Picture and Second Picture)... I paused it during the scene I was talking about and had to exit full-screen mode to take pictures. BTW Just to let you know when I'm in full-screen exclusive mode and I press Print-Screen it takes a picture of the desktop... not the player (weird).
Also have a look at this by the way, I could never get it to work with Madvr, always lags like crazy, does the opposite of what it's meant to be... Either you need two Titan Z's running in SLI or I'm setting it up wrong..
http://www.svp-team.com/
The idea is amazing! if you can implement it or make an experimental version for us to test, would be great... Doubling the frames basically to achieve smooth flow... For example at 60Hz it does 120FPS for me without Madvr... But with Madvr I can never get it working.
Edit1:
The player automatically always runs in "realtime" priority btw, I never had to set it to real-time ever.
Zachs
28th December 2014, 09:24
Print screen doesn't work in fse mode. I could see nothing out of the ordinary with the screenies. So not sure what the problem is especially when I'm not seeing it at all.
I tried SVP briefly and it worked fine.
ryrynz
28th December 2014, 11:46
I have noticed jerky behaviour when testing with GPU-Z and sometimes MPC-BE with madVR. No dropped frames or glitches seem to occur. I'll see if I can reliably reproduce this somehow..
Blackfyre
29th December 2014, 04:56
Print screen doesn't work in fse mode. I could see nothing out of the ordinary with the screenies. So not sure what the problem is especially when I'm not seeing it at all.
I tried SVP briefly and it worked fine.
I'll just stick to LumaSharpen for now... Could be a driver issue with my videocard maybe, so I'll wait for the next AMD Omega Driver (the second one will supposedly have better support for the HD7000 Series and should be out by mid-January).
Zach do you think you can get SVP to work with MPDN? Edit: Or if it does, how do I make it work? Thanks
I noticed SVP works fine with PotPlayer (Haali Renderer), but absolutely horrible with Madvr + MPC (million artifacts in high motion scenes)...
Would be amazing to try it out with MPDN, so far MPDN has been the smoothest one for me, as well as providing superior picture quality compared to others.
Zachs
29th December 2014, 05:15
:search:
http://forum.doom9.org/showthread.php?p=1697535#post1697535
MPDN now supports a lot more input formats now so there no longer a need to force yv12 in the chain.
Fluid motion is similar to SVP's blend only option. So if you use SVP, no point enabling fluid motion.
Blackfyre
30th December 2014, 14:48
:search:
http://forum.doom9.org/showthread.php?p=1697535#post1697535
MPDN now supports a lot more input formats now so there no longer a need to force yv12 in the chain.
Fluid motion is similar to SVP's blend only option. So if you use SVP, no point enabling fluid motion.
After 10 Hours+ sitting in front of the PC testing with many different settings, I've finally found a sweet spot.
If anyone needs any help later they can quote this and i'll assist them, there was one setting that changed everything and made a world of difference for me. I was forced to use Media Player Classic btw because ReClock is necessary to achieve a smooth result. Not sure if MPDN supports Re-Clock I have to double check that...
Zach I was going to ask one thing... The higher the quality of the video, for example a 1080p movie in blu-ray (15gb+) would have much much less artifacts compared to the same 1080p movie if it was a 2gb version... So the higher the quality the less artifacts in high motion scenes. That's what I found out anyway.
Zachs
30th December 2014, 23:03
By artefacts do you mean compression artefacts such as mactoblocks? Or something else?
Blackfyre
31st December 2014, 04:57
By artefacts do you mean compression artefacts such as mactoblocks? Or something else?
Yeah Zach, macroblocks, I read on the SVP forum that apparently you can never have it set up perfectly... If you go for max-smoothness you'll always have artifacts (macroblocks).
But honestly it's amazing, I mean the difference in the fluidity of motion is just insane. I'll give you the best example. It removes motion lag completely in some areas.
In The Hobbit Movie (the first one, an unexpected journey)...
2 minutes in when Bilbo says "it began long ago, in a land far away to the east" and it cuts to a scene of a map, the camera pans from one side of this map to the other. You can clearly clearly see the motion lag in this scene, and by that I mean motion blur, making it difficult to read the names of cities and villages and towns to an extent. But with SVP and after hours of tuning around with the settings, motion blur is completely gone, it's just one smooth movement from one side of the map to the other with ZERO motion blur. There's a few scenes that follow that used to be really annoying with motion blur too. But those got fixed too. It just makes everything so much sharper and clearer in scenes where cameras move/pan.
The only negative I guess, is that during high action packed scenes, there's too many artifacts for my liking. And I don't understand why they have to be there! But there always has to be a sacrifice I guess.
Putting SVP on Expert Mode, and selecting remove artifacts on *strongest* level completely removes the artifacts, BUT the movie/show/video starts running like a game running at 15fps on a 120hz monitor as opposed to 120fps on a 120hz monitor...
I don't think a Titan Z can handle SVP's method of removing artifacts while maintaining max-smoothness in motion.
huhn
31st December 2014, 11:47
Putting SVP on Expert Mode, and selecting remove artifacts on *strongest* level completely removes the artifacts, BUT the movie/show/video starts running like a game running at 15fps on a 120hz monitor as opposed to 120fps on a 120hz monitor...
SVP usages mostly the CPU not the GPU. a high end GPU doesn't help at all you need a very good CPU for SVP.
and there is nothing special getting SVP running with madVR or MPDN.
Zachs
31st December 2014, 14:10
Happy new year everyone!
BetA13
31st December 2014, 19:15
you too mate :)
dont party too hard, hehe...
Anima123
1st January 2015, 07:14
Shiandow, happy new year!
With my newly bought game laptop with nVidia 880M video card, the rendering time increase issue was still there when using SuperRes with NEDI enabled, this time I can set passes to 5, not for long for the dropped frames emerges.
Now to me it's pretty sure that the increase of the rendering time issue was not from my previous crappy 640M card. I haven't found any abnormal behavior with GPU-Z monitoring the 880M.
Windows 8.1, driver version 340.52.
Zachs
1st January 2015, 07:16
How long do you need to let it run to have the issue manifest itself?
Anima123
1st January 2015, 07:19
Within about half an hour for it to become unwatchable.
Zachs
1st January 2015, 07:21
I'll try to see if I could replicate it. Can you give me your exact settings for render script? Dithering and media info would be good too.
Anima123
1st January 2015, 07:38
Thanks Zachs.
The video resolution is 576p, 23.976 fps, target resolution is 1080p, SuperRes settings as: passes = 5; strength = 0.25; Anti-aliasing = 0.20; Anti-Ringing = 0.15; Sharpness = 0; NEDI enabled.
Dither settings as default: random dithering, with strength 2.0, colored noise and regenerate noise pattern both ticked.
Fluid motion off.
The rendering time started as around 20.60 ms after put to full-screen mode, and end with more than 42.00 ms after around 30 minutes playback.
Blackfyre
1st January 2015, 09:07
Thanks Zachs.
The video resolution is 576p, 23.976 fps, target resolution is 1080p, SuperRes settings as: passes = 5; strength = 0.25; Anti-aliasing = 0.20; Anti-Ringing = 0.15; Sharpness = 0; NEDI enabled.
Dither settings as default: random dithering, with strength 2.0, colored noise and regenerate noise pattern both ticked.
Fluid motion off.
The rendering time started as around 20.60 ms after put to full-screen mode, and end with more than 42.00 ms after around 30 minutes playback.
Happy new year everyone,
If it's starting at 20ms and ending at around 40ms after 30 minutes could be an issue of throttling (CPU or GPU speed automatically decreasing?)...
Have you put your laptop on High Performance mode? or is it on balanced or power saving modes? Try and run your laptop on high-performance and see if render times change?
Go to the "Control Panel" (Windows 8.1 right click on the start button at the bottom left corner and select Control Panel) then select "Power Options" then switch it to "High Performance" Mode.
You might need to click the arrow which says "Show additional plans" in the "power options".
Zachs
1st January 2015, 13:19
Thanks Zachs.
The video resolution is 576p, 23.976 fps, target resolution is 1080p, SuperRes settings as: passes = 5; strength = 0.25; Anti-aliasing = 0.20; Anti-Ringing = 0.15; Sharpness = 0; NEDI enabled.
Dither settings as default: random dithering, with strength 2.0, colored noise and regenerate noise pattern both ticked.
Fluid motion off.
The rendering time started as around 20.60 ms after put to full-screen mode, and end with more than 42.00 ms after around 30 minutes playback.
I just tried this on my GTX 560 but with 2 passes SuperRes (everything else unchanged). I ran a 576p, 50fps media, also to 1080p in FSE mode for 30 minutes. It started with avg render time ~17.5ms (+/- 0.25) and finished exactly the same.
I'm running x86 version on Windows 7 64-bit. Nvidia driver version 340.52.
Is anyone else experiencing this problem?
Anima123
1st January 2015, 21:47
Double checked with 'high performance' mode, still the same.
Could you test on a laptop, Zachs, since it might be related to the Optimus thing I guess?
Zachs
2nd January 2015, 02:09
I don't have an Optimus laptop.
Can you test it on a desktop with Nvidia card? If the problem doesn't happen on a desktop card with the same driver then you should report the bug to Nvidia.
Have you tried the driver version I am using?
BTW, do you have to restart mpdn to get render time back down? Or does restarting playback cure it?
Anima123
2nd January 2015, 03:03
Unfortunately I don't have a desktop to do comparison test.
Restarting playback doesn't help, the only way to get back the rendering time is to restart mpdn.
Edit: And, as I mentioned earlier, SuperRes only suffers from gradually rendering time increasing only NEDI enabled.
Zachs
2nd January 2015, 03:42
I'm afraid there's only one plausible explanation of you need to restart MPDN.
The only thing that doesn't get recreated when you playback another media file is the direct 3d device itself. Or worse it could be keyed against a process id...
I'm not sure why only that specific settings trigger this problem. Does it help if you turn render scripts off then on again?
Do report the bug to Nvidia though since their non Optimus cards work fine and this Optimus technology is meant to be transparent.
BTW are you using dx9 or 10 as your presentation API? Could you also try resizing the window say every 30 seconds and see if that changes the behavior. Every time the target rect gets resized everything except the direct 3d device and textures that are similar in size as the source textures gets recreated.
And also try playing back a media file of a different resolution to see if that changes anything.
I'm trying to figure out if it is indeed tied to the direct 3d device because if it is, there's nothing much I could do from the player's end. This problem would manifest itself in games too if the conditions are similar.
Anime Viewer
2nd January 2015, 05:28
Thanks Zachs.
The video resolution is 576p, 23.976 fps, target resolution is 1080p, SuperRes settings as: passes = 5; strength = 0.25; Anti-aliasing = 0.20; Anti-Ringing = 0.15; Sharpness = 0; NEDI enabled.
Dither settings as default: random dithering, with strength 2.0, colored noise and regenerate noise pattern both ticked.
Fluid motion off.
The rendering time started as around 20.60 ms after put to full-screen mode, and end with more than 42.00 ms after around 30 minutes playback.
I set all the setting you mentioned, and opened a 576p 23.976 fps file on my Windows 8.1 64-bit system with an Optimus Nvidia 680GTX gpu. I ran the video on a tv screen across an HDMI cable in extended mode. (The only video I had at that resolution was 4 minutes long). It started at 22-23ms render time and finished at that as well. During that time I never saw the current render time get higher than perhaps 33ms briefly during an ending credits. Oddly the max render time number jumped around and had strange sudden spikes where briefly it would flash something like 68ms (even though I never saw the current render time jump that high) and then would quickly jump back down into listing the max render times as being in the 20s. At the end of the clip it has reported 228 dropped frames, and 240 delayed frames (can't say I saw them visually, but then I was staring at the render times more than what was displayed on the screen).
I'll try a longer file later, and see if that behaves any differently.
CTRL+J reported that screen hz rendering the video was 59hz. What is your screen running at when playing that 23.97 fps video (29, 30, 59, 60, something else)?
Have you tried running with running with SuperRes and NEDI as separate scripts in a script chain instead of running with NEDI checked within SuperRes?
What is the file format (mp4, avi, mkv)?
Edit: the dropped and delayed frames only seem to happen at the ending credit part, and only if the video is mkv format. I played the same video in mp4 format, and it didn't have the spiking render times or the dropped and delayed frames. When I opened it in MPC-HC and launched a properties on that file (to find out what video and audio was in the mkv container it reported:
Video: MPEG4 Video (H264) 1024x576 23.976fps [V: Japanese [jpn] (h264 high 10 L5.0, yuv420p10le, 1024x576) [default]]
Audio: AAC 48000Hz stereo [A: Japanese [jpn] (aac, 48000 Hz, stereo) [default]]
Subtitle: Advanced SubStation Alpha [S: ass [default]]
Subtitle: UTF-8 [S: No subtitles]
When I did a properties on the mp4 file from MPC-BE (which doesn't have any problems) it reported:
Video: MPEG4 Video (H264) 1024x576 23.976fps 2638kbps [V: _video.h264:fps=23.976 - Imported with GPAC 0.5.1-DEV-rev4246 (h264 high L4.1, yuv420p, 1024x576, 2638 kb/s)]
Audio: AAC 48000Hz stereo 262kbps [A: _audio.aac - Imported with GPAC 0.5.1-DEV-rev4246 (aac, 48000 Hz, stereo, 262 kb/s)]
Edit: I noticed on the end credits when the problem happens with the mkv file the Decoder Queue is suddenly dropping down to 1/16 and 2/16 and the Render Queue is dropping down to 0/8 before moving back to normal and then dropping again. The avi file in the same scene maintains a constant 16/16 decoder queue and a constant 8/8 render queue.
Edit: I ran it without any scripts, and the queues and frames still reported dropped, so the problem doesn't appear script related.
Zachs
2nd January 2015, 06:47
If the frame time stamp tells MPDN to present in quick succession all of a sudden, this will cause the render queue to be exhausted as it tries to display all those frames.
MPDN does cap it to a max of your display rate though so any additional frames will be regarded as delayed and / or dropped.
You could try remux the mkv file at fixed fps to see if that fixes the problem.
jkauff
2nd January 2015, 19:58
I seem to remember a discussion similar to this where the render time culprit turned out to be the GPU going into power savings mode part of the way during playback. The setting is apparently not reachable through the Nvidia Control Panel. I think the original poster solved the problem by changing the power saving setting using a third party tool (might have been nTune or System Tools Utility). Worth a look, anyway.
Anime Viewer
3rd January 2015, 00:18
I seem to remember a discussion similar to this where the render time culprit turned out to be the GPU going into power savings mode part of the way during playback. The setting is apparently not reachable through the Nvidia Control Panel. I think the original poster solved the problem by changing the power saving setting using a third party tool (might have been nTune or System Tools Utility). Worth a look, anyway.
The problem is not power saving related (at least not the issue that I detailed). I can jump straight to the credits where it happens, and right away at the same part of the video every time the same thing happens. The computer is always running in high powered state away, and is not set to restrict the GPU is any way. Its highly likely that the issue is what Zachs has identified as the frame time stamp issue.
Its also not player related, as I tossed the same video and MPC-HC (with madVR) and MPC-BE (with madVR), and they both had the issue as well. Something that was unexpected however was: When I changed the upscaler in madVR to Mitchell (which is less taxing and generally considered better for anime there was less reports of the dropped frames and high render spikes), however when I went with the MPDN equivalent (BiCubic 66) it went nuts dropping frames (adding ** to the end of the dropped frame report), and the video even stalled at parts. To confirm that scaling shouldn't have been a factor I also ran the video in its native 576p window, and it still had the queue/frame/render issue. I can't say I'm surprised to have seen the issue to occur in the other scaling and non-scaled states, but I am confused why it seemed less when Mitchell was running in madVR yet worse in MDPN with bicubic 66 (which should have been equivalent). Furthermore since they should have just been extra frames that were getting dropped it shouldn't have been visually noticeable or have caused the video to stall like it did.
If the frame time stamp tells MPDN to present in quick succession all of a sudden, this will cause the render queue to be exhausted as it tries to display all those frames.
MPDN does cap it to a max of your display rate though so any additional frames will be regarded as delayed and / or dropped.
You could try remux the mkv file at fixed fps to see if that fixes the problem.
I haven't tried remuxing the video (yet), but even if that fixes it - it would be troublesome if every time someone wants to watch an mkv video that they have to remux it first for fear that it might have this time stamp issue. There may be another solution to the problem that doesn't require converting every file someone is going to watch on their computer. Regardless I don't leave CTRL+J open and reporting when I watch videos (unless I noticed something wrong with the video playback, and want to use that as a means of troubleshooting). Since I didn't notice a visual difference (aside from when I tried bicubic 66) I'd just as well leave it as, and be unaware that whatever video I happen to be watching has a time stamp issue.
Edit: Running with Reclock active in MPC doesn't resolve the problem, but it does seem to reduce it. (Not too surprising since it changes video/auto speed, and the issue is time related). Therefore some equivalent feature if used in MPDN might work to also reduce the problem.
Zachs
3rd January 2015, 01:53
Can you upload the sample for me to take a look? I haven't paid too much attention to handling of bad encodes to be honest.
BTW I think jkauff was replying to the render times increasing issue. Have you tried a longer clip to see if that issue occurs for you too?
Zachs
3rd January 2015, 12:01
@AnimeViewer
I've managed to find out what is wrong with the mkv file in your PM - it's the subs. If you disable subtitle, it'll play without a problem. I /think/ it takes too much time for XySubFilter to render the subs, hence causing the drop in decoder queue. Just FYI, when MPDN displays ** for dropped frames, it means MPDN is skipping all rendering until the decoder and sub renderer catch up. Since it worked without the subs, I'd wager that it's XySubFilter that is taking too much time to render in this case.
Could you try disabling subtitle and see if that's the same for you?
Anime Viewer
3rd January 2015, 14:18
@AnimeViewer
I've managed to find out what is wrong with the mkv file in your PM - it's the subs. If you disable subtitle, it'll play without a problem. I /think/ it takes too much time for XySubFilter to render the subs, hence causing the drop in decoder queue. Just FYI, when MPDN displays ** for dropped frames, it means MPDN is skipping all rendering until the decoder and sub renderer catch up. Since it worked without the subs, I'd wager that it's XySubFilter that is taking too much time to render in this case.
Could you try disabling subtitle and see if that's the same for you?
I didn't even think about the other version of that video was hardsubbed, and that that was why it worked as opposed to the encoding of the file itself. :o
Yep, it was the same for me. Disabling the subtitles stopped the dropped/repeated frames and max render time spikes. Out of curiosity did you try using any other subtitle render-er to see if the issue happens with any subtitle engine, or just XySubFilter? (I don't have any other subtitle systems installed at the moment, so I didn't have a chance to test it myself).
Can you upload the sample for me to take a look? I haven't paid too much attention to handling of bad encodes to be honest.
BTW I think jkauff was replying to the render times increasing issue. Have you tried a longer clip to see if that issue occurs for you too?
I ran a longer 576p video with the settings Anima mentioned using (http://forum.doom9.org/showthread.php?p=1704294#post1704294). I didn't see jkauff's post related to increased render times. Is it the same situation with 576p videos? When the video started it was ~20-24ms, about 10 minutes in it was around 28ms, around 20 minutes in it was 35ms, and at the 30 minute mark it was 34ms. At 40 minutes it was up to 40ms according to the report. Edit: At 50 minutes it was reporting 45ms and a large amount of dropped and delayed frames. The render queue was at 1/8. At 60 minutes it was at 52ms. At 70 minutes 68ms - end edit . From other videos I've watched in the past seeing videos start at less ms during the opening scene/credits is not uncommon. The 28-34 seems like not that big of a rise, or problematic to me. The video I was watching did have a lot of detail drawn in the foreground, background, and a lot of panning scenes. Later I'll try running the same video with subtitles disabled to see if that effects render times.
Edit: Testing longer video with MPC-HC and madVR to see if it has similar experience. With the way MPC-HC/madVR are currently configured on my system it starts at ~9-10ms. 10 minutes in it was at 8.53ms. At 20 minutes it was at 8.52ms. 30 minutes in 8.49ms. Since madVR doesn't seem to be experiencing the problem I'll do some testing later to see if I can rule in our out certain things in MPDN (ex: scripts, subtitles, etc).
Edit: Starting with no scripts in MPDN 7.8ms, 10 minutes in 10.66ms, 20 minutes in 12ms. I don't have time to test the rest of the video now, but I'll try to start it over and report the 30+ minute ms later.
Zachs
4th January 2015, 05:03
So it seems this happens regardless of render scripts, which makes more sense (although still no closer to finding out what is causing it).
Does it only happen with 576p video?
Anima123
4th January 2015, 05:36
No. I have tried videos with other resolutions below 1080p, all, including 720p, have the rendering time increasing issue.
Zachs
4th January 2015, 05:39
Are you sure it doesn't happen without RenderScripts? From AnimeViewer's reports, it would seem that it happens regardless of RenderScript settings.
Anima123
4th January 2015, 05:53
Are you sure it doesn't happen without RenderScripts? From AnimeViewer's reports, it would seem that it happens regardless of RenderScript settings.
I haven't noticed that yet. However I was on a business trip, so there's no way to confirm recently.
Zachs
4th January 2015, 06:00
When you have the chance, can you find out if there's any issues with 1080p downscaling?
Even 1080p to 1080p requires scaling of chroma. The problem should still exist, perhaps just not as rapid.
Anima123
4th January 2015, 06:59
Though I cannot do tests right now, for my experience, the rendering time increasing issue was not noticed when using RenderScript of SuperRes without NEDI enabled. I thought the issue only related to the specific scaling algorithm.
To make sure if it's a more fundamental issue of MPDN itself, I think we would need more testing cases.
Zachs
4th January 2015, 11:46
Agreed. I'll definitely need a lot more data points especially since I don't have an Optimus system to test.
Zachs
6th January 2015, 04:46
MPDN v2.16.0 has been released.
*** Please make sure you update your RenderScripts to the latest from GitHub as the API has changed.
v2.16.0 Changelog:
Added Direct3D 11 Presentation API (requested by Blackfyre)
Added FSE mode media duration text (requested by ryrynz)
Added the ability to change decoder queue size
Added TV range output support for TVs that do not support full range input (requested by ryrynz)
Increased render queue size to 12
Removed JPEG YUV conversion matrix (shouldn't be used)
Changes to RenderScript API
Includes custom YAXlib build with bug fixes
ryrynz
6th January 2015, 07:44
v2.16.0 Changelog:
Added Direct3D 11 Presentation API (requested by Blackfyre)
Added FSE mode media duration text (requested by ryrynz)
Added the ability to change decoder queue size
Added TV range output support for TVs that do not support full range input (requested by ryrynz)
Increased render queue size to 12
Some solid improvements, I've tested D3D 11 support and memory usage is slightly lower and on my 750Ti, it would seem it better adjusts the cards core frequency to suit the content too. The rendering times and present times are a tad higher on both the Intel and Nvidia Graphics in D3D 11 mode, but it would seem 11 is slightly more efficient.. so not a waste of effort there. Transition time from exclusive to windowed mode for the Intel graphics still takes takes about three seconds, maybe Intel could improve something here, Nvidia is near instant. I expect the changes to render and decoder queues will give some people more problem free playback which is nice.
When flicking between windowed and FSE modes I received an error (the picture froze and audio continued) The error was 0x887A0005 in module SharpDX.DXGI.. Device removed, device instance has been suspended.
I tried to reproduce again but couldn't. Only switched in and out a few times after having FSE mode load on start.
Zachs
6th January 2015, 08:41
It's a driver error. I've seen that once it twice too when testing with Nvidia card and also a hard driver crash that caused windows to reset it with Intel.
ryrynz
6th January 2015, 08:49
I wonder if something could be written to perform this function enough times or fast enough that the error occurred and Nvidia/Intel could fix it.. I'm not sure how easy it is to reproduce so writing something that exposes it easily could be an idea..
But maybe it just doesn't happen enough that it's much of an issue..
Zachs
6th January 2015, 09:26
Actually I think I've only seen it happening on Intel GPU, not Nvidia under dx11. The Nvidia one was dx10 with an older driver quite some time ago.
Razoola
6th January 2015, 11:37
I have given the player a try but I have a couple of issues.
Is there any reason why I get two instances of the LAV splitter in the system tray when I try this player? I have also selected the ffdshow video decoder as I wanted to give SVP a try with this player. While ffdshow does show in the filter list it does nothing and its icon does not appear in the system tray and thus SVP does not work at all. Is there something I'm missing here in how to set up the filters in this player?
Raz
Zachs
6th January 2015, 11:54
I have given the player a try but I have a couple of issues.
Is there any reason why I get two instances of the LAV splitter in the system tray when I try this player? I have also selected the ffdshow video decoder as I wanted to give SVP a try with this player. While ffdshow does show in the filter list it does nothing and its icon does not appear in the system tray and thus SVP does not work at all. Is there something I'm missing here in how to set up the filters in this player?
Raz
Two instance of LAV splitter is because MPDN uses separate graph for audio and video, so this is normal.
SVP definitely works - I tried it some time ago myself (still no closer to liking it though) and Blackfyre more recently got it working without much fuss too. You need to use ffdshow raw video processor not video decoder.
Do a search on this thread and you'll find some help on how to set it up as various people have documented their experience.
Zachs
6th January 2015, 11:57
Some solid improvements, I've tested D3D 11 support and memory usage is slightly lower and on my 750Ti, it would seem it better adjusts the cards core frequency to suit the content too. The rendering times and present times are a tad higher on both the Intel and Nvidia Graphics in D3D 11 mode, but it would seem 11 is slightly more efficient.. so not a waste of effort there. Transition time from exclusive to windowed mode for the Intel graphics still takes takes about three seconds, maybe Intel could improve something here, Nvidia is near instant. I expect the changes to render and decoder queues will give some people more problem free playback which is nice.
D3D11 seems like a massive improvement over D3D10.1 as far as transition from/to windowed <-> FSE mode goes. Impressive - it's even faster than D3D9Ex! NVidia seems to have fixed the bug too with D3D11 (or at least the bug doesn't manifest itself) with it going into FSE mode with the wrong refresh rate. And I have yet to see a bug with NVidia's driver in D3D11 mode!
Razoola
6th January 2015, 12:09
Two instance of LAV splitter is because MPDN uses separate graph for audio and video, so this is normal.
SVP definitely works - I tried it some time ago myself (still no closer to liking it though) and Blackfyre more recently got it working without much fuss too. You need to use ffdshow raw video processor not video decoder.
Do a search on this thread and you'll find some help on how to set it up as various people have documented their experience.
Many thanks, I got SVP to work now. I'm not sure I like it either but I want to see the kind of results it can give with UHD content or if my setup is even powerful enough to use it with UHD content.
Your player looks very nice so far btw.
Zachs
6th January 2015, 12:13
Many thanks, I got SVP to work now. I'm not sure I like it either but I want to see the kind of results it can give with UHD content or if my setup is even powerful enough to use it with UHD content.
Your player looks very nice so far btw.
:thanks:
Don't forget to grab player extensions and render scripts from GitHub. If you're upscaling, SuperChromaRes + SuperRes (NEDI enabled) is truly amazing (both speed and image quality wise).
romulous
6th January 2015, 12:46
If you're upscaling, SuperChromaRes + SuperRes (NEDI enabled) is truly amazing (both speed and image quality wise).
Working out what is pre and post in MPDN still has me a bit baffled. How do you use both those at the same time? I've gotten as far as selecting 'Script Chain' in the renderscript dialog, then clicking Configure - but I can't go any further than that.
Zachs
6th January 2015, 12:55
Which scalers are you looking to use? If you use SuperChromaRes then pre resize shader should come after it. Followed by SuperRes. Then post resize shader.
romulous
6th January 2015, 13:00
The two you said, ie SuperChromaRes + SuperRes (NEDI enabled). I think I may have managed to work it out, not 100% sure though (I'm just guessing at this stuff, I still can't tell which is pre and which is post, it would be nice if MPDN explicity said pre and post beside each entry). Need to do some screenshots I think - only tried one video so far (the same one I posted previously that caused artifacts in MPDN when I resized the player window down), and I think in fullscreen with those two enabled, it has artifacts as well (just different ones). Must be a difficult clip for MPDN for some reason.
I do note as well that MPDN still kicks you out of fullscreen if you try and open another file while in fullscreen - you did mention that though this was on purpose, you would look into an option to prevent it. Did you have a chance to do this?
Zachs
6th January 2015, 13:15
Yes. There's now a plethora of options that allow you to choose how you want the player to behave. Reset and resize when opening / closing media files would be the options you want to check out.
Oh you just wanted to use the two without pre resize and post resize filters? In which case, it is really simply. Just add the two into the script chain config dialog in that exact sequence.
Hopefully we will have some sort of documentation or guide soon as someone said they were going to write something up :)
Edit: regarding your corruption problem, no one else seems to be able to replicate it and really doesn't make much sense too from technical perspective unless it's memory corruption. Is you memory or GPU overclocked? Did you try updating your drivers?
romulous
6th January 2015, 13:51
Yes. There's now a plethora of options that allow you to choose how you want the player to behave. Reset and resize when opening / closing media files would be the options you want to check out.
Thanks, yes - disabling both those stops MPDN from kicking itself out of fullscreen mode.
Oh you just wanted to use the two without pre resize and post resize filters? In which case, it is really simply. Just add the two into the script chain config dialog in that exact sequence.
Ok, that's what I have done. I'm not really sure about the significance of pre, post and none, which leads to...
Hopefully we will have some sort of documentation or guide soon as someone said they were going to write something up :)
That is what virtually every media playback filter is missing. madVR? Great renderer - no documentation on how it works unless you want to browse 1400 pages of Doom9 thread. LAV? Great splitter, audio decoder and video decoder - same problem as madVR, though not as pronounced because it does not have nearly the same amount of cryptically named options madVR does. ffdshow, AC3Filter, I could go on naming filters who do not bother to document themselves for non-hardcore media users. I won't though - there is no point as it won't change a damn thing.
Anyway, hopefully MPDN documentation does come to fruition and does explain pre, post and none as part of it :)
Edit: regarding your corruption problem, no one else seems to be able to replicate it and really doesn't make much sense too from technical perspective unless it's memory corruption. Is you memory or GPU overclocked? Did you try updating your drivers?
No overclocking at all, on RAM, GPU or CPU. Using the latest WHQL NVIDIA drivers. I think the artifacts are definitely SuperRes related. When resizing down, you may recall that the artifacts only showed when SuperRes was enabled. Shiandow said that at that low res, SuperRes shouldn't be enabled, but I suspect there is a fault there that does mean it is enabled at resolutions it should not be.
I'm not sure about the artifacts when resizing up now. Comparing with my main player with madVR, I think I can see the same thing. It is difficult to compare two different players - MPDN does not have a screenshot function and when I use a third party screenshot app, the screenshot I get does not match what MPDN is showing. Also, MPDN does not show you which frame number you are on - it only shows a timecode. That is a problem, because due to the differences in the various video renderers, using time codes is not necessarily a reliable way to get to the same frame in two different renderers. Of course, when your screenshot app won't play ball (I guess it captures a different thing to what is on screen due to frame buffers), it is hard enough to compare a video at 100% in MPDN against the same video at fullscreen in MPDN, to see if there is any noticeable change in quality.
Anyway, crux of it is that artifacts when resizing down are definitely there for 320x240 videos, but when resizing up, may not be after all.
Blackfyre
6th January 2015, 14:02
MPDN v2.16.0 has been released.
*** Please make sure you update your RenderScripts to the latest from GitHub as the API has changed.
v2.16.0 Changelog:
Added Direct3D 11 Presentation API (requested by Blackfyre)
Added FSE mode media duration text (requested by ryrynz)
Added the ability to change decoder queue size
Added TV range output support for TVs that do not support full range input (requested by ryrynz)
Increased render queue size to 12
Removed JPEG YUV conversion matrix (shouldn't be used)
Changes to RenderScript API
Includes custom YAXlib build with bug fixes
Oh Zach you legend, I go away for two days and come back to this... Happy new year mate! Downloading now.
:thanks:
Zachs
7th January 2015, 00:18
Well time to download again :)
v2.16.3 Changelog:
Fixed bug where changes to render script settings do not take effect unless user selects another script
v2.16.2 Changelog:
Added DWM presentation glitches to Ctrl+J player stats screen (MPDN now shows desktop window manager glitches too)
Restructured player stats screen
v2.16.1 Changelog:
Fixed dialogs hiding behind main form in full screen mode
If you get any DWM presentattion glitches, it means Windows (Desktop Window Management) has essentially failed to show a frame (system wide, not just MPDN's video frame) on the screen. Usually this means it's ran out of GPU resources or a driver bug.
Asmodian
7th January 2015, 07:23
After realizing G-sync activates for 3D type media players (and a friendly poke :) ) I decided to do some G-sync testing with MPDN.
I am happy to report that MPDN works very well with G-sync. When using any of the D3D modes and entering full screen exclusive G-sync activates and there is no flickering after startup (unlike madVR).
D3D 9Ex has really a lot of flickering right after switching to FSE but within a few seconds it settles down and looks great. A lot of dropped and delayed frames reported during startup but none after it settles down.
D3D 10.1 starts with a brief black screen, one flicker, and no dropped or delayed frames reported. Seems the same as a game starting up with G-sync.
D3D 11 seems the same as 10.1, maybe a tiny bit faster startup. Most of my further testing was done using D3D 11.
Judging motion fluidity 23.976 @ 60 Hz still looks bad, but it should given the 30 Hz lower limit for G-sync and 60 Hz is too slow to use 33.333 ms + 8.375 ms frames even if MPDN would try to do that. After startup playback is very stable and the behavior seems the same with or without fluid motion (with the exception of fluid motion improving motion at low refresh rates, of course).
I do get a crash sometimes when exiting FSE if I use the new windowed mode, leaving that unchecked I have been unable to reproduce the crash.
Zachs
7th January 2015, 07:29
Thank you so much for testing MPDN with G-sync, Asmodian!
I'm really curious what MPDN's display rate is reporting when G-sync is active :)
EDIT: Does anyone know if there's a way to detect if G-sync is active? And how do (can) you make it work under windowed mode?
Asmodian
7th January 2015, 07:56
Ctrl-J doesn't update the refresh rate when in G-sync unless I move the mouse and then it slowly counts down as long as I keep moving the mouse but stops at its current value as soon as I stop. I got it down to 120 something Hz from 144 Hz before getting tired, about 8 mins or so. :)
The power light on the monitor turns red if G-sync is active (white normally). ;)
I understand G-sync can never be active in windowed mode. Nvidia has stressed this since the announcement. I think it has something to do with the way Windows does screen updates. I understand the mouse cursor also has issues with G-sync in that its refresh is "out of sync" with the screen's refresh so you get almost pull-down type judder in the mouse cursor. Still more parts of the OS need to become variable refresh aware.
ryrynz
7th January 2015, 09:48
Does anyone know if there's a way to detect if G-sync is active?
Would be good to have a G-Sync / Freesync active line in the Ctrl - J readout if you find a way to detect them.
romulous
7th January 2015, 10:24
I imagine this is because it is written in .NET, but is there any reason why the MPDN interface is unresponsive for a couple of seconds after you start it? So you run MediaPlayerDotNet.exe, MPDN opens up - but you can't click on any of the menus (eg View) for a couple of seconds because the Windows 'busy' icon is showing (the animated circle icon in Win 7, it was an hourglass on XP I think). Once the busy icons goes away, you can interact with the program, but I can't say that I can recall seeing any other programs off the top of my head that show a delay like this at startup.
romulous
ryrynz
7th January 2015, 11:19
is there any reason why the MPDN interface is unresponsive for a couple of seconds after you start it?
Yeah, it's the render script system loading.. Maybe Zach can improve things a little in this area, I've noticed it myself once I installed the scripts.
Install only the player and things load up quickly.
Zachs
7th January 2015, 11:24
Would be good to have a G-Sync / Freesync active line in the Ctrl - J readout if you find a way to detect them.
There's not a lot of information on G-sync / Freesync APIs at the moment. There's a lot to be done if it can be detected. However, it should be easy enough to add an option under Fluid Motion to "Enable support for G-sync / Freesync" that is manually set by the user and it only gets activated in FSE mode. That said, quite a few changes would need to be implemented to properly support variable display rate.
I imagine this is because it is written in .NET, but is there any reason why the MPDN interface is unresponsive for a couple of seconds after you start it? So you run MediaPlayerDotNet.exe, MPDN opens up - but you can't click on any of the menus (eg View) for a couple of seconds because the Windows 'busy' icon is showing (the animated circle icon in Win 7, it was an hourglass on XP I think). Once the busy icons goes away, you can interact with the program, but I can't say that I can recall seeing any other programs off the top of my head that show a delay like this at startup.
romulous
It's mainly because it has to compile all the scripts and load them. This could be improved (caching compiled scripts so they don't get recompiled each time MPDN starts up) but on any modern systems, it's already quite fast so it's not a high priority for the moment.
ryrynz
7th January 2015, 11:30
It's mainly because it has to compile all the scripts and load them. This could be improved (caching compiled scripts so they don't get recompiled each time MPDN starts up) but on any modern systems, it's already quite fast so it's not a high priority for the moment.
I know you could simply just remove some scripts, but would a simple disable button in the renderscripts page for individual scripts (disable all you don't need) help with load performance? No point in loading them all when you're only using the one, just enable em on the fly..
Zachs
7th January 2015, 11:40
I know you could simply just remove some scripts, but would a simple disable button in the renderscripts page for individual scripts (disable all you don't need) help with load performance? No point in loading them all when you're only using the one, just enable em on the fly..
I'm afraid that's not possible in the current version of .NET framework. Caching them is easy and small enough and they don't take up much memory at all. MPDN already loads all the RenderScripts in one go, so by splitting them up and dynamically loading them isn't going to be much faster. In fact, it'll use more, not less memory.
Caching them is a simple thing to do and I've been meaning to do it since when I first implemented scripting for MPDN (the comment that says "Todo: Cache compiled scripts" is still in among the code) ;)
romulous
7th January 2015, 11:50
Yeah, it's the render script system loading.. Maybe Zach can improve things a little in this area, I've noticed it myself once I installed the scripts.
Install only the player and things load up quickly.
I just tried deleting the RenderScripts folder (after setting MPDN to 'none'), and when I relaunch MPDN, it still has the delay, and it pops up an error now about the missing folder ("could not find a part of the path"). It must still look for them even if they are not present.
Edit: If I create an empty RenderScripts folder, the error disappears, but I still see a delay. Guess MPDN just does not like my system.
ryrynz
7th January 2015, 11:58
I just tried deleting the RenderScripts folder (after setting MPDN to 'none'), and when I relaunch MPDN, it still has the delay, and it pops up an error now about the missing folder ("could not find a part of the path"). It must still look for them even if they are not present.
Edit: If I create an empty RenderScripts folder, the error disappears, but I still see a delay. Guess MPDN just does not like my system.
Curious, download the zip or re extract again into a new directory and run it and see if you still have the delay. Also is this x64, x86 or anycpu edition? on my i5 3570K a fresh x64 extraction starts up (fully usable) in about 2 seconds (and I'm not even running an SSD ATM)
Blackfyre
7th January 2015, 11:58
There's not a lot of information on G-sync / Freesync APIs at the moment. There's a lot to be done if it can be detected. However, it should be easy enough to add an option under Fluid Motion to "Enable support for G-sync / Freesync" that is manually set by the user and it only gets activated in FSE mode. That said, quite a few changes would need to be implemented to properly support variable display rate.
It's mainly because it has to compile all the scripts and load them. This could be improved (caching compiled scripts so they don't get recompiled each time MPDN starts up) but on any modern systems, it's already quite fast so it's not a high priority for the moment.
I've never faced this delay, not visible at all. So if it exists it's in the milliseconds and I've never noticed it. Both on a 3570K and on my current setup with a 4790K.
Zachs
7th January 2015, 11:58
You shouldn't delete the folder. Delete the contents, but not the folder please.
On my machine (i5-3470), without any scripts (i.e. no LinaerCustomScalers, no PlayerExtensions too), the busy cursor only shows for less than half a second.
On my 2nd gen dual core i5 laptop (2.5Ghz) with fully compiled scripts (yes you can fully compile them yourself even now if you know how to do that), the busy cursor is also only shown for less than 1 second.
EDIT: I don't have a core 2 quad / duo that old to test I'm afraid. Even my 7 years old Core 2 Duo doesn't take that long to compile, but it's running at 3.6Ghz.
nevcairiel
7th January 2015, 12:21
Couldn't you compile them in the background and not block the UI with it? Just need to sync to the compilation thread once playback actually wants to start and they need to be used.
That way opening a blank player at least wouldn't show the problem.
Zachs
7th January 2015, 12:32
There's lots I could do to speed it up like I said. It's not even multithreaded yet (the compilation part).
Anyway, caching the compiled scripts should be even faster. All there is to check is if the source files have been modified.
Zachs
7th January 2015, 12:35
BTW, since LAV already does dxva cb, wouldn't it be easy to do DXVA deinterlacing too?
romulous
7th January 2015, 13:07
Curious, download the zip or re extract again into a new directory and run it and see if you still have the delay. Also is this x64, x86 or anycpu edition? on my i5 3570K a fresh x64 extraction starts up (fully usable) in about 2 seconds (and I'm not even running an SSD ATM)
Yeah, that does seem to have improved the delay a little (ie made it smaller - I deleted my config file as well). It was the Any CPU version.
Zachs
7th January 2015, 13:10
What's the frequency of your Q6600 BTW?
romulous
7th January 2015, 13:27
@Zachs: Here is what CPU-Z has to say:
http://i.imgur.com/qH98hu7.png
nevcairiel
7th January 2015, 15:24
BTW, since LAV already does dxva cb, wouldn't it be easy to do DXVA deinterlacing too?
Its possible to implement it, but I refrained from doing it since it would greatly complicate the logic and double the performance hit from CB as twice the frames would need to be copied to system memory, while a renderer can do it without this performance hit at all.
The reason CUVID and QuickSync offer it is that its just a boolean flag to enable, and not any extra code otherwise, so its an effortless option.
Zachs
7th January 2015, 22:57
@Zachs: Here is what CPU-Z has to say:
http://i.imgur.com/qH98hu7.png
Ah, 2.4Ghz. No wonder. The lack of single threaded performance is the reason why you're seeing such slowness at startup. Anyway, I'll see what I can do.
Its possible to implement it, but I refrained from doing it since it would greatly complicate the logic and double the performance hit from CB as twice the frames would need to be copied to system memory, while a renderer can do it without this performance hit at all.
The reason CUVID and QuickSync offer it is that its just a boolean flag to enable, and not any extra code otherwise, so its an effortless option.
I'm not familiar with DXVA decoding at all so I'm probably completely way off the mark here, but can't you decode and deinterlace in one go before doing the copy back?
Asmodian
7th January 2015, 23:07
I'm not familiar with DXVA decoding at all so I'm probably completely way off the mark here, but can't you decode and deinterlace in one go before doing the copy back?
It is not that you copy back after decoding and again after deinterlacing but that you double the number of frames needing the copy back if you deinterlace at the same time.
Zachs
7th January 2015, 23:09
It is not that you copy back after decoding and again after deinterlacing but that you double the number of frames needing the copy back if you deinterlace at the same time.
Doesn't this apply for CUVID and QuickSync too?
nevcairiel
7th January 2015, 23:13
Doesn't this apply for CUVID and QuickSync too?
It does, but like I said, its just one boolean flag to enable deinterlacing there, so even if its not ideal performance, it wasn't exactly effort to implement it.
nekromantik
7th January 2015, 23:23
Hi everyone
Cant seem to get this to work. I got both Win 7 and Win 8.1 x64 laptops with LAV filters installed.
However when trying to play any non avi file with MPEDN it says cannot render and gives no details.
Zachs
7th January 2015, 23:27
It does, but like I said, its just one boolean flag to enable deinterlacing there, so even if its not ideal performance, it wasn't exactly effort to implement it.
Yes, I get the effort part, just didn't quite understand what you meant by twice the copy back when all deinterlacing algo's if set up equally would require it too. Anyway exactly how much effort are we talking about, do you know?
Zachs
7th January 2015, 23:29
Hi everyone
Cant seem to get this to work. I got both Win 7 and Win 8.1 x64 laptops with LAV filters installed.
However when trying to play any non avi file with MPEDN it says cannot render and gives no details.
Did you install x64 LAV filters specifically?
nekromantik
7th January 2015, 23:30
Did you install x64 LAV filters specifically?
Nope. Installed x86 of both MPEDN and LAV as I want to use MadVR with it.
Zachs
7th January 2015, 23:33
What non-avi files are we talking about?
nekromantik
7th January 2015, 23:37
What non-avi files are we talking about?
Tried different mkvs with avc h264 and also avc mp4s. Some 720P others 1080P.
shaolin95
7th January 2015, 23:38
I got interested in this player and will be reading the 20 pages later today and testing it but while I get home, I was wondering if my only intent is to use it for Bluray rip playback, if I will be taking real advantage of its features.
Also, does it have an upmix from 5.1 to 7.1 like on the latest builds of MPC BE?
Thanks!
Zachs
8th January 2015, 00:51
Tried different mkvs with avc h264 and also avc mp4s. Some 720P others 1080P.
Well, no one else reported such problems. As long as LAV can decode the files, MPDN will play them. What you could perhaps try is make sure your LAV filters are setup correctly (i.e. try MPC-HC / BE without internal filters and force it to use external LAV filters).
I got interested in this player and will be reading the 20 pages later today and testing it but while I get home, I was wondering if my only intent is to use it for Bluray rip playback, if I will be taking real advantage of its features.
Also, does it have an upmix from 5.1 to 7.1 like on the latest builds of MPC BE?
Thanks!
Yes, Chroma upscaling with SuperChromaRes is by far the best IQ you could get - and you still need to upscale chroma for 1080p 4:2:0 materials (assuming your rips are 1080p). Upmix is easily achieved with AC3Filter (just add it into the audio post processing filter list - I personally use it myself).
shaolin95
8th January 2015, 00:58
Well, no one else reported such problems. As long as LAV can decode the files, MPDN will play them. What you could perhaps try is make sure your LAV filters are setup correctly (i.e. try MPC-HC / BE without internal filters and force it to use external LAV filters).
Yes, Chroma upscaling with SuperChromaRes is by far the best IQ you could get - and you still need to upscale chroma for 1080p 4:2:0 materials (assuming your rips are 1080p). Upmix is easily achieved with AC3Filter (just add it into the audio post processing filter list - I personally use it myself).
Excellent about ChromaRes ! You bet I am directly going to my HT room today to test this. :D
About AC3Filter..but how does that come into play if I am using lav filters for audio/video and have the dts-hd decoder (TMT).
I guess I am confused on how all those will come together with Ac3Filter to upmix.
Sorry for the noob question :)
Zachs
8th January 2015, 01:11
Excellent about ChromaRes ! You bet I am directly going to my HT room today to test this. :D
About AC3Filter..but how does that come into play if I am using lav filters for audio/video and have the dts-hd decoder (TMT).
I guess I am confused on how all those will come together with Ac3Filter to upmix.
Sorry for the noob question :)
AC3Filter must be setup to accept LPCM / PCM inputs, and also set its output to 7.1, that should be all it takes.
Shiandow
8th January 2015, 01:14
Hi everyone,
The latest Player Extensions now also add shortcuts for rewinding / forwarding playback. The key bindings are similar to those of MPC-HC and are as follows:
Left / Right: Go back / forward 5 seconds.
Ctrl + Shift + Left / Right: Go back / forward 30 seconds.
Ctrl + Left / Right: Go back / forward 1 frame.
Ctrl + PageDown / PageUp: Load next / previous file in folder.
You can also find this list in the context menu under Play -> Navigation.
shaolin95
8th January 2015, 04:36
Yes, Chroma upscaling with SuperChromaRes is by far the best IQ you could get - and you still need to upscale chroma for 1080p 4:2:0 materials (assuming your rips are 1080p). Upmix is easily achieved with AC3Filter (just add it into the audio post processing filter list - I personally use it myself).
When you say Chroma Upscaling and SuperChromaREs...is it one or the other not both together?
Also, there is a Chroma Upscaler option AND there is a ChromaScaler script too so just wondering.
I am reading through the thread now checking for recommend settings as well.
Regards!
Zachs
8th January 2015, 04:42
I imagine this is because it is written in .NET, but is there any reason why the MPDN interface is unresponsive for a couple of seconds after you start it? So you run MediaPlayerDotNet.exe, MPDN opens up - but you can't click on any of the menus (eg View) for a couple of seconds because the Windows 'busy' icon is showing (the animated circle icon in Win 7, it was an hourglass on XP I think). Once the busy icons goes away, you can interact with the program, but I can't say that I can recall seeing any other programs off the top of my head that show a delay like this at startup.
romulous
v2.16.4 Changelog:
Implemented script caching to reduce start up time
Scripts will get recompiled automatically at startup if they have been updated (based on write time stamp and file size). However, should you suspect that a script is not being recompiled, start MPDN with --flushcache switch and it'll make sure the entire cache gets flushed out, forcing all scripts to get recompiled.
On my i5 dual core 2.5Ghz laptop, the hour glass now only so much as flickers. Profiling the load times of the pre-compiled scripts shows 5ms. :)
Zachs
8th January 2015, 04:48
When you say Chroma Upscaling and SuperChromaREs...is it one or the other not both together?
Also, there is a Chroma Upscaler option AND there is a ChromaScaler script too so just wondering.
I am reading through the thread now checking for recommend settings as well.
Regards!
Pick one. Chroma Upscaler will be bypassed automatically when you choose a render script chroma scaler. The beauty of the RenderScript system is that it allows a portion, or the all scaling operations to be replaced.
For example, if you have just SuperChromaRes in your render script, you'll still have to rely on MPDN's luma upscaler / downscaler to get you to the target size. You can bypass MPDN's upscalers completely too if you choose SuperChromaRes -> SuperRes. This of course would still rely on MPDN's downscalers.
RainyDog
8th January 2015, 08:03
Well, no one else reported such problems. As long as LAV can decode the files, MPDN will play them. What you could perhaps try is make sure your LAV filters are setup correctly (i.e. try MPC-HC / BE without internal filters and force it to use external LAV filters).
Hi Zachs, I have exactly the same issue but using MPDN x64.
Both x86 and x64 LAV filters installed, MPC-BE+madVR+LAV filters combination works fine but MPDN just won't open any videos giving a cannot render file error message with no further details.
Will try the x86 version later and report back.
Zachs
8th January 2015, 08:10
Have you tried what I said in regards to disabling internal filters with MPC-BE?
If that works fine, enable debug dialog in options, and click on details button when the error occurs and paste the stack trace and error messages here for me please.
romulous
8th January 2015, 09:18
Oddly, Any CPU 2.16.6 still has the same delay on my system - with the rederscripts, it is now back to about 2 seconds again, the delay I had originally with the previous version (it is about 1 second with an empty renderscript folder). The x86 and x64 builds of 2.16.6 are both instant now though, even with the renderscripts installed - thanks :) This is all with a fresh install of all three by the way, so no mess left over from the previous install. Does Any CPU require time to detect your CPU type or something? Maybe that explains the delay?
Zachs
8th January 2015, 09:37
No. If you run AnyCPU the second time, does it get any faster?
The reason AnyCPU is the odd one out is because it shares the same cache as 64 or 32 bit editions depending on your OS. Also note that if you have multiple copies of MPDN of the same edition in different folders, scripts will get recompiled each time for each copy of you run one after the other.
ryrynz
8th January 2015, 09:41
Does Any CPU require time to detect your CPU type or something? Maybe that explains the delay?
Figured that might be the cause of it, but when I ran the AnyCPU edition on my 3570K it's start up performance was exactly the same as the x64, maybe it's like you said..
Guess MPDN just does not like my system.
;)
huhn
8th January 2015, 10:30
anyCPU is simply not optimised that's all it works with "anyCPU" because the CPU doesn't have to support things like SSE2, MMX, AVX and stuff like this.
and of course this version is slower.
Zachs
8th January 2015, 10:37
anyCPU is simply not optimised that's all it works with "anyCPU" because the CPU doesn't have to support things like SSE2, MMX, AVX and stuff like this.
and of course this version is slower.
No that's not true. The difference between AnyCPU and the other versions is simply that I have put a flag in the exe header. Why would it run any slower?
romulous
8th January 2015, 10:48
No. If you run AnyCPU the second time, does it get any faster?
Actually, it seemed to get slower. This may be why...
Also note that if you have multiple copies of MPDN of the same edition in different folders, scripts will get recompiled each time for each copy of you run one after the other.
I had one separate folders for each of the three editions, and ran them one by one, in turn. Twice each - one to make the cache, the second time to try and make use of it. So run Any CPU twice, then x86 twice, then finally x64 twice. Any CPU was really slow on the second run, x86 and x64 were instant on the second run. However...
maybe it's like you said..
That is entirely plausible, and would be the simplest explanation.
Zachs
8th January 2015, 11:01
I'll have a look.
EDIT: I can't replicate the issue here but the next version AnyCPU will have its own set of config files which I think makes more sense since it's a separate edition to x86/x64.
ryrynz
8th January 2015, 11:55
No that's not true. The difference between AnyCPU and the other versions is simply that I have put a flag in the exe header. Why would it run any slower?
He thought the AnyCPU version had different compiler optimizations.
Blackfyre
8th January 2015, 13:35
Oddly, Any CPU 2.16.6 still has the same delay on my system - with the rederscripts, it is now back to about 2 seconds again, the delay I had originally with the previous version (it is about 1 second with an empty renderscript folder). The x86 and x64 builds of 2.16.6 are both instant now though, even with the renderscripts installed - thanks :) This is all with a fresh install of all three by the way, so no mess left over from the previous install. Does Any CPU require time to detect your CPU type or something? Maybe that explains the delay?
Can you give this a try...
Download CCleaner (Free One) from here:
https://www.piriform.com/ccleaner/download
Install then RUN the program and do this: TICK everything on the left panel except for the Windows Explorer entries (Look at the image below) it says #1 on the stuff that shouldn't be ticked.
http://i.imgur.com/pxzZDF1.png
After everything is ticked, click Analyze bottom left, then click Run Cleaner @ the bottom right.
MOST Importantly cleaning your registry... Which is number 2.
Top left corner click on registry...
bottom left corner click on scan for issues, then bottom right corner click on FIX SELECTED ISSUES. When asked to backup registry say no then FIX ALL, then scan again and then FIX all until there's no more registry errors left... Restart your computer. See if you're still having the same issue.
After not formatting for a while there could be a lot of left over cr*p in the registry that should be cleaned every once in a while.
I'm not saying this will fix your issue, but it's worth a try, and even if it doesn't fix your issue, at least you've cleaned your registry now, which should make your pc feel slightly faster/more responsive. If you haven't formatted for a year or so.
huhn
8th January 2015, 13:36
No that's not true. The difference between AnyCPU and the other versions is simply that I have put a flag in the exe header. Why would it run any slower?
ok i'm sorry. this version doesn't make any sense to me but that's fine.
Zachs
8th January 2015, 13:43
ok i'm sorry. this version doesn't make any sense to me but that's fine.
It's mainly for portability where you have no idea what if you will be running on 32 or 64 bit OS. Yes you still need LAV filters but I'm hoping to include them in MPDN distributions in the future (@nev do I have your permission to do this?).
romulous
8th January 2015, 13:48
Can you give this a try...
Already a long time CCleaner user* :)
*Except for the most current version, new Metro GUI is not to my liking.
Razoola
8th January 2015, 16:08
Would it be possible to have an option to choose which monitor should be used when going into full screen mode? With MPC-HC its nice to have the option to choose this. One can then play movies on the primary monitor when not in full screen and then use the secondary (or monitor of choice) when going into full screen.
nevcairiel
8th January 2015, 16:32
Yes, I get the effort part, just didn't quite understand what you meant by twice the copy back when all deinterlacing algo's if set up equally would require it too. Anyway exactly how much effort are we talking about, do you know?
Its been some time since I explored that area of DXVA2. I tried to do it with DXVA-HD once since it showed more flexibility, however it turned out AMD doesn't implement DXVA-HD at all, so that was some time wasted..
Its probably a day or two, plus setting up a AMD test system again, IIRC they required some more complex surface handling to get the highest quality (ie. provide some future and some past frames to get a proper deinterlaced image), while NVIDIA did seem to do that internal in the driver.
The reasoning not to bother back then also included that NVIDIA users could just use CUVID if they wanted deinterlacing, and DXVA2-CB was unusable on AMD due to its super slow copy-back speed (which was improved in the 7xxx series and up, finally).
fairchild
8th January 2015, 21:53
Zachs you are making great progress with this player. I love the NEDI/SuperRes options... So first of all :thanks:
Now onto a hopefully quick question I had for you. Are you at all working on implementing a refresh rate change similar to what MadVR does? (It's one of the main reasons why I am continuing to mainly use MPC+MadVR as my setup of choice)
Like where you can enter the following: 1080p23,1080p24,1080p50,1080p60
Then video renderer can determine the type of refresh rate which the video is and then changes to the appropriate refresh. This is big for me since my plasma TV has a 96hz mode which plays back 23.976 videos perfectly in sync with no flicker and this bypasses the need for any video smoothing features.
nekromantik
8th January 2015, 22:48
Here is stack trace.
Yes if I disable internal LAV in MPC HC it works fine.
===================================
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
------------------------------
Error Type = Mpdn.VideoPlayer.DsGraphException
Error Message = Failed to render file 'D:\2012 Keep The Lights On (USA)\Keep.The.Lights.On.2012.DVDRip.XviD-QaFoNE.avi'
Error Source = Mpdn.VideoPlayer
Error Site = Void .ctor(System.String, CreateParams)
Error occurred = at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, CreateParams createParams)
at Mpdn.VideoPlayer.VideoPlayer.Load(String fileName, LoadParams loadParams)
at MediaPlayerDotNet.MainForm.
(String )
at MediaPlayerDotNet.MainForm.PlayMedia(String fileName, Boolean resizeWindowToFit)
at MediaPlayerDotNet.MainForm.OpenMedia(String filename)
at MediaPlayerDotNet.MainForm.
(Object , EventArgs )
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
OS Version = Microsoft Windows NT 6.1.7601 Service Pack 1
Total Physical Memory = 5.9 GB
Available Physical Memory = 2.7 GB
Date Time = 08/01/2015 21:45:44
User Name = Nekromantik-17R\Nekromantik
Application Startup Path = C:\mpcdn
Application Executable Path = C:\mpcdn\MediaPlayerDotNet.exe
CurrentDirectory = C:\mpcdn
SystemDirectory = C:\Windows\system32
Ran As Admin = True
HasShutdownStarted = False
MachineName = NEKROMANTIK-17R
ProcessorCount = 4
LogicalDrives = C:\, D:\, E:\
EnvironmentVariables = Path = C:\Ruby193\bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\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\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Java\jdk1.7.0_21/bin;C:\AndroidSDK\platform-tools;C:\Program Files (x86)\Smart Projects\IsoBuster;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\OpenVPN\bin;C:\HashiCorp\Vagrant\bin;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Calibre2\;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;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 = Nekromantik-17R; PROCESSOR_ARCHITECTURE = x86; ProgramW6432 = C:\Program Files; PUBLIC = C:\Users\Public; APPDATA = C:\Users\Nekromantik\AppData\Roaming; windir = C:\Windows; LOCALAPPDATA = C:\Users\Nekromantik\AppData\Local; CommonProgramW6432 = C:\Program Files\Common Files; VBOX_INSTALL_PATH = C:\Program Files\Oracle\VirtualBox\; TMP = C:\Users\NEKROM~1\AppData\Local\Temp; ProgramFiles = C:\Program Files (x86); USERPROFILE = C:\Users\Nekromantik; ALLUSERSPROFILE = C:\ProgramData; PROCESSOR_LEVEL = 6; FP_NO_HOST_CHECK = NO; HOMEPATH = \Users\Nekromantik; COMPUTERNAME = NEKROMANTIK-17R; PROCESSOR_ARCHITEW6432 = AMD64; USERNAME = Nekromantik; NUMBER_OF_PROCESSORS = 4; PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 58 Stepping 9, GenuineIntel; TEMP = C:\Users\NEKROM~1\AppData\Local\Temp; SystemRoot = C:\Windows; ComSpec = C:\Windows\system32\cmd.exe; LOGONSERVER = \\NEKROMANTIK-17R; MOZ_PLUGIN_PATH = C:\Program Files (x86)\Foxit Software\Foxit Reader\plugins\; ProgramFiles(x86) = C:\Program Files (x86); CommonProgramFiles = C:\Program Files (x86)\Common Files; JAVA_HOME = C:\Program Files\Java\jdk1.7.0_21; UOIPME_REG_PATH = C:\Program Files\Intel Corporation\USB over IP; PROCESSOR_REVISION = 3a09; CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files; ESET_OPTIONS = ; SystemDrive = C:; PSModulePath = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\; OS = Windows_NT; ProgramData = C:\ProgramData; HOMEDRIVE = C:
RuntimeVersion = 4.0.30319.18063
Thread Count = 35
Handle Count = 958
VM Size = 525.1 MB
Peak VM Size = 570.8 MB
Working Set Size = 110.2 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, mscoreei.dll, SHLWAPI.dll, GDI32.dll, USER32.dll, LPK.dll, USP10.dll, IMM32.DLL, MSCTF.dll, clr.dll, MSVCR110_CLR0400.dll, mscorlib.ni.dll, ole32.dll, uxtheme.dll, ltc_help32-90652.dll, SHELL32.dll, WINTRUST.dll, CRYPT32.dll, MSASN1.dll, clrjit.dll, System.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll, CRYPTSP.dll, rsaenh.dll, RpcRtRemote.dll, nlssorting.dll, bcrypt.dll, comctl32.dll, dwmapi.dll, gdiplus.dll, WindowsCodecs.dll, oleaut32.dll, System.Core.ni.dll, System.Xml.Linq.ni.dll, System.Xml.ni.dll, VideoFrameServicesNative.dll, d3d9.dll, VERSION.dll, d3d8thk.dll, aticfx32.dll, atiu9pag.dll, igdumdim32.dll, igdusc32.dll, atiumdag.dll, atiumdva.dll, POWRPROF.dll, SETUPAPI.dll, CFGMGR32.dll, DEVOBJ.dll, D3D9NativeServices.dll, WINMM.dll, WTSAPI32.dll, WINSTA.dll, dxgi.dll, d3d11.dll, atiuxpag.dll, igd10iumd32.dll, ncrypt.dll, atidxx32.dll, d3d10_1.dll, d3d10_1core.dll, d3dx10_43.dll, apphelp.dll, CLBCatQ.DLL, devenum.dll, ntmarta.dll, WLDAP32.dll, msdmo.dll, MMDevAPI.DLL, PROPSYS.dll, wdmaud.drv, ksuser.dll, AVRT.dll, AUDIOSES.DLL, msacm32.drv, MSACM32.dll, midimap.dll, dsound.dll, quartz.dll, LAVSplitter.ax, avformat-lav-55.dll, WS2_32.dll, NSI.dll, avcodec-lav-55.dll, avutil-lav-52.dll, libbluray.dll, qcap.dll, MSVFW32.dll, sxs.dll, VSFilter.dll, COMDLG32.dll, WINSPOOL.DRV, WININET.dll, api-ms-win-downlevel-user32-l1-1-0.dll, api-ms-win-downlevel-shlwapi-l1-1-0.dll, api-ms-win-downlevel-version-l1-1-0.dll, api-ms-win-downlevel-normaliz-l1-1-0.dll, normaliz.DLL, iertutil.dll, api-ms-win-downlevel-advapi32-l1-1-0.dll, USERENV.dll, profapi.dll, LAVVideo.ax, swscale-lav-2.dll, avfilter-lav-3.dll, qedit.dll, DDRAW.dll, DCIMAN32.dll, D3DIM700.DLL, evr.dll, MFPlat.DLL, DXVA2.DLL, bcryptprimitives.dll, Microsoft.VisualBasic.ni.dll, System.Management.ni.dll, diasymreader.dll, psapi.dll, System.Data.ni.dll, System.Data.dll, System.Web.ni.dll, tiptsf.dll, explorerframe.dll, DUser.dll, DUI70.dll, GROOVEEX.DLL, MSVCR100.dll, MSVCP100.dll, ATL100.DLL, msi.dll, GrooveIntlResource.dll, TortoiseOverlays.dll, TortoiseStub32.dll, TortoiseSVN32.dll, libsvn_tsvn32.dll, libapr_tsvn32.dll, MSWSOCK.dll, MSVCR110.dll, libaprutil_tsvn32.dll, intl3_tsvn32.dll, libsasl32.dll, Secur32.dll, MSVCP110.dll, EhStorShell.dll, msls31.dll, xmllite.dll, StructuredQuery.dll, actxprxy.dll, ieproxy.dll, api-ms-win-downlevel-shlwapi-l2-1-0.dll, thumbcache.dll, SearchFolder.dll, SHDOCVW.dll, ieframe.DLL, api-ms-win-downlevel-shell32-l1-1-0.dll, ntshrui.dll, srvcli.dll, cscapi.dll, slc.dll, MPR.dll, pfmapi_7DB.dll, drprov.dll, ntlanman.dll, NetworkExplorer.dll, davclnt.dll, DAVHLPR.dll, wkscli.dll, netutils.dll, LINKINFO.dll, wpdshext.dll, PortableDeviceApi.dll, IconCodecService.dll, audiodev.dll, WMVCore.DLL, WMASF.DLL, EhStorAPI.dll
===================================
Failed to render file 'D:\2012 Keep The Lights On (USA)\Keep.The.Lights.On.2012.DVDRip.XviD-QaFoNE.avi' (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, CreateParams createParams)
at Mpdn.VideoPlayer.VideoPlayer.Load(String fileName, LoadParams loadParams)
at MediaPlayerDotNet.MainForm.
(String )
at MediaPlayerDotNet.MainForm.PlayMedia(String fileName, Boolean resizeWindowToFit)
at MediaPlayerDotNet.MainForm.OpenMedia(String filename)
at MediaPlayerDotNet.MainForm.
(Object , EventArgs )
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
===================================
Failed to connect filter to graph (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo.Load(String fileName, SubtitlesLoader subtitlesLoader)
at Mpdn.VideoPlayer.DirectShowVideo..ctor(String fileName, CreateParams createParams)
===================================
Failed to get DirectShow filter pin index 0 (Mpdn.VideoPlayer)
------------------------------
Program Location:
at Mpdn.VideoPlayer.DirectShowVideo.GetPin(IBaseFilter filter, PinDirection dir, Int32 pinIndex)
at Mpdn.VideoPlayer.DirectShowVideo.ConnectPins(IGraphBuilder graphBuilder, IBaseFilter fromFilter, Int32 fromPinIndex, IBaseFilter toFilter, Int32 toPinIndex)
at Mpdn.VideoPlayer.DirectShowVideo.ConnectToCallbackFilter(IFilterGraph2 graph, ICaptureGraphBuilder2 graphBuilder, IBaseFilter fromFilter, IBaseFilter callbackFilter)
Zachs
9th January 2015, 01:12
Zachs you are making great progress with this player. I love the NEDI/SuperRes options... So first of all :thanks:
Now onto a hopefully quick question I had for you. Are you at all working on implementing a refresh rate change similar to what MadVR does? (It's one of the main reasons why I am continuing to mainly use MPC+MadVR as my setup of choice)
Like where you can enter the following: 1080p23,1080p24,1080p50,1080p60
Then video renderer can determine the type of refresh rate which the video is and then changes to the appropriate refresh. This is big for me since my plasma TV has a 96hz mode which plays back 23.976 videos perfectly in sync with no flicker and this bypasses the need for any video smoothing features.
Player extension was created exactly for this sort of things, someone (or me) just needs to write an "Auto refresh rate" extension.
Here is stack trace.
Yes if I disable internal LAV in MPC HC it works fine.
===================================
An unexpected error 'Mpdn.VideoPlayer.DsGraphException' has occurred.
Thanks for the stack trace. I will take a look and see if I could work out what is wrong.
EDIT: Did you have anything in your Video Post Processing filter list? Just a reminder: DirectVobSub and XySubFilter are not video post processing filters, so don't add them to the filter list.
EDIT2: v2.16.7 now has DirectVobSub and XySubFilter removed from the post processing filter list.
Zachs
9th January 2015, 02:40
Its been some time since I explored that area of DXVA2. I tried to do it with DXVA-HD once since it showed more flexibility, however it turned out AMD doesn't implement DXVA-HD at all, so that was some time wasted..
Its probably a day or two, plus setting up a AMD test system again, IIRC they required some more complex surface handling to get the highest quality (ie. provide some future and some past frames to get a proper deinterlaced image), while NVIDIA did seem to do that internal in the driver.
The reasoning not to bother back then also included that NVIDIA users could just use CUVID if they wanted deinterlacing, and DXVA2-CB was unusable on AMD due to its super slow copy-back speed (which was improved in the 7xxx series and up, finally).
It does sound like you feel it's worth doing now since AMD improved their DXVA2-CB as you've said? :P
Zachs
9th January 2015, 03:04
I made an interesting discovery. This is based on the following test file (YUV P210) originally posted by romulous.
https://mega.co.nz/#!YMAwwTja!blxHH99-7dEPBTxncUUw4SwULDZqUEEYjU7Y80C46DI
It's an 800MB ProRes encoded game trailer.
I noticed that MPDN x86 edition uses about 46-50% of my core i5 dual core (MPC-HC+madVR 48-52%) but the x64 edition is massively faster, only using 32-35%. Quite unexpected really.
Oh if only dtsdecoder.dll had a 64-bit version! Is there every going to be one?
Zachs
9th January 2015, 03:27
Would it be possible to have an option to choose which monitor should be used when going into full screen mode? With MPC-HC its nice to have the option to choose this. One can then play movies on the primary monitor when not in full screen and then use the secondary (or monitor of choice) when going into full screen.
Ideally not since MPDN at the moment only does display rate detection for the monitor (via adapter ID in options) you have selected. This means if you have adapter ID 0 selected, you'll be using the refresh rate of your primary monitor even when you are playing it on your secondary monitor.
However, if both of your monitors are similarly spec'ed and are both connected to a multihead graphics adapter, and that you have both the monitor's refresh rate set up similarly, then it should work fine. You'll have to move the window to the monitor you've selected in options menu before you go full screen though.
ryrynz
9th January 2015, 06:18
I noticed that MPDN x86 edition uses about 46-50% of my core i5 dual core (MPC-HC+madVR 48-52%) but the x64 edition is massively faster, only using 32-35%. Quite unexpected really.
Nev did say last year that there has been quite a lot of optimizations in H.265 and maybe VP9? by the ffmpeg team in the 64 bit versions. It feels like 64 bit is finally coming of age.
nekromantik
9th January 2015, 07:40
Player extension was created exactly for this sort of things, someone (or me) just needs to write an "Auto refresh rate" extension.
Thanks for the stack trace. I will take a look and see if I could work out what is wrong.
EDIT: Did you have anything in your Video Post Processing filter list? Just a reminder: DirectVobSub and XySubFilter are not video post processing filters, so don't add them to the filter list.
EDIT2: v2.16.7 now has DirectVobSub and XySubFilter removed from the post processing filter list.
Hi
No no other filters selected. Just tried latest version and same issue and same exact message. The files I am trying do not have subtitles.
Zachs
9th January 2015, 07:41
Hi
No no other filters selected. Just tried latest version and same issue and same exact message. The files I am trying do not have subtitles.
Can you try the different editions to see if any of that worked? If not, could you upload a small sample somewhere for me to take a look?
nekromantik
9th January 2015, 07:56
Can you try the different editions to see if any of that worked? If not, could you upload a small sample somewhere for me to take a look?
Just tried x64 and now some files play but without video and show api error when going fullscreen.
Others same error.
Here is a sample of sample that errors:
http://www.filedropper.com/theentitysample
Zachs
9th January 2015, 08:10
Just tried x64 and now some files play but without video and show api error when going fullscreen.
Others same error.
Here is a sample of sample that errors:
http://www.filedropper.com/theentitysample
What is your system specs? This is the first time I get someone reporting such errors... when it plays without video, what are the filters currently loaded (e.g. right click, filters)?
EDIT: Just tested the file and and plays perfectly fine. Do you have another machine to test just to rule out your PC config / hardware problem?
nekromantik
9th January 2015, 08:48
What is your system specs? This is the first time I get someone reporting such errors... when it plays without video, what are the filters currently loaded (e.g. right click, filters)?
EDIT: Just tested the file and and plays perfectly fine. Do you have another machine to test just to rule out your PC config / hardware problem?
It plays fine on all other players inc wmp mpc hc etc
It's core i5 laptop with radeon 8 series gpu..
Zachs
9th January 2015, 08:51
Well I'm not sure what the problem is then. Can't replicate any of your problems on my various machines, including one that has a lowly ati4350.
nevcairiel
9th January 2015, 09:25
It does sound like you feel it's worth doing now since AMD improved their DXVA2-CB as you've said? :P
Maybe, maybe not. Its not like I have much free time these days anyway.
Oh if only dtsdecoder.dll had a 64-bit version! Is there every going to be one?
Considering the product we borrowed it from doesn't even exist anymore, no.
But maybe one day ffmpeg itself will support DTS-HD MA decoding. There was work going on, but the guy who was working on it vanished, unfortunately.
ryrynz
9th January 2015, 09:56
Just tried x64 and now some files play but without video and show api error when going fullscreen.
Try running the .NET repair tool (http://www.microsoft.com/en-us/download/details.aspx?id=30135) and checking your system with a "sfc /scannow" command in the command prompt.
Considering the product we borrowed it from doesn't even exist anymore, no.
Worth asking around if anyone knows the people who made it? Perhaps if found they could release the source for it and work could being on a 64 bit version or are there licensing issues with that?
nevcairiel
9th January 2015, 09:59
Worth asking around if anyone knows the people who made it? Perhaps if found they could release the source for it and work could being on a 64 bit version or are there licensing issues with that?
Its based on the dts reference decoder, they would get sued immediately if they did that.
ryrynz
9th January 2015, 10:16
Its based on the dts reference decoder, they would get sued immediately if they did that.
Couldn't a DLL wrapper be used?
Zachs
9th January 2015, 10:34
Hmm. What's the licensing of dts reference decoder like?
If we have license to one implementation of it, does that give us the rights to compile and use another one based on the reference decoder?
nevcairiel
9th January 2015, 12:42
Those companies like DTS or Dolby are very strict about their stuff, I don't think they would be particularly happy if they knew that we used this ArcSoft decoder in a way that we did. I don't know how its licensed specifically, but I bet it involves outrageous financial transactions and NDAs.
foxyshadis
9th January 2015, 12:54
DTS is currently something around $1 or $2 a user, a little less if you have millions of users, and there is no unlimited license. Any implementation based on the references or the patents needs a license, while clean-room versions exist in that grey area. For example: An old DVD player license agreement at $.60 per player (http://www.ip.philips.com/data/downloadables/1/3/2/5/usa-dts-dvd-video-player-joint-02-2004.pdf?force-download=yes).
Zachs
9th January 2015, 13:09
Yes but for those of us who have already got ArcSoft or PowerDVD, and all we are asking is to have the equivalent of dtsdecoder.dll in 64bit, compiled from the same reference code, technically it's still just the one user.
Not saying that MPDN would distribute it but if someone were to make that available on the net and freely available for download like the current version, then it would be no different to the 32bit version wouldn't it?
nevcairiel
9th January 2015, 13:44
Not saying that MPDN would distribute it but if someone were to make that available on the net and freely available for download like the current version, then it would be no different to the 32bit version wouldn't it?
The "current" version wasn't really freely available as such, it just happened to be possible to extract it from the trial version of a commercial product. Its a grey area already.
Razoola
9th January 2015, 14:15
Ideally not since MPDN at the moment only does display rate detection for the monitor (via adapter ID in options) you have selected. This means if you have adapter ID 0 selected, you'll be using the refresh rate of your primary monitor even when you are playing it on your secondary monitor.
However, if both of your monitors are similarly spec'ed and are both connected to a multihead graphics adapter, and that you have both the monitor's refresh rate set up similarly, then it should work fine. You'll have to move the window to the monitor you've selected in options menu before you go full screen though.
That's a pity, hopefully you will add support for this in the future. Using the method you suggest is not really possible for me given both displays are in different rooms.
shaolin95
9th January 2015, 21:28
Pick one. Chroma Upscaler will be bypassed automatically when you choose a render script chroma scaler. The beauty of the RenderScript system is that it allows a portion, or the all scaling operations to be replaced.
For example, if you have just SuperChromaRes in your render script, you'll still have to rely on MPDN's luma upscaler / downscaler to get you to the target size. You can bypass MPDN's upscalers completely too if you choose SuperChromaRes -> SuperRes. This of course would still rely on MPDN's downscalers.
I see, so in my case that I am only playing 1080p Bluray Rips then SuperChromaRes is all I really need at least regarding Chroma scaling, right?
nekromantik
9th January 2015, 22:12
Try running the .NET repair tool (http://www.microsoft.com/en-us/download/details.aspx?id=30135) and checking your system with a "sfc /scannow" command in the command prompt.
Nope tried that no difference.
Shame, this is the only video player on my laptop that dont work.
All my files work on laptop, PC, PS4, Smart TV etc
All except MPCDN.
Asmodian
9th January 2015, 22:40
Nope tried that no difference.
Shame, this is the only video player on my laptop that dont work.
All my files work on laptop, PC, PS4, Smart TV etc
All except MPCDN.
Heh MPCDN. MPDN has no connection to the MPC-XX family, it is a completely new code base even if they both use LAV for decoding. ;)
MPDN was coded in .NET which none of your other players are, it is possible to have something on your computer broken for .NET so other players work but MPDN does not. MPDN works fine on my computer too so you may need to re-install Windows. Of course the problem might be somewhere else or in MPDN; I only want to point out that just because every other player works does not necessarily mean your system is fine and the problem is in MPDN.
nekromantik
9th January 2015, 23:27
Heh MPCDN. MPDN has no connection to the MPC-XX family, it is a completely new code base even if they both use LAV for decoding. ;)
MPDN was coded in .NET which none of your other players are, it is possible to have something on your computer broken for .NET so other players work but MPDN does not. MPDN works fine on my computer too so you may need to re-install Windows. Of course the problem might be somewhere else or in MPDN; I only want to point out that just because every other player works does not necessarily mean your system is fine and the problem is in MPDN.
Yes I understand.
I have already tried to re-install .net 4.5 but still same issue.
Out of ideas.
Zachs
10th January 2015, 00:48
That's a pity, hopefully you will add support for this in the future. Using the method you suggest is not really possible for me given both displays are in different rooms.
Hmm... Can't you simply run two copies of MPDN?
I see, so in my case that I am only playing 1080p Bluray Rips then SuperChromaRes is all I really need at least regarding Chroma scaling, right?
If your display is also 1080p, yes that's all you need. However it won't hurt to have super res in there as well in case you need to play 720p materials. It automatically deactivates if there's nothing for it to do.
Zachs
10th January 2015, 00:49
Nope tried that no difference.
Shame, this is the only video player on my laptop that dont work.
All my files work on laptop, PC, PS4, Smart TV etc
All except MPCDN.
Well does the same issue happen on your PC?
nekromantik
10th January 2015, 01:16
Well does the same issue happen on your PC?
Not tried it. Its packed away.
Zachs
10th January 2015, 01:22
Not tried it. Its packed away.
At this point I'm inclined to say it's a problem with your system config, as the error you encountered is a very fundamental one.
Just as with any other software, if no one else could replicate your issue, chances are no one else would know how to fix it either.
nekromantik
10th January 2015, 01:33
At this point I'm inclined to say it's a problem with your system config, as the error you encountered is a very fundamental one.
Just as with any other software, if no one else could replicate your issue, chances are no one else would know how to fix it either.
I will try on my friends laptop tomorrow.
mrcorbo
10th January 2015, 07:35
I wanted to replicate some MPC-HC functionality in MPDN, specifically being able to advance to the next file in a playlist or folder and go back to the previous file in a playlist or folder using the forward & back buttons on the mouse. In MPC-HC, which function the buttons perform is determined by context. If you are playing a file with chapters they navigate through the chapters, if you have a playlist they navigate through the playlist and if you are playing a single file they navigate through the files in the folder.
MPDN doesn't have chapter support yet (unless I'm missing something), but I was able to modify the KeyRemap Player Extension to replicate the rest of the behaviors by using a global variable to hold the number of playlist items and testing against that to determine which functions to assign to the buttons. The buttons then just trigger the appropriate keyboard shortcut for the function.
Now, this may seem trivial. But I'm posting this because this was accomplished with no prior knowledge of C# and just your example code and Google to guide me. It's testament to the design choices you made that a complete novice was able to add a feature they wanted to your program to make it work better for them. So :thanks:
In the course of working on this I did find a bug(?) in the Navigation.cs Player Extension. As written, when navigating to the next or previous file in a folder, the file enumeration isn't (at least not in the folder I tested) in filename order. I added ".OrderBy(filename => filename)" to the beginning of the query to accomplish this.
Razoola
10th January 2015, 11:47
Hmm... Can't you simply run two copies of MPDN?
not easily, the main issue here is the fact that the other screen is in a different room to the keyboard and mouse making it hard to see what's going on.
Raz
hashanga
10th January 2015, 13:07
With the latest version of MPDN, Full screen exclusive mode isn't working. The video stream freezes every time switch to full screen but the audio stream continues to play and video again works when in windowed mode. I'd been using MPDN nearly since it's inception and this is the first time this happened. MediaPlayerDotNet v2_12_3_2807 works flawlessly. It's the 32-bit version since i need ffdshow/SVP support.
Blackfyre
10th January 2015, 14:42
With the latest version of MPDN, Full screen exclusive mode isn't working. The video stream freezes every time switch to full screen but the audio stream continues to play and video again works when in windowed mode. I'd been using MPDN nearly since it's inception and this is the first time this happened. MediaPlayerDotNet v2_12_3_2807 works flawlessly. It's the 32-bit version since i need ffdshow/SVP support.
You're probably using DX9 as the renderer (that's why it used to happen with me sometimes). Change it to DX10 or DX11 (the latter is the best performance wise with SVP)... Make sure you exit the media player so changes to the settings are applied.
I'm going to be posting my settings for SVP+MPDN soon (within a week) probably in a review of both.
nekromantik
10th January 2015, 15:32
If you get playback issues on full screen ex mode on dx10 and dx11 but no issues on dx9 then what can be the issue?
Anime Viewer
10th January 2015, 19:44
With the latest version of MPDN, Full screen exclusive mode isn't working. The video stream freezes every time switch to full screen but the audio stream continues to play and video again works when in windowed mode. I'd been using MPDN nearly since it's inception and this is the first time this happened. MediaPlayerDotNet v2_12_3_2807 works flawlessly. It's the 32-bit version since i need ffdshow/SVP support.
Do you have "use new windowed mode rendering path when possible" checked? I've had that issue issue since the early versions on my Nvidia equipped Optimus notebook if I have the new windowed mode option checked. If you have "new windowed mode" checked try unchecking it and see if the problem goes away. Is your system a dual GPU (ex: Optimus) system as well? Are you also only able to escape from the situation by logging out or restarting your computer?
nekromantik
10th January 2015, 21:39
Do you have "use new windowed mode rendering path when possible" checked? I've had that issue issue since the early versions on my Nvidia equipped Optimus notebook if I have the new windowed mode option checked. If you have "new windowed mode" checked try unchecking it and see if the problem goes away. Is your system a dual GPU (ex: Optimus) system as well? Are you also only able to escape from the situation by logging out or restarting your computer?
Same issue here with Optimus laptop
It only occurs if you use 10.1 or 11 render modes. Never had "use new windowed mode rendering path when possible" checked.
Asmodian
11th January 2015, 01:23
If you get playback issues on full screen ex mode on dx10 and dx11 but no issues on dx9 then what can be the issue?
Same issue here with Optimus laptop
It only occurs if you use 10.1 or 11 render modes. Never had "use new windowed mode rendering path when possible" checked.
Ah Optiums, Nvidia really messed up (or was unable to fix) something with those dual-GPU drivers.
Don't use 10.1 or 11 render modes until/if Nvidia fixes the drivers?
nekromantik
11th January 2015, 02:48
Ah Optiums, Nvidia really messed up (or was unable to fix) something with those dual-GPU drivers.
Don't use 10.1 or 11 render modes until/if Nvidia fixes the drivers?
Sadly dont have a choice really. Nvidia has really annoyed a lot of video enthusiasts by not bothering to fix OpenCL and these video player bugs on drivers.
Zachs
11th January 2015, 02:55
It plays fine on all other players inc wmp mpc hc etc
It's core i5 laptop with radeon 8 series gpu..
Nope tried that no difference.
Shame, this is the only video player on my laptop that dont work.
All my files work on laptop, PC, PS4, Smart TV etc
All except MPCDN.
I will try on my friends laptop tomorrow.
Same issue here with Optimus laptop
It only occurs if you use 10.1 or 11 render modes. Never had "use new windowed mode rendering path when possible" checked.
I'm confused. Didn't you say you can't get MPDN to work at all on your only laptop? So you've now found a laptop that works i.e. you friend's Optimus equipped laptop?
Zachs
11th January 2015, 02:58
With the latest version of MPDN, Full screen exclusive mode isn't working. The video stream freezes every time switch to full screen but the audio stream continues to play and video again works when in windowed mode. I'd been using MPDN nearly since it's inception and this is the first time this happened. MediaPlayerDotNet v2_12_3_2807 works flawlessly. It's the 32-bit version since i need ffdshow/SVP support.
Can you let me know which presentation API you are using? I'll check and see what has changed from the old version, but I am sure I haven't changed anything to do with switching to full screen exclusive mode.
Zachs
11th January 2015, 03:01
I wanted to replicate some MPC-HC functionality in MPDN, specifically being able to advance to the next file in a playlist or folder and go back to the previous file in a playlist or folder using the forward & back buttons on the mouse. In MPC-HC, which function the buttons perform is determined by context. If you are playing a file with chapters they navigate through the chapters, if you have a playlist they navigate through the playlist and if you are playing a single file they navigate through the files in the folder.
MPDN doesn't have chapter support yet (unless I'm missing something), but I was able to modify the KeyRemap Player Extension to replicate the rest of the behaviors by using a global variable to hold the number of playlist items and testing against that to determine which functions to assign to the buttons. The buttons then just trigger the appropriate keyboard shortcut for the function.
Now, this may seem trivial. But I'm posting this because this was accomplished with no prior knowledge of C# and just your example code and Google to guide me. It's testament to the design choices you made that a complete novice was able to add a feature they wanted to your program to make it work better for them. So :thanks:
In the course of working on this I did find a bug(?) in the Navigation.cs Player Extension. As written, when navigating to the next or previous file in a folder, the file enumeration isn't (at least not in the folder I tested) in filename order. I added ".OrderBy(filename => filename)" to the beginning of the query to accomplish this.
I'm very glad someone's taken the initiative to do that!
Do you know if mpc hc does file enumeration in file name order? If so I guess we should replicate that behavior.
Would you mind sharing your enhancements?
In regards to chapter support, MPDN doesn't have that functionality yet unfortunately. I do plan to get to it at some stage though.
hashanga
11th January 2015, 11:49
You're probably using DX9 as the renderer (that's why it used to happen with me sometimes). Change it to DX10 or DX11 (the latter is the best performance wise with SVP)....
Actually DX9 is the only one that works.
Do you have "use new windowed mode rendering path when possible" checked? . Is your system a dual GPU (ex: Optimus) system as well? Are you also only able to escape from the situation by logging out or restarting your computer?
No. Alt+Enter works to switch back to windowed mode which works fine.
Same issue here with Optimus laptop
It only occurs if you use 10.1 or 11 render modes.
Can you let me know which presentation API you are using? I'll check and see what has changed from the old version, but I am sure I haven't changed anything to do with switching to full screen exclusive mode.
Yes mine is NVIDIA(Maxwell)/Intel (check my signature for details).
Apparently, DX9 presentation API works. Previously, I tried many combinations of the presentation API and the "use new windowed mode rendering path when possible" option. I guess I must have missed one. DX9 works and I don't think "use new windowed mode rendering path" matters for this issue.
All presentation APIs work when using the Intel GPU.
Surprisingly all presentation APIs used to work and still works with old MediaPlayerDotNet v2_12_3_2807. Didn't try 64-bit versions.
Zachs
11th January 2015, 12:14
So that means Dx10.1 no longer works for you? 2.13 did not have dx11 yet.
I'll have a look at the code to see what's changed but as far as I remember, it hasn't changed at all.
Anima123
11th January 2015, 12:16
In my experience, the driver version has an important roll in video playback for Optimus dual video card system.
Zachs
11th January 2015, 12:20
Yeah no doubt about that. Optimus requires a lot from the driver to make it work correctly, including Intel GPU drivers. The idea behind it is great, but in practice not so much.
nekromantik
11th January 2015, 12:29
I'm confused. Didn't you say you can't get MPDN to work at all on your only laptop? So you've now found a laptop that works i.e. you friend's Optimus equipped laptop?
Got it to work on mine and my friends. The issue was I had selected bitstream output in LAV audio. If you dont bitstream it works. This is still a bug however.
Zachs
11th January 2015, 12:32
Hmm... The error isn't even in audio graph chain. I'm not sure how that is even related to the stack trace.
romulous
11th January 2015, 12:56
If I get DWM Presentation Glitches increasing by about 1 per second, what does that signify? Dropped Frames shows a value >0, as does Delayed Frames and also D3D Presentation Glitches - but none of those increase with the same rate as DWM does (this is just with the same test clip I provided previously, a 320x240 MP4 file). This is with SuperRes enabled - with 'none' selected instead, the number looks like it actually increases slightly quicker.
Zachs
11th January 2015, 12:57
That means even Windows can't present its desktop without dropping frames. Your hardware and/or driver is stuffed.
romulous
11th January 2015, 13:02
Would it change your answer if I said madVR with another player shows nothing like this?
Zachs
11th January 2015, 13:03
No. DWM is reported by windows, not MPDN. It's only relaying what windows told it.
nekromantik
11th January 2015, 13:09
Hmm... The error isn't even in audio graph chain. I'm not sure how that is even related to the stack trace.
No idea,
I can re-produce the error by selecting bit-stream in lav settings.
Can anyone else on here bitstream ac3 without issues?
Zachs
11th January 2015, 13:11
I'll try replicating it.
romulous
11th January 2015, 13:22
Ok, fair enough then. FWIW, it's only in fullscreen. In windowed, there is a jump to about 15 glitches at the start of playback, but then it stays there (ie it doesn't increase, even with I zoom to 200%). It also seems to be worse on my second display than on my first. FSE is off (it's annoying you can't do anything on screen #1 without MPDN constantly flickering between FSE and non-FSE, so I have it disabled), but have tried various combinations of D3D9, 10 and 11, with and without the alternate render path option enabled (haven't found a good combination as yet).
aufkrawall
11th January 2015, 13:28
Thanks for implementing smooth motion, Zachs. :)
Is there a chance that you'll do the same with a debanding feature?
Or is there a render script available?
Thanks.
Zachs
11th January 2015, 13:34
No plans for debanding. I find that it is quite easily done on the CPU via ffdshow post processor.
That said, I think it could be done via RenderScript.
Zachs
11th January 2015, 13:39
Full screen non exclusive mode still relies on Windows to do the final composition. That's where DWM comes in. It could also be that MPDN is using too much GPU and left nothing to Windows, therefore causing glitches, but unlikely that it will be a constant one per second.
Edit: and the fact that it doesn't seem like it's related to GPU load at all since you're getting higher rates without RenderScript.
nekromantik
11th January 2015, 13:50
Zachs did you try selecting bitstream and try playing files?
Zachs
11th January 2015, 13:52
Not yet I'll try replicating when I have some time.
nekromantik
11th January 2015, 13:55
Not yet I'll try replicating when I have some time.
Thanks
Zachs
12th January 2015, 00:29
Zachs did you try selecting bitstream and try playing files?
What does MPC-HC show in the filter list when you do bitstream with LAV Audio?
I don't have a setup that allows me to bitstream anything unfortunately. As I understand it, you need to select an Audio Renderer that will accept the bitstream - did you do that?
MPDN's audio graph construction is entirely based on DirectShow's intelligent connect starting from LAV Audio Decoder. My understanding is that if you give it an Audio Renderer that accepts passthrough, it will work.
Zachs
12th January 2015, 01:19
All presentation APIs work when using the Intel GPU.
Surprisingly all presentation APIs used to work and still works with old MediaPlayerDotNet v2_12_3_2807. Didn't try 64-bit versions.
Well, there's certainly a bug in NVIDIA's Optimus drivers if Intel GPU has no problem with all the presentation APIs :)
However, it would appear that v2.12.3 lucked in somehow with regards to getting it to work with Optimus, so I have reverted the necessary bits back to that version to see if it helps with v2.16.9. If it does, hopefully the other Optimus users would be able to finally use Dx11 as well.
Do report back as well with regards to the bug Anima123 reported - specifically, Optimus' render times gradually increasing until at one point it is unusable.
Zachs
12th January 2015, 06:11
Zachs you are making great progress with this player. I love the NEDI/SuperRes options... So first of all :thanks:
Now onto a hopefully quick question I had for you. Are you at all working on implementing a refresh rate change similar to what MadVR does? (It's one of the main reasons why I am continuing to mainly use MPC+MadVR as my setup of choice)
Like where you can enter the following: 1080p23,1080p24,1080p50,1080p60
Then video renderer can determine the type of refresh rate which the video is and then changes to the appropriate refresh. This is big for me since my plasma TV has a 96hz mode which plays back 23.976 videos perfectly in sync with no flicker and this bypasses the need for any video smoothing features.
I have pretty much hacked up a very basic display refresh rate changer as Player Extension. Hopefully someone will polish it up.
nekromantik
12th January 2015, 07:45
What does MPC-HC show in the filter list when you do bitstream with LAV Audio?
I don't have a setup that allows me to bitstream anything unfortunately. As I understand it, you need to select an Audio Renderer that will accept the bitstream - did you do that?
MPDN's audio graph construction is entirely based on DirectShow's intelligent connect starting from LAV Audio Decoder. My understanding is that if you give it an Audio Renderer that accepts passthrough, it will work.
In MPC HC if I select bitstream in LAV then it loads Microsoft's DTV Audio DVD Decoder for some reason instead of LAV but it works.
In MPCDN it gives the cannot render error.
You dont need to have hardware to test, if you tick the bitstream options in LAV and try to load a AC3 file see if it works or not.
ryrynz
12th January 2015, 08:14
In MPC HC if I select bitstream in LAV then it loads Microsoft's DTV Audio DVD Decoder for some reason instead of LAV but it works.
We discussed this issue earlier Zach, which lead me to post this (http://forum.doom9.org/showthread.php?p=1703377#post1703377) in LAV's thread.
The issue I was with LAV not supporting automatic fallback for down mixing and MPDN not accepting anything other than LAV I also got the rendering error.
Maybe you could allow Microsoft's DTV-DVD decoder in the chain?
Also nekromantik if the Microsoft DTV-DVD decoder is active then you are not actually bitstreaming at all.
Zachs
12th January 2015, 08:34
Let me find out why the decoder isn't automatically added by DirectShow. GraphStudio is behaving the same way as MPDN. There must be something extra you have to do to allow it in the graph... If anyone knows this, please let me know.
nekromantik
12th January 2015, 09:05
We discussed this issue earlier Zach, which lead me to post this (http://forum.doom9.org/showthread.php?p=1703377#post1703377) in LAV's thread.
The issue I was with LAV not supporting automatic fallback for down mixing and MPDN not accepting anything other than LAV I also got the rendering error.
Maybe you could allow Microsoft's DTV-DVD decoder in the chain?
Also nekromantik if the Microsoft DTV-DVD decoder is active then you are not actually bitstreaming at all.
Ah thanks.
That's strange issue.
Hope LAV fix it as I want to use lav and bitstream.
Zachs
12th January 2015, 09:30
Ah thanks.
That's strange issue.
Hope LAV fix it as I want to use lav and bitstream.
Fix what? Is there a problem with LAV bitstream?
nekromantik
12th January 2015, 09:51
Fix what? Is there a problem with LAV bitstream?
Yes.
If you enable bit stream you get cannot render error like above posts talk about.
Also I'm having issues with lav not being used in mpc hc when bit stream selected. Instead it loads Microsoft decoder.
Zachs
12th January 2015, 09:55
Ah ic. You should report that bug in the LAV thread then.
romulous
12th January 2015, 10:10
If you are talking about LAV not automatically falling back to non-bitstream when it can't actually bitsream for whatever reason, that isn't a bug. It is simply a feature that nev has not implemented.
nekromantik
12th January 2015, 10:47
Ok will see if I can request that feature.
ryrynz
12th January 2015, 11:04
Ok will see if I can request that feature.
Nev has that on his list and at a reasonably high priority already
Also I'm having issues with lav not being used in mpc hc when bit stream selected. Instead it loads Microsoft decoder.
That's not LAV's fault, you have an issue with your receiver not accepting the stream or something is not set up right.
Zachs
12th January 2015, 12:25
We discussed this issue earlier Zach, which lead me to post this (http://forum.doom9.org/showthread.php?p=1703377#post1703377) in LAV's thread.
The issue I was with LAV not supporting automatic fallback for down mixing and MPDN not accepting anything other than LAV I also got the rendering error.
Maybe you could allow Microsoft's DTV-DVD decoder in the chain?
Also nekromantik if the Microsoft DTV-DVD decoder is active then you are not actually bitstreaming at all.
I've implemented fallback using DirectShow's default intelligent connect mechanism when LAV Audio fails to connect and will be in the next release. This should allow any compatible filters to take its place when it fails.
Zachs
12th January 2015, 12:30
If you are talking about LAV not automatically falling back to non-bitstream when it can't actually bitsream for whatever reason, that isn't a bug. It is simply a feature that nev has not implemented.
I was talking about LAV not able to bitstream properly to his receiver when he believes it should. In fact, this was the problem he had with MPDN. MPDN only uses LAV audio decoder and does not have a fallback mechanism, so all his problems with MPDN not being able to open his files basically goes back to this one problem where he's either failed to set up bitstream properly or it could really be a bug in LAV Audio Decoder. It is this bug that I asked him to report.
romulous
12th January 2015, 12:46
Ah. An odd issue - if you have MPDN set to on top, click away from MPDN (so it is no longer active), and then click on the MPDN window - on one of the menus - then the menu does not activate as I expect it would. It takes another click to make the menu activate.
Zachs
12th January 2015, 13:21
Ah. An odd issue - if you have MPDN set to on top, click away from MPDN (so it is no longer active), and then click on the MPDN window - on one of the menus - then the menu does not activate as I expect it would. It takes another click to make the menu activate.
That's how .NET's menu behaves, regardless of whether it is set to always on top.
EDIT: Anyway, I've implemented a workaround to make it do what you want.
Blackfyre
12th January 2015, 14:10
Zachs, the latest version broke Fluid Motion with SVP again... back to the delayed frames issue from before... I reverted back to a backup I had saved of the last version.
nekromantik
12th January 2015, 14:44
Nev has that on his list and at a reasonably high priority already
That's not LAV's fault, you have an issue with your receiver not accepting the stream or something is not set up right.
its not my AV as same laptop can bitstream from PowerDVD fine.
So I must need to change something which I cant see what or there is bug with LAV.
nekromantik
12th January 2015, 20:11
Quick question, what's the recommended script chain to upscale 720p to 2160p?
Shiandow
12th January 2015, 20:55
If your GPU can handle it I'd recommend SuperChromaRes, followed by SuperRes with NEDI enabled. I think using NEDI is necessary in this case; the current version of SuperRes doesn't perform too well when it needs to scale more than 2x without using NEDI. If SuperRes is too slow you can try using NEDI on its own, or just regular Lanczos (6 taps) with anti-ringing, maybe add some sharpening using -Vit-'s finesharp shaders (http://forum.doom9.org/showthread.php?t=171346). For MadVR I'd recommend Jinc but I'm not too fond of MPDN's implementation of Jinc, I find it too blurry, but maybe you like it (it does hide aliasing better).
Anima123
12th January 2015, 21:43
I have tested the latest version of MPDN, and found SuperRes with NEDI enabled still suffers rendering time increasing issue, which makes it impractical for normal playback to me. I do wish Shiandow can resolve this specific issue in the near future, I would like do any help I can to resolve this issue.
The DX 11 presentation API works great though.
nekromantik
12th January 2015, 22:24
If your GPU can handle it I'd recommend SuperChromaRes, followed by SuperRes with NEDI enabled. I think using NEDI is necessary in this case; the current version of SuperRes doesn't perform too well when it needs to scale more than 2x without using NEDI. If SuperRes is too slow you can try using NEDI on its own, or just regular Lanczos (6 taps) with anti-ringing, maybe add some sharpening using -Vit-'s finesharp shaders (http://forum.doom9.org/showthread.php?t=171346). For MadVR I'd recommend Jinc but I'm not too fond of MPDN's implementation of Jinc, I find it too blurry, but maybe you like it (it does hide aliasing better).
Thanks :)
Anima123
12th January 2015, 22:32
I have tested the latest version of MPDN, and found SuperRes with NEDI enabled still suffers rendering time increasing issue, which makes it impractical for normal playback to me. I do wish Shiandow can resolve this specific issue in the near future, I would like do any help I can to resolve this issue.
Since I have a nVidia 880M which means I can do more testing on MPDN and the rendering scripts.
Now I found that when using SuperChromaRes + SuperRes (NEDI off) as a chain, it will suffer from similar rendering time increasing issue that I've been reported, while use SuperRes (NEDI off) alone be okay.
If I remember correctly, SuperChromaRes also uses a kind of variant NEDI algorithms, which makes me wondering if the issue reside in the implementation of NEDI itself somehow.
Shiandow
12th January 2015, 22:40
SuperChromaRes doesn't use NEDI in any way. But it does use a few additional textures, so it might be that that's triggering the problem. You could try forcing MPDN to use more textures by resizing to various different sizes and see if that causes the same problem.
nekromantik
12th January 2015, 22:44
Since I have a nVidia 880M which means I can do more testing on MPDN and the rendering scripts.
Now I found that when using SuperChromaRes + SuperRes (NEDI off) as a chain, it will suffer from similar rendering time increasing issue that I've been reported, while use SuperRes (NEDI off) alone be okay.
If I remember correctly, SuperChromaRes also uses a kind of variant NEDI algorithms, which makes me wondering if the issue reside in the implementation of NEDI itself somehow.
After how long does the rendering time increase?
I will test over weekend on my 860m.
Zachs
12th January 2015, 22:55
Zachs, the latest version broke Fluid Motion with SVP again... back to the delayed frames issue from before... I reverted back to a backup I had saved of the last version.
I just tested this myself with the latest version and found it working just fine. However, I have a feeling what might've caused this - the changes I made to try and make Optimus work better. This may have turned out be to the detriment of regular users.
I will revert the changes.
EDIT: Can you test v2.17.1? If you still get the error, change the back buffer count for both windowed and exclusive to 16. That brings it back to the earlier version, which causes problems for Optimus (whereas 12 seems to work fine).
Zachs
12th January 2015, 23:47
After how long does the rendering time increase?
I will test over weekend on my 860m.
IIRC, you have to let it run for around half an hour to get to double the original render time.
nekromantik
12th January 2015, 23:59
Maybe have two versions one for optimus and one for non?
Zachs
13th January 2015, 00:29
Maybe have two versions one for optimus and one for non?
With v2.17.1, you can change back buffer count and 12 should work for all. It's only when you find that it's causing delays / drop frames that you should increase to 16. In which case, Optimus users may find it to be unusable (NVidia could fix it tomorrow for all we know, then the Optimus build will be completely useless).
Anime Viewer
13th January 2015, 00:57
Maybe have two versions one for optimus and one for non?
Simpler than that would be a check box for Optimus systems. Putting a check in a box that says something like: Optimus equipped system would not require Zachs to put out an extra version which is simply one more version to become buggy, and require extra troubleshooting and configuration files.
With v2.17.1, you can change back buffer count and 12 should work for all. It's only when you find that it's causing delays / drop frames that you should increase to 16. In which case, Optimus users may find it to be unusable (NVidia could fix it tomorrow for all we know, then the Optimus build will be completely useless).
Would a check box somewhere in the settings area similar to mentioned above be feasible? I doubt many Optimus users are going to know they should change their buffers from 12 to 16 especially if they didn't/don't read the post on the forum explaining it.
Did someone with an Optimus system already confirm that 16 buffers did indeed improve playback?
Zachs
13th January 2015, 01:21
Simpler than that would be a check box for Optimus systems. Putting a check in a box that says something like: Optimus equipped system would not require Zachs to put out an extra version which is simply one more version to become buggy, and require extra troubleshooting and configuration files.
Would a check box somewhere in the settings area similar to mentioned above be feasible? I doubt many Optimus users are going to know they should change their buffers from 12 to 16 especially if they didn't/don't read the post on the forum explaining it.
Did someone with an Optimus system already confirm that 16 buffers did indeed improve playback?
I would think 16 buffers made Optimus systems worse. I'm not sure, but the default 12 should work best for everyone. Blackfyre isn't using an Optimus system - so for some users (some drivers), they may find it better with 16. The thing is, there isn't one consistent report of weird behavior coming out of Optimus users - it's all over the place. The reason I added the option to change back buffer sizes is because I could see the difference with NVIDIA's v340 on my GTX560. So there's actually no Optimus specific settings. In fact, I think it is so highly reliant on the driver (or its specific bugs) that it is impossible to create "an Optimus setting".
EDIT:
What I am trying to achieve is to allow all the parameters that could affect the performance / stability / behavior of a GPU / driver combo to be tunable (i.e. these settings trigger difference code paths in the driver). Then, if someone finds a setting + driver combo that works best, others would benefit too.
Blackfyre
13th January 2015, 02:58
I just tested this myself with the latest version and found it working just fine. However, I have a feeling what might've caused this - the changes I made to try and make Optimus work better. This may have turned out be to the detriment of regular users.
I will revert the changes.
EDIT: Can you test v2.17.1? If you still get the error, change the back buffer count for both windowed and exclusive to 16. That brings it back to the earlier version, which causes problems for Optimus (whereas 12 seems to work fine).
Yep you're right Zachs, that fixed it. Also great job adding control over the buffer counters... I wonder if we can increase it to 24 or 32 for those who can handle it.
:thanks:
By the way I done some testing with two different PC's (both my friends) and it seems my SVP settings are too strong for low-end, and medium-end PC's to handle. But I'll post them up for people anyway.
Zachs
13th January 2015, 03:04
Yep you're right Zachs, that fixed it. Also great job adding control over the buffer counters... I wonder if we can increase it to 24 or 32 for those who can handle it.
:thanks:
By the way I done some testing with two different PC's (both my friends) and it seems my SVP settings are too strong for low-end, and medium-end PC's to handle. But I'll post them up for people anyway.
16 is the max Direct3D supports, unfortunately.
As long as you state what PC you used, people can decide and try it on their own PC.
Blackfyre
13th January 2015, 03:19
16 is the max Direct3D supports, unfortunately.
As long as you state what PC you used, people can decide and try it on their own PC.
Yeah I'll write the full-specs... BTW there's still one thing which the older version was doing "better"...
You know how my refresh rate is 65... The older version with Fluid Motion + SVP Enabled used to fluctuate between 64.500 fps to 64.990 fps, while the new version fluctuates between 63 fps to 65 fps (not 100% sure of the numbers but you get the idea).
The older version was trying to push itself more and more to get as close as possible to the refresh rate (I want that; in fact if I can lock it at the refresh-rate that would be great) aka without any fluctuation. But yeah that's it, that's the only difference now.
Zachs
13th January 2015, 03:23
Yeah I'll write the full-specs... BTW there's still one thing which the older version was doing "better"...
You know how my refresh rate is 65... The older version with Fluid Motion + SVP Enabled used to fluctuate between 64.500 fps to 64.990 fps, while the new version fluctuates between 63 fps to 65 fps (not 100% sure of the numbers but you get the idea).
The older version was trying to push itself more and more to get as close as possible to the refresh rate (I want that; in fact if I can lock it at the refresh-rate that would be great) aka without any fluctuation. But yeah that's it, that's the only difference now.
I don't think I have changed anything that would affect it - try the following settings (which would give you exactly what the older version did):
Back Buffer (both): 16
Render Queue: 12
Decoder Queue: 16
Anime Viewer
13th January 2015, 04:39
EDIT: Can you test v2.17.1? If you still get the error, change the back buffer count for both windowed and exclusive to 16. That brings it back to the earlier version, which causes problems for Optimus (whereas 12 seems to work fine).
With v2.17.1, you can change back buffer count and 12 should work for all. It's only when you find that it's causing delays / drop frames that you should increase to 16. In which case, Optimus users may find it to be unusable (NVidia could fix it tomorrow for all we know, then the Optimus build will be completely useless).
I would think 16 buffers made Optimus systems worse. I'm not sure, but the default 12 should work best for everyone.
EDIT:
What I am trying to achieve is to allow all the parameters that could affect the performance / stability / behavior of a GPU / driver combo to be tunable (i.e. these settings trigger difference code paths in the driver). Then, if someone finds a setting + driver combo that works best, others would benefit too.
16 is the max Direct3D supports, unfortunately.
I don't think I have changed anything that would affect it - try the following settings (which would give you exactly what the older version did):
Back Buffer (both): 16
Render Queue: 12
Decoder Queue: 16
On the subject of queue sizes and finding optimal settings. Might changing any of those reduce (or even effect) the XySubFitler problem (the one you and I encountered on the short test video clip end credits), or is there a buffer control setting that might be able to be implemented for subtitle filters themselves? (In MPC-HC there is also a Sub pictures to buffer setting. Since mpc-hc/madVR running the same video with XySubFilter as the selected Sub filter doesn't have a problem with that ending credits scene (the buffers still fluctuate, but never drop to zero) perhaps subtitle buffering is making a difference.)
Zachs
13th January 2015, 04:43
On the subject of queue sizes and finding optimal settings. Might changing any of those reduce (or even effect) the XySubFitler problem (the one you and I encountered on the short test video clip end credits), or is there a buffer control setting that might be able to be implemented for subtitle filters themselves? (In MPC-HC there is also a Sub pictures to buffer setting. Since mpc-hc/madVR running the same video with XySubFilter as the selected Sub filter doesn't have a problem with that ending credits scene (the buffers still fluctuate, but never drop to zero) perhaps subtitle buffering is making a difference.)
There's just the one decoder queue that holds both the subpic and the video image. Increase the decoder queue count and you should get the same behavior as MPC-HC / madVR.
Anime Viewer
13th January 2015, 05:29
There's just the one decoder queue that holds both the subpic and the video image. Increase the decoder queue count and you should get the same behavior as MPC-HC / madVR.
In my testing (so far) increasing the decoder queue doesn't appear to have reduced or stopped the problem of the XySubfilter draining the queue(s) during the credits of that video in MPDN.
Zachs
13th January 2015, 05:55
In my testing (so far) increasing the decoder queue doesn't appear to have reduced or stopped the problem of the XySubfilter draining the queue(s) during the credits of that video in MPDN.
Even at maximum size? On my system it is enough to get through that bit where it drains the queue. MadVR does implement multi-subpic support which would explain the difference. MPDN (currently) asks XySubFilter to combine the subpic into one image, so that might be the reason why it's slower. Enhancing XySubFilter support is on my todo list but that todo list seems to be getting longer and longer :)
Zachs
13th January 2015, 06:02
I've updated the DisplayChanger player extension on GitHub.
You can now specify restrictions to the video you want to have it automatically change display frequency.
For example,
w1920p24 matches videos @ width 1920, progressive 24fps
p30 matches all pregressive videos @ 24fps
h800 matches videos @ height 800
w800h600p24 matches videos @ 800x600, progressive 24fps
Alternatively you could specify multiple OR'd restrictions (delimited by space):
p59 p60 w1920p24 h576p25
Note that if you have LAV Video Decoder set to deinterlace the video, then you will only get 'p' (progressive) inputs where MPDN is concerned. Display changer currently does not support interlaced modes yet - but it's an easy change. It could be useful for playing interlaced materials on interlaced screens, I suppose.
Oh, and DisplayChanger will always choose the highest multiples available - e.g. for a 30fps video, it'll pick 120hz if 30, 60 and 120 are available.
Zachs
13th January 2015, 06:19
Since I have a nVidia 880M which means I can do more testing on MPDN and the rendering scripts.
Now I found that when using SuperChromaRes + SuperRes (NEDI off) as a chain, it will suffer from similar rendering time increasing issue that I've been reported, while use SuperRes (NEDI off) alone be okay.
If I remember correctly, SuperChromaRes also uses a kind of variant NEDI algorithms, which makes me wondering if the issue reside in the implementation of NEDI itself somehow.
With the latest MPDN, could you also try changing the number of backbuffers and render queue size (e.g. reduce to 4) to see if any of the settings makes any difference?
ryrynz
13th January 2015, 06:32
I'd recommend Jinc but I'm not too fond of MPDN's implementation of Jinc, I find it too blurry, but maybe you like it (it does hide aliasing better).
Jinc is a popular resizer with MadVR users, perhaps Nicolas Robidoux could assist with settings that be be used to improve it. Could be worth having two versions of it, the current implementation and a sharper one more in line with MadVR's version.
Zachs
13th January 2015, 06:36
Jinc is a popular resizer with MadVR users, perhaps Nicolas Robidoux could assist with settings that be be used to improve it. Could be worth having two versions of it, the current implementation and a sharper one more in line with MadVR's version.
It is on my todo list. But it will be a lot slower than the current implementation. I was thinking of implemented it via RenderScript but haven't quite got the time to do it yet.
Anima123
13th January 2015, 06:54
With the latest MPDN, could you also try changing the number of backbuffers and render queue size (e.g. reduce to 4) to see if any of the settings makes any difference?
Test using MPDN 2.17.3 and set exactly as you described, it appears no luck. The rendering time increasing issue still there with SuperRes of NEDI enabled.
It seems that reducing render queue size and backbuffers won't help with this problem, the rendering time increasing rate turned to be almost the same as before.
Zachs
13th January 2015, 08:20
Test using MPDN 2.17.3 and set exactly as you described, it appears no luck. The rendering time increasing issue still there with SuperRes of NEDI enabled.
It seems that reducing render queue size and backbuffers won't help with this problem, the rendering time increasing rate turned to be almost the same as before.
Does anything increase with render time? GPU usage and/or frequency, GPU ram, CPU usage, system memory. What happens if you open two copies of MPDN and play one after another? Does the other one's render time get affected or does it start afresh?
So no other scales exhibit the same problem?
Anime Viewer
13th January 2015, 14:51
Even at maximum size? On my system it is enough to get through that bit where it drains the queue. MadVR does implement multi-subpic support which would explain the difference. MPDN (currently) asks XySubFilter to combine the subpic into one image, so that might be the reason why it's slower. Enhancing XySubFilter support is on my todo list but that todo list seems to be getting longer and longer :)
Even at max settings it still has drain problems. Since you plan to enhance the XySubFilter support at some point I'm not to concerned about it since there are probably not too many videos that have that issue of miss-using XySubFilter.
Does anything increase with render time? GPU usage and/or frequency, GPU ram, CPU usage, system memory. What happens if you open two copies of MPDN and play one after another? Does the other one's render time get affected or does it start afresh?
So no other scales exhibit the same problem?
I haven't tested for the long video render problem yet, but the XySubFilter one does seem to be effected by how many times you run a video in an open player in a row. The very first time the video is open and it runs it is not as bad as if you run the video and second or more times in that same window after it concludes (even if you just skip to that ending credit scene by taking the progress bar back to the start of the credits). Is it possible the buffers aren't being flushed (even though all queue report dropping to zero at the end of the video playing)?
I'm also seeing an error the first time I launch after setting decoder queue to max (60), closing the player, and then reopening the player (to make it effective). The player opens with a white screen with a red X through it, and reports DXSharp related errors and that backbuffers were not created. If I task manger close it and reopen it (which appears to be the only way to exit out of it in that situation) then the player opens fine with max decoder set and running.
fairchild
13th January 2015, 15:35
Woot, the refresh rate changer is working so that's a positive! Whoever worked on it, great job. It is not as robust as some other options out there but it's working. Two things that could be improved upon:
1. have the refresh rate revert back to the original refresh rate once MPDN is closed. (currently it has an option to revert once the file is closed, but if you are changing files often or closing the file all the refresh rate changes can be a bit excessive)
2. have more control over which refresh rates to change to. For instance a media file with a reported 23.976 frame rate is auto changing the display to 24hz (or 23.99 fps) where as optimally it would change to the 23hz option which on my display gives 23.975 fps.
videonerd
13th January 2015, 18:19
Zachs / Shiandow - thank you for the hard work on this world class player! We finally have a viable 64 bit alternative to the dormant mpchc/madvr proposition.
UI request - minimalist without window borders
Extension request - increase/decrease play rate + pitch correction
Thank you once again!
Zachs
13th January 2015, 23:06
I'm also seeing an error the first time I launch after setting decoder queue to max (60), closing the player, and then reopening the player (to make it effective). The player opens with a white screen with a red X through it, and reports DXSharp related errors and that backbuffers were not created. If I task manger close it and reopen it (which appears to be the only way to exit out of it in that situation) then the player opens fine with max decoder set and running.
This would be the driver error I was talking about regarding Optimus - it doesn't like too many backbuffers whereas the traditional setups prefer 16 backbuffers. I don't think it has anything to do with decoder count though.
Woot, the refresh rate changer is working so that's a positive! Whoever worked on it, great job. It is not as robust as some other options out there but it's working. Two things that could be improved upon:
1. have the refresh rate revert back to the original refresh rate once MPDN is closed. (currently it has an option to revert once the file is closed, but if you are changing files often or closing the file all the refresh rate changes can be a bit excessive)
2. have more control over which refresh rates to change to. For instance a media file with a reported 23.976 frame rate is auto changing the display to 24hz (or 23.99 fps) where as optimally it would change to the 23hz option which on my display gives 23.975 fps.
1. Good idea.
2. Yup, that's a bug. I intended to make it work like you described, but the idea must have eluded me when I was implementing it :P
EDIT: Done and done. Latest version on github.
Zachs / Shiandow - thank you for the hard work on this world class player! We finally have a viable 64 bit alternative to the dormant mpchc/madvr proposition.
UI request - minimalist without window borders
Extension request - increase/decrease play rate + pitch correction
Thank you once again!
I tried the minimialist UI without borders initially (trust me it's a LOT easier than the one with border where I had to do a lot of work behind the scene to make it happen) but I just don't like the look of it - feels out of place in amongst other windows applications? Anyway I'll probably add this feature in at some point for those who prefer it.
Increase/decrease play rate + pitch correction has to be supported natively by MPDN - but I'm not sure how this could be done, seeing that MPDN doesn't have control over the audio graph at all. Any ideas from anyone?
Anime Viewer
14th January 2015, 00:05
Am I missing a setting some where, or when new videos launch from the playlist do they always start at the default video size? May other players have it where if you were watching the previous video in fullscreen (be it window or exclusive) the next video will open at fullscreen as well. If this feature isn't already there it would be a useful one to add.
Zachs
14th January 2015, 00:36
Am I missing a setting some where, or when new videos launch from the playlist do they always start at the default video size? May other players have it where if you were watching the previous video in fullscreen (be it window or exclusive) the next video will open at fullscreen as well. If this feature isn't already there it would be a useful one to add.
Options | General | Window. Uncheck resize window to fit when opening media.
Anima123
14th January 2015, 04:50
Does anything increase with render time? GPU usage and/or frequency, GPU ram, CPU usage, system memory. What happens if you open two copies of MPDN and play one after another? Does the other one's render time get affected or does it start afresh?
So no other scales exhibit the same problem?
Based on my previous test cases, none of abnormal usage found on GPU/CPU nor memory usages.
I will test two copies of MPDN when I returned from business trip.
As I remember, SuperRes with NEDI enabled, and SuperChromaRes + SuperRes with NEDI disabled suffer from rendering time increasing issue. No similar issues found with other scaling algorithms such as SuperRes (NEDI disabled) only.
Zachs
14th January 2015, 05:18
Based on my previous test cases, none of abnormal usage found on GPU/CPU nor memory usages.
I will test two copies of MPDN when I returned from business trip.
As I remember, SuperRes with NEDI enabled, and SuperChromaRes + SuperRes with NEDI disabled suffer from rendering time increasing issue. No similar issues found with other scaling algorithms such as SuperRes (NEDI disabled) only.
If GPU usage does not go up but render time does (if this is indeed what you saw), then something is fundamentally wrong - an increase of render time should cause GPU load / frequency to go up as it is a direct measurement of GPU load. If the GPU remains unloaded, there could only be one explanation. It means the driver is taking longer and longer to send commands to the GPU. This could be compounded by the fact that there are a lot more render stages of SuperRes+NEDI which requires more commands to be sent to the GPU for each render pass. I would imagine if you play high end games with a lot of shader effects for an hour and FRAPS it at the beginning and at the end, you'll probably get the same problem as well.
Zachs
14th January 2015, 05:26
Github has a new player extension called KeyBindings that adds additional shortcut keys. You can now select next / prev audio (Shift+PageUp/Down) and subtitle tracks (Alt+Shift+PageUp/Down) via shortcut keys. Apart from Escape to exit full screen, F11 also does that (and toggles between them) - just like what a browser does.
With v2.18.0 now supports chapter selection, the Navigation PlayerExtension has also been upgraded to allow Shift+Right and Shift+Left to jump between the chapters.
shaolin95
14th January 2015, 05:28
So I am looking for recommendations for maximizing IQ for Bluray rips.
Right now my script is:
SuperChromaRes
SuperRes
Resize
"Image Processor" LumaSharpen
I am running a GTX 750ti btw.
Thanks for any comments. :)
(BTW, I still cannot get 64bit to run. Not sure what I am missing in my Windows 8.1)
Zachs
14th January 2015, 05:39
So I am looking for recommendations for maximizing IQ for Bluray rips.
Right now my script is:
SuperChromaRes
SuperRes
Resize
"Image Processor" LumaSharpen
I am running a GTX 750ti btw.
Thanks for any comments. :)
(BTW, I still cannot get 64bit to run. Not sure what I am missing in my Windows 8.1)
You could try the FineSharp shaders too in place of LumaSharpen.
What error did you get for the 64-bit version?
If it's just the generic "Failed to render file", you should use GraphStudioNext (64-bit version) and try building a graph through that. It's a good tool to find out which filter is causing problems.
In particular, you can replicate MPDN's basic filters as follow:
LAV Source Splitter --> LAV Video Decoder --> EVR (any renderer would do as this is only for testing)
LAV Source Splitter --> LAV Audio Decoder --> Default DirectSound renderer
If the above works fine, you should try disabling MPDN's load subtitle option.
Anima123
14th January 2015, 05:42
I understand SuperRes with NEDI is actually a new graphic processing GPU application of this kind, i.e. video playback program. I am just wondering if there's a solution on SuperRes side to avoid such kind of issues which, in my mind, would hinder the popularity of this great algorithm.
I also tried NNEDI3 from madVR, which does not suffer similar issue.
Edit: Shiandow seems to have different opinion on the origin of this issue, he think it might related to the texture usage within the algorithms.
Zachs
14th January 2015, 05:52
I understand SuperRes with NEDI is actually a new graphic processing GPU application of this kind, i.e. video playback program. I am just wondering if there's a solution on SuperRes side to avoid such kind of issues which, in my mind, would hinder the popularity of this great algorithm.
I also tried NNEDI3 from madVR, which does not suffer similar issue.
NNEDI3 uses OpenCL - and that has its own problems.
Without being able to test this on an Optimus laptop, we're relying on your feedback to try and root cause the issue but so far we haven't got enough data points to even begin changing anything to see if it could side step the problem.
Am I right in assuming the following?
NEDI alone: no problem.
SuperRes without NEDI: no problem.
SuperRes+NEDI (even single pass): bug.
Anima123
14th January 2015, 05:56
NEDI alone: no problem.
SuperRes without NEDI: no problem.
SuperRes+NEDI (even single pass): bug.
Yes.
Recently I also noticed that SuperChromaRes + SuperRes (NEDI disabled) suffers the same problem. I'd like to do more tests to double confirm it.
Zachs
14th January 2015, 05:58
Edit: Shiandow seems to have different opinion on the origin of this issue, he think it might related to the texture usage within the algorithms.
Yes more textures == more stages per render pass.
Zachs
14th January 2015, 06:00
Yes.
Recently I also noticed that SuperChromaRes + SuperRes (NEDI disabled) suffers the same problem. I'd like to do more tests to double confirm it.
Ah this makes more sense, and very much inline with our suspicion.
Does changing pass count affect the outcome (render time grow slower / faster)?
Anima123
14th January 2015, 06:34
Ah this makes more sense, and very much inline with our suspicion.
Does changing pass count affect the outcome (render time grow slower / faster)?
As I recall, the rendering time increase rate seems the same between 2 round on my 640M (another laptop) and 8 round on my 880M (current laptop).
Since I didn't do the comparison specifically, I might need more tests to double confirm that later this week.
stax76
14th January 2015, 08:53
I've a fairly common system with Win 7, intel graphics (i5-3570), latest LAV Filters, the player won't open anything.
I made a player in VB.NET which is my primary player both on desktop and TV since a very long time causing no issues nor any other application so my DS setup is fine.
I tried the subtitle plugin in StaxRip getting a crash, some assembly loading exception, MPC-BE opens the script but crashes on exit. Maybe using AppDomain.CurrentDomain.AssemblyResolve event would fix this. Now that StaxRip migrated to .NET 4.5 I would like to add your plugin.
edit: it seems subtitles are enabled by default even when the plugin is not present and this caused the render to fail without providing a meaningful message to the user
ryrynz
14th January 2015, 09:18
subtitles are enabled by default even when the plugin is not present and this caused the render to fail
Could have subtitles disabled by default perhaps and only show what's installed on the system as options to be selected.
Zachs
14th January 2015, 09:37
It is meant to fail silently and gracefully. I'll find out what is wrong.
EDIT: MPDN does fail silently and gracefully if subtitle filters are not installed - it just doesn't load the subs. I just tested this by uninstalling both XySubFilter and DirectVobSub from my system. You may have deleted the .ax filter file inadvertently but have not uninstalled it from your system, leaving orphan entries in your register (your typical off-the-shelf registry cleaner would probably help here). Please post a stack trace if you are still getting an error after that.
romulous
14th January 2015, 12:13
Just updated to .18.1. When I hit Alt+Enter, all that happens is that the menus activate (though if you click View, you will see a tick beside Fullscreen - though MPDN is not in fullscreen). I wonder if the workaround for the .NET menus thing has broken it? Also noticed a minor visual glitch - on the Play menu, there are 2 consecutive dividers after 'Play'.
Zachs
14th January 2015, 12:44
Indeed, the workaround did break it.
Anyway, I've fixed both issues in the next release.
Shiandow
14th January 2015, 14:48
Ah this makes more sense, and very much inline with our suspicion.
Does changing pass count affect the outcome (render time grow slower / faster)?
Increasing the number of passes shouldn't increase the number of textures, well maybe using 1 pass can be done slightly more efficiently, but I'd be surprised if 2 or more passes needs more than 1 extra texture.
videonerd
14th January 2015, 16:34
I tried the minimialist UI without borders initially (trust me it's a LOT easier than the one with border where I had to do a lot of work behind the scene to make it happen) but I just don't like the look of it - feels out of place in amongst other windows applications? Anyway I'll probably add this feature in at some point for those who prefer it.
Increase/decrease play rate + pitch correction has to be supported natively by MPDN - but I'm not sure how this could be done, seeing that MPDN doesn't have control over the audio graph at all. Any ideas from anyone?
Minimalist without borders makes sense for users who view 1080p content on 1920*xxxx resolution at 1:1 without the need to downscale the source material (yes i know MPDN has very solid downscaling algorithms!). Relevant to me at least where I watch 1920*800 material in non-fullscreen mode so that I still have sight of everything else that's happening in the background / taskbar etc.
Re play rate + pitch correction, I see MPC HC doing play rate only decently with lav filters and play rate + pitch correction with reclock as audio decoder. I also see VLC doing play rate + pitch correction natively. Two open source projects there for reference if you ever have the time :)
Once again a big big thank you for your hard work on this project!
Zachs
14th January 2015, 22:54
Increasing the number of passes shouldn't increase the number of textures, well maybe using 1 pass can be done slightly more efficiently, but I'd be surprised if 2 or more passes needs more than 1 extra texture.
Yeah, I was trying to find out if the number of Direct3D calls has any effect on the outcome, ruling out number of textures as the cause if it does.
Minimalist without borders makes sense for users who view 1080p content on 1920*xxxx resolution at 1:1 without the need to downscale the source material (yes i know MPDN has very solid downscaling algorithms!). Relevant to me at least where I watch 1920*800 material in non-fullscreen mode so that I still have sight of everything else that's happening in the background / taskbar etc.
Re play rate + pitch correction, I see MPC HC doing play rate only decently with lav filters and play rate + pitch correction with reclock as audio decoder. I also see VLC doing play rate + pitch correction natively. Two open source projects there for reference if you ever have the time :)
Once again a big big thank you for your hard work on this project!
For 1920*800 materials, all you have to do is maximize the minimalist UI and the side borders will no longer be visible. All you end up with is a caption bar on top and shouldn't cause any downscaling.
I'll put play rate + pitch correction on my TODO list, but a low priority one as I don't use it personally.
shaolin95
15th January 2015, 04:41
You could try the FineSharp shaders too in place of LumaSharpen.
What error did you get for the 64-bit version?
If it's just the generic "Failed to render file", you should use GraphStudioNext (64-bit version) and try building a graph through that. It's a good tool to find out which filter is causing problems.
In particular, you can replicate MPDN's basic filters as follow:
LAV Source Splitter --> LAV Video Decoder --> EVR (any renderer would do as this is only for testing)
LAV Source Splitter --> LAV Audio Decoder --> Default DirectSound renderer
If the above works fine, you should try disabling MPDN's load subtitle option.
Oops I totally forgot to use the install bat files from the LAV filter 64bit version. Just did that and the 64 bit no longer gives the Failed to Render error :D
Zachs
15th January 2015, 04:52
Oops I totally forgot to use the install bat files from the LAV filter 64bit version. Just did that and the 64 bit no longer gives the Failed to Render error :D
Good stuff! Always use the 64-bit version if you don't need dtsdecoder.dll. It's a lot faster.
Zachs
15th January 2015, 06:06
Some notes about v2.18.2:
I have removed current media time from MPDN as Player Extension is now fully capable of drawing text overlays on the screen. Implementing as a player extension also serves as a good example of how this could be done, in case anyone wants to have a go at putting more information on the screen (e.g. a shortcut key that shows current system time for a few seconds).
foxyshadis
15th January 2015, 07:11
Would you mind making a zip available with all of the scripts and extensions, so it's easy for us to get all the updates every time we update MPDN? Or just bundling it all together?
Zachs
15th January 2015, 07:31
I might just add a link on OP that links straight to the zip.
ryrynz
15th January 2015, 07:42
I was actually going to make that request also for about the umpteen dozeneth time..
Since the extensions have become pretty much non negotiable IMO, perhaps have them bundled and updated with every new major point release?
Zachs
15th January 2015, 08:56
The only problem with that is at some stage the scripts may have a lot more development versus the core software. And also the scripts may continue to be developed while MPDN itself takes a back seat. It's going to be quite weird releasing the same MPDN version just different scripts.
What should be done is a player extension that auto updates scripts.
Blackfyre
16th January 2015, 00:09
What should be done is a player extension that auto updates scripts.
That would be amazing! +1
Shiandow
16th January 2015, 00:36
Hi all, I've added a renderscript for removing banding, this can improve 8-bit sources quite a bit. If you want to combine it with other filters it's probably best to use it before upscaling, but after chroma scaling. By default it won't process sources with 10-bits (or higher) but you can enable this in the settings.
You should probably leave the other settings alone. If you really must know what they do, they control how much a pixel value is allowed to deviate from it's original value (threshold) and how harshly it should cut off when it tries to change more than that (margin). The default ensure that differences <= 0.5 (i.e. rounding errors) get smoothed out and to ensure that differences >= 1.5 are ignored, with a smooth transition between those two. This transition is fast enough that the difference between the original and the result can't be more than ~0.63 which is only slightly larger than the rounding errors that debanding should remove.
Garteal
16th January 2015, 00:50
^ will be testing that out. Thanks for all the great work!
Just got up to date again and all I can say is that you are doing a great job Zachs and Shiandow.
I absolutely love the PlayerExtension concept and I've been playing with it. I also see that you've implemented most (if not all) the requested features (even the ones I asked!).
I had a few ideas for PlayerExtensions but you basically ruled one or two of them out by making these internal (which is good). I just "finished" my first one, which is quite hacky atm. I basically built on the existing Playlist and I'm pondering whether I should just keep it like that or create separate classes if I'm going to share it.
Zachs
16th January 2015, 01:36
Hi all, I've added a renderscript for removing banding, this can improve 8-bit sources quite a bit. If you want to combine it with other filters it's probably best to use it before upscaling, but after chroma scaling. By default it won't process sources with 10-bits (or higher) but you can enable this in the settings.
You should probably leave the other settings alone. If you really must know what they do, they control how much a pixel value is allowed to deviate from it's original value (threshold) and how harshly it should cut off when it tries to change more than that (margin). The default ensure that differences <= 0.5 (i.e. rounding errors) get smoothed out and to ensure that differences >= 1.5 are ignored, with a smooth transition between those two. This transition is fast enough that the difference between the original and the result can't be more than ~0.63 which is only slightly larger than the rounding errors that debanding should remove.
Great stuff! I've just tested this myself and it works absolutely amazing I have to say. I have even configured it to apply higher strength for crappy TV records automatically via my own custom script chain.
This actually gives me an idea which I'm about to implement. I will be including MediaInfo library in MPDN's distro and allowing it to be called from all MPDN's scripts (player extension included). What I wanted to do for example, is while all my TV records are of the same size, its video bitrate isn't - some are just encoded and sent at a lower bitrate (I think some channels are allocated lower bandwidths). I am looking to use this info to change the debanding strength. ** This will *not* break exisiting API in anyway **
^ will be testing that out. Thanks for all the great work!
Just got up to date again and all I can say is that you are doing a great job Zachs and Shiandow.
I absolutely love the PlayerExtension concept and I've been playing with it. I also see that you've implemented most (if not all) the requested features (even the ones I asked!).
I had a few ideas for PlayerExtensions but you basically ruled one or two of them out by making these internal (which is good). I just "finished" my first one, which is quite hacky atm. I basically built on the existing Playlist and I'm pondering whether I should just keep it like that or create separate classes if I'm going to share it.
Oh welcome to the development team! :)
If it's enhancing the capabilities of playlist, perhaps just add it to the existing class? Anyway feel free to discuss it here. Alternatively you could share the link to your fork and we could discuss on github.
ryrynz
16th January 2015, 02:54
I am looking to use this info to change the debanding strength.
Along the same vein, one could use the file name, or even source directory to apply particular chains as well so for example animated content could have it's own particular set of filters, this was something I wanted to ffdshow to be able to do.
This then provides the same feature as profile groups do with madVR yet with more flexibility.
Shiandow
16th January 2015, 03:20
This actually gives me an idea which I'm about to implement. I will be including MediaInfo library in MPDN's distro and allowing it to be called from all MPDN's scripts (player extension included). What I wanted to do for example, is while all my TV records are of the same size, its video bitrate isn't - some are just encoded and sent at a lower bitrate (I think some channels are allocated lower bandwidths). I am looking to use this info to change the debanding strength. ** This will *not* break exisiting API in anyway **
Banding doesn't really have anything to do with bitrate though, in fact encoding media in 10-bit can actually lower the bitrate. You *can* use the debanding algorithm as an improvised denoising / deblocking algorithm, but it is incapable of removing noise 'a little' it will either obliterate it or leave it alone, you'll essentially lower the bitdepth.
Zachs
16th January 2015, 04:14
Banding doesn't really have anything to do with bitrate though, in fact encoding media in 10-bit can actually lower the bitrate. You *can* use the debanding algorithm as an improvised denoising / deblocking algorithm, but it is incapable of removing noise 'a little' it will either obliterate it or leave it alone, you'll essentially lower the bitdepth.
Ah I should have been more clear when I said TV records. The TV streams over here have been re-encoded a few times before they're broadcasted over the air, and they don't re-encode them in high bit depth for sure, so the banding gets really bad. Lowering the bitdepth is probably what is needed to remove those banding in this case. For low bandwidth channels, they seem to re-encode from an already re-encoded stream (probably from another MPEG2 source - could be pay TV) to fit in the bandwidth they were allocated I suppose. Other channels with higher bandwidth allocations seem to do fine. In my case, there's a correlation between bitrate and banding, but it's only for the free to air TV streams where I live.
EDIT: speaking of denoise / deblock, any chance you could do one for us? :)
Garteal
16th January 2015, 17:55
Unrelated, but wow, I typed a bunch of paragraphs here and my session expired and I lost everything. Might've forgotten to address some things now... but I'll reply whenever I remember I guess.
Oh welcome to the development team! :)
If it's enhancing the capabilities of playlist, perhaps just add it to the existing class? Anyway feel free to discuss it here. Alternatively you could share the link to your fork and we could discuss on github.
Thank you.
Right now it's really just a few things I was looking for for quite some time. Things like being able to play a playlist and have it skip certain parts of a video automatically. I've been working on a copy of the existing Playlist class but added to it and eventually renamed it and gave it another GUID. Right now the GUI looks like this.
http://abload.de/img/advanced-playlistnajyh.png
I plan to change that a bit more since I'm also planning to add the ability to have the player skip to the next item on the playlist whenever a certain chapter is reached on a certain file.
I've noticed that when the player jumps to the next item on the playlist that the player goes (back) to windowed mode and doesn't restore fullscreen. I've already "fixed" that so that it does that, but it still goes to windowed mode for a second upon changing the file(s). Any chance you could fix this internally?
I've forked the project on GitHub. Since you seem to be doing so already, maybe we should keep the devtalk on GitHub or something.
stax76
16th January 2015, 18:19
Unrelated, but wow, I typed a bunch of paragraphs here and my session expired and I lost everything. Might've forgotten to address some things now... but I'll reply whenever I remember I guess.
That happened often too me in the past but Firefox has some built in recover functionality I believe and there are browser add-ons, I'm using one called Lazarus.
Asmodian
16th January 2015, 20:03
That happened often too me in the past but Firefox has some built in recover functionality I believe and there are browser add-ons, I'm using one called Lazarus.
I always ctrl-c the entire post (if it is a long one) before hitting submit. :o
shaolin95
16th January 2015, 21:37
So I finally tried this with SVP (was using it only with MPC before and madvr) and it runs a lot better for me than with MPC etc. Very smooth all the time. The only thing I noticed is that Output changes to 8bits so noy sure what other things I am sacrificing IQ wise by forcing the ffdshow filter to access SVP. :)
Blackfyre
16th January 2015, 22:58
So I finally tried this with SVP (was using it only with MPC before and madvr) and it runs a lot better for me than with MPC etc. Very smooth all the time. The only thing I noticed is that Output changes to 8bits so noy sure what other things I am sacrificing IQ wise by forcing the ffdshow filter to access SVP. :)
Yes 100% agree... The decrease in the visibility of artifacts is insane! Say bye bye to artifacts (almost anyway - well much less than MPC+Madvr). Man I still haven't gotten around to writing my guide of how to setup SVP with MPDN. I think I've found the perfect settings (well for my system anyway)... If your system can handle it, you'll be impressed with the outcome.
I'll write up my thoughts and post pictures of my settings some time soon hopefully. I just haven't gotten around to it yet.
Zachs
17th January 2015, 00:58
Unrelated, but wow, I typed a bunch of paragraphs here and my session expired and I lost everything. Might've forgotten to address some things now... but I'll reply whenever I remember I guess.
Thank you.
Right now it's really just a few things I was looking for for quite some time. Things like being able to play a playlist and have it skip certain parts of a video automatically. I've been working on a copy of the existing Playlist class but added to it and eventually renamed it and gave it another GUID. Right now the GUI looks like this.
http://abload.de/img/advanced-playlistnajyh.png
I plan to change that a bit more since I'm also planning to add the ability to have the player skip to the next item on the playlist whenever a certain chapter is reached on a certain file.
I've noticed that when the player jumps to the next item on the playlist that the player goes (back) to windowed mode and doesn't restore fullscreen. I've already "fixed" that so that it does that, but it still goes to windowed mode for a second upon changing the file(s). Any chance you could fix this internally?
I've forked the project on GitHub. Since you seem to be doing so already, maybe we should keep the devtalk on GitHub or something.
Yeah that's a good idea, though I think you may have to pm me the fork URL because github doesn't tell me who forked my branch until a pull request is made.
The enhancements you've made does look really nice! Can't it replace the existing playlist form?
The resize on next file is not a bug actually, it's an option you can disable in MPDN's option menu.
Procrastinating
17th January 2015, 04:51
I have been waiting out to see if the problems may be solved on their own, but it seems that MPDN is unable to play any media file with the HD6770 I am using. No directX version, changing all scalers to be GPU based, using any kind of media container, codec or whatnot has any effect. There is simply this somewhat vague error message: http://i.imgur.com/CDBMVJP.png
Zachs
17th January 2015, 05:19
Fail to render for error means your DirectShow setup using LAV filters is incorrect. You can troubleshoot with graph studio next.
romulous
17th January 2015, 06:24
Anyway, I've fixed both issues in the next release.
Thanks, fixed :) The only thing really missing for me now I think is a built-in screen capture feature, to offset the unreliability of using a third party screen capture program (which will for reasons unknown, not actually capture the image on screen but another frame from the video).
Garteal
17th January 2015, 10:13
Yeah that's a good idea, though I think you may have to pm me the fork URL because github doesn't tell me who forked my branch until a pull request is made.
The enhancements you've made does look really nice! Can't it replace the existing playlist form?
The resize on next file is not a bug actually, it's an option you can disable in MPDN's option menu.
Ah I see thanks. It works good with the option disabled.
And sure, I'll make it a replacer once the next few ideas are added. PM'd the fork. Nothing there yet though so don't get too excited lol.
Zachs
17th January 2015, 11:42
Ah I see thanks. It works good with the option disabled.
And sure, I'll make it a replacer once the next few ideas are added. PM'd the fork. Nothing there yet though so don't get too excited lol.
Yup got your PM. Have to say doom9 is the perfect place for MPDN! In fact, it was doom9's guides that got me started with this whole video encoding thing back in the early days, so I've always wanted to give something back.
mrcorbo
18th January 2015, 00:37
I had been getting crashes in MPDN during playback and I finally think I have determined the cause. I have 2 AMD GPUs Crossfired in my main PC which I use for gaming as well as media playback. Well, after many attempts of trying different files, changing settings within MPDN, and uninstalling/reinstalling different drivers it occurred to me to try disabling Crossfire and...no crash. I re-enabled Crossfire and the same file plays back for 4 minutes and then MPDN crashes.
This seems to be an isolated issue with MPDN as other media players work fine with Crossfire enabled, even when using madVR.
Blackfyre
18th January 2015, 00:49
I have been waiting out to see if the problems may be solved on their own, but it seems that MPDN is unable to play any media file with the HD6770 I am using. No directX version, changing all scalers to be GPU based, using any kind of media container, codec or whatnot has any effect. There is simply this somewhat vague error message: http://i.imgur.com/CDBMVJP.png
I got this error today with 30fps videos after updating to 2.18.3, but didn't happen with 24fps or 25fps videos... I reverted back to the last version I had prior to updating and everything works fine.
Not sure why it happened to be honest. Also SVP wasn't as stable as usual with the latest version. Again, I couldn't figure out why myself. :confused:
Zachs
18th January 2015, 01:02
I had been getting crashes in MPDN during playback and I finally think I have determined the cause. I have 2 AMD GPUs Crossfired in my main PC which I use for gaming as well as media playback. Well, after many attempts of trying different files, changing settings within MPDN, and uninstalling/reinstalling different drivers it occurred to me to try disabling Crossfire and...no crash. I re-enabled Crossfire and the same file plays back for 4 minutes and then MPDN crashes.
This seems to be an isolated issue with MPDN as other media players work fine with Crossfire enabled, even when using madVR.
Which presenter did you use? Try direct3d 9. I wouldn't have thought crossfire needed to be treated differently, since there isn't any direct3d API for it. What sort of crash did you get?
I got this error today with 30fps videos after updating to 2.18.3, but didn't happen with 24fps or 25fps videos... I reverted back to the last version I had prior to updating and everything works fine.
Not sure why it happened to be honest. Also SVP wasn't as stable as usual with the latest version. Again, I couldn't figure out why myself. :confused:
Which old version? I'll have a look and see what's changed. Can you check what the difference is between the old filter list versus the new one?
Anima123
18th January 2015, 01:28
Shiandow, I noticed there's some modifications around SuperRes has been reverted, mind if you share with us what's all these about?
Hope you can continue improving SuperRes, for now it's the main scaling algorithm of this series I am be able to enjoy without restarting the playback in the middle. ;)
mrcorbo
18th January 2015, 03:25
Which presenter did you use? Try direct3d 9. I wouldn't have thought crossfire needed to be treated differently, since there isn't any direct3d API for it. What sort of crash did you get?
I think I tried them all before, but I tried D3D9 just to be sure and it still crashed. The error is:
Unhandled exception at 0x00007FFB69919568 (d3d9.dll) in MediaPlayerDotNet.exe: 0xC0000005: Access violation writing location 0x00000000203F0FF0.
Call stack is: > d3d9.dll!RenderCB() Unknown
Zachs
18th January 2015, 03:43
Can you get me a full stack trace?
Garteal
18th January 2015, 04:06
Yup got your PM. Have to say doom9 is the perfect place for MPDN! In fact, it was doom9's guides that got me started with this whole video encoding thing back in the early days, so I've always wanted to give something back.
And you're doing an amazing job. Been lurking from the early days and it's really shaping up nicely and I see a lot of potential with its extensibility with RenderScripts and PlayerExtensions.
Been redoing the code design a bit and I'll actually need to be able to fire some code during chapter changes which requires a nice event I can hook to. Maybe a "Playing" event? Right now I'm abusing the PaintOverlay to get things working.
mrcorbo
18th January 2015, 05:08
Can you get me a full stack trace?
I'm not sure how, TBH. MPDN isn't handling the crash and when I select the Debug option from the Windows crash dialog, it presents me with a disassembly of the atiumd64.dll thread. I'm not sure if that is what you are looking for.
DeadlyEmbrace
18th January 2015, 08:36
Hi everyone
First, thanks Zachs for this awesome media player! :thanks:
I have released a new Player extension that allows remote control of MPDN. Simply add the extension as per the instruction in the first post then grab a copy of the sample remote here https://github.com/DeadlyEmbrace/MPDN_RemoteControl At the moment you will have to compile the remote code yourself, I will add a working release in the next day or so.
There are still a few issues (it was written a little hastily) but I will hopefully get those solved in the next few weeks. Feel free to file bugs or make a fork and fix them yourself. :p
Known issue:
- Remote media has to be in a path that is accessible to MPDN and has the same path as the remote can see (a remote share or the PC on which MPDN is running)
- There is no security so any copy of the Remote can connect
- There is no way to disconnect a remote client
- There is no way to change the port that MPDN extension server is running on
- There is no way to build and manage a playlist using the remote
Zachs
18th January 2015, 09:29
I'm not sure how, TBH. MPDN isn't handling the crash and when I select the Debug option from the Windows crash dialog, it presents me with a disassembly of the atiumd64.dll thread. I'm not sure if that is what you are looking for.
Ah this means it's a crash in AMD's driver. You should report the bug. Someone needs to fix bug in that DLL that is trying to write to a memory page that hasn't been allocated.
Hi everyone
First, thanks Zachs for this awesome media player! :thanks:
I have released a new Player extension that allows remote control of MPDN. Simply add the extension as per the instruction in the first post then grab a copy of the sample remote here https://github.com/DeadlyEmbrace/MPDN_RemoteControl At the moment you will have to compile the remote code yourself, I will add a working release in the next day or so.
There are still a few issues (it was written a little hastily) but I will hopefully get those solved in the next few weeks. Feel free to file bugs or make a fork and fix them yourself. [emoji14]
Known issue:
- Remote media has to be in a path that is accessible to MPDN and has the same path as the remote can see (a remote share or the PC on which MPDN is running)
- There is no security so any copy of the Remote can connect
- There is no way to disconnect a remote client
- There is no way to change the port that MPDN extension server is running on
- There is no way to build and manage a playlist using the remote
Thank you so much! I will add a link to your remote client in the OP. I'll probably build it and upload the executable so everyone could use it without having to build from source. Remind me to remove my build when you've got a prebuilt version.
friver
18th January 2015, 10:43
Hello. I've just tried your player, and there are a few things I noticed:
1. Custom audio renderers aren't supported. (I tried Reclock and MpcAudioRenderer from MPC-BE)
2. Snap to Screen Edges function doesn't work at all.
3. In minimal view, there's no title on taskbar. Only icon. http://i.imgur.com/NiwTGs0.png
4. There's no Mitchel-Netravali and Catmull-Rom downscaling algorithms, unlike MadVR settings. Same goes for DXVA2 downscaling
5. What I really like is Maximize-Minimize-Close buttons in minimal mode. Is it possible to show them in fullscreen view too? It would be very convinient to close the player on TV screen with a single mouse click.
6. Is it possible to change mouse and keyboard hotkeys?
7. Is it possible to set on which monitor the player should start? It would be very usefull when using MPDN as an external player in Kodi (XBMC) on multimonitor system. For example, look at /close, /fullscreen, /monitor command arguments in MPC-HC.
8. Is it possible to use MediaInfo.dll in MPDN ?
Sorry for so many questions, I really did use the search before posting
Good luck! I'm looking forward to next versions.
Matching_Mole
18th January 2015, 11:44
Hi,
To the questions of friver, I would add one: it is not possible currently to play Dvd with MPDN?
Zachs
18th January 2015, 12:58
Hello. I've just tried your player, and there are a few things I noticed:
1. Custom audio renderers aren't supported. (I tried Reclock and MpcAudioRenderer from MPC-BE)
2. Snap to Screen Edges function doesn't work at all.
3. In minimal view, there's no title on taskbar. Only icon. http://i.imgur.com/NiwTGs0.png
4. There's no Mitchel-Netravali and Catmull-Rom downscaling algorithms, unlike MadVR settings. Same goes for DXVA2 downscaling
5. What I really like is Maximize-Minimize-Close buttons in minimal mode. Is it possible to show them in fullscreen view too? It would be very convinient to close the player on TV screen with a single mouse click.
6. Is it possible to change mouse and keyboard hotkeys?
7. Is it possible to set on which monitor the player should start? It would be very usefull when using MPDN as an external player in Kodi (XBMC) on multimonitor system. For example, look at /close, /fullscreen, /monitor command arguments in MPC-HC.
8. Is it possible to use MediaInfo.dll in MPDN ?
Sorry for so many questions, I really did use the search before posting
Good luck! I'm looking forward to next versions.
1. That's a bug that was introduced a few versions ago. It's been fixed in the next release. Thanks for reporting it!
2. It does, doesn't it? - I just tested it.
3. That is an unfortunate requirement to make Windows draw a captionless form.
4. MPDN's bicubic covers both MV and CR scalers - use search to find out which are the corresponding sharpness settings
5. Not easily - will add to my to do list with low priority
6. Yes (but not end-user friendly yet) via Player Extension - see KeyRemap.cs
7. Yes (again, not end-user friendly yet) via Player Extension, simply setting the location of PlayerControl.Form at Initialize() would achieve this
8. Ctrl+Shift+I - see ViewMediaInfo.cs
Hi,
To the questions of friver, I would add one: it is not possible currently to play Dvd with MPDN?
Hmm... did you get an error when you open the video_ts.ifo file?
EDIT: Ah it would appear that LAV Splitter doesn't support video_ts.ifo? However, opening the VOB file directly seems fine.
Does anyone know if LAV Splitter Source could be used to open video_ts.ifo?
romulous
18th January 2015, 13:29
2. It does, doesn't it? - I just tested it.
friver is right - it doesn't work here either. Using 64bit version on Win 7 64bit, snap to top edge is fine (that's when Windows does that automatic resize thing that they introduced with Win 7, Aero Snap or whatever it is called), but snap to left and right edge does not work (can't tell about bottom edge, as MPDN goes under the taskbar).
Zachs
18th January 2015, 13:43
friver is right - it doesn't work here either. Using 64bit version on Win 7 64bit, snap to top edge is fine (that's when Windows does that automatic resize thing that they introduced with Win 7, Aero Snap or whatever it is called), but snap to left and right edge does not work (can't tell about bottom edge, as MPDN goes under the taskbar).
Snap to edges is meant to work like a magnet that aligns the form on the edge of your working area (I.e. it snaps to taskbar too). Were you guys expecting it to behave otherwise?
romulous
18th January 2015, 13:49
Zachs - It doesn't actually do what you describe though (at least on my system, and presumably on friver's as well). It appears to work exactly the first time you try and dock to the edges, but if you then move the MPDN window away from the edge and try again, it stops working. MPDN is the only program that supports dock to edges that doesn't actually do that correctly on my system.
Zachs
18th January 2015, 13:52
Hmm. Is anyone else seeing this problem?
EDIT: Just tested this on more systems with Win8.1 x64 - all of them worked fine. Just to be clear, it only meant to dock when it's placed close enough to the edge of the screen (25 pixels on 96 DPI systems).
cegy
18th January 2015, 13:56
just wondering if its possible to add support for being able to read rar files i do know adding it yourself could be quite hard/not simple to do however my suggestion would be offer the support of reading rar files if it detects "RARFileSource.ax" in the same dir or on the system?
p.s http://www.v12pwr.com/RARFileSource/ will give you the option of being able to read/playback videos from rar's and its also a directshow filter aswell
friver
18th January 2015, 14:06
2. It does, doesn't it? - I just tested it.
3. That is an unfortunate requirement to make Windows draw a captionless form.
4. MPDN's bicubic covers both MV and CR scalers - use search to find out which are the corresponding sharpness settings
Thanks for the reply!
2. No, unfortunately, it doesn't work for me at all. Win 8.1 x64, MPDN x86
3. Well, seems like MPC-HC, MPC-BE and PotPlayer can hide caption, and display a caption in taskbar at the same time, so I think this requirement isn't so strict.
4. Thanks, I didn't know that before.
Zachs
18th January 2015, 16:56
Thanks for the reply!
2. No, unfortunately, it doesn't work for me at all. Win 8.1 x64, MPDN x86
3. Well, seems like MPC-HC, MPC-BE and PotPlayer can hide caption, and display a caption in taskbar at the same time, so I think this requirement isn't so strict.
4. Thanks, I didn't know that before.
2. I haven't seen this problem personally but I'll try to find a system that I can replicate the issue. So far all the systems I have access to behave properly.
3. Form is accessible through player extension, so if you know how to do that, please post an example and I'll incorporate it in a heart beat.
4. That's what search is for.
DeadlyEmbrace
18th January 2015, 17:57
Thank you so much! I will add a link to your remote client in the OP. I'll probably build it and upload the executable so everyone could use it without having to build from source. Remind me to remove my build when you've got a prebuilt version.
Thanks :D
Awesome to be able to contribute something. Have fixed the Authorization issue and will work on the remaining issue during the week. Will probably make a release once the middle three errors are fixed.
Do you have any suggestion for how I can interact with the playlist? Have though of creating one in the remote, but that isn't a very good way of doing it...
nekromantik
18th January 2015, 18:14
@Anima123
I just watched a 41 min file with x64 latest MPDN with x64 LAV and superres+superchromares NNDIE3 enabled and got no render time increase.
Using Direct3D 11 output.
@zachs
Cant get display rate changer to work.
I add w1280p24 to the list but when playing file it dont not do anything.
fairchild
18th January 2015, 20:20
When using a script chain and using say SuperChromaRes and SuperRes, the correct sequence is the SuperChromaRes first then the SuperRes (since chroma gets resizes first/always?)
Zachs
18th January 2015, 23:09
Thanks :D
Awesome to be able to contribute something. Have fixed the Authorization issue and will work on the remaining issue during the week. Will probably make a release once the middle three errors are fixed.
Do you have any suggestion for how I can interact with the playlist? Have though of creating one in the remote, but that isn't a very good way of doing it...
I think you could simply change the playlist form to add methods such as AddFiles, RemoveFiles, GetPlaylist etc (these methods could simply be refactored from existing code). This way the remote playlist will be synchronised with the playlist extension's list.
@Anima123
I just watched a 41 min file with x64 latest MPDN with x64 LAV and superres+superchromares NNDIE3 enabled and got no render time increase.
Using Direct3D 11 output.
@zachs
Cant get display rate changer to work.
I add w1280p24 to the list but when playing file it dont not do anything.
Try it without the filter first and see if everything works fine - i.e. Tick 'activate display changer' only and leave everything else unchecked. If that works, then make sure the material you are watching is indeed p24, not p23 (==> 23.976)
When using a script chain and using say SuperChromaRes and SuperRes, the correct sequence is the SuperChromaRes first then the SuperRes (since chroma gets resizes first/always?)
That's correct. If you find your GPU to be too weak, you can remove SuperChromaRes and simply have SuperRes as the sole render script and it'll still work - in this case, it uses MPDN's Chroma Upscaler.
mrcorbo
18th January 2015, 23:10
Ah this means it's a crash in AMD's driver. You should report the bug. Someone needs to fix bug in that DLL that is trying to write to a memory page that hasn't been allocated.
OK, will do.
I also found that when the main player window is active, MPDN is now responding to the keyboard shortcuts for play next/previous playlist item and play next/previous file in folder twice, effectively skipping two ahead on each press (it actually advances to the next file then immediately advances again). Chapter navigation is working fine. If you activate the playlist window, playlist navigation returns to normal.
nekromantik
19th January 2015, 00:47
Try it without the filter first and see if everything works fine - i.e. Tick 'activate display changer' only and leave everything else unchecked. If that works, then make sure the material you are watching is indeed p24, not p23 (==> 23.976)
.
Ok
Thanks for the help!
Zachs
19th January 2015, 01:06
OK, will do.
I also found that when the main player window is active, MPDN is now responding to the keyboard shortcuts for play next/previous playlist item and play next/previous file in folder twice, effectively skipping two ahead on each press (it actually advances to the next file then immediately advances again). Chapter navigation is working fine. If you activate the playlist window, playlist navigation returns to normal.
Will take a look. Thanks!
SamuelMaki
19th January 2015, 02:09
Hey! I get the following error when trying to use the 32-bit version with ffdshow postprocessing: Failed to render the file "path-to-file.avi". Using 64-bit version with 64-bit ffdshow work just fine. The reason I want 32-bit, is to be able to use Avisynth (Interframe interpolation)
E: Played around with the graphstudionext and there is no problem what so ever.
Zachs
19th January 2015, 02:18
Hey! I get the following error when trying to use the 32-bit version with ffdshow postprocessing: Failed to render the file "path-to-file.avi". Using 64-bit version with 64-bit ffdshow work just fine. The reason I want 32-bit, is to be able to use Avisynth (Interframe interpolation)
If it works in 64-bit and not 32, then the 32-bit path of your system setup since MPDN doesn't treat 32/64-bit any differently when it comes to directshow.
SamuelMaki
19th January 2015, 02:31
If it works in 64-bit and not 32, then the 32-bit path of your system setup since MPDN doesn't treat 32/64-bit any differently when it comes to directshow.
What you mean with that? MPDN is on a folder "C:\MPDN\" and ffdshow is installed properly as well (and works on the graphstudio).
Zachs
19th January 2015, 02:42
What you mean with that? MPDN is on a folder "C:\MPDN\" and ffdshow is installed properly as well (and works on the graphstudio).
By that I mean MPDN is reliant on your system's DirectShow filters to be setup correctly - and when 64-bit works and not 32-bit or vice versa, there can be only one explanation - one or more DirectShow filters has been setup incorrectly or misbahaving.
Did you go through the troubleshooting guide? i.e. disabling subtitles, connect LAV video and audio decoders to LAV splitter source, then ffdshow to video decoder's output and finally to any renderers for testing? If you can setup such a graph in graph studio (make sure it's the 32-bit graphstudio in your case), and MPDN still fails, then it's a genuine bug.
SamuelMaki
19th January 2015, 03:03
By that I mean MPDN is reliant on your system's DirectShow filters to be setup correctly - and when 64-bit works and not 32-bit or vice versa, there can be only one explanation - one or more DirectShow filters has been setup incorrectly or misbahaving.
Did you go through the troubleshooting guide? i.e. disabling subtitles, connect LAV video and audio decoders to LAV splitter source, then ffdshow to video decoder's output and finally to any renderers for testing? If you can setup such a graph in graph studio (make sure it's the 32-bit graphstudio in your case), and MPDN still fails, then it's a genuine bug.
I did all those, no change, though now I get BEX64 error on the x64 version too :confused: Reinstalled nvidia gpu drivers, but didn't help. Going to run sfc /scannow now if I have something corrupted in my system...
E: Which didn't found anything... I didn't see any links for "old builds", you have some of those around? I could try older version since this configuration has worked flawlessly in the past.
EE: Removed every directshow filter except LAV and now both 32-bit and 64-bit work in directx9 old windowed mode only. If I change to new windowed mode, I get the "failed to render file" error. Scratch that, now it works in new windowed mode too... Seems very random.
Zachs
19th January 2015, 03:20
I did all those, no change, though now I get BEX64 error on the x64 version too :confused: Reinstalled nvidia gpu drivers, but didn't help. Going to run sfc /scannow now if I have something corrupted in my system...
E: Which didn't found anything... I didn't see any links for "old builds", you have some of those around? I could try older version since this configuration has worked flawlessly in the past.
What's a BEX64 error?
Are you saying graph studio had no problem connecting the filters I described but MPDN is still showing the error failed to render file?
Zachs
19th January 2015, 03:23
EE: Removed every directshow filter except LAV and now both 32-bit and 64-bit work in directx9 old windowed mode only. If I change to new windowed mode, I get the "failed to render file" error
New windowed mode is completely not related to the failed to render file error - one is in the renderer, the other is in directshow graph connection. The code that makes any difference for windowed mode settings doesn't even called yet if you see the "Failed to render file" error.
SamuelMaki
19th January 2015, 03:27
What's a BEX64 error?
Are you saying graph studio had no problem connecting the filters I described but MPDN is still showing the error failed to render file?
I did get "software stopped working" with BEX64 as the error message, but now I don't get that anymore so cannot copy the whole message :/ And no problems on graphic studio, even ffdshow+avisynth worked on it. This is recent problem, which I believe might be related to updating (I used to run perfectly fine with last years before christmas build).
cyberbeing
19th January 2015, 03:27
BEX errors usually occur when something triggers Data Execution Prevention (DEP).
Zachs
19th January 2015, 03:38
Ah ok, anything that triggers DEP will be in unmanaged code.
The most recent change that has anything to do with unmanaged code would've come from adding support for Direct3D 11.
Can you try D3D9Ex and see if the problem persists? But like I said, this is not going to help with the failed to render file error though.
SamuelMaki
19th January 2015, 03:47
Ah ok, anything that triggers DEP will be in unmanaged code.
The most recent change that has anything to do with unmanaged code would've come from adding support for Direct3D 11.
Can you try D3D9Ex and see if the problem persists? But like I said, this is not going to help with the failed to render file error though.
As crazy as it sounds everything works just fine now. Installed ffdshow back and it loads as well without problems. Oh well, sorry to have wasted your time.
Zachs
19th January 2015, 03:50
As crazy as it sounds everything works just fine now. Installed ffdshow back and it loads as well without problems. Oh well, sorry to have wasted your time.
LOL glad it worked out finally! :)
romulous
19th January 2015, 11:11
2. I haven't seen this problem personally but I'll try to find a system that I can replicate the issue. So far all the systems I have access to behave properly.
Zachs: How quickly do you move your mouse? I notice that when I move my mouse really slowly, MPDN is much more reliable in snapping to the desktop edge. When I move my mouse at normal speed, that is when it seems to become problematic. Maybe it is a visual thing - maybe MPDN is actually grabbing to the edge (and is thus technically working), but because of the speed of the mouse movement, it then immediately gets pushed past the edge of the desktop making it appear it hasn't worked.
Zachs
19th January 2015, 11:23
It should only snap when you release the mouse button, shouldn't do anything otherwise.
romulous
19th January 2015, 11:46
It should only snap when you release the mouse button
That may be the problem (it seems to me to be an unusual way to do it). Anyway, here is a video capture of various attempts at me snapping to the desktop edge, you might be able to see something. Note that in the video, the left hand side of the video is the left hand edge of the desktop, and that I never remove my finger from the mouse button the entire time (as far as I recall, I don't have to remove my finger from the mouse for other apps, though my memory may be faulty on that). I start off by moving the mouse very slowly - and in fact it works the first time - but after that, I start to build up to my normal mouse movement speed and that is when it starts to fail.
https://dl.dropboxusercontent.com/u/105555957/MPDN%20Snap.wmv (1.12MB)
kostik
19th January 2015, 12:05
Awesome job, been using it since almost the beginning.
I guess the ability to use 3dlut files or something like it (or even better), would be the last step and a major one.
Thanks for everyone working on this project, I wish I had the knowledge to help , maybe in the future :)
Zachs
19th January 2015, 12:44
3dlut requires 3d texture upload that isn't available yet via renderscript at this moment.
Hopefully I'll have some time to get to implementing the necessary APIs to allow this to happen in the future...
Zachs
19th January 2015, 12:58
That may be the problem (it seems to me to be an unusual way to do it). Anyway, here is a video capture of various attempts at me snapping to the desktop edge, you might be able to see something. Note that in the video, the left hand side of the video is the left hand edge of the desktop, and that I never remove my finger from the mouse button the entire time (as far as I recall, I don't have to remove my finger from the mouse for other apps, though my memory may be faulty on that). I start off by moving the mouse very slowly - and in fact it works the first time - but after that, I start to build up to my normal mouse movement speed and that is when it starts to fail.
https://dl.dropboxusercontent.com/u/105555957/MPDN%20Snap.wmv (1.12MB)
This isn't what I'm getting at all - are you sure you haven't got other software on your system snapping it while you're moving the window? On all my systems, the MPDN window doesn't snap until I release it near the edge.
romulous
19th January 2015, 13:13
Not as far as I know (if any of the apps I have running affect snapping, it isn't an advertised feature of them and certainly not why I am running them). What I will have to do is to run the same test with all the background apps on my system shutdown (well, as many of them as is possible anyway) and see if I get the same result.
ryrynz
19th January 2015, 21:28
As soon as the mouse cursor hits the edge of the desktop (wherever the mouse is located on the MPDN window) I see the docking animation. I will try out some other systems, but this looks to be working as intended.
What MPDN doesn't do is the type of edge docking that say Zoomplayer does. By bringing the window to the desktop edge the player snaps to the screen without any sort of maximizing at all, just sticky edges really, maybe Romulous is looking for that feature.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.