Browse Source

Fix StreamInfo.ToUrl (#13808)

Tim Eisele 2 months ago
parent
commit
824bafc32d

+ 6 - 14
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -956,12 +956,10 @@ public class StreamInfo
             sb.Append(AudioStreamIndex.Value.ToString(CultureInfo.InvariantCulture));
         }
 
-        if (SubtitleStreamIndex.HasValue && SubtitleDeliveryMethod != SubtitleDeliveryMethod.External && SubtitleStreamIndex != -1)
+        if (SubtitleStreamIndex.HasValue && (AlwaysBurnInSubtitleWhenTranscoding || SubtitleDeliveryMethod != SubtitleDeliveryMethod.External) && SubtitleStreamIndex != -1)
         {
             sb.Append("&SubtitleStreamIndex=");
             sb.Append(SubtitleStreamIndex.Value.ToString(CultureInfo.InvariantCulture));
-            sb.Append("&SubtitleMethod=");
-            sb.Append(SubtitleDeliveryMethod.ToString());
         }
 
         if (VideoBitrate.HasValue)
@@ -1095,17 +1093,11 @@ public class StreamInfo
                 sb.Append(CopyTimestamps.ToString(CultureInfo.InvariantCulture));
             }
 
-            if (RequireAvc)
-            {
-                sb.Append("&RequireAvc=");
-                sb.Append(RequireAvc.ToString(CultureInfo.InvariantCulture));
-            }
+            sb.Append("&RequireAvc=");
+            sb.Append(RequireAvc.ToString(CultureInfo.InvariantCulture).ToLowerInvariant());
 
-            if (EnableAudioVbrEncoding)
-            {
-                sb.Append("EnableAudioVbrEncoding=");
-                sb.Append(EnableAudioVbrEncoding.ToString(CultureInfo.InvariantCulture).ToLowerInvariant());
-            }
+            sb.Append("&EnableAudioVbrEncoding=");
+            sb.Append(EnableAudioVbrEncoding.ToString(CultureInfo.InvariantCulture).ToLowerInvariant());
         }
 
         var etag = MediaSource?.ETag;
@@ -1118,7 +1110,7 @@ public class StreamInfo
         if (SubtitleStreamIndex.HasValue && SubtitleDeliveryMethod != SubtitleDeliveryMethod.External)
         {
             sb.Append("&SubtitleMethod=");
-            sb.AppendJoin(',', SubtitleDeliveryMethod);
+            sb.Append(SubtitleDeliveryMethod);
         }
 
         if (SubtitleStreamIndex.HasValue && SubtitleDeliveryMethod == SubtitleDeliveryMethod.Embed && SubtitleCodecs.Count != 0)

+ 6 - 15
tests/Jellyfin.Model.Tests/Dlna/LegacyStreamInfo.cs

@@ -92,7 +92,7 @@ public class LegacyStreamInfo : StreamInfo
 
     private static List<NameValuePair> BuildParams(StreamInfo item, string? accessToken)
     {
-        var list = new List<NameValuePair>();
+        List<NameValuePair> list = [];
 
         string audioCodecs = item.AudioCodecs.Count == 0 ?
             string.Empty :
@@ -109,7 +109,7 @@ public class LegacyStreamInfo : StreamInfo
         list.Add(new NameValuePair("VideoCodec", videoCodecs));
         list.Add(new NameValuePair("AudioCodec", audioCodecs));
         list.Add(new NameValuePair("AudioStreamIndex", item.AudioStreamIndex.HasValue ? item.AudioStreamIndex.Value.ToString(CultureInfo.InvariantCulture) : string.Empty));
-        list.Add(new NameValuePair("SubtitleStreamIndex", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleStreamIndex.Value.ToString(CultureInfo.InvariantCulture) : string.Empty));
+        list.Add(new NameValuePair("SubtitleStreamIndex", item.SubtitleStreamIndex.HasValue && (item.AlwaysBurnInSubtitleWhenTranscoding || item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External) ? item.SubtitleStreamIndex.Value.ToString(CultureInfo.InvariantCulture) : string.Empty));
         list.Add(new NameValuePair("VideoBitrate", item.VideoBitrate.HasValue ? item.VideoBitrate.Value.ToString(CultureInfo.InvariantCulture) : string.Empty));
         list.Add(new NameValuePair("AudioBitrate", item.AudioBitrate.HasValue ? item.AudioBitrate.Value.ToString(CultureInfo.InvariantCulture) : string.Empty));
         list.Add(new NameValuePair("AudioSampleRate", item.AudioSampleRate.HasValue ? item.AudioSampleRate.Value.ToString(CultureInfo.InvariantCulture) : string.Empty));
@@ -182,25 +182,16 @@ public class LegacyStreamInfo : StreamInfo
                 list.Add(new NameValuePair("CopyTimestamps", item.CopyTimestamps.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()));
             }
 
-            if (item.RequireAvc)
-            {
-                list.Add(new NameValuePair("RequireAvc", item.RequireAvc.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()));
-            }
+            list.Add(new NameValuePair("RequireAvc", item.RequireAvc.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()));
 
-            if (item.EnableAudioVbrEncoding)
-            {
-                list.Add(new NameValuePair("EnableAudioVbrEncoding", item.EnableAudioVbrEncoding.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()));
-            }
+            list.Add(new NameValuePair("EnableAudioVbrEncoding", item.EnableAudioVbrEncoding.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()));
         }
 
         list.Add(new NameValuePair("Tag", item.MediaSource?.ETag ?? string.Empty));
 
-        string subtitleCodecs = item.SubtitleCodecs.Count == 0 ?
-           string.Empty :
-           string.Join(",", item.SubtitleCodecs);
-
-        list.Add(new NameValuePair("SubtitleMethod", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleDeliveryMethod.ToString() : string.Empty));
+        string subtitleCodecs = item.SubtitleCodecs.Count == 0 ? string.Empty : string.Join(",", item.SubtitleCodecs);
         list.Add(new NameValuePair("SubtitleCodec", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Embed ? subtitleCodecs : string.Empty));
+        list.Add(new NameValuePair("SubtitleMethod", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleDeliveryMethod.ToString() : string.Empty));
 
         foreach (var pair in item.StreamOptions)
         {