Log in

View Full Version : Media Player .NET (MPDN) - D3D HQ GPU Video Renderer [v2.49.0/v1.31.0 27 Dec 2018]


Pages : [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96

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 ?