From 6b275f8a13a302018baa1075caebf9732a2335e4 Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Tue, 9 Sep 2025 11:57:49 -0500 Subject: [PATCH] fix hwaccel health check on mobile (#2401) * fix hw accel health check on mobile * allow classic schedules to fast forward --- CHANGELOG.md | 1 + .../Commands/PreviewPlaylistPlayoutHandler.cs | 1 + .../Playouts/Commands/BuildPlayoutHandler.cs | 2 +- .../Scheduling/ClassicScheduling/NewPlayoutTests.cs | 6 +++--- ErsatzTV.Core/Interfaces/Scheduling/IPlayoutBuilder.cs | 1 + ErsatzTV.Core/Scheduling/PlayoutBuilder.cs | 8 +++++--- .../Health/Checks/HardwareAccelerationHealthCheck.cs | 2 +- 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa5fe7c81..bd81e3776 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Block schedules: fix playout build crash when empty collection uses random playback order - Fix watermarks and graphics elements on primary content split by mid-roll filler - Fix watermarks and graphics elements when `Scaling Behavior` is `Crop` +- Fix hardware acceleration health check message on mobile ### Changed - **BREAKING CHANGE**: change how `Scripted Schedule` system works diff --git a/ErsatzTV.Application/MediaCollections/Commands/PreviewPlaylistPlayoutHandler.cs b/ErsatzTV.Application/MediaCollections/Commands/PreviewPlaylistPlayoutHandler.cs index d9763eaed..5681fe436 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/PreviewPlaylistPlayoutHandler.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/PreviewPlaylistPlayoutHandler.cs @@ -57,6 +57,7 @@ public class PreviewPlaylistPlayoutHandler( playoutBuilder.TrimStart = false; playoutBuilder.DebugPlaylist = playout.ProgramSchedule.Items[0].Playlist; PlayoutBuildResult result = await playoutBuilder.Build( + DateTimeOffset.Now, playout, referenceData, PlayoutBuildMode.Reset, diff --git a/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs b/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs index e32451e32..3c6dabdc7 100644 --- a/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs +++ b/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs @@ -154,7 +154,7 @@ public class BuildPlayoutHandler : IRequestHandler Build( + DateTimeOffset start, Playout playout, PlayoutReferenceData referenceData, PlayoutBuildMode mode, diff --git a/ErsatzTV.Core/Scheduling/PlayoutBuilder.cs b/ErsatzTV.Core/Scheduling/PlayoutBuilder.cs index f2e501a0f..8c7c56e5d 100644 --- a/ErsatzTV.Core/Scheduling/PlayoutBuilder.cs +++ b/ErsatzTV.Core/Scheduling/PlayoutBuilder.cs @@ -61,6 +61,7 @@ public class PlayoutBuilder : IPlayoutBuilder } public async Task Build( + DateTimeOffset start, Playout playout, PlayoutReferenceData referenceData, PlayoutBuildMode mode, @@ -79,7 +80,7 @@ public class PlayoutBuilder : IPlayoutBuilder return result; } - foreach (PlayoutParameters parameters in await Validate(playout, referenceData, cancellationToken)) + foreach (PlayoutParameters parameters in await Validate(start, playout, referenceData, cancellationToken)) { // for testing purposes // if (mode == PlayoutBuildMode.Reset) @@ -116,7 +117,7 @@ public class PlayoutBuilder : IPlayoutBuilder DateTimeOffset finish, CancellationToken cancellationToken) { - foreach (PlayoutParameters parameters in await Validate(playout, referenceData, cancellationToken)) + foreach (PlayoutParameters parameters in await Validate(start, playout, referenceData, cancellationToken)) { result = await Build( playout, @@ -320,6 +321,7 @@ public class PlayoutBuilder : IPlayoutBuilder } private async Task> Validate( + DateTimeOffset start, Playout playout, PlayoutReferenceData referenceData, CancellationToken cancellationToken) @@ -367,7 +369,7 @@ public class PlayoutBuilder : IPlayoutBuilder ConfigElementKey.PlayoutDaysToBuild, cancellationToken); - DateTimeOffset now = DateTimeOffset.Now; + DateTimeOffset now = start; return new PlayoutParameters( now, diff --git a/ErsatzTV.Infrastructure/Health/Checks/HardwareAccelerationHealthCheck.cs b/ErsatzTV.Infrastructure/Health/Checks/HardwareAccelerationHealthCheck.cs index b5128cdac..0bc11ff4f 100644 --- a/ErsatzTV.Infrastructure/Health/Checks/HardwareAccelerationHealthCheck.cs +++ b/ErsatzTV.Infrastructure/Health/Checks/HardwareAccelerationHealthCheck.cs @@ -97,7 +97,7 @@ public class HardwareAccelerationHealthCheck : BaseHealthCheck, IHardwareAcceler var channels = string.Join(", ", badChannels.Map(c => $"{c.Number} - {c.Name}")); return WarningResult( $"The following channels use ffmpeg profiles that are not configured for hardware acceleration ({accel}): {channels}", - $"{channels.Length} channels are not configured for hardware acceleration"); + $"{badChannels.Count} channels are not configured for hardware acceleration"); } return None;