Browse Source

update firefox profile

Luke Pulverenti 9 years ago
parent
commit
187b1099bc

+ 17 - 4
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -712,15 +712,16 @@ namespace MediaBrowser.Api.Playback
                 inputChannels = null;
             }
 
+            int? resultChannels = null;
             var codec = outputAudioCodec ?? string.Empty;
 
             if (codec.IndexOf("wma", StringComparison.OrdinalIgnoreCase) != -1)
             {
                 // wmav2 currently only supports two channel output
-                return Math.Min(2, inputChannels ?? 2);
+                resultChannels = Math.Min(2, inputChannels ?? 2);
             }
 
-            if (request.MaxAudioChannels.HasValue)
+            else if (request.MaxAudioChannels.HasValue)
             {
                 var channelLimit = codec.IndexOf("mp3", StringComparison.OrdinalIgnoreCase) != -1
                    ? 2
@@ -732,10 +733,18 @@ namespace MediaBrowser.Api.Playback
                 }
 
                 // If we don't have any media info then limit it to 5 to prevent encoding errors due to asking for too many channels
-                return Math.Min(request.MaxAudioChannels.Value, channelLimit);
+                resultChannels = Math.Min(request.MaxAudioChannels.Value, channelLimit);
             }
 
-            return request.AudioChannels;
+            if (resultChannels.HasValue && !string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
+            {
+                if (request.TranscodingMaxAudioChannels.HasValue)
+                {
+                    resultChannels = Math.Min(request.TranscodingMaxAudioChannels.Value, resultChannels.Value);
+                }
+            }
+
+            return resultChannels ?? request.AudioChannels;
         }
 
         /// <summary>
@@ -1504,6 +1513,10 @@ namespace MediaBrowser.Api.Playback
                         }
                     }
                 }
+                else if (i == 26)
+                {
+                    request.TranscodingMaxAudioChannels = int.Parse(val, UsCulture);
+                }
             }
         }
 

+ 3 - 1
MediaBrowser.Api/Playback/StreamRequest.cs

@@ -51,7 +51,9 @@ namespace MediaBrowser.Api.Playback
 
         [ApiMember(Name = "MaxAudioChannels", Description = "Optional. Specify a maximum number of audio channels to encode to, e.g. 2", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
         public int? MaxAudioChannels { get; set; }
-        
+
+        public int? TranscodingMaxAudioChannels { get; set; }
+
         /// <summary>
         /// Gets or sets the audio sample rate.
         /// </summary>

+ 9 - 0
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -459,6 +459,15 @@ namespace MediaBrowser.Model.Dlna
                 playlistItem.VideoCodec = transcodingProfile.VideoCodec;
                 playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps;
                 playlistItem.ForceLiveStream = transcodingProfile.ForceLiveStream;
+
+                if (!string.IsNullOrEmpty(transcodingProfile.MaxAudioChannels))
+                {
+                    int transcodingMaxAudioChannels;
+                    if (IntHelper.TryParseCultureInvariant(transcodingProfile.MaxAudioChannels, out transcodingMaxAudioChannels))
+                    {
+                        playlistItem.TranscodingMaxAudioChannels = transcodingMaxAudioChannels;
+                    }
+                }
                 playlistItem.SubProtocol = transcodingProfile.Protocol;
                 playlistItem.AudioStreamIndex = audioStreamIndex;
 

+ 4 - 1
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -38,6 +38,7 @@ namespace MediaBrowser.Model.Dlna
 
         public int? SubtitleStreamIndex { get; set; }
 
+        public int? TranscodingMaxAudioChannels { get; set; }
         public int? MaxAudioChannels { get; set; }
 
         public int? AudioBitrate { get; set; }
@@ -237,7 +238,9 @@ namespace MediaBrowser.Model.Dlna
             list.Add(new NameValuePair("CopyTimestamps", item.CopyTimestamps.ToString().ToLower()));
             list.Add(new NameValuePair("ForceLiveStream", item.ForceLiveStream.ToString().ToLower()));
             list.Add(new NameValuePair("SubtitleMethod", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleDeliveryMethod.ToString() : string.Empty));
-       
+
+            list.Add(new NameValuePair("TranscodingMaxAudioChannels", item.TranscodingMaxAudioChannels.HasValue ? StringHelper.ToStringCultureInvariant(item.TranscodingMaxAudioChannels.Value) : string.Empty));
+
             return list;
         }
 

+ 3 - 0
MediaBrowser.Model/Dlna/TranscodingProfile.cs

@@ -38,6 +38,9 @@ namespace MediaBrowser.Model.Dlna
         [XmlAttribute("forceLiveStream")]
         public bool ForceLiveStream { get; set; }
 
+        [XmlAttribute("maxAudioChannels")]
+        public string MaxAudioChannels { get; set; }
+
         public List<string> GetAudioCodecs()
         {
             List<string> list = new List<string>();