From 0c9e61fdc2d2e1729087d47d174f6e8a87125179 Mon Sep 17 00:00:00 2001 From: gnattu Date: Mon, 17 Nov 2025 11:14:11 -0500 Subject: [PATCH] Backport pull request #7298 from jellyfin-web/release-10.11.z Relax dynamic HDR device Profile Original-merge: f445e53f7eb9d24844b2f452dd62b0e7622409ae Merged-by: thornbill Backported-by: thornbill --- src/scripts/browserDeviceProfile.js | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index db0501d453..5fa1bc65d5 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -1176,12 +1176,18 @@ export default function (options) { } if (supportsHdr10(options)) { - hevcVideoRangeTypes += '|HDR10'; - vp9VideoRangeTypes += '|HDR10'; - av1VideoRangeTypes += '|HDR10'; + // HDR10+ videos can be safely played on all HDR10 capable devices, just without the dynamic metadata. + hevcVideoRangeTypes += '|HDR10|HDR10Plus'; + vp9VideoRangeTypes += '|HDR10|HDR10Plus'; + av1VideoRangeTypes += '|HDR10|HDR10Plus'; if (browser.tizenVersion >= 3 || browser.vidaa) { - hevcVideoRangeTypes += '|DOVIWithHDR10'; + // Tizen TV does not support Dolby Vision at all, but it can safely play the HDR fallback. + // Advertising the support so that the server doesn't have to remux. + hevcVideoRangeTypes += '|DOVIWithHDR10|DOVIWithHDR10Plus|DOVIWithEL|DOVIWithELHDR10Plus|DOVIInvalid'; + // Although no official tools exist to create AV1+DV files yet, some of our users managed to use community tools to create such files. + // These files should also be playable on Tizen TVs. + av1VideoRangeTypes += '|DOVIWithHDR10|DOVIWithHDR10Plus|DOVIWithEL|DOVIWithELHDR10Plus|DOVIInvalid'; } } @@ -1201,11 +1207,22 @@ export default function (options) { hevcVideoRangeTypes += '|DOVI'; } if (profiles.includes(8)) { - hevcVideoRangeTypes += '|DOVIWithHDR10|DOVIWithHLG|DOVIWithSDR'; + hevcVideoRangeTypes += '|DOVIWithHDR10|DOVIWithHLG|DOVIWithSDR|DOVIWithHDR10Plus'; + } + + if (browser.web0s) { + // For webOS, we should allow direct play of some not fully supported DV profiles to avoid unnecessary remux/transcode + // webOS seems to be able to play the fallback of Profile 7 and most invalid profiles + hevcVideoRangeTypes += '|DOVIWithEL|DOVIWithELHDR10Plus|DOVIInvalid'; } if (supportedDolbyVisionProfileAv1(videoTestElement)) { - av1VideoRangeTypes += '|DOVI|DOVIWithHDR10|DOVIWithHLG|DOVIWithSDR'; + av1VideoRangeTypes += '|DOVI|DOVIWithHDR10|DOVIWithHLG|DOVIWithSDR|DOVIWithHDR10Plus'; + if (browser.web0s) { + // For webOS, we should allow direct play of some not fully supported DV profiles to avoid unnecessary remux/transcode + // webOS seems to be able to play the fallback of Profile 7 and most invalid profiles + av1VideoRangeTypes += '|DOVIWithEL|DOVIWithELHDR10Plus|DOVIInvalid'; + } } }