sync updates

This commit is contained in:
Luke Pulverenti
2015-01-19 15:53:02 -05:00
parent bdb9cd77bc
commit 01f4ddbdc3
45 changed files with 20454 additions and 20522 deletions

View File

@@ -348,18 +348,18 @@ namespace MediaBrowser.Server.Implementations.Sync
public async Task SyncJobItems(SyncJobItem[] items, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)
{
var index = 0;
var numComplete = 0;
foreach (var item in items)
{
double percent = index;
percent /= items.Length;
progress.Report(100 * percent);
cancellationToken.ThrowIfCancellationRequested();
double percentPerItem = 1;
percentPerItem /= items.Length;
var startingPercent = numComplete * percentPerItem * 100;
var innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(p => progress.Report(startingPercent + (percentPerItem * p)));
var job = _syncRepo.GetJob(item.JobId);
await ProcessJobItem(job, item, enableConversion, innerProgress, cancellationToken).ConfigureAwait(false);
@@ -367,7 +367,10 @@ namespace MediaBrowser.Server.Implementations.Sync
job = _syncRepo.GetJob(item.JobId);
await UpdateJobStatus(job).ConfigureAwait(false);
index++;
numComplete++;
double percent = numComplete;
percent /= items.Length;
progress.Report(100 * percent);
}
}
@@ -432,9 +435,9 @@ namespace MediaBrowser.Server.Implementations.Sync
var streamInfo = new StreamBuilder().BuildVideoItem(options);
var mediaSource = streamInfo.MediaSource;
var externalSubs = streamInfo.GetExternalSubtitles("dummy", false);
var hasExternalSubs = externalSubs.Count > 0;
var requiresConversion = streamInfo.PlayMethod == PlayMethod.Transcode || hasExternalSubs;
// 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));
if (requiresConversion && !enableConversion)
{
@@ -498,7 +501,7 @@ namespace MediaBrowser.Server.Implementations.Sync
jobItem.MediaSource = mediaSource;
}
if (hasExternalSubs)
if (externalSubs.Count > 0)
{
// Save the job item now since conversion could take a while
await _syncRepo.Update(jobItem).ConfigureAwait(false);
@@ -511,6 +514,13 @@ namespace MediaBrowser.Server.Implementations.Sync
await _syncRepo.Update(jobItem).ConfigureAwait(false);
}
private bool RequiresExtraction(SubtitleStreamInfo stream, MediaSourceInfo mediaSource)
{
var originalStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Subtitle && i.Index == stream.Index);
return originalStream != null && !originalStream.IsExternal;
}
private async Task ConvertSubtitles(SyncJobItem jobItem,
IEnumerable<SubtitleStreamInfo> subtitles,
StreamInfo streamInfo,