aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Trickplay
diff options
context:
space:
mode:
authornicknsy <20588554+nicknsy@users.noreply.github.com>2023-02-22 18:17:54 -0800
committerNick <20588554+nicknsy@users.noreply.github.com>2023-06-22 16:19:59 -0700
commit515ee90fb96b32d89134852b95ebcd8dbb656b94 (patch)
tree3c8f10d4e130401dcb9a860a0f37878e7a2e61be /MediaBrowser.Providers/Trickplay
parentca7d1a13000ad948eebbfdeb40542312f3e37d3e (diff)
Hls playlist
Diffstat (limited to 'MediaBrowser.Providers/Trickplay')
-rw-r--r--MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs1
-rw-r--r--MediaBrowser.Providers/Trickplay/TrickplayManager.cs31
-rw-r--r--MediaBrowser.Providers/Trickplay/TrickplayProvider.cs1
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);