From 5213b71d62ec9d384b01646a39de8a901c760454 Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Tue, 17 May 2022 15:18:12 -0500 Subject: [PATCH] add debug logging to track down playlist filtering issue (#811) * add debug logging to track down playlist filtering issue * revert work-ahead change --- .../Streaming/HlsSessionWorker.cs | 27 ++++++++++++------- ErsatzTV.Core/FFmpeg/HlsPlaylistFilter.cs | 8 ++++++ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/ErsatzTV.Application/Streaming/HlsSessionWorker.cs b/ErsatzTV.Application/Streaming/HlsSessionWorker.cs index b00580241..0f36a9e17 100644 --- a/ErsatzTV.Application/Streaming/HlsSessionWorker.cs +++ b/ErsatzTV.Application/Streaming/HlsSessionWorker.cs @@ -31,6 +31,7 @@ public class HlsSessionWorker : IHlsSessionWorker private Option _targetFramerate; private Timer _timer; private DateTimeOffset _transcodedUntil; + private DateTimeOffset _playlistStart; public HlsSessionWorker( IHlsPlaylistFilter hlsPlaylistFilter, @@ -44,7 +45,15 @@ public class HlsSessionWorker : IHlsSessionWorker _logger = logger; } - public DateTimeOffset PlaylistStart { get; private set; } + public DateTimeOffset PlaylistStart + { + get => _playlistStart; + private set + { + _logger.LogDebug("Setting PlaylistStart to {PlaylistStart}", value); + _playlistStart = value; + } + } public void Touch() { @@ -348,14 +357,14 @@ public class HlsSessionWorker : IHlsSessionWorker .ToList(); var toDelete = allSegments.Filter(s => s.SequenceNumber < trimResult.Sequence).ToList(); - // if (toDelete.Count > 0) - // { - // _logger.LogInformation( - // "Deleting HLS segments {Min} to {Max} (less than {StartSequence})", - // toDelete.Map(s => s.SequenceNumber).Min(), - // toDelete.Map(s => s.SequenceNumber).Max(), - // trimResult.Sequence); - // } + if (toDelete.Count > 0) + { + _logger.LogDebug( + "Deleting HLS segments {Min} to {Max} (less than {StartSequence})", + toDelete.Map(s => s.SequenceNumber).Min(), + toDelete.Map(s => s.SequenceNumber).Max(), + trimResult.Sequence); + } foreach (Segment segment in toDelete) { diff --git a/ErsatzTV.Core/FFmpeg/HlsPlaylistFilter.cs b/ErsatzTV.Core/FFmpeg/HlsPlaylistFilter.cs index 393e175dd..de51f45ad 100644 --- a/ErsatzTV.Core/FFmpeg/HlsPlaylistFilter.cs +++ b/ErsatzTV.Core/FFmpeg/HlsPlaylistFilter.cs @@ -25,6 +25,13 @@ public class HlsPlaylistFilter : IHlsPlaylistFilter { try { + _logger.LogDebug( + "TrimPlaylist - Start {PlaylistStart}, FilterBefore {FilterBefore}, MaxSegments {MaxSegments}, EndWithDiscontinuity {EndWithDiscontinuity}", + playlistStart, + filterBefore, + maxSegments, + endWithDiscontinuity); + DateTimeOffset currentTime = playlistStart; DateTimeOffset nextPlaylistStart = DateTimeOffset.MaxValue; @@ -113,6 +120,7 @@ public class HlsPlaylistFilter : IHlsPlaylistFilter playlist += "#EXT-X-DISCONTINUITY" + Environment.NewLine; } + // if (playlist.Trim().Split(Environment.NewLine).All(l => string.IsNullOrWhiteSpace(l) || l.StartsWith('#'))) if (playlist.Trim().Split(Environment.NewLine).All(l => l.StartsWith('#'))) { throw new Exception("Trimming playlist to nothing");