aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Sync
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Sync')
-rw-r--r--MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs31
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs11
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs7
4 files changed, 35 insertions, 18 deletions
diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs
index 8f6129dca..6cc5be955 100644
--- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs
+++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs
@@ -46,7 +46,9 @@ namespace MediaBrowser.Server.Implementations.Sync
public DeviceProfile GetDeviceProfile(SyncTarget target)
{
- return new DeviceProfile();
+ var caps = _deviceManager.GetCapabilities(target.Id);
+
+ return caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile;
}
public string Name
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
index 97c6a6dc8..8e5b765a6 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Sync;
using MediaBrowser.Controller.TV;
using MediaBrowser.Model.Dlna;
@@ -28,8 +29,9 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly ILogger _logger;
private readonly IUserManager _userManager;
private readonly ITVSeriesManager _tvSeriesManager;
+ private readonly IMediaEncoder MediaEncoder;
- public SyncJobProcessor(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager)
+ public SyncJobProcessor(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder)
{
_libraryManager = libraryManager;
_syncRepo = syncRepo;
@@ -37,6 +39,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_logger = logger;
_userManager = userManager;
_tvSeriesManager = tvSeriesManager;
+ MediaEncoder = mediaEncoder;
}
public async Task EnsureJobItems(SyncJob job)
@@ -392,7 +395,7 @@ namespace MediaBrowser.Server.Implementations.Sync
{
var options = new VideoOptions
{
- Context = EncodingContext.Streaming,
+ Context = EncodingContext.Static,
ItemId = item.Id.ToString("N"),
DeviceId = jobItem.TargetId,
Profile = profile,
@@ -406,7 +409,10 @@ namespace MediaBrowser.Server.Implementations.Sync
if (streamInfo.PlayMethod == PlayMethod.Transcode)
{
+ jobItem.Status = SyncJobItemStatus.Converting;
await _syncRepo.Update(jobItem).ConfigureAwait(false);
+
+ //jobItem.OutputPath = await MediaEncoder.EncodeAudio(new EncodingJobOptions(streamInfo, profile), new Progress<double>(), cancellationToken);
}
else
{
@@ -418,12 +424,12 @@ namespace MediaBrowser.Server.Implementations.Sync
{
jobItem.OutputPath = await DownloadFile(jobItem, mediaSource, cancellationToken).ConfigureAwait(false);
}
- throw new InvalidOperationException(string.Format("Cannot direct stream {0} protocol", mediaSource.Protocol));
+ else
+ {
+ throw new InvalidOperationException(string.Format("Cannot direct stream {0} protocol", mediaSource.Protocol));
+ }
}
- // TODO: Transcode
- jobItem.OutputPath = mediaSource.Path;
-
jobItem.Progress = 50;
jobItem.Status = SyncJobItemStatus.Transferring;
await _syncRepo.Update(jobItem).ConfigureAwait(false);
@@ -433,7 +439,7 @@ namespace MediaBrowser.Server.Implementations.Sync
{
var options = new AudioOptions
{
- Context = EncodingContext.Streaming,
+ Context = EncodingContext.Static,
ItemId = item.Id.ToString("N"),
DeviceId = jobItem.TargetId,
Profile = profile,
@@ -447,7 +453,10 @@ namespace MediaBrowser.Server.Implementations.Sync
if (streamInfo.PlayMethod == PlayMethod.Transcode)
{
+ jobItem.Status = SyncJobItemStatus.Converting;
await _syncRepo.Update(jobItem).ConfigureAwait(false);
+
+ jobItem.OutputPath = await MediaEncoder.EncodeAudio(new EncodingJobOptions(streamInfo, profile), new Progress<double>(), cancellationToken);
}
else
{
@@ -459,12 +468,12 @@ namespace MediaBrowser.Server.Implementations.Sync
{
jobItem.OutputPath = await DownloadFile(jobItem, mediaSource, cancellationToken).ConfigureAwait(false);
}
- throw new InvalidOperationException(string.Format("Cannot direct stream {0} protocol", mediaSource.Protocol));
+ else
+ {
+ throw new InvalidOperationException(string.Format("Cannot direct stream {0} protocol", mediaSource.Protocol));
+ }
}
- // TODO: Transcode
- jobItem.OutputPath = mediaSource.Path;
-
jobItem.Progress = 50;
jobItem.Status = SyncJobItemStatus.Transferring;
await _syncRepo.Update(jobItem).ConfigureAwait(false);
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
index 7e8db3e6a..68eaa38d3 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
@@ -8,6 +8,7 @@ using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Sync;
using MediaBrowser.Controller.TV;
using MediaBrowser.Model.Dlna;
@@ -36,10 +37,11 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly Func<IDtoService> _dtoService;
private readonly IApplicationHost _appHost;
private readonly ITVSeriesManager _tvSeriesManager;
+ private readonly Func<IMediaEncoder> MediaEncoder;
private ISyncProvider[] _providers = { };
- public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager)
+ public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder)
{
_libraryManager = libraryManager;
_repo = repo;
@@ -49,6 +51,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_dtoService = dtoService;
_appHost = appHost;
_tvSeriesManager = tvSeriesManager;
+ MediaEncoder = mediaEncoder;
}
public void AddParts(IEnumerable<ISyncProvider> providers)
@@ -58,7 +61,7 @@ namespace MediaBrowser.Server.Implementations.Sync
public async Task<SyncJobCreationResult> CreateJob(SyncJobRequest request)
{
- var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager);
+ var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, MediaEncoder());
var user = _userManager.GetUserById(request.UserId);
@@ -162,7 +165,7 @@ namespace MediaBrowser.Server.Implementations.Sync
if (item == null)
{
- var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager);
+ var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, MediaEncoder());
var user = _userManager.GetUserById(job.UserId);
@@ -392,7 +395,7 @@ namespace MediaBrowser.Server.Implementations.Sync
await _repo.Update(jobItem).ConfigureAwait(false);
- var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager);
+ var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, MediaEncoder());
await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false);
}
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs b/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs
index e7e30b857..797184298 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Sync;
using MediaBrowser.Controller.TV;
using MediaBrowser.Model.Logging;
@@ -18,8 +19,9 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly ILogger _logger;
private readonly IUserManager _userManager;
private readonly ITVSeriesManager _tvSeriesManager;
+ private readonly IMediaEncoder MediaEncoder;
- public SyncScheduledTask(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager)
+ public SyncScheduledTask(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder)
{
_libraryManager = libraryManager;
_syncRepo = syncRepo;
@@ -27,6 +29,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_logger = logger;
_userManager = userManager;
_tvSeriesManager = tvSeriesManager;
+ MediaEncoder = mediaEncoder;
}
public string Name
@@ -49,7 +52,7 @@ namespace MediaBrowser.Server.Implementations.Sync
public Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
{
- return new SyncJobProcessor(_libraryManager, _syncRepo, _syncManager, _logger, _userManager, _tvSeriesManager).Sync(progress,
+ return new SyncJobProcessor(_libraryManager, _syncRepo, _syncManager, _logger, _userManager, _tvSeriesManager, MediaEncoder).Sync(progress,
cancellationToken);
}