diff options
| author | Dylan Dellett-Wion <iamdylandw@gmail.com> | 2026-04-26 00:22:34 -0400 |
|---|---|---|
| committer | Dylan Dellett-Wion <iamdylandw@gmail.com> | 2026-04-26 00:22:34 -0400 |
| commit | 8044156df5b8fc3edc4ab47f72c62db4b96c4d2b (patch) | |
| tree | db5130a695e7a21b1e4781cdc1d51fec5377dd57 | |
| parent | 461662f1ff6dff3c8c229850c1af37e188a88d0e (diff) | |
Clamp keyframe duration overshoot instead of throwing in HLS playlist generation
| -rw-r--r-- | src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs b/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs index fb5027e5b5..c970fd8a61 100644 --- a/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs +++ b/src/Jellyfin.MediaEncoding.Hls/Playlist/DynamicHlsPlaylistGenerator.cs @@ -156,7 +156,7 @@ public class DynamicHlsPlaylistGenerator : IDynamicHlsPlaylistGenerator { if (keyframeData.KeyframeTicks.Count > 0 && keyframeData.TotalDuration < keyframeData.KeyframeTicks[^1]) { - throw new ArgumentException("Invalid duration in keyframe data", nameof(keyframeData)); + keyframeData = new KeyframeData(keyframeData.KeyframeTicks[^1], keyframeData.KeyframeTicks); } long lastKeyframe = 0; @@ -176,7 +176,12 @@ public class DynamicHlsPlaylistGenerator : IDynamicHlsPlaylistGenerator } } - result.Add(TimeSpan.FromTicks(keyframeData.TotalDuration - lastKeyframe).TotalSeconds); + var remaining = keyframeData.TotalDuration - lastKeyframe; + if (remaining > 0) + { + result.Add(TimeSpan.FromTicks(remaining).TotalSeconds); + } + return result; } |
