aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs44
1 files changed, 23 insertions, 21 deletions
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
index 116eda66a..e3db46427 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
@@ -421,7 +421,7 @@ namespace MediaBrowser.Server.Implementations.Sync
var video = item as Video;
if (video != null)
{
- await Sync(jobItem, video, user, deviceProfile, enableConversion, progress, cancellationToken).ConfigureAwait(false);
+ await Sync(jobItem, job, video, user, deviceProfile, enableConversion, progress, cancellationToken).ConfigureAwait(false);
}
else if (item is Audio)
@@ -436,24 +436,27 @@ namespace MediaBrowser.Server.Implementations.Sync
else
{
- await SyncGeneric(jobItem, item, deviceProfile, cancellationToken).ConfigureAwait(false);
+ await SyncGeneric(jobItem, item, cancellationToken).ConfigureAwait(false);
}
}
- private async Task Sync(SyncJobItem jobItem, Video item, User user, DeviceProfile profile, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)
+ private async Task Sync(SyncJobItem jobItem, SyncJob job, Video item, User user, DeviceProfile profile, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)
{
- var options = new VideoOptions
- {
- Context = EncodingContext.Static,
- ItemId = item.Id.ToString("N"),
- DeviceId = jobItem.TargetId,
- Profile = profile,
- MediaSources = item.GetMediaSources(false, user).ToList()
- };
+ var options = _syncManager.GetVideoOptions(jobItem, job);
+
+ options.DeviceId = jobItem.TargetId;
+ options.Context = EncodingContext.Static;
+ options.Profile = profile;
+ options.ItemId = item.Id.ToString("N");
+ options.MediaSources = item.GetMediaSources(false, user).ToList();
var streamInfo = new StreamBuilder().BuildVideoItem(options);
var mediaSource = streamInfo.MediaSource;
- var externalSubs = streamInfo.GetExternalSubtitles("dummy", false);
+
+ // No sense creating external subs if we're already burning one into the video
+ var externalSubs = streamInfo.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Encode ?
+ new List<SubtitleStreamInfo>() :
+ streamInfo.GetExternalSubtitles("dummy", false);
// Mark as requiring conversion if transcoding the video, or if any subtitles need to be extracted
var requiresConversion = streamInfo.PlayMethod == PlayMethod.Transcode || externalSubs.Any(i => RequiresExtraction(i, mediaSource));
@@ -610,14 +613,13 @@ namespace MediaBrowser.Server.Implementations.Sync
private async Task Sync(SyncJobItem jobItem, Audio item, User user, DeviceProfile profile, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)
{
- var options = new AudioOptions
- {
- Context = EncodingContext.Static,
- ItemId = item.Id.ToString("N"),
- DeviceId = jobItem.TargetId,
- Profile = profile,
- MediaSources = item.GetMediaSources(false, user).ToList()
- };
+ var options = _syncManager.GetAudioOptions(jobItem);
+
+ options.DeviceId = jobItem.TargetId;
+ options.Context = EncodingContext.Static;
+ options.Profile = profile;
+ options.ItemId = item.Id.ToString("N");
+ options.MediaSources = item.GetMediaSources(false, user).ToList();
var streamInfo = new StreamBuilder().BuildAudioItem(options);
var mediaSource = streamInfo.MediaSource;
@@ -693,7 +695,7 @@ namespace MediaBrowser.Server.Implementations.Sync
await _syncRepo.Update(jobItem).ConfigureAwait(false);
}
- private async Task SyncGeneric(SyncJobItem jobItem, BaseItem item, DeviceProfile profile, CancellationToken cancellationToken)
+ private async Task SyncGeneric(SyncJobItem jobItem, BaseItem item, CancellationToken cancellationToken)
{
jobItem.OutputPath = item.Path;