diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index e6af28c7d..c86549cb3 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Devices; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Sync; +using System; using System.Collections.Generic; using System.Linq; @@ -31,11 +32,28 @@ namespace MediaBrowser.Server.Implementations.Sync }); } - public DeviceProfile GetDeviceProfile(SyncTarget target) + public DeviceProfile GetDeviceProfile(SyncTarget target, string quality) { var caps = _deviceManager.GetCapabilities(target.Id); - return caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile; + var profile = caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile; + var maxBitrate = profile.MaxStaticBitrate; + + if (maxBitrate.HasValue) + { + if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase)) + { + maxBitrate = Convert.ToInt32(maxBitrate.Value * .75); + } + else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase)) + { + maxBitrate = Convert.ToInt32(maxBitrate.Value * .5); + } + + profile.MaxStaticBitrate = maxBitrate; + } + + return profile; } public string Name diff --git a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs index 9b45e66e1..fa73a1cac 100644 --- a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs +++ b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs @@ -10,9 +10,10 @@ namespace MediaBrowser.Server.Implementations.Sync /// Gets the device profile. /// /// The target. + /// The quality. /// DeviceProfile. - DeviceProfile GetDeviceProfile(SyncTarget target); - + DeviceProfile GetDeviceProfile(SyncTarget target, string quality); + /// /// Gets the quality options. /// diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index c02a54f90..0051447c0 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -974,7 +974,7 @@ namespace MediaBrowser.Server.Implementations.Sync public AudioOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) { - var profile = GetDeviceProfile(jobItem.TargetId, job.Quality); + var profile = GetDeviceProfile(jobItem.TargetId, null); return new AudioOptions { @@ -985,24 +985,10 @@ namespace MediaBrowser.Server.Implementations.Sync public VideoOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) { var profile = GetDeviceProfile(jobItem.TargetId, job.Quality); - var maxBitrate = profile.MaxStaticBitrate; - - if (maxBitrate.HasValue) - { - if (string.Equals(job.Quality, "medium", StringComparison.OrdinalIgnoreCase)) - { - maxBitrate = Convert.ToInt32(maxBitrate.Value * .75); - } - else if (string.Equals(job.Quality, "low", StringComparison.OrdinalIgnoreCase)) - { - maxBitrate = Convert.ToInt32(maxBitrate.Value * .5); - } - } return new VideoOptions { - Profile = profile, - MaxBitrate = maxBitrate + Profile = profile }; } @@ -1028,7 +1014,7 @@ namespace MediaBrowser.Server.Implementations.Sync if (hasProfile != null) { - return hasProfile.GetDeviceProfile(target); + return hasProfile.GetDeviceProfile(target, quality); } return new CloudSyncProfile(true, false);