diff options
author | thexai <58434170+thexai@users.noreply.github.com> | 2023-02-19 19:31:47 +0100 |
---|---|---|
committer | thexai <58434170+thexai@users.noreply.github.com> | 2023-02-20 10:32:39 +0100 |
commit | 64861797a86f1351b0bb0c24600479876ce9fb8c (patch) | |
tree | 7be4e46c14a41e0313b523decc64b8812c566431 | |
parent | 1022a8bb5cc6dbb1532c4986e9bb0ed868d3a2af (diff) |
[Windows] Improve formula for GUI SDR peak luminance setting
Better adjust and more coherent with Windows HDR/SDR balance setting:
0% --> 80 nits
100% --> 1000 nits
new default 40% (~220 nits)
-rwxr-xr-x | system/settings/settings.xml | 4 | ||||
-rw-r--r-- | xbmc/settings/Settings.h | 2 | ||||
-rw-r--r-- | xbmc/windowing/win10/WinSystemWin10.cpp | 5 | ||||
-rw-r--r-- | xbmc/windowing/windows/WinSystemWin32.cpp | 5 |
4 files changed, 9 insertions, 7 deletions
diff --git a/system/settings/settings.xml b/system/settings/settings.xml index 4cb005acb6..8bd06b3a46 100755 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -2824,7 +2824,7 @@ </dependencies> <control type="toggle" /> </setting> - <setting id="videoscreen.guisdrpeakluminance" type="integer" label="36097" help="36547"> + <setting id="videoscreen.guipeakluminance" type="integer" label="36097" help="36547"> <requirement>HAS_DX</requirement> <dependencies> <dependency type="visible" on="property" name="ishdrdisplay"/> @@ -2836,7 +2836,7 @@ </dependency> </dependencies> <level>2</level> - <default>60</default> + <default>40</default> <control type="slider" format="percentage" range="0,100" /> </setting> </group> diff --git a/xbmc/settings/Settings.h b/xbmc/settings/Settings.h index f710d0fd2f..e74c56d837 100644 --- a/xbmc/settings/Settings.h +++ b/xbmc/settings/Settings.h @@ -367,7 +367,7 @@ public: static constexpr auto SETTING_VIDEOSCREEN_10BITSURFACES = "videoscreen.10bitsurfaces"; static constexpr auto SETTING_VIDEOSCREEN_USESYSTEMSDRPEAKLUMINANCE = "videoscreen.usesystemsdrpeakluminance"; - static constexpr auto SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE = "videoscreen.guisdrpeakluminance"; + static constexpr auto SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE = "videoscreen.guipeakluminance"; static constexpr auto SETTING_AUDIOOUTPUT_AUDIODEVICE = "audiooutput.audiodevice"; static constexpr auto SETTING_AUDIOOUTPUT_CHANNELS = "audiooutput.channels"; static constexpr auto SETTING_AUDIOOUTPUT_CONFIG = "audiooutput.config"; diff --git a/xbmc/windowing/win10/WinSystemWin10.cpp b/xbmc/windowing/win10/WinSystemWin10.cpp index 14e539a385..056b66d705 100644 --- a/xbmc/windowing/win10/WinSystemWin10.cpp +++ b/xbmc/windowing/win10/WinSystemWin10.cpp @@ -29,6 +29,7 @@ #include "platform/win10/AsyncHelpers.h" #include "platform/win32/CharsetConverter.h" +#include <cmath> #include <mutex> #pragma pack(push,8) @@ -665,8 +666,8 @@ float CWinSystemWin10::GetGuiSdrPeakLuminance() const return m_systemSdrPeakLuminance; // Max nits for 100% UI setting = 1000 nits, < 10000 nits, min 80 nits for 0% - int guiSdrPeak = settings->GetInt(CSettings::SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE); - return 10000.0f / ((100 - guiSdrPeak) * 1.15f + 10); + const int guiSdrPeak = settings->GetInt(CSettings::SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE); + return (80.0f * std::pow(std::exp(1.0f), 0.025257f * guiSdrPeak)); } /*! diff --git a/xbmc/windowing/windows/WinSystemWin32.cpp b/xbmc/windowing/windows/WinSystemWin32.cpp index cb7dcfe257..c5b4de29d3 100644 --- a/xbmc/windowing/windows/WinSystemWin32.cpp +++ b/xbmc/windowing/windows/WinSystemWin32.cpp @@ -36,6 +36,7 @@ #include "platform/win32/input/IRServerSuite.h" #include <algorithm> +#include <cmath> #include <mutex> #include <tpcshrd.h> @@ -1318,8 +1319,8 @@ float CWinSystemWin32::GetGuiSdrPeakLuminance() const return m_systemSdrPeakLuminance; // Max nits for 100% UI setting = 1000 nits, < 10000 nits, min 80 nits for 0% - int guiSdrPeak = settings->GetInt(CSettings::SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE); - return 10000.0f / ((100 - guiSdrPeak) * 1.15f + 10); + const int guiSdrPeak = settings->GetInt(CSettings::SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE); + return (80.0f * std::pow(std::exp(1.0f), 0.025257f * guiSdrPeak)); } /*! |