From 7cf576794940973ef31772b8524ff3c4ff82d09c Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Wed, 17 Nov 2021 22:03:52 +0100 Subject: [PATCH] Query media streams by type instead of filtering --- MediaBrowser.Controller/Entities/Audio/Audio.cs | 9 --------- MediaBrowser.Controller/Entities/BaseItem.cs | 8 +++++++- MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs | 5 +---- .../MediaInfo/EmbeddedImageProvider.cs | 2 +- MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs | 2 +- .../MediaInfo/EmbeddedImageProviderTests.cs | 2 +- .../MediaInfo/VideoImageProviderTests.cs | 2 +- 7 files changed, 12 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 536668e508..2f3af84e7b 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -126,15 +126,6 @@ namespace MediaBrowser.Controller.Entities.Audio return base.GetBlockUnratedType(); } - public List GetMediaStreams(MediaStreamType type) - { - return MediaSourceManager.GetMediaStreams(new MediaStreamQuery - { - ItemId = Id, - Type = type - }); - } - public SongInfo GetLookupInfo() { var info = GetItemLookupInfo(); diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a76ca23055..853488a1d0 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1107,10 +1107,16 @@ namespace MediaBrowser.Controller.Entities } public virtual List GetMediaStreams() + { + return GetMediaStreams(null); + } + + public virtual List GetMediaStreams(MediaStreamType? type) { return MediaSourceManager.GetMediaStreams(new MediaStreamQuery { - ItemId = Id + ItemId = Id, + Type = type }); } diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index 8c81b08db7..6b662ebc44 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -49,10 +49,7 @@ namespace MediaBrowser.Providers.MediaInfo { var audio = (Audio)item; - var imageStreams = - audio.GetMediaStreams(MediaStreamType.EmbeddedImage) - .Where(i => i.Type == MediaStreamType.EmbeddedImage) - .ToList(); + var imageStreams = audio.GetMediaStreams(MediaStreamType.EmbeddedImage); // Can't extract if we didn't find a video stream in the file if (imageStreams.Count == 0) diff --git a/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs b/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs index 186e55f1dc..e27fd094c4 100644 --- a/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs @@ -139,7 +139,7 @@ namespace MediaBrowser.Providers.MediaInfo } // Fall back to EmbeddedImage streams - var imageStreams = item.GetMediaStreams().FindAll(i => i.Type == MediaStreamType.EmbeddedImage); + var imageStreams = item.GetMediaStreams(MediaStreamType.EmbeddedImage); if (imageStreams.Count == 0) { diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index d226182c09..a90ef4739d 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs @@ -83,7 +83,7 @@ namespace MediaBrowser.Providers.MediaInfo ? TimeSpan.FromTicks(item.RunTimeTicks.Value / 10) : TimeSpan.FromSeconds(10); - var videoStream = item.GetDefaultVideoStream() ?? item.GetMediaStreams().FirstOrDefault(i => i.Type == MediaStreamType.Video); + var videoStream = item.GetDefaultVideoStream() ?? item.GetMediaStreams(MediaStreamType.Video).FirstOrDefault(); if (videoStream == null) { diff --git a/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs index 38eac28a22..ede285c2e2 100644 --- a/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs +++ b/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs @@ -147,7 +147,7 @@ namespace Jellyfin.Providers.Tests.MediaInfo movie.Setup(item => item.GetMediaSources(It.IsAny())) .Returns(new List { new () { MediaAttachments = mediaAttachments } } ); - movie.Setup(item => item.GetMediaStreams()) + movie.Setup(item => item.GetMediaStreams(MediaStreamType.EmbeddedImage)) .Returns(mediaStreams); return movie.Object; diff --git a/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs index 0f51a2b8f8..5af167f116 100644 --- a/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs +++ b/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs @@ -167,7 +167,7 @@ namespace Jellyfin.Providers.Tests.MediaInfo movie.Setup(item => item.GetDefaultVideoStream()) .Returns(defaultStream!); - movie.Setup(item => item.GetMediaStreams()) + movie.Setup(item => item.GetMediaStreams(MediaStreamType.Video)) .Returns(mediaStreams); return movie.Object;