From 582a1d98665eba7f7d7b510633cc283fd72305e1 Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Tue, 6 Jan 2026 23:15:06 +0800 Subject: Add TrueHD and DTS codes string for HLS Signed-off-by: nyanmisaka --- Jellyfin.Api/Helpers/HlsCodecStringHelpers.cs | 47 ++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'Jellyfin.Api/Helpers/HlsCodecStringHelpers.cs') diff --git a/Jellyfin.Api/Helpers/HlsCodecStringHelpers.cs b/Jellyfin.Api/Helpers/HlsCodecStringHelpers.cs index 0efb7f45d..cf42d5f10 100644 --- a/Jellyfin.Api/Helpers/HlsCodecStringHelpers.cs +++ b/Jellyfin.Api/Helpers/HlsCodecStringHelpers.cs @@ -41,6 +41,11 @@ public static class HlsCodecStringHelpers /// public const string OPUS = "Opus"; + /// + /// Codec name for TRUEHD. + /// + public const string TRUEHD = "mlpa"; + /// /// Gets a MP3 codec string. /// @@ -59,7 +64,7 @@ public static class HlsCodecStringHelpers { StringBuilder result = new StringBuilder("mp4a", 9); - if (string.Equals(profile, "HE", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(profile, "HE-AAC", StringComparison.OrdinalIgnoreCase)) { result.Append(".40.5"); } @@ -117,6 +122,46 @@ public static class HlsCodecStringHelpers return OPUS; } + /// + /// Gets an TRUEHD codec string. + /// + /// TRUEHD codec string. + public static string GetTRUEHDString() + { + return TRUEHD; + } + + /// + /// Gets an DTS codec string. + /// + /// DTS profile. + /// DTS codec string. + public static string GetDTSString(string? profile) + { + if (string.Equals(profile, "DTS", StringComparison.OrdinalIgnoreCase) + || string.Equals(profile, "DTS-ES", StringComparison.OrdinalIgnoreCase) + || string.Equals(profile, "DTS 96/24", StringComparison.OrdinalIgnoreCase)) + { + return "dtsc"; + } + + if (string.Equals(profile, "DTS-HD HRA", StringComparison.OrdinalIgnoreCase) + || string.Equals(profile, "DTS-HD MA", StringComparison.OrdinalIgnoreCase) + || string.Equals(profile, "DTS-HD MA + DTS:X", StringComparison.OrdinalIgnoreCase) + || string.Equals(profile, "DTS-HD MA + DTS:X IMAX", StringComparison.OrdinalIgnoreCase)) + { + return "dtsh"; + } + + if (string.Equals(profile, "DTS Express", StringComparison.OrdinalIgnoreCase)) + { + return "dtse"; + } + + // Default to DTS core if profile is invalid + return "dtsc"; + } + /// /// Gets a H.264 codec string. /// -- cgit v1.2.3