aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/DynamicHlsController.cs
diff options
context:
space:
mode:
authorNyanmisaka <nst799610810@gmail.com>2024-09-08 01:19:26 +0800
committerGitHub <noreply@github.com>2024-09-07 11:19:26 -0600
commit5d4f71eb9a2095a9fc42f9098bad23a870a50307 (patch)
tree82a60df7118e4167ffad9264f5a1034ca3e4c801 /Jellyfin.Api/Controllers/DynamicHlsController.cs
parentd0567fc8c61e73277578c4d5c4a8fb683b945514 (diff)
Enable tone-mapping and HLS remuxing for DoVi Profile 10 in AV1 (#12604)
Diffstat (limited to 'Jellyfin.Api/Controllers/DynamicHlsController.cs')
-rw-r--r--Jellyfin.Api/Controllers/DynamicHlsController.cs22
1 files changed, 15 insertions, 7 deletions
diff --git a/Jellyfin.Api/Controllers/DynamicHlsController.cs b/Jellyfin.Api/Controllers/DynamicHlsController.cs
index 662e2acbc..b9ef189e9 100644
--- a/Jellyfin.Api/Controllers/DynamicHlsController.cs
+++ b/Jellyfin.Api/Controllers/DynamicHlsController.cs
@@ -1797,10 +1797,11 @@ public class DynamicHlsController : BaseJellyfinApiController
var args = "-codec:v:0 " + codec;
- if (string.Equals(state.ActualOutputVideoCodec, "h265", StringComparison.OrdinalIgnoreCase)
- || string.Equals(state.ActualOutputVideoCodec, "hevc", StringComparison.OrdinalIgnoreCase)
- || string.Equals(codec, "h265", StringComparison.OrdinalIgnoreCase)
- || string.Equals(codec, "hevc", StringComparison.OrdinalIgnoreCase))
+ var isActualOutputVideoCodecAv1 = string.Equals(state.ActualOutputVideoCodec, "av1", StringComparison.OrdinalIgnoreCase);
+ var isActualOutputVideoCodecHevc = string.Equals(state.ActualOutputVideoCodec, "h265", StringComparison.OrdinalIgnoreCase)
+ || string.Equals(state.ActualOutputVideoCodec, "hevc", StringComparison.OrdinalIgnoreCase);
+
+ if (isActualOutputVideoCodecHevc || isActualOutputVideoCodecAv1)
{
var requestedRange = state.GetRequestedRangeTypes(state.ActualOutputVideoCodec);
var requestHasDOVI = requestedRange.Contains(VideoRangeType.DOVI.ToString(), StringComparison.OrdinalIgnoreCase);
@@ -1814,10 +1815,17 @@ public class DynamicHlsController : BaseJellyfinApiController
|| (state.VideoStream.VideoRangeType == VideoRangeType.DOVIWithHLG && requestHasDOVIWithHLG)
|| (state.VideoStream.VideoRangeType == VideoRangeType.DOVIWithSDR && requestHasDOVIWithSDR)))
{
- // Prefer dvh1 to dvhe
- args += " -tag:v:0 dvh1 -strict -2";
+ if (isActualOutputVideoCodecHevc)
+ {
+ // Prefer dvh1 to dvhe
+ args += " -tag:v:0 dvh1 -strict -2";
+ }
+ else if (isActualOutputVideoCodecAv1)
+ {
+ args += " -tag:v:0 dav1 -strict -2";
+ }
}
- else
+ else if (isActualOutputVideoCodecHevc)
{
// Prefer hvc1 to hev1
args += " -tag:v:0 hvc1";