4k 10-bit HEVC video looks washed out / undersaturated
#1
I am using latest stable kodi on Fedora Linux and having an issue with all 4k releases. At this point I have about 40 movies that are x265 encoding, mkv container, 10-bit, 4k and they all look washed out / under saturated. The monitor I am using is not HDR so I don't expect 10 bit colours but I would expect it to downscale one way or another and look like more common 8 bit video. I am also assuming that it is 10 bit colour that is causing this but perhaps it's x265 encoding. It also looks the same in VLC player but it also stutters so it's clear that support is not properly implemented there yet. Default windows 10 player looks more like 8 bit video, but I feel there is too much loss of definition. MPV player handled it the best and colours looked like 8 bit on an 8 bit monitor.

Why does 10 bit video look under under saturated in Kodi and other players? Is there a way to fix this issue? I feel like I might be missing something simple but I can't find any references to an issue like this.
Reply
#2
Not sure how Kodi does it, but a so-called UHD source is not just higher bit resolution (10-bit).  It also requires mastering against a nominal 1000 nit brightness and a color gamut of BT.2020, with a defined electro-optic transfer function from SMPTE ST 2084.  So to display a UHD source on a HD display requires significant conversion.  It seems like this is often referred to as "tone mapping". It seems like using a 3DLUT is at least one method of doing that which I think is possible in Kodi?

scott s.
.
Reply
#3
It seems really silly if 10-bit video is basically unusable on anything other than 10-bit display. Like I mentioned the default windows 10 player handles it ok and with much lower cpu load than vlc so it's not like you have to transcode it or anything intensive. Seems like an essential feature for kodi otherwise it's basically does not support 4k.
Reply
#4
Again 4k <> 10 bit <> HEVC <> HDR.  The problem is specific to HDR, of which there are competing specifications / delivery such as HDR10 and Dolby Vision.

scott s.
.
Reply
#5
Not sure what you mean with those signs. As far as competing technologies HDR is by far the most common and the one I am referring to. MPV player as well as Windows default player handles it, it a joke that kodi does not being a media center software.
Reply
#6
@DominicM

Tone down the attitude.
My Signature
Links to : Official:Forum rules (wiki) | Official:Forum rules/Banned add-ons (wiki) | Debug Log (wiki)
Links to : HOW-TO:Create Music Library (wiki) | HOW-TO:Create_Video_Library (wiki)  ||  Artwork (wiki) | Basic controls (wiki) | Import-export library (wiki) | Movie sets (wiki) | Movie universe (wiki) | NFO files (wiki) | Quick start guide (wiki)
Reply
#7
(2018-01-26, 00:21)DominicM Wrote: Not sure what you mean with those signs. As far as competing technologies HDR is by far the most common and the one I am referring to. MPV player as well as Windows default player handles it, it a joke that kodi does not being a media center software.
 What I mean is that to be helpful for you and others, we need to be carefull about exactly what the problem is.  In the case of video playback, 4k is a specific resolution, 10 bit is a specific data size, HEVC is a compression codec and HDR is a concept to provide better range of luminosity.   As I understand your original problem You provide some different details about the source you are attempting to playback, but it seems like the critical element is that you have media files that are advertised as "HDR" that you want to play to a device that can't handle any HDR formats, so you want to playback as SDR.  I assume that the source is following the specification for HDR10.  

