Constructor of the LibraryManager takes the mediaEncoder as parameter

This commit is contained in:
Ulrich Wagner 2020-02-19 16:06:30 +01:00
parent b16ba7d985
commit 0f2ee2686d
2 changed files with 26 additions and 27 deletions

View File

@ -755,7 +755,18 @@ namespace Emby.Server.Implementations
serviceCollection.AddSingleton(UserManager); serviceCollection.AddSingleton(UserManager);
LibraryManager = new LibraryManager(this, LoggerFactory, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager, () => UserViewManager); MediaEncoder = new MediaBrowser.MediaEncoding.Encoder.MediaEncoder(
LoggerFactory.CreateLogger<MediaBrowser.MediaEncoding.Encoder.MediaEncoder>(),
ServerConfigurationManager,
FileSystemManager,
ProcessFactory,
LocalizationManager,
() => SubtitleEncoder,
_configuration,
StartupOptions.FFmpegPath);
serviceCollection.AddSingleton(MediaEncoder);
LibraryManager = new LibraryManager(this, LoggerFactory, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager, () => UserViewManager, MediaEncoder);
serviceCollection.AddSingleton(LibraryManager); serviceCollection.AddSingleton(LibraryManager);
var musicManager = new MusicManager(LibraryManager); var musicManager = new MusicManager(LibraryManager);
@ -833,17 +844,6 @@ namespace Emby.Server.Implementations
ChapterManager = new ChapterManager(LibraryManager, LoggerFactory, ServerConfigurationManager, ItemRepository); ChapterManager = new ChapterManager(LibraryManager, LoggerFactory, ServerConfigurationManager, ItemRepository);
serviceCollection.AddSingleton(ChapterManager); serviceCollection.AddSingleton(ChapterManager);
MediaEncoder = new MediaBrowser.MediaEncoding.Encoder.MediaEncoder(
LoggerFactory.CreateLogger<MediaBrowser.MediaEncoding.Encoder.MediaEncoder>(),
ServerConfigurationManager,
FileSystemManager,
ProcessFactory,
LocalizationManager,
() => SubtitleEncoder,
_configuration,
StartupOptions.FFmpegPath);
serviceCollection.AddSingleton(MediaEncoder);
EncodingManager = new MediaEncoder.EncodingManager(FileSystemManager, LoggerFactory, MediaEncoder, ChapterManager, LibraryManager); EncodingManager = new MediaEncoder.EncodingManager(FileSystemManager, LoggerFactory, MediaEncoder, ChapterManager, LibraryManager);
serviceCollection.AddSingleton(EncodingManager); serviceCollection.AddSingleton(EncodingManager);

View File

@ -143,6 +143,7 @@ namespace Emby.Server.Implementations.Library
public bool IsScanRunning { get; private set; } public bool IsScanRunning { get; private set; }
private IServerApplicationHost _appHost; private IServerApplicationHost _appHost;
private IMediaEncoder _mediaEncoder;
/// <summary> /// <summary>
/// The _library items cache /// The _library items cache
@ -176,7 +177,8 @@ namespace Emby.Server.Implementations.Library
Func<ILibraryMonitor> libraryMonitorFactory, Func<ILibraryMonitor> libraryMonitorFactory,
IFileSystem fileSystem, IFileSystem fileSystem,
Func<IProviderManager> providerManagerFactory, Func<IProviderManager> providerManagerFactory,
Func<IUserViewManager> userviewManager) Func<IUserViewManager> userviewManager,
IMediaEncoder mediaEncoder)
{ {
_appHost = appHost; _appHost = appHost;
_logger = loggerFactory.CreateLogger(nameof(LibraryManager)); _logger = loggerFactory.CreateLogger(nameof(LibraryManager));
@ -188,6 +190,7 @@ namespace Emby.Server.Implementations.Library
_fileSystem = fileSystem; _fileSystem = fileSystem;
_providerManagerFactory = providerManagerFactory; _providerManagerFactory = providerManagerFactory;
_userviewManager = userviewManager; _userviewManager = userviewManager;
_mediaEncoder = mediaEncoder;
_libraryItemsCache = new ConcurrentDictionary<Guid, BaseItem>(); _libraryItemsCache = new ConcurrentDictionary<Guid, BaseItem>();
@ -2416,26 +2419,22 @@ namespace Emby.Server.Implementations.Library
if (libraryOptions.EnableEmbeddedEpisodeInfos && string.Equals(episodeInfo.Container, "mp4", StringComparison.OrdinalIgnoreCase)) if (libraryOptions.EnableEmbeddedEpisodeInfos && string.Equals(episodeInfo.Container, "mp4", StringComparison.OrdinalIgnoreCase))
{ {
// Read from metadata // Read from metadata
IMediaEncoder mediaEncoder = _appHost.Resolve<IMediaEncoder>(); var mediaInfo = _mediaEncoder.GetMediaInfo(new MediaInfoRequest
var task = mediaEncoder.GetMediaInfo(new MediaInfoRequest
{ {
MediaSource = episode.GetMediaSources(false).First(), MediaSource = episode.GetMediaSources(false).First(),
MediaType = DlnaProfileType.Video, MediaType = DlnaProfileType.Video,
ExtractChapters = false ExtractChapters = false
}, CancellationToken.None); }, CancellationToken.None).GetAwaiter().GetResult();
task.Wait(); if (mediaInfo.ParentIndexNumber > 0) {
if (task.IsCompletedSuccessfully) { episodeInfo.SeasonNumber = mediaInfo.ParentIndexNumber;
if (task.Result.ParentIndexNumber > 0) { }
episodeInfo.SeasonNumber = task.Result.ParentIndexNumber;
}
if (task.Result.IndexNumber > 0) { if (mediaInfo.IndexNumber > 0) {
episodeInfo.EpisodeNumber = task.Result.IndexNumber; episodeInfo.EpisodeNumber = mediaInfo.IndexNumber;
} }
if (!string.IsNullOrEmpty(task.Result.ShowName)) { if (!string.IsNullOrEmpty(mediaInfo.ShowName)) {
episodeInfo.SeriesName = task.Result.ShowName; episodeInfo.SeriesName = mediaInfo.ShowName;
}
} }
} }
} }