mpv-player / mpv

🎥 Command line video player
https://mpv.io
Other
26.7k stars 2.84k forks source link

Notify the screen to change to HDR10 / Dolby Vision mode #5161

Open dannygp87 opened 6 years ago

dannygp87 commented 6 years ago

mpv version and platform

mpv v0.27 Windows 10 x64 Fall Creators Update

Reproduction steps

When playing an HDR10 or Dolby Vision video, mpv doesn't notify the television to change the display mode accordingly.

Expected behavior

It should change the screen mode to HDR10 or Dolby Vision, just as it does the Apple TV 4k or a BluRay player. MPC-HC v1.7.13 + madVR v0.92.9 makes the screen change to HDR10 mode correctly, but also doesn't work for Dolby Vision.

Sample files

Dolby Vision: https://drive.google.com/file/d/0BwxFVkl63-lEWmNWcGl4eVRWS2M/view HDR10: https://drive.google.com/file/d/0BwxFVkl63-lEdU9Ma0VYc3YxSVE/edit (No audio)

This videos play correctly and change the display mode of my television accordingly if played from the USB port, but not from mpv.

Files obtained from: http://kodi.wiki/view/Samples Sorry for the Google Drive links, but I don't own these files.

Thanks in advance!

kevmitch commented 6 years ago

Does anybody even know what this is? By what mechanism do other players control the display mode? madvr sets a whole lot of global display parameters that mpv is too polite to touch by itself. Obscure global display settings are even less likely to be set by mpv. Maybe achievable with a lua script?

ghost commented 6 years ago

I think he wants mpv to set the colorspace output parameters for the mpv window, so it works automatically with a TV connected via HDMI or so. Internally, that would probably be a D3D11 swapchain parameter. There is an API for that. I actually wanted to work on this once I had adequate hardware in my previous job, but that ended before I had the chance.

dannygp87 commented 6 years ago

I'm sorry but I don't actually know the actual implementation of this in MadVR. The thing is that, in MadVR when playing an HDR video, the screen gets notified and changes to HDR mode.

On the other hand, MPV is capable of outputing a signal in the BT.2020 colorspace with 10 bits color correctly. The problem is, as the TV doesn't somehow get notified and doesn't change to HDR mode, the colours displayed are wrong. Thanks!

haasn commented 6 years ago

Ping @rossy; he knows his ways around the relevant D3D11 / Windows APIs best.

Doofussy2 commented 6 years ago

It's a matter of passing the HDR metadata to the display. The display should then switch. I think the big issue is that ffmpeg doesn't appear to be able to pass the metadata. So it would have to be achieved by other methods. And of course, mpv would have to disable Perceptual Quantization, and bitstream directly to the display.

jeeb commented 3 years ago

@ValZapod if you didn't yet notice I did request him to post his latest version of the patch, as the last one posted on the mailing list clearly missed parts that were noted as "fixed in the next commit".

In other words, I will be reviewing this as I'm one of the few having an interest in getting this stuff done, but I'm at having my hands full with $dayjob as well as trying to get my ffmpeg.c patch set through to finally connect color space information from input/filtering to the encoder instances :P

Doofussy2 commented 3 years ago

I'm very much looking forward to HDR10+ support.