So the first thing we need to know is, is the source an HDR10 video?  What Kodi can do with HDR10 I am not sure (I don't have any of these available myself to play around with).  If we know that, then one of the videoplayer experts can give you better guidance.  That's what I was attempting to do:  understand better the exact problem.

scott s.
.
Reply
#8
Yes, I got that and I do appreciate you verifying that the colour issue is with HDR and not with HEVC or something else, it's just that the less/more than sign you used don't really make logical sense, maybe you just used it as formatting.

I am assuming it is HDR10 but how would I verify it? MediaInfo only shows it is 10 bit, is there any telltale sign to look for?
Reply
#9
<> is often used as the unequal sign, so it does make sense
Reply
#10
You are correct, I am used to the more common != Smile
Reply
#11
(2018-01-24, 23:35)DominicM Wrote: I am using latest stable kodi on Fedora Linux and having an issue with all 4k releases. At this point I have about 40 movies that are x265 encoding, mkv container, 10-bit, 4k and they all look washed out / under saturated. The monitor I am using is not HDR so I don't expect 10 bit colours but I would expect it to downscale one way or another and look like more common 8 bit video. I am also assuming that it is 10 bit colour that is causing this but perhaps it's x265 encoding. It also looks the same in VLC player but it also stutters so it's clear that support is not properly implemented there yet. Default windows 10 player looks more like 8 bit video, but I feel there is too much loss of definition. MPV player handled it the best and colours looked like 8 bit on an 8 bit monitor.

Why does 10 bit video look under under saturated in Kodi and other players? Is there a way to fix this issue? I feel like I might be missing something simple but I can't find any references to an issue like this.

There is no player/OS/other software or hardware that handle this right - doesn't matter if its AMLogic or other socs, Android, OSMC, OPENELEC, LIBREELEC, Shield, MPV, VLC, Windows, WMP, Linux. You are probably lucky that MPV has a somewhat approximation  that looks okayish. 

To convert from HDR/BT.2020 to SDR/BT.709 one needs the following information of the BT.709 display: Gamut (already given..obviously), black level, white level, gamma. There is no single fix that works for everybody.

Luckily for you I've made a few 3DLuts with a black value of a typical lcd monitor: https://mega.nz/#!5uQAEC5Y!_sfHlVBKsNs1t...j7zqEFFCKE  Use the one that looks the best for your display. 

Since Kodi already supports 3DLuts it would be easy to implement proper support for hdr/bt.2020->sdr/bt.709 conversion, but it seems the devs don't want this feature Smile 
It could be done via a set of presets (each LUT is about 100MB and one would need maybe 3 presets for different black levels, 5 for different whitelevels which means 15 in total. Ideally one should also have these presets for gamma 2.2, 2.3 and 2.4, so that would mean 45 luts in total which would total about 4500MB but would compress at 1:7 the size....or even better: rip the code from displaycal and make the luts on-the.fly. Anyways, digressing...
Reply
#12
Kodi did not handle bt.2020 (and even bt.601) correctly. I have fixed this for platforms using OpenGL (OSX, Linux X11, Wayland): https://github.com/xbmc/xbmc/pull/13428

I hope maintainers of other platfoms will fix this too.
Reply
#13
I am not entirely sure what you mean by by "handles it right". HDR to SDR conversion would be lossy no matter how good the conversion. There does seem to be a significant difference in how windows player and MPV player, windows player seems way too dark while MPV player looks pretty good. VLC player and kodi do not handle it at all or so it seems making every 4k movie almost unusable.

I understand any conversion is not going to be imperfect but anything is better than nothing and there could be adjustments user can make manually. In the end conversion is only a temporary measure until I get a HDR monitor.

It doesn't sound like what you are suggesting is simple enough to be worth it after all it would be a temporary fix. If it's actually simple enough please explain bit more. I would let emby server transcode but my cpu barely handles 4k playback alone. Maybe when Ryzen APU's come out I can do that if I don't have a HDR monitor by then.
Reply
#14
I am using Fedora, how would I apply the fix or is it not something for the devs to do?
Reply
#15
(2018-01-26, 20:12)FernetMenta Wrote: Kodi did not handle bt.2020 (and even bt.601) correctly. I have fixed this for platforms using OpenGL (OSX, Linux X11, Wayland): https://github.com/xbmc/xbmc/pull/13428

I hope maintainers of other platfoms will fix this too.
Then at least the first step is there. Could you implement autoloading of a chosen lut file whenever Kodi encounters a hdr/bt.2020 file? 
I don't think it would be neccesary for a "convert HDR/bt.2020 to SDR/bt.709 option since this would be a function of the lut file. (But maybe it should be included in the future if Kodi for Linux and Linux itself supports HDR passthrough) Look at how madVR does it. You probably want to replicate that.
Reply

Logout Mark Read Team Forum Stats Members Help
4k 10-bit HEVC video looks washed out / undersaturated0