From 6ffa9539bbfbfb1090b02cebc8a28283a8c69041 Mon Sep 17 00:00:00 2001 From: cvium Date: Tue, 11 Jan 2022 23:30:30 +0100 Subject: Refactor and add scheduled task --- .../MediaEncodingHlsServiceCollectionExtensions.cs | 39 +++++++++++++++------- 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'src/Jellyfin.MediaEncoding.Hls/Extensions/MediaEncodingHlsServiceCollectionExtensions.cs') diff --git a/src/Jellyfin.MediaEncoding.Hls/Extensions/MediaEncodingHlsServiceCollectionExtensions.cs b/src/Jellyfin.MediaEncoding.Hls/Extensions/MediaEncodingHlsServiceCollectionExtensions.cs index 327898366..8ed4edcea 100644 --- a/src/Jellyfin.MediaEncoding.Hls/Extensions/MediaEncodingHlsServiceCollectionExtensions.cs +++ b/src/Jellyfin.MediaEncoding.Hls/Extensions/MediaEncodingHlsServiceCollectionExtensions.cs @@ -1,21 +1,36 @@ -using Jellyfin.MediaEncoding.Hls.Playlist; +using System; +using Jellyfin.MediaEncoding.Hls.Cache; +using Jellyfin.MediaEncoding.Hls.Extractors; +using Jellyfin.MediaEncoding.Hls.Playlist; using Microsoft.Extensions.DependencyInjection; -namespace Jellyfin.MediaEncoding.Hls.Extensions +namespace Jellyfin.MediaEncoding.Hls.Extensions; + +/// +/// Extensions for the interface. +/// +public static class MediaEncodingHlsServiceCollectionExtensions { /// - /// Extensions for the interface. + /// Adds the hls playlist generators to the . /// - public static class MediaEncodingHlsServiceCollectionExtensions + /// An instance of the interface. + /// The updated service collection. + public static IServiceCollection AddHlsPlaylistGenerator(this IServiceCollection serviceCollection) + { + serviceCollection.AddSingletonWithDecorator(typeof(FfProbeKeyframeExtractor)); + serviceCollection.AddSingletonWithDecorator(typeof(MatroskaKeyframeExtractor)); + serviceCollection.AddSingleton(); + return serviceCollection; + } + + private static void AddSingletonWithDecorator(this IServiceCollection serviceCollection, Type type) { - /// - /// Adds the hls playlist generators to the . - /// - /// An instance of the interface. - /// The updated service collection. - public static IServiceCollection AddHlsPlaylistGenerator(this IServiceCollection serviceCollection) + serviceCollection.AddSingleton(serviceProvider => { - return serviceCollection.AddSingleton(); - } + var extractor = ActivatorUtilities.CreateInstance(serviceProvider, type); + var decorator = ActivatorUtilities.CreateInstance(serviceProvider, extractor); + return decorator; + }); } } -- cgit v1.2.3