From 5f6b0b5ff6e02138109856abcfd977c992dda061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kacprzak?= Date: Fri, 23 Oct 2026 22:35:40 +0200 Subject: [PATCH] Add opt-in FFmpeg continuity slates with per-viewer localization --- .../Configuration/PluginConfiguration.cs | 2 + .../Configuration/configPage.html | 14 + Jellyfin.Plugin.Enigma2/ContinuityStreams.cs | 295 ++++++++++++++++++ Jellyfin.Plugin.Enigma2/ContinuityTimeline.cs | 60 ++++ .../Jellyfin.Plugin.Enigma2.csproj | 6 +- Jellyfin.Plugin.Enigma2/LiveTvService.cs | 34 +- .../Localization/startup-messages.json | 128 ++++++++ Jellyfin.Plugin.Enigma2/PlaybackFeedback.cs | 170 ++++++++++ Jellyfin.Plugin.Enigma2/ServiceRegistrator.cs | 4 + Jellyfin.Plugin.Enigma2/StartupMessages.cs | 81 +++++ .../TransportStreamClock.cs | 82 +++++ README.md | 15 + Tests/ContinuityE2E.cs | 123 ++++++++ Tests/ContinuityTests.cs | 69 ++++ Tests/PlaybackFeedbackTests.cs | 85 +++++ Tests/Program.cs | 3 + build.yaml | 2 +- deploy-plugin-only.py | 2 +- experiments/run-continuity-e2e.py | 71 +++++ experiments/verify-continuity-recording.py | 58 ++++ test-web-bridge.cjs | 53 +++- web/decoder-channel-playback.js | 80 ++++- 22 files changed, 1407 insertions(+), 30 deletions(-) create mode 100644 Jellyfin.Plugin.Enigma2/ContinuityStreams.cs create mode 100644 Jellyfin.Plugin.Enigma2/ContinuityTimeline.cs create mode 100644 Jellyfin.Plugin.Enigma2/Localization/startup-messages.json create mode 100644 Jellyfin.Plugin.Enigma2/PlaybackFeedback.cs create mode 100644 Jellyfin.Plugin.Enigma2/StartupMessages.cs create mode 100644 Jellyfin.Plugin.Enigma2/TransportStreamClock.cs create mode 100644 Tests/ContinuityE2E.cs create mode 100644 Tests/ContinuityTests.cs create mode 100644 Tests/PlaybackFeedbackTests.cs create mode 100644 experiments/run-continuity-e2e.py create mode 100644 experiments/verify-continuity-recording.py diff --git a/Jellyfin.Plugin.Enigma2/Configuration/PluginConfiguration.cs b/Jellyfin.Plugin.Enigma2/Configuration/PluginConfiguration.cs index 690bd4a..23dd312 100644 --- a/Jellyfin.Plugin.Enigma2/Configuration/PluginConfiguration.cs +++ b/Jellyfin.Plugin.Enigma2/Configuration/PluginConfiguration.cs @@ -31,6 +31,8 @@ namespace Jellyfin.Plugin.Enigma2.Configuration public bool EnableVuRecordings { get; set; } = false; public bool PreferH264ForWebLiveTv { get; set; } = true; public bool EnableAutomaticChannelSync { get; set; } = true; + public bool ShowNativeStartupMessages { get; set; } = true; + public bool EnableContinuitySlates { get; set; } = false; public PluginConfiguration() diff --git a/Jellyfin.Plugin.Enigma2/Configuration/configPage.html b/Jellyfin.Plugin.Enigma2/Configuration/configPage.html index 2b73a30..7637a68 100644 --- a/Jellyfin.Plugin.Enigma2/Configuration/configPage.html +++ b/Jellyfin.Plugin.Enigma2/Configuration/configPage.html @@ -153,6 +153,16 @@ Preferuj H264 przy transkodowaniu telewizji w przeglądarce
Ogranicza transkodowanie kanałów Enigma2 w aplikacji webowej do H264. Ułatwia odtwarzanie na urządzeniach bez wydajnego dekodowania AV1. Zmiana dotyczy kolejnego uruchomienia kanału.
+ +
Ponawia odbiór aż do zatrzymania przez widza. Jeden proces odbioru na kanał; język planszy według interfejsu użytkownika, następnie profilu i ustawień Jellyfina. Normalizuje obraz do H264 Full HD 50 kl./s i dźwięk do AAC stereo; wymaga dodatkowego CPU, nie zachowuje 4K, HDR, dźwięku przestrzennego ani dodatkowych ścieżek. Nie dotyczy nagrań.
+ +
Krótkie komunikaty o oczekiwaniu, gotowości lub błędzie. Wyłącznie na urządzeniu, które uruchomiło kanał. W przeglądarce moduł wtyczki pokazuje osobny ekran oczekiwania.