Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Hardware & Software > Software players

Reply
 
Thread Tools Search this Thread Display Modes
Old 1st September 2014, 08:05   #1  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
Media Player .NET (MPDN) - D3D HQ GPU Video Renderer [v2.49.0/v1.31.0 27 Dec 2018]

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. 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.

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 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 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!

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.
  • 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.
  • 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



Minimal UI Mode



Minimal UI Mode with Playlist



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 first)
  • Improved chroma reconstruction [1] [2]
  • 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:
  • 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
  • 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
  • MPDN won't start on my Optimus laptop (or any issues with your Optimus system) - read this
  • 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

User contributed articles:
Special thanks:
  • Shiandow
    • Co-designing MPDN's render script system
    • Main contributor of MPDN's render scripts and framework
  • Belphemur for hosting MPDN
  • All of MPDN's player extension devs (Gartael, DeadlyEmbrace, Belphemur, 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 v1.31.0):
Changelogs

Code:
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
Code:
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)


Cheers.

Last edited by Zachs; 15th February 2019 at 13:07.
Zachs is offline   Reply With Quote
Old 1st September 2014, 11:00   #2  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,920
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
huhn is offline   Reply With Quote
Old 1st September 2014, 12:29   #3  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
Quote:
Originally Posted by huhn View Post
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
Zachs is offline   Reply With Quote
Old 1st September 2014, 12:41   #4  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 10,346
4x4 is two taps (ie 2 pixels in each direction), or also called bicubic.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders
nevcairiel is online now   Reply With Quote
Old 1st September 2014, 12:46   #5  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
Quote:
Originally Posted by nevcairiel View Post
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.
Zachs is offline   Reply With Quote
Old 1st September 2014, 13:02   #6  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 10,346
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.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders
nevcairiel is online now   Reply With Quote
Old 1st September 2014, 13:22   #7  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
Quote:
Originally Posted by nevcairiel View Post
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

Last edited by Zachs; 13th October 2014 at 08:17.
Zachs is offline   Reply With Quote
Old 1st September 2014, 13:36   #8  |  Link
kostik
Registered User
 
Join Date: Jul 2007
Posts: 161
Works fine, thanks Missing only subtitles loader and nnedi3
kostik is offline   Reply With Quote
Old 2nd September 2014, 06:39   #9  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
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.

Last edited by Zachs; 2nd September 2014 at 07:29.
Zachs is offline   Reply With Quote
Old 2nd September 2014, 21:24   #10  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,140
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

Last edited by madshi; 2nd September 2014 at 21:27.
madshi is offline   Reply With Quote
Old 6th October 2014, 05:07   #11  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
Quote:
Originally Posted by madshi View Post
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/Med...P/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.

Quote:
Originally Posted by huhn View Post
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?

Quote:
Originally Posted by Hera View Post
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.

Last edited by Zachs; 6th October 2014 at 05:51.
Zachs is offline   Reply With Quote
Old 7th October 2014, 03:47   #12  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,920
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.
huhn is offline   Reply With Quote
Old 7th October 2014, 06:01   #13  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
Quote:
Originally Posted by huhn View Post
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.

Last edited by Zachs; 7th October 2014 at 06:06.
Zachs is offline   Reply With Quote
Old 7th October 2014, 08:26   #14  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,140
Quote:
Originally Posted by Zachs View Post
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? 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.
madshi is offline   Reply With Quote
Old 7th October 2014, 10:22   #15  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,920
Quote:
Originally Posted by Zachs View Post
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.

Quote:
Originally Posted by madshi View Post
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? 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.
huhn is offline   Reply With Quote
Old 12th October 2014, 00:51   #16  |  Link
Hera
.NET Web App Dev
 
Join Date: May 2010
Location: USA
Posts: 291
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?"

Quote:
Originally Posted by Zachs View Post
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.
__________________
Intel i7 5820k / 16 GB DDR4 / NV 970 / 4K ASUS
Windows 8.1

Last edited by Hera; 12th October 2014 at 01:08. Reason: Answered my own question so provided feedback instead.
Hera is offline   Reply With Quote
Old 12th October 2014, 02:21   #17  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,920
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.

Last edited by huhn; 12th October 2014 at 02:21. Reason: removed quote
huhn is offline   Reply With Quote
Old 13th October 2014, 05:06   #18  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
@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?
Zachs is offline   Reply With Quote
Old 3rd September 2014, 13:37   #19  |  Link
madshi
Registered Developer
 
Join Date: Sep 2006
Posts: 9,140
Quote:
Originally Posted by Zachs View Post
Did you get hold of a stack trace?
See here:

Code:
===================================

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)
Quote:
Originally Posted by Zachs View Post
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...
madshi is offline   Reply With Quote
Old 3rd September 2014, 15:16   #20  |  Link
Zachs
Suptitle, MediaPlayer.NET
 
Join Date: Nov 2001
Posts: 1,721
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).
Zachs is offline   Reply With Quote
Reply

Tags
direct3d, mpdn, nnedi3, opencl, reclock

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 11:26.


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