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

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.