mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-18 23:13:06 +03:00
sync updates
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user