Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

D3D Fullscreen Exclusive playback issue #27

Closed
ultrafunk opened this issue Sep 19, 2018 · 11 comments
Closed

D3D Fullscreen Exclusive playback issue #27

ultrafunk opened this issue Sep 19, 2018 · 11 comments

Comments

@ultrafunk
Copy link

ultrafunk commented Sep 19, 2018

First of all, I just wanted to say thank you for updating the best video player available on Windows!

Just upgraded MPC-HC from the last official release (1.7.13.0 32 bit) to your latest release (1.8.2.0 x64) on Windows 10 build 17134.285, and I found an issue that was not present in the last official release.

I use the following MPC-HC Playback -> Output settings that have always worked wonderfully so far (see images below):

  • "DirectShow Video" -> "Sync Renderer"
  • "D3D Fullscreen" enabled.
  • Windows 10 Compatibility -> "Disable fullscreen optimizations" enabled.

mpc-hc_issue02

mpc-hc_issue03

Playback is still working fine the first time when entering fullscreen using Alt + Enter or window double click, however, if I try to enter fullscreen playback again from windowed mode, no video is visible. Something is displayed as fullscreen but not visible (see the image below) at this point since I can start and stop playback (audio starts and stops) by clicking on the unfocused MPC-HC window, and pressing ESC returns MPC-HC to normal with the video visible again.

mpc-hc_issue01

This issue prevails until MPC-HC is restarted or another video is selected for playback, also, the issue is not present if Windows 10 Compatibility -> "Disable fullscreen optimizations" is disabled.

This is not a major issue and I can provide more information if needed. I can also help test any fixes if you think this is an easy bug to find.

@clsid2
Copy link
Owner

clsid2 commented Sep 19, 2018

Exclusive mode is just unreliable on Windows 10 due to all changes that Microsoft made. It also affects other renderers like Madvr. It also depends on the driver, so you may have better luck with a different version.

This is not something I can fix.

There haven't been any changes to the renderer since last official nightly (1.7.13.112).

@Rikk
Copy link

Rikk commented Sep 19, 2018

Could be LAV filters issue?
@ultrafunk have you tried LAV from old version?

@ultrafunk
Copy link
Author

ultrafunk commented Sep 19, 2018

Thank you for the quick responses, I have narrowed it down to the following:

So something was probably changed in the Exclusive mode rendering code between those two versions (1.7.13.0 -> 1.7.13.112) that is causing this issue.

I also tried using the LAV filters from MPC-HC 1.7.13.0 on your latest release (1.8.2.0), but the issue was still present, so it does not seem to be related to the LAV filters as far as I can tell.

@ultrafunk
Copy link
Author

ultrafunk commented Sep 20, 2018

I tested a bit more and I narrowed it down even further:

  • 1.7.13.32 (x64 nightly) - Works fine.

  • 1.7.13.60 (x64 nightly) - The bug / issue is present in this and all later / newer releases.

All testing was done with LAV Filters 0.70.2.1

@clsid2
Copy link
Owner

clsid2 commented Sep 20, 2018

There haven't been any functional changes to the renderers between those versions. Only big change is that a newer version of the Visual Studio toolset (compiler) and Windows SDK is used.

I consider this to be a bug in Windows 10. Maybe it will work better again in next Windows 10 version, that will be available next month.

@ultrafunk
Copy link
Author

OK. Thanks for the feedback, and again, thanks for the work you do to keep MPC-HC up to date.

The easiest solution for me is to keep using the last official release of MPC-HC (1.7.13). I'll see how things work out on the next Windows release, and I'll also see if this might be related to graphics drivers or some other reasons if I have the time.

@clsid2
Copy link
Owner

clsid2 commented Sep 20, 2018

Any reason why you are using "disable fullscreen optimizations"? Since it works ok without that. Or just don't use exclusive mode at all.

@ultrafunk
Copy link
Author

ultrafunk commented Sep 20, 2018

After quite a lot of testing and research over the years to get perfectly smooth video playback with 100% correct analog audio sync for all kinds of media, I found out that enabling both settings is required.

My setup is quite simple: A PC hooked up to a primary 1920x1200 60Hz monitor via DVI and a Full HD TV with variable refresh rates connected via HDMI for media playback driven by a GTX 970 card.

Before Windows 10, "D3D Fullscreen" was still needed for smooth playback of all video frame rates, after Windows 10, "Disable fullscreen optimizations" was also required since Microsoft decided that fullscreen exclusive mode wasn't exclusive anymore.

Without both of those settings enabled, there are still situations where playback will glitch or stutter on some video frame rates, which is mostly caused by having two monitors with different refresh rates running at the same time, a known issue that Microsoft seems unable or unwilling to fix that others also struggle with, both for gaming and media playback.

After getting MPC-HC to work great with all media, I just want to keep that setup running smoothly, but it would be nice to be able to update MPC-HC if possible.

@Rikk
Copy link

Rikk commented Sep 21, 2018

I think output from graphics card to mirrored monitors is traditionally handled by the graphics driver, which can cause these synchronization problems, depending also on the choices of renderer method, whether the program is using DirectX or opengl (both implemented by graphics driver), some surprise factor, etc.
Some configurations work well for AMD cards, but will glitch on Nvidia or Intel (or vice-versa), for example.

@alessiot89
Copy link

Some fullscreen issues can be caused by freesync or gsync if they are enabled by default in the graphics card control panel. A solution is disable freesync/gsync or simply create a profile excluding MPCHC .

@clsid2
Copy link
Owner

clsid2 commented Sep 21, 2018

Glitch free playback is possible without exclusive mode as well.

MadVR has the ability to create an optimized custom refresh rate to perfectly match the audio clock. Should give better results then when trying to do it manually.
It also utilizes decode/render/present queues to minimize chance of glitches. Plus it has better quality scaling. Only downside is that it needs more time to configure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants