Преглед изворни кода

Enable SupportsTranscoding if device has transcoding profiles

Cody Robibero пре 3 година
родитељ
комит
d29a423475
1 измењених фајлова са 21 додато и 4 уклоњено
  1. 21 4
      Jellyfin.Api/Helpers/MediaInfoHelper.cs

+ 21 - 4
Jellyfin.Api/Helpers/MediaInfoHelper.cs

@@ -255,10 +255,27 @@ namespace Jellyfin.Api.Helpers
                 streamInfo.PlaySessionId = playSessionId;
                 streamInfo.StartPositionTicks = startTimeTicks;
 
-                mediaSource.SupportsDirectPlay = streamInfo.PlayMethod == PlayMethod.DirectPlay;
+                if (mediaSource.SupportsDirectPlay)
+                {
+                    mediaSource.SupportsDirectPlay = streamInfo.PlayMethod == PlayMethod.DirectPlay;
+                }
+
                 // Players do not handle this being set according to PlayMethod
-                mediaSource.SupportsDirectStream = options.EnableDirectStream ? streamInfo.PlayMethod == PlayMethod.DirectPlay || streamInfo.PlayMethod == PlayMethod.DirectStream : streamInfo.PlayMethod == PlayMethod.DirectPlay;
-                mediaSource.SupportsTranscoding = streamInfo.PlayMethod == PlayMethod.DirectStream || mediaSource.TranscodingContainer != null;
+                if (mediaSource.SupportsDirectStream)
+                {
+                    mediaSource.SupportsDirectStream =
+                        options.EnableDirectStream
+                            ? streamInfo.PlayMethod == PlayMethod.DirectPlay || streamInfo.PlayMethod == PlayMethod.DirectStream
+                            : streamInfo.PlayMethod == PlayMethod.DirectPlay;
+                }
+
+                if (mediaSource.SupportsTranscoding)
+                {
+                    mediaSource.SupportsTranscoding =
+                        streamInfo.PlayMethod == PlayMethod.DirectStream
+                        || mediaSource.TranscodingContainer != null
+                        || profile.TranscodingProfiles.Any(i => i.Type == streamInfo.MediaType && i.Context == options.Context);
+                }
 
                 if (item is Audio)
                 {
@@ -290,7 +307,7 @@ namespace Jellyfin.Api.Helpers
                 }
                 else
                 {
-                    if (mediaSource.SupportsTranscoding || mediaSource.SupportsDirectStream)
+                    if (!mediaSource.SupportsDirectPlay && (mediaSource.SupportsTranscoding || mediaSource.SupportsDirectStream))
                     {
                         streamInfo.PlayMethod = PlayMethod.Transcode;
                         mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-');