diff options
| author | nicknsy <20588554+nicknsy@users.noreply.github.com> | 2023-02-22 18:17:54 -0800 |
|---|---|---|
| committer | Nick <20588554+nicknsy@users.noreply.github.com> | 2023-06-22 16:19:59 -0700 |
| commit | 515ee90fb96b32d89134852b95ebcd8dbb656b94 (patch) | |
| tree | 3c8f10d4e130401dcb9a860a0f37878e7a2e61be /MediaBrowser.Providers/Trickplay | |
| parent | ca7d1a13000ad948eebbfdeb40542312f3e37d3e (diff) | |
Hls playlist
Diffstat (limited to 'MediaBrowser.Providers/Trickplay')
| -rw-r--r-- | MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Trickplay/TrickplayManager.cs | 31 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Trickplay/TrickplayProvider.cs | 1 |
3 files changed, 16 insertions, 17 deletions
diff --git a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs index 3d1450a90..87ac145d7 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs @@ -11,7 +11,6 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Tasks; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; namespace MediaBrowser.Providers.Trickplay { diff --git a/MediaBrowser.Providers/Trickplay/TrickplayManager.cs b/MediaBrowser.Providers/Trickplay/TrickplayManager.cs index f1eb389ab..62180804f 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayManager.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayManager.cs @@ -9,7 +9,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Trickplay; -using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; @@ -66,7 +65,7 @@ namespace MediaBrowser.Providers.Trickplay private async Task RefreshTrickplayData(Video video, bool replace, int width, int interval, int tileWidth, int tileHeight, bool doHwAccel, bool doHwEncode, CancellationToken cancellationToken) { - if (!CanGenerateTrickplay(video)) + if (!CanGenerateTrickplay(video, interval)) { return; } @@ -78,7 +77,7 @@ namespace MediaBrowser.Providers.Trickplay { await _resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - if (!replace && Directory.Exists(outputDir)) + if (!replace && Directory.Exists(outputDir) && GetTilesResolutions(video.Id).ContainsKey(width)) { _logger.LogDebug("Found existing trickplay files for {ItemId}. Exiting.", video.Id); return; @@ -177,7 +176,7 @@ namespace MediaBrowser.Providers.Trickplay Interval = interval, TileWidth = tileWidth, TileHeight = tileHeight, - TileCount = (int)Math.Ceiling((decimal)images.Count / tileWidth / tileHeight), + TileCount = 0, Bandwidth = 0 }; @@ -201,7 +200,6 @@ namespace MediaBrowser.Providers.Trickplay while (i < images.Count) { var tileGrid = new SKBitmap(tilesInfo.Width * tilesInfo.TileWidth, tilesInfo.Height * tilesInfo.TileHeight); - var tileCount = 0; using (var canvas = new SKCanvas(tileGrid)) { @@ -231,7 +229,7 @@ namespace MediaBrowser.Providers.Trickplay } canvas.DrawBitmap(img, x * tilesInfo.Width, y * tilesInfo.Height); - tileCount++; + tilesInfo.TileCount++; i++; } } @@ -266,7 +264,7 @@ namespace MediaBrowser.Providers.Trickplay return tilesInfo; } - private bool CanGenerateTrickplay(Video video) + private bool CanGenerateTrickplay(Video video, int interval) { var videoType = video.VideoType; if (videoType == VideoType.Iso || videoType == VideoType.Dvd || videoType == VideoType.BluRay) @@ -279,6 +277,16 @@ namespace MediaBrowser.Providers.Trickplay return false; } + if (video.IsShortcut) + { + return false; + } + + if (!video.IsCompleteMedia) + { + return false; + } + /* TODO config options var libraryOptions = _libraryManager.GetLibraryOptions(video); if (libraryOptions is not null) @@ -294,14 +302,7 @@ namespace MediaBrowser.Providers.Trickplay } */ - // TODO: media length is shorter than configured interval - - if (video.IsShortcut) - { - return false; - } - - if (!video.IsCompleteMedia) + if (!video.RunTimeTicks.HasValue || video.RunTimeTicks.Value < TimeSpan.FromMilliseconds(interval).Ticks) { return false; } diff --git a/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs b/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs index 8606e148b..be66dea8a 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs @@ -97,7 +97,6 @@ namespace MediaBrowser.Providers.Trickplay private async Task<ItemUpdateType> FetchInternal(Video item, MetadataRefreshOptions options, CancellationToken cancellationToken) { - // TODO: will "search for missing metadata" always trigger this? // TODO: implement all config options --> // TODO: this is always blocking for metadata collection, make non-blocking option await _trickplayManager.RefreshTrickplayData(item, options.ReplaceAllImages, cancellationToken).ConfigureAwait(false); |
