ソースを参照

use profile id in streaming service

Luke Pulverenti 11 年 前
コミット
de19966074

+ 10 - 1
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1492,7 +1492,16 @@ namespace MediaBrowser.Api.Playback
                 headers[key] = Request.Headers[key];
             }
 
-            var profile = DlnaManager.GetProfile(headers);
+            var profile = string.IsNullOrWhiteSpace(state.Request.DeviceProfileId) ?
+                DlnaManager.GetProfile(headers) :
+                DlnaManager.GetProfile(state.Request.DeviceProfileId);
+
+            if (profile == null)
+            {
+                // Don't use settings from the default profile. 
+                // Only use a specific profile if it was requested.
+                return;
+            }
 
             var container = Path.GetExtension(state.RequestedUrl);
 

+ 6 - 0
MediaBrowser.Controller/Dlna/IDlnaManager.cs

@@ -18,6 +18,12 @@ namespace MediaBrowser.Controller.Dlna
         /// <returns>DeviceProfile.</returns>
         DeviceProfile GetProfile(IDictionary<string,string> headers);
 
+        /// <summary>
+        /// Gets the default profile.
+        /// </summary>
+        /// <returns>DeviceProfile.</returns>
+        DeviceProfile GetDefaultProfile();
+        
         /// <summary>
         /// Gets the profile.
         /// </summary>

+ 10 - 5
MediaBrowser.Dlna/DlnaManager.cs

@@ -107,10 +107,16 @@ namespace MediaBrowser.Dlna
 
         public DeviceProfile GetProfile(DeviceIdentification deviceInfo)
         {
-            var profile = GetProfiles().FirstOrDefault(i => IsMatch(deviceInfo, i.Identification)) ??
-                GetDefaultProfile();
+            var profile = GetProfiles().FirstOrDefault(i => IsMatch(deviceInfo, i.Identification));
 
-            _logger.Debug("Found matching device profile: {0}", profile.Name);
+            if (profile != null)
+            {
+                _logger.Debug("Found matching device profile: {0}", profile.Name);
+            }
+            else
+            {
+                _logger.Debug("No matching device profile found. The default will need to be used.");
+            }
 
             return profile;
         }
@@ -176,8 +182,7 @@ namespace MediaBrowser.Dlna
 
         public DeviceProfile GetProfile(IDictionary<string, string> headers)
         {
-            return GetProfiles().FirstOrDefault(i => IsMatch(headers, i.Identification)) ??
-                GetDefaultProfile();
+            return GetProfiles().FirstOrDefault(i => IsMatch(headers, i.Identification));
         }
 
         private bool IsMatch(IDictionary<string, string> headers, DeviceIdentification profileInfo)

+ 2 - 1
MediaBrowser.Dlna/PlayTo/DlnaController.cs

@@ -419,7 +419,8 @@ namespace MediaBrowser.Dlna.PlayTo
 
             var deviceInfo = _device.Properties;
 
-            var profile = _dlnaManager.GetProfile(deviceInfo.ToDeviceIdentification());
+            var profile = _dlnaManager.GetProfile(deviceInfo.ToDeviceIdentification()) ??
+                _dlnaManager.GetDefaultProfile();
 
             var playlistItem = GetPlaylistItem(item, streams, profile);
             playlistItem.StartPositionTicks = startPostionTicks;