From de19966074eb17b025d4e21415cca8aaea4cdc56 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 26 Mar 2014 11:17:36 -0400 Subject: [PATCH] use profile id in streaming service --- MediaBrowser.Api/Playback/BaseStreamingService.cs | 11 ++++++++++- MediaBrowser.Controller/Dlna/IDlnaManager.cs | 6 ++++++ MediaBrowser.Dlna/DlnaManager.cs | 15 ++++++++++----- MediaBrowser.Dlna/PlayTo/DlnaController.cs | 3 ++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index c365fcd829..2002e594c7 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/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); diff --git a/MediaBrowser.Controller/Dlna/IDlnaManager.cs b/MediaBrowser.Controller/Dlna/IDlnaManager.cs index dd9b0e8a84..dfed5e3108 100644 --- a/MediaBrowser.Controller/Dlna/IDlnaManager.cs +++ b/MediaBrowser.Controller/Dlna/IDlnaManager.cs @@ -18,6 +18,12 @@ namespace MediaBrowser.Controller.Dlna /// DeviceProfile. DeviceProfile GetProfile(IDictionary headers); + /// + /// Gets the default profile. + /// + /// DeviceProfile. + DeviceProfile GetDefaultProfile(); + /// /// Gets the profile. /// diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs index 9d9df01e6d..a879b5cc5a 100644 --- a/MediaBrowser.Dlna/DlnaManager.cs +++ b/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 headers) { - return GetProfiles().FirstOrDefault(i => IsMatch(headers, i.Identification)) ?? - GetDefaultProfile(); + return GetProfiles().FirstOrDefault(i => IsMatch(headers, i.Identification)); } private bool IsMatch(IDictionary headers, DeviceIdentification profileInfo) diff --git a/MediaBrowser.Dlna/PlayTo/DlnaController.cs b/MediaBrowser.Dlna/PlayTo/DlnaController.cs index f0303bd498..4bd7c717cd 100644 --- a/MediaBrowser.Dlna/PlayTo/DlnaController.cs +++ b/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;