aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcvium <clausvium@gmail.com>2021-09-25 11:47:44 +0200
committercvium <clausvium@gmail.com>2021-09-25 11:47:44 +0200
commit3e5cb8e04e11d05b4af54e88686e829429305870 (patch)
treea2a6b87847bc645aee6b652b5ad49da0a7db715d /src
parentc7b25a9fe466083a761dc768169e09f68313f862 (diff)
Add tests for ComputeEqualLengthSegments and fix bug
Diffstat (limited to 'src')
-rw-r--r--src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs b/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs
index 9cb52e678..5c6809a87 100644
--- a/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs
+++ b/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs
@@ -221,7 +221,14 @@ namespace Jellyfin.MediaEncoding.Hls.Playlist
internal static double[] ComputeEqualLengthSegments(long desiredSegmentLengthMs, long totalRuntimeTicks)
{
- var segmentLengthTicks = TimeSpan.FromMilliseconds(desiredSegmentLengthMs).Ticks;
+ if (desiredSegmentLengthMs == 0 || totalRuntimeTicks == 0)
+ {
+ throw new InvalidOperationException($"Invalid segment length ({desiredSegmentLengthMs}) or runtime ticks ({totalRuntimeTicks})");
+ }
+
+ var desiredSegmentLength = TimeSpan.FromMilliseconds(desiredSegmentLengthMs);
+
+ var segmentLengthTicks = desiredSegmentLength.Ticks;
var wholeSegments = totalRuntimeTicks / segmentLengthTicks;
var remainingTicks = totalRuntimeTicks % segmentLengthTicks;
@@ -229,7 +236,7 @@ namespace Jellyfin.MediaEncoding.Hls.Playlist
var segments = new double[segmentsLen];
for (int i = 0; i < wholeSegments; i++)
{
- segments[i] = desiredSegmentLengthMs;
+ segments[i] = desiredSegmentLength.TotalSeconds;
}
if (remainingTicks != 0)