diff options
Diffstat (limited to 'src/multimedia/qmultimediautils.cpp')
-rw-r--r-- | src/multimedia/qmultimediautils.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/multimedia/qmultimediautils.cpp b/src/multimedia/qmultimediautils.cpp index b08875592..9740b6d60 100644 --- a/src/multimedia/qmultimediautils.cpp +++ b/src/multimedia/qmultimediautils.cpp @@ -3,6 +3,7 @@ #include "qmultimediautils_p.h" #include "qvideoframe.h" +#include "qvideoframeformat.h" #include <QtCore/qdir.h> @@ -70,4 +71,30 @@ QUrl qMediaFromUserInput(QUrl url) return url; } +bool qIsAutoHdrEnabled() +{ + static const bool autoHdrEnabled = qEnvironmentVariableIntValue("QT_MEDIA_AUTO_HDR"); + + return autoHdrEnabled; +} + +QRhiSwapChain::Format qGetRequiredSwapChainFormat(const QVideoFrameFormat &format) +{ + constexpr auto sdrMaxLuminance = 100.0f; + const auto formatMaxLuminance = format.maxLuminance(); + + return formatMaxLuminance > sdrMaxLuminance ? QRhiSwapChain::HDRExtendedSrgbLinear + : QRhiSwapChain::SDR; +} + +bool qShouldUpdateSwapChainFormat(QRhiSwapChain *swapChain, + QRhiSwapChain::Format requiredSwapChainFormat) +{ + if (!swapChain) + return false; + + return qIsAutoHdrEnabled() && swapChain->format() != requiredSwapChainFormat + && swapChain->isFormatSupported(requiredSwapChainFormat); +} + QT_END_NAMESPACE |