add quality methods

This commit is contained in:
Luke Pulverenti 2015-03-12 00:55:06 -04:00
parent 6384c5bab0
commit 1a81da5a8f
3 changed files with 26 additions and 21 deletions

View File

@ -3,6 +3,7 @@ using MediaBrowser.Controller.Sync;
using MediaBrowser.Model.Devices; using MediaBrowser.Model.Devices;
using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Sync; using MediaBrowser.Model.Sync;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; 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); 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 public string Name

View File

@ -10,9 +10,10 @@ namespace MediaBrowser.Server.Implementations.Sync
/// Gets the device profile. /// Gets the device profile.
/// </summary> /// </summary>
/// <param name="target">The target.</param> /// <param name="target">The target.</param>
/// <param name="quality">The quality.</param>
/// <returns>DeviceProfile.</returns> /// <returns>DeviceProfile.</returns>
DeviceProfile GetDeviceProfile(SyncTarget target); DeviceProfile GetDeviceProfile(SyncTarget target, string quality);
/// <summary> /// <summary>
/// Gets the quality options. /// Gets the quality options.
/// </summary> /// </summary>

View File

@ -974,7 +974,7 @@ namespace MediaBrowser.Server.Implementations.Sync
public AudioOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) public AudioOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job)
{ {
var profile = GetDeviceProfile(jobItem.TargetId, job.Quality); var profile = GetDeviceProfile(jobItem.TargetId, null);
return new AudioOptions return new AudioOptions
{ {
@ -985,24 +985,10 @@ namespace MediaBrowser.Server.Implementations.Sync
public VideoOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) public VideoOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job)
{ {
var profile = GetDeviceProfile(jobItem.TargetId, job.Quality); 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 return new VideoOptions
{ {
Profile = profile, Profile = profile
MaxBitrate = maxBitrate
}; };
} }
@ -1028,7 +1014,7 @@ namespace MediaBrowser.Server.Implementations.Sync
if (hasProfile != null) if (hasProfile != null)
{ {
return hasProfile.GetDeviceProfile(target); return hasProfile.GetDeviceProfile(target, quality);
} }
return new CloudSyncProfile(true, false); return new CloudSyncProfile(true, false);