From 5a5da33f44b933215c95947c479ded1cdbadbcd9 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Tue, 17 Sep 2024 23:34:12 +0200 Subject: [PATCH] Apply review suggestions --- MediaBrowser.Model/Dlna/StreamBuilder.cs | 7 ++--- .../Extensions/ContainerHelper.cs | 4 +-- .../Dlna/ContainerHelperTests.cs | 29 +++++++++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 6fc7f796de..bf122dcc7f 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -407,10 +407,9 @@ namespace MediaBrowser.Model.Dlna continue; } - var formatStr = format.ToString(); - if (directPlayProfile.SupportsContainer(formatStr)) + if (directPlayProfile.SupportsContainer(format)) { - return formatStr; + return format; } } } @@ -1317,6 +1316,7 @@ namespace MediaBrowser.Model.Dlna } var containerSupported = false; + TranscodeReason[] rankings = [TranscodeReason.VideoCodecNotSupported, VideoCodecReasons, TranscodeReason.AudioCodecNotSupported, AudioCodecReasons, ContainerReasons]; // Check DirectPlay profiles to see if it can be direct played var analyzedProfiles = profile.DirectPlayProfiles @@ -1382,7 +1382,6 @@ namespace MediaBrowser.Model.Dlna playMethod = PlayMethod.DirectStream; } - TranscodeReason[] rankings = [TranscodeReason.VideoCodecNotSupported, VideoCodecReasons, TranscodeReason.AudioCodecNotSupported, AudioCodecReasons, ContainerReasons]; var ranked = GetRank(ref failureReasons, rankings); return (Result: (Profile: directPlayProfile, PlayMethod: playMethod, AudioStreamIndex: selectedAudioStream?.Index, TranscodeReason: failureReasons), Order: order, Rank: ranked); diff --git a/MediaBrowser.Model/Extensions/ContainerHelper.cs b/MediaBrowser.Model/Extensions/ContainerHelper.cs index 4b75657ff8..c86328ba68 100644 --- a/MediaBrowser.Model/Extensions/ContainerHelper.cs +++ b/MediaBrowser.Model/Extensions/ContainerHelper.cs @@ -91,7 +91,7 @@ public static class ContainerHelper { foreach (var profile in allProfileContainers) { - if (container.Equals(profile, StringComparison.OrdinalIgnoreCase)) + if (!profile.IsEmpty && container.Equals(profile, StringComparison.OrdinalIgnoreCase)) { return !isNegativeList; } @@ -118,7 +118,7 @@ public static class ContainerHelper return true; } - var allInputContainers = inputContainer.Split(','); + var allInputContainers = Split(inputContainer); foreach (var container in allInputContainers) { foreach (var profile in profileContainers) diff --git a/tests/Jellyfin.Model.Tests/Dlna/ContainerHelperTests.cs b/tests/Jellyfin.Model.Tests/Dlna/ContainerHelperTests.cs index 68f8d94c72..1ad4bed567 100644 --- a/tests/Jellyfin.Model.Tests/Dlna/ContainerHelperTests.cs +++ b/tests/Jellyfin.Model.Tests/Dlna/ContainerHelperTests.cs @@ -40,6 +40,11 @@ public class ContainerHelperTests public void ContainsContainer_NotInList_ReturnsFalse(string container, string? extension) { Assert.False(ContainerHelper.ContainsContainer(container, extension)); + + if (extension is not null) + { + Assert.False(ContainerHelper.ContainsContainer(container, extension.AsSpan())); + } } [Theory] @@ -51,4 +56,28 @@ public class ContainerHelperTests { Assert.True(ContainerHelper.ContainsContainer(container, extension.AsSpan())); } + + [Theory] + [InlineData(new string[] { "mp3", "mpeg" }, false, "mpeg")] + [InlineData(new string[] { "mp3", "mpeg", "avi" }, false, "avi")] + [InlineData(new string[] { "mp3", "", "avi" }, false, "mp3")] + [InlineData(new string[] { "mp3", "mpeg" }, true, "avi")] + [InlineData(new string[] { "mp3", "mpeg", "avi" }, true, "mkv")] + [InlineData(new string[] { "mp3", "", "avi" }, true, "")] + public void ContainsContainer_ThreeArgs_InList_ReturnsTrue(string[] containers, bool isNegativeList, string inputContainer) + { + Assert.True(ContainerHelper.ContainsContainer(containers, isNegativeList, inputContainer)); + } + + [Theory] + [InlineData(new string[] { "mp3", "mpeg" }, false, "avi")] + [InlineData(new string[] { "mp3", "mpeg", "avi" }, false, "mkv")] + [InlineData(new string[] { "mp3", "", "avi" }, false, "")] + [InlineData(new string[] { "mp3", "mpeg" }, true, "mpeg")] + [InlineData(new string[] { "mp3", "mpeg", "avi" }, true, "mp3")] + [InlineData(new string[] { "mp3", "", "avi" }, true, "avi")] + public void ContainsContainer_ThreeArgs_InList_ReturnsFalse(string[] containers, bool isNegativeList, string inputContainer) + { + Assert.False(ContainerHelper.ContainsContainer(containers, isNegativeList, inputContainer)); + } }