View Full Version : Media Player Classic Home Cinema (MPC-HC) - DXVA!
anuswara
3rd February 2011, 18:47
Make sure to install the latest DirectX Runtimes (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=en). (don't accidentally install the bundled Bing bar!!) Long story.
By the way, seeing as you have misunderstood the message that tells you to update the directx end user runtime, do you have any suggestions to make the error easier to understand for others?
sorry. the error was easy to understand. but I wonder that i have to download dx9 on my pc bundled with dx10 and therefore I worried for my OS..conflict or so ;-)
now I have to pluck up the courage to do this install.
thanks.
nevcairiel
3rd February 2011, 19:03
DX9, 10 and 11 can life happy on the same system. Alot of games also ship those DX installers because they need a feature that was not in the initial version of DX9, like MPC-HC does.
anuswara
3rd February 2011, 19:45
thanks a lot nevcairiel
hissatsu
3rd February 2011, 20:38
@hissatsu: Really sorry, because of byte-ordering problems (BGR<->RGB), only the PNG and JPEG type are working. 8-bit surfaces means that the functions 10-bit RGB Output, Full Floating Point Processing and Half Floating Point Processing have to be disabled.
Ah, thanks. I had Full Floating Point enabled.
JanWillem32
3rd February 2011, 20:44
I coded a bit and I played with the compiler settings. The builds are slightly faster and smaller, but unfortunately not sexier than my previous ones (we really need to do something about that GUI).
This should be working better in the case of NV12 output from software codecs in EVR. De-interlacing for NV12 input and conversion where needed has mostly been fixed.
I made complete packages this time. These are compiled with MSVS 2010, and deviated from build r2911.
cca
3rd February 2011, 20:48
@JanWillem32
Got an error about missing "mfc100u.dll" , can you make a static compile?
EDIT: OK, will get the redistributable and try the x86 build.
MrHipp
3rd February 2011, 21:46
10-bit input will be removed, along with other broken features of the mixer.
Could it be due to the fact that the filters don't support
MEDIASUBTYPE_A2R10G10B10?
mark0077
3rd February 2011, 22:26
Has anyone noticed lately or can anyone confirm that with mpc-hc open, and when another file is loaded that usually opens in mpc-hc, mpc-hc just gives a little flicker and continues on with the currently loaded file, rather than opening the newly selected one. If anyone can confirm I'll start going back through mpc-hc versions to find the cause.
Aswell as this, mpc-hc doesn't seem to send the stop / quit signal, well at least reclock isn't getting it. I use reclock (with madVR) to auto change refresh rate and I have sent output from the vbs script to a text file to see what messages are going accross. I had my TV at 50hz, opened a 23.976hz movie, see output below where reclock went to state yellow and set my screen to 23.976 hz. I double clicked the fullscreen window to get out, to close the player. I then see another yellow and a stop signal, two more yellows but no stop or quit at the end when I exit mpc-hc so my desktop gets left at 23.976 hz :) Not a big deal but isn't it upto mpc-hc to send these signals or is it the video renderer?
YELLOW 23
YELLOW 23
STOP 50
YELLOW 23
YELLOW 23
JanWillem32
3rd February 2011, 22:45
@MrHipp: A2R10G10B10 can be connected, but only if the video decoder and mixer both support it (rare). The renderer can most certainly handle it. It's best not to do any kind of colorspace conversion, other than bit-reordering before the mixer. That's why I added the support for NV12. The mixer often refuses pure planar types like YV12 and I420/IYUV. The semi-planar NV12 is bit-compatible, easily converted from those types and usually accepted by the mixer as a format for 8-bit 4:2:0 Y"CbCr.
@mark0077: MPC-HC can add things to the playlist... Maybe that's what you mean with your first item?
cca
3rd February 2011, 22:56
@JanWillem32: At first glance the only thing I noticed using your latest build was that the mixer is outputting NV12 when fed with NV12. Is there something specific I can test and expect a difference?
mark0077
3rd February 2011, 22:58
@mark0077: MPC-HC can add things to the playlist... Maybe that's what you mean with your first item?
Yeah that never happened before though. I mean I have mpc-hc in the quick launch area in windows 7, so with one movie playing, I often go and right click the mpc-hc icon to see the list of recently played items, and click one. Clicking the already playing movie or any others just makes mpc-hc flicker. This never happened in the past.
Just now I had two instances where I clicked a movie in the recent list and mpc-hc flickered and just crashed... Maybe its unique to this windows 7 feature?
JanWillem32
4th February 2011, 01:16
@cca: You could experiment with the different output formats, interlacing flags, and priority settings from ffdshow tryouts. Not all output media types may be accepted by the EVR mixer. Don't forget, the settings in the video card control panel do matter, even when using software decoding. (So does the type, age and brand of your hardware.) This is especially true for the advanced deinterlacing settings.
@mark0077: I'm not familiar with this problem, or taskbar programming functions. The best we can do in such situation is file a report on trac, and set up a test. I can't replicate this problem myself, but I'm running with different soft- and hardware. Please go trough your settings, or even delete the entire settings regkey. If that doesn't help, we can try to trace and solve things from the program's side.
mindbomb
4th February 2011, 02:56
how does one use the audio switcher to downmix audio?
I am confused as to how to use the custom channel mapping feature. I just want a simple stereo downmix.
JanWillem32
4th February 2011, 03:17
For DTS and DD there's often the downmix options from the decoder, but else you will have to send the audio trough a mixer. You can try to use the internal channel mapper, but that doesn't set a lower volume. If you want that, you can use ASIO programs, or connect to the audio renderer of ffdshow tryouts to mix.
janos666
4th February 2011, 04:03
@Jan
May be it's only me but the custom pixel shaders don't seem to work with your latest test build (x86). I have your chroma upsample shaders in the "combine" box but Ctrl+P doesn't do anything (except the OSD indication ON/OFF).
Should I clear the shaders and readd them?
And may be it depends on the AMD driver version but I have the "black screen on exit" now with enabled Aero too. (I only had it with the "disable Aero" option in the past.) [This is the "10-bit output black-screen", not the "unsupported format" one.)
JanWillem32
4th February 2011, 05:07
Do you have one of the four " toggle"/"disable" options enabled in the pixel shader menu? That's the only thing I can think of. If the shader compiler says that a script compiles and you have a video card capable of that level, it should work. I've just used my regulars to watch a video, and everything worked fine. Also "invert" still activates on every hardware PS level for me.
The black screen is indeed annoying, but I haven't found anything but reloading the display driver to be working. I'm still looking for a function or call that can refresh the screen on exit. I like 10-bit video too, but a hotkey to reaload the driver isn't ideal for me either. This problem is really old, by the way. The very old types that had the former working 10-bit output working, did give me the same problem with the black screen on exit.
Fadeout
4th February 2011, 06:29
I confirm that going from 1.4.2833 to 1.5.1.2910 switched the default display from RGB32 to NV12 and breaks chroma upsampling.
This means that by default now the players produces worse video quality. What's the rationale behind this? Why breaking stuff that was working?
hoborg
4th February 2011, 08:18
Hi.
What happend with changelog (http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/?view=log)?
Any alternative?
MrHipp
4th February 2011, 09:25
@MrHipp: A2R10G10B10 can be connected, but only if the video decoder and mixer both support it (rare). The renderer can most certainly handle it. It's best not to do any kind of colorspace conversion, other than bit-reordering before the mixer. That's why I added the support for NV12. The mixer often refuses pure planar types like YV12 and I420/IYUV. The semi-planar NV12 is bit-compatible, easily converted from those types and usually accepted by the mixer as a format for 8-bit 4:2:0 Y"CbCr.
@mark0077: MPC-HC can add things to the playlist... Maybe that's what you mean with your first item?
If NV12 is offered as input to the mixer, wouldn't the offered output format be one of D3DFMT_X8R8G8B8/ D3DFMT_A8R8G8B8? Making 10 bit input impossible?
JanWillem32
4th February 2011, 10:27
@Fadeout: It was only chroma blurring from 4:2:0 to 4:2:2, anyway. The quality was bad, and the colorspace conversions were done with 8-bit integer software mode. It's too taxing on low-end CPU's to do this kind of thing, or any other real-time video modification for that matter. For mainstream and high-end PC's, better conversion quality can be reached when using the complete surfaces of 10-, 16-, or 32-bit RGB and using the shadercore of the GPU.
This is just one of the steps necessary to lower the minimum requirements of video playback on EVR. On the other hand, I want to line the renderer up for integrating shaders, to do a few mixer tasks.
@MrHipp: After modifying the mixer settings and debugging, it seems that the mixer will now take the surface type that it's assigned to. However, I'm not very satisfied with the level of bit-precision errors. As far as I can see from crude surface exports, the level of error is more than a perfect Y'CbCr to RGB conversion matrix in 32-bit floating-point should produce. (I made a reference for conversions in the shader pack, for both the calculus and the algebra: "standard Y'CbCr and RGB conversion codes".)
It's probably not limited to only 8-bit integer RGB, anymore.
adam777
4th February 2011, 10:37
Hi.
What happend with changelog (http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/?view=log)?
Any alternative?
I believe it's closed by sourceforge, due to recent attacks.
You can use http://sourceforge.net/apps/trac/mpc-hc/timeline?changeset=on&update=Update while it's down.
hoborg
4th February 2011, 10:38
I believe it's closed by sourceforge, due to recent attacks.
You can use http://sourceforge.net/apps/trac/mpc-hc/timeline?changeset=on&update=Update while it's down.
:thanks:
nevcairiel
4th February 2011, 10:45
I prefer this view here, its more concise
https://sourceforge.net/apps/trac/mpc-hc/log/trunk
hoborg
4th February 2011, 10:48
I prefer this view here, its more concise
https://sourceforge.net/apps/trac/mpc-hc/log/trunk
:thanks:
BTW, FFDshow doesn't have trac, right?
Casshern
4th February 2011, 12:16
@Fadeout: It was only chroma blurring from 4:2:0 to 4:2:2, anyway. The quality was bad, and the colorspace conversions were done with 8-bit integer software mode. It's too taxing on low-end CPU's to do this kind of thing, or any other real-time video modification for that matter. For mainstream and high-end PC's, better conversion quality can be reached when using the complete surfaces of 10-, 16-, or 32-bit RGB and using the shadercore of the GPU.
This is just one of the steps necessary to lower the minimum requirements of video playback on EVR. On the other hand, I want to line the renderer up for integrating shaders, to do a few mixer tasks.
@MrHipp: After modifying the mixer settings and debugging, it seems that the mixer will now take the surface type that it's assigned to. However, I'm not very satisfied with the level of bit-precision errors. As far as I can see from crude surface exports, the level of error is more than a perfect Y'CbCr to RGB conversion matrix in 32-bit floating-point should produce. (I made a reference for conversions in the shader pack, for both the calculus and the algebra: "standard Y'CbCr and RGB conversion codes".)
It's probably not limited to only 8-bit integer RGB, anymore.
Tried the new 2910 and still get the dreaded black screen on my system. This is getting annoying. What can I do to help solving this problem? What info do you need? I can also run a logging version if you like?
Also if the new behavior (connecting NV12 without chroma blurring) looks worse than the old, why not just make a switch, so people can choose what they want until the new shader code is ready? Chroma blurring is better than no chroma upsampling at all!
janos666
4th February 2011, 14:49
I just saw this in the changlog:
r2863 r2912
1229 1229 cmsCIExyY whitePoint;
1230 1230
1231 whitePoint.x = 0.31271;
1232 whitePoint.y = 0.32902;
1231 whitePoint.x = 0.312713;
1232 whitePoint.y = 0.329016;
1233 1233 whitePoint.Y = 1.0;
Very nice, but there is a little problems with this. These are the CIE D65 coordinates but the Rec709 standard defined it's own white point: a rounded D65. So, it should be:
r2912 r2913
1229 1229 cmsCIExyY whitePoint;
1230 1230
1231 whitePoint.x = 0.312713;
1232 whitePoint.y = 0.329016;
1231 whitePoint.x = 0.3127;
1232 whitePoint.y = 0.3290;
1233 1233 whitePoint.Y = 1.0;
I think I will play a bit with this CMS stuff if I manage to get a working compiler environment. (Note that I am not a programmer. :D)
adam777
4th February 2011, 15:03
I prefer this view here, its more concise
https://sourceforge.net/apps/trac/mpc-hc/log/trunk
:thanks:
tetsuo55
4th February 2011, 16:12
Tried the new 2910 and still get the dreaded black screen on my system. This is getting annoying. What can I do to help solving this problem? What info do you need? I can also run a logging version if you like? Is that the build janwillem posted? or from another source?.
Also if the new behavior (connecting NV12 without chroma blurring) looks worse than the old, why not just make a switch, so people can choose what they want until the new shader code is ready? Chroma blurring is better than no chroma upsampling at all!Ofcourse it looks worse, you need to enable chroma upsampling with the shaders for now. Or use the stable which does not contain any of the renderer changes.
cca
4th February 2011, 16:59
The funny thing is, it actually looks better if you use the proper chroma upsampling shaders, the video is sharper. The downside is, those shaders won't play well in low end hardware (like netbooks with intel VGAs).
Fadeout
5th February 2011, 00:56
Ofcourse it looks worse, you need to enable chroma upsampling with the shaders for now. Or use the stable which does not contain any of the renderer changes.
Explain this better. The old method is too taxing for CPU or GPU?
And doing this through shaders means that you're lowering the load on CPU but increasing it on GPU, I guess?
What if one uses DXVA and so already does most work on the GPU?
What is exactly that I should do to obtain optimal quality under the new version? Consider that I need DXVA and subtitles.
vBm
5th February 2011, 01:26
:thanks:
BTW, FFDshow doesn't have trac, right?No, but you can use CIA.vc (http://cia.vc/stats/project/ffdshow%20tryouts) logs to see last 20 revs :)
JanWillem32
5th February 2011, 02:56
Explain this better. The old method is too taxing for CPU or GPU?The old method was an incomplete fix, introduced to fix a black screen problem. This method is lossy, and done pure software mode with rounding to 8-bit. On top of that, the convertor to YUY2 is very heavy compared to the bit re-ordering required for NV12.
https://sourceforge.net/apps/trac/mpc-hc/changeset/1589
Also note that VMR9 (renderless), EVR-CP and EVR Sync output the same chroma sub-sampling form after my patch.
And doing this through shaders means that you're lowering the load on CPU but increasing it on GPU, I guess?Even the weakest DirectX 9 GPU types can do colorspace conversions and interpolation.
Ideally you want to dedicate the CPU and system memory for performing program and system tasks, and the video card to perform video tasks (or even a bit more than that). Swapping video data between the CPU and video card is generally bad for overall performance.
What if one uses DXVA and so already does most work on the GPU?DXVA implementations usually only use the shadercore to put decoded images on a surface to export to the mixer object. Most of the video decoding is done in dedicated parts of the GPU.
What is exactly that I should do to obtain optimal quality under the new version? Consider that I need DXVA and subtitles.DXVA will always export NV12, so up-sampling form 4:2:0 is required. Subtitles are currently generated almost completely in software mode.
Shader thread: http://forum.doom9.org/showthread.php?t=157634
Chroma up-samplers:
very low end: "4÷2÷0 chroma blur for SD&HD video input on old and slow PS 2.0 hardware"
low end: "4÷2÷0 to 4÷2÷2 intermediate Catmull-Rom spline4 chroma up-sampling for SD&HD video input on old PS 2.0 hardware" + "4÷2÷2 Catmull-Rom spline4 chroma up-sampling for SD&HD video input on old PS 2.0 hardware"
normal: "4÷2÷0 to 4÷2÷2 intermediate Catmull-Rom spline5 chroma up-sampling for SD&HD video input" + "4÷2÷2 Catmull-Rom spline5 chroma up-sampling for SD&HD video input"
I'm planning to add a few other windowed function shaders to accompany the current scalers, but I must be careful, since my last try at using Lanczos scaling didn't go very well.
You can also try some other shaders and renderer settings to improve the picture quality. Some of those items are very demanding, and some processing just seems to come for free. It all depends on your hardware.
@Casshern: We can do a lot more on IRC: irc://irc.freenode.net/MPC-HC .
With the very scarce few alpha- and betatesters we have at the moment (we really need a lot more), I've done custom builds with experimental fixes and functions. To help with development we usually ask to run a list of tests and to try out relevant settings, and then wait for the response. For problems we usually try to replicate the problem and try to fix things. Sometimes we will even use a remote desktop session.
Fadeout
5th February 2011, 06:44
New version + shaders still looks to me worse than old version without shaders.
On the left the new one, on the right the old, the new one is more blocky.
And using the new shaders on the old version seems to deny the chroma upsampling.
pdanpdan
5th February 2011, 08:32
These are compiled with MSVS 2010, and deviated from build r2911
Hello, I tried both 32 and 64bit versions on Win764, Ati HD2400PRO, catalyst 11.1.
Now I no longer have black screens, and everything seems to work as it should (DXVA and software decoding). For my GPU maximum dithering level is 1. I tried Full floating point, half FP, 10bit output (it's not supported on my card, but the output is 8bit as it should).
If you need some more tests or infos please tell me.
Thank you.
PS: If I use D3D Fullscreen both on my 1th or the 2nd output (CRT TV):
- Aero is allways turned off (it's not checked in options)
- if 10bit output is checked, I have black screen on exit (it's just for info, I don't mind :) )
vBm
5th February 2011, 13:11
New version + shaders still looks to me worse than old version without shaders.
On the left the new one, on the right the old, the new one is more blocky.
And using the new shaders on the old version seems to deny the chroma upsampling.
In future please use imageshack.us or imgur.com instead of attaching screens (takes at least day or so to get it approved and by that time it's already buried in this thread ;x)
JanWillem32
5th February 2011, 18:11
@Fadeout: The etiquette for image comparison:
Use lossless image formats in a true lossless mode. That means using no bit per component per pixel reduction at all with an image format like PNG or JPEG2000. For advanced users: full exports of surfaces in a lossless raw DDS file can sometimes be very useful too.
Use video and image sources that are known to be properly mastered. Many unconverted DVD and blu-ray sources are fine. http://w6rz.net/ also has a few interesting test samples.
Include MediaInfo logs of the source image or video, also add relevant information on the renderer settings and the hardware used.
The next item is to disable all full image scaling. Anamorphic correction is disabled by unticking "Keep Aspect Ratio" under View, Video Frame. Normal scaling can be disabled by setting "Normal Size" under View, Video Frame.
At the moment, the internal screenshot item is broken. Please take a screenshot with the "Print Screen" button on your keyboard. After that, paste into an image editor, clip the edges off and save it properly.
In your case, there's special attention for chroma conversion comparison. You might want to use "chroma for SD&HD video input" on top of chroma up-sampling to highlight chroma contours.
@pdanpdan: Good to know that the problem is solved for some people.
To help out, just keep track of this thread. For live interaction, we use IRC. Some developers often ask visitors to test a few things on the MPC-HC channel. People usually respond quite quickly. If it takes too long, just send a message directly to a developer.
I found a website with one explanation why linear gamma transformation can be important for image quality (there are actually more reasons): http://www.all-in-one.ee/~dersch/gamma/gamma.html .
That's for all of the people wondering why I like to convert to linear RGB before processing RGB color data.
pdanpdan
5th February 2011, 19:05
Also in these 2 builds I cannot see the options for the internal filters (a required resource is unavailable).
HoP
5th February 2011, 21:48
Hello Guys
what happened to the subtitle quality???
i'm using JanWillem32 build (r2911)
http://upit.cc/images/15e04fca.jpg
Fadeout
6th February 2011, 03:00
@Fadeout: The etiquette for image comparison:
Nope. I'm not interested in technical tests. I'm interested on the practical use I do of the player and a sample of something I can actually watch.
In this case I'm simply saying that the old player version produces a smoother image, while the new version + new shaders produce a more blocky image. For whatever reason, but this is what I see.
I also would like to know why these new shaders, if applied to the old player, undo the default chroma upsampling, while the default shaders for chroma upsampling produce a identical image to the default (since the upsampling is already done).
http://img140.imageshack.us/img140/2619/samplegb.jpg
That's the sample. Simply trust me when I say it's indicative of what I see in the player even if it doesn't fit your submission criteria.
The one on the left is the new player + shaders, and as you can see it is more blocky, while the other on the right is more uniform and doesn't show the same big boxes.
janos666
6th February 2011, 03:59
I wonder if somebody can see any significant differences in the CMS quality with this dummy test build: mpchc2915cms.7z (http://www.mediafire.com/?zs5g8qaasqdih5y)
I didn't change much but I enabled the Black Point Compensation feature (it works with cLUT type display profiles only, I guess ; and should be used with the Relative or may be with Perceptual intents, it won't work with the absolute colorimetric intent) and I increased the 3DLUT size for testing purposes (slower lut generation, may be hangs for some seconds). And I also changed the WP from the CIE D65 values to ITU Rec 709 values.
@JanWillem32
The source code package which you gave me doesn't want to compile for me. It says that the version string is undeclared.
thuan
6th February 2011, 04:55
I see the same thing as Fadeout. Here are two images:
JanWillem32 with 4÷2÷0 to 4÷2÷2 intermediate Catmull-Rom spline5 chroma up-sampling for SD&HD video input + 4÷2÷2 Catmull-Rom spline5 chroma up-sampling for SD&HD video input
http://thumbnails20.imagebam.com/11834/080f62118332774.jpg (http://www.imagebam.com/image/080f62118332774)
Normal build
http://thumbnails19.imagebam.com/11833/856724118326262.jpg (http://www.imagebam.com/image/856724118326262)
You can see the blocky red area near the central of the image.
I set up the two up-sample shaders as normal Combined Shaders with EVR-CP and Bicubic 0.75 resizer. GFX card is Geforce 9800GT.
cyberbeing
6th February 2011, 05:02
There appears to be a bug which prevents enabling Color Management in the recent builds on WinXP SP3 x86. Once a video is loaded, 'Enable' is grayed out.
Last tested working build was 2833. It was broken in 2840, so one of the commits between 2834 and 2840 broke it.
Is there a reason why JanWillem32's fix for this has not yet been committed to source?
tetsuo55
6th February 2011, 13:25
Fadeout, thuan,
Thuan's sample shows the problem very well and correctly (fadeout isn't using the same size on both images so its difficult to compare)
it looks like something is indeed going wrong with the chroma scaling, its almost like its being linearly scaled first and then anti-aliased.
cca
6th February 2011, 17:36
Hello Guys
what happened to the subtitle quality???
i'm using JanWillem32 build (r2911)
http://upit.cc/images/15e04fca.jpg
Noticed the same problem with that build, subtitle rendering seems a lot worse.
tetsuo55
6th February 2011, 17:52
Its the same problem as with the chroma.
We've removed the low quality scaling, but mpc-hc does not natively have high quality replacements yet.
cca
6th February 2011, 18:42
Its the same problem as with the chroma.
We've removed the low quality scaling, but mpc-hc does not natively have high quality replacements yet.
This needs a fix, I use subtitles extensively. For now I reverted to the normal builds compiled from the svn that have some scaling at least. It's horrid to see such subtitles when you have specified 1280x720 as the subtitle texture resolution.
tetsuo55
6th February 2011, 18:57
ofcourse, eventually all the missing features will be re-introduced, they are called nightly builds for a reason ;)
cca
6th February 2011, 20:59
ofcourse, eventually all the missing features will be re-introduced, they are called nightly builds for a reason ;)
:p yep I know, I like testing the new stuff though :cool:
Betsy25
6th February 2011, 21:00
Hi,
Is it possible to have the option "File / Save Thumbnails...." open to the current media's folder by default please ?
HoP
6th February 2011, 21:38
@cca:tnx for your comment...goodluck
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.