aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-15 15:10:27 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-15 15:10:27 -0400
commit280ab32ec1da02afeadd0ef8cc6ac41fa618d74c (patch)
tree511efb5c4c4edfd6e3d4b8e0773831632b887c8c /MediaBrowser.Server.Implementations/Sync/SyncManager.cs
parent72a5383c703b86286cf61decb92b987b48b50d3c (diff)
sync updates
Diffstat (limited to 'MediaBrowser.Server.Implementations/Sync/SyncManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs67
1 files changed, 35 insertions, 32 deletions
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
index 0ec05a0aa..59ecf1c98 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
@@ -160,7 +160,8 @@ namespace MediaBrowser.Server.Implementations.Sync
Category = request.Category,
ParentId = request.ParentId,
Quality = request.Quality,
- Profile = request.Profile
+ Profile = request.Profile,
+ Bitrate = request.Bitrate
};
if (!request.Category.HasValue && request.ItemIds != null)
@@ -982,38 +983,31 @@ namespace MediaBrowser.Server.Implementations.Sync
return _repo.GetLibraryItemIds(query);
}
- private bool IsOriginalQuality(SyncJob job)
+ public SyncJobOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job)
{
- return string.IsNullOrWhiteSpace(job.Quality) ||
- string.Equals(job.Quality, "original", StringComparison.OrdinalIgnoreCase) ||
- string.Equals(job.Profile, "original", StringComparison.OrdinalIgnoreCase);
- }
-
- public SyncJobOptions<AudioOptions> GetAudioOptions(SyncJobItem jobItem, SyncJob job)
- {
- return new SyncJobOptions<AudioOptions>
+ var options = GetSyncJobOptions(jobItem.TargetId, null, null);
+
+ if (job.Bitrate.HasValue)
{
- ConversionOptions = new AudioOptions
- {
- Profile = GetDeviceProfile(jobItem.TargetId, null, null)
- },
- IsConverting = !IsOriginalQuality(job)
- };
+ options.DeviceProfile.MaxStaticBitrate = job.Bitrate.Value;
+ }
+
+ return options;
}
- public SyncJobOptions<VideoOptions> GetVideoOptions(SyncJobItem jobItem, SyncJob job)
+ public SyncJobOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job)
{
- return new SyncJobOptions<VideoOptions>
+ var options = GetSyncJobOptions(jobItem.TargetId, job.Profile, job.Quality);
+
+ if (job.Bitrate.HasValue)
{
- ConversionOptions = new VideoOptions
- {
- Profile = GetDeviceProfile(jobItem.TargetId, job.Profile, job.Quality)
- },
- IsConverting = !IsOriginalQuality(job)
- };
+ options.DeviceProfile.MaxStaticBitrate = job.Bitrate.Value;
+ }
+
+ return options;
}
- private DeviceProfile GetDeviceProfile(string targetId, string profile, string quality)
+ private SyncJobOptions GetSyncJobOptions(string targetId, string profile, string quality)
{
foreach (var provider in _providers)
{
@@ -1021,32 +1015,41 @@ namespace MediaBrowser.Server.Implementations.Sync
{
if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase))
{
- return GetDeviceProfile(provider, target, profile, quality);
+ return GetSyncJobOptions(provider, target, profile, quality);
}
}
}
- return null;
+ return GetDefaultSyncJobOptions(profile, quality);
}
- private DeviceProfile GetDeviceProfile(ISyncProvider provider, SyncTarget target, string profile, string quality)
+ private SyncJobOptions GetSyncJobOptions(ISyncProvider provider, SyncTarget target, string profile, string quality)
{
var hasProfile = provider as IHasSyncQuality;
if (hasProfile != null)
{
- return hasProfile.GetDeviceProfile(target, profile, quality);
+ return hasProfile.GetSyncJobOptions(target, profile, quality);
}
- return GetDeviceProfile(profile, quality);
+ return GetDefaultSyncJobOptions(profile, quality);
}
- private DeviceProfile GetDeviceProfile(string profile, string quality)
+ private SyncJobOptions GetDefaultSyncJobOptions(string profile, string quality)
{
var deviceProfile = new CloudSyncProfile(true, false);
deviceProfile.MaxStaticBitrate = SyncHelper.AdjustBitrate(deviceProfile.MaxStaticBitrate, quality);
- return deviceProfile;
+ return new SyncJobOptions
+ {
+ DeviceProfile = deviceProfile,
+ IsConverting = IsConverting(profile, quality)
+ };
+ }
+
+ private bool IsConverting(string profile, string quality)
+ {
+ return !string.Equals(profile, "original", StringComparison.OrdinalIgnoreCase);
}
public IEnumerable<SyncQualityOption> GetQualityOptions(string targetId)