Browse Source

StreamBuilder tweaks (#5668)

Co-authored-by: Cody Robibero <cody@robibe.ro>
Max Rumpf 4 years ago
parent
commit
21e7ceae8e
1 changed files with 17 additions and 16 deletions
  1. 17 16
      MediaBrowser.Model/Dlna/StreamBuilder.cs

+ 17 - 16
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -674,7 +674,7 @@ namespace MediaBrowser.Model.Dlna
 
             var videoStream = item.VideoStream;
 
-            // TODO: This doesn't accout for situation of device being able to handle media bitrate, but wifi connection not fast enough
+            // TODO: This doesn't account for situations where the device is able to handle the media's bitrate, but the connection isn't fast enough
             var directPlayEligibilityResult = IsEligibleForDirectPlay(item, GetBitrateForDirectPlayCheck(item, options, true) ?? 0, subtitleStream, options, PlayMethod.DirectPlay);
             var directStreamEligibilityResult = IsEligibleForDirectPlay(item, options.GetMaxBitrate(false) ?? 0, subtitleStream, options, PlayMethod.DirectStream);
             bool isEligibleForDirectPlay = options.EnableDirectPlay && (options.ForceDirectPlay || directPlayEligibilityResult.Item1);
@@ -1017,14 +1017,15 @@ namespace MediaBrowser.Model.Dlna
             }
 
             DeviceProfile profile = options.Profile;
+            string container = mediaSource.Container;
 
             // See if it can be direct played
             DirectPlayProfile directPlay = null;
-            foreach (var i in profile.DirectPlayProfiles)
+            foreach (var p in profile.DirectPlayProfiles)
             {
-                if (i.Type == DlnaProfileType.Video && IsVideoDirectPlaySupported(i, mediaSource, videoStream, audioStream))
+                if (p.Type == DlnaProfileType.Video && IsVideoDirectPlaySupported(p, container, videoStream, audioStream))
                 {
-                    directPlay = i;
+                    directPlay = p;
                     break;
                 }
             }
@@ -1032,23 +1033,23 @@ namespace MediaBrowser.Model.Dlna
             if (directPlay == null)
             {
                 _logger.LogInformation(
-                    "Profile: {0}, No video direct play profiles found for {1} with codec {2}",
-                    profile?.Name ?? "Unknown Profile",
-                    mediaSource?.Path ?? "Unknown path",
-                    videoStream?.Codec ?? "Unknown codec");
+                    "Container: {Container}, Video: {Video}, Audio: {Audio} cannot be direct played by profile: {Profile} for path: {Path}",
+                    container,
+                    videoStream?.Codec ?? "no video",
+                    audioStream?.Codec ?? "no audio",
+                    profile.Name ?? "unknown profile",
+                    mediaSource.Path ?? "unknown path");
 
                 return (null, GetTranscodeReasonsFromDirectPlayProfile(mediaSource, videoStream, audioStream, profile.DirectPlayProfiles));
             }
 
-            string container = mediaSource.Container;
-
             var conditions = new List<ProfileCondition>();
-            foreach (var i in profile.ContainerProfiles)
+            foreach (var p in profile.ContainerProfiles)
             {
-                if (i.Type == DlnaProfileType.Video
-                    && i.ContainsContainer(container))
+                if (p.Type == DlnaProfileType.Video
+                    && p.ContainsContainer(container))
                 {
-                    foreach (var c in i.Conditions)
+                    foreach (var c in p.Conditions)
                     {
                         conditions.Add(c);
                     }
@@ -1896,10 +1897,10 @@ namespace MediaBrowser.Model.Dlna
             return true;
         }
 
-        private bool IsVideoDirectPlaySupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream videoStream, MediaStream audioStream)
+        private bool IsVideoDirectPlaySupported(DirectPlayProfile profile, string container, MediaStream videoStream, MediaStream audioStream)
         {
             // Check container type
-            if (!profile.SupportsContainer(item.Container))
+            if (!profile.SupportsContainer(container))
             {
                 return false;
             }