diff options
| author | gnattu <gnattu@users.noreply.github.com> | 2024-11-30 17:59:39 -0500 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2024-11-30 17:59:39 -0500 |
| commit | b7f6ccc306404c6d825ea80b0e084e5c482247dc (patch) | |
| tree | 79ea369b7307c3f7bd3c1fca629d1d5118d7287d | |
| parent | ea4580421370242093a26b13a004b64ef2ee6eb6 (diff) | |
Backport pull request #13113 from jellyfin/release-10.10.z
Only do DoVi remux when the client supports profiles without fallbacks
Original-merge: 9464f9e62266266bcec2a97f88fcc988aa4976a6
Merged-by: Bond-009 <bond.009@outlook.com>
Backported-by: Bond_009 <bond.009@outlook.com>
| -rw-r--r-- | Jellyfin.Api/Controllers/DynamicHlsController.cs | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/Jellyfin.Api/Controllers/DynamicHlsController.cs b/Jellyfin.Api/Controllers/DynamicHlsController.cs index 54e0527c9..a641ec209 100644 --- a/Jellyfin.Api/Controllers/DynamicHlsController.cs +++ b/Jellyfin.Api/Controllers/DynamicHlsController.cs @@ -1819,16 +1819,13 @@ public class DynamicHlsController : BaseJellyfinApiController if (isActualOutputVideoCodecHevc || isActualOutputVideoCodecAv1) { var requestedRange = state.GetRequestedRangeTypes(state.ActualOutputVideoCodec); - var requestHasDOVI = requestedRange.Contains(VideoRangeType.DOVI.ToString(), StringComparison.OrdinalIgnoreCase); - var requestHasDOVIWithHDR10 = requestedRange.Contains(VideoRangeType.DOVIWithHDR10.ToString(), StringComparison.OrdinalIgnoreCase); - var requestHasDOVIWithHLG = requestedRange.Contains(VideoRangeType.DOVIWithHLG.ToString(), StringComparison.OrdinalIgnoreCase); - var requestHasDOVIWithSDR = requestedRange.Contains(VideoRangeType.DOVIWithSDR.ToString(), StringComparison.OrdinalIgnoreCase); + // Clients reporting Dolby Vision capabilities with fallbacks may only support the fallback layer. + // Only enable Dolby Vision remuxing if the client explicitly declares support for profiles without fallbacks. + var clientSupportsDoVi = requestedRange.Contains(VideoRangeType.DOVI.ToString(), StringComparison.OrdinalIgnoreCase); + var videoIsDoVi = state.VideoStream.VideoRangeType is VideoRangeType.DOVI or VideoRangeType.DOVIWithHDR10 or VideoRangeType.DOVIWithHLG or VideoRangeType.DOVIWithSDR; if (EncodingHelper.IsCopyCodec(codec) - && ((state.VideoStream.VideoRangeType == VideoRangeType.DOVI && requestHasDOVI) - || (state.VideoStream.VideoRangeType == VideoRangeType.DOVIWithHDR10 && requestHasDOVIWithHDR10) - || (state.VideoStream.VideoRangeType == VideoRangeType.DOVIWithHLG && requestHasDOVIWithHLG) - || (state.VideoStream.VideoRangeType == VideoRangeType.DOVIWithSDR && requestHasDOVIWithSDR))) + && (videoIsDoVi && clientSupportsDoVi)) { if (isActualOutputVideoCodecHevc) { |
