From f8546b35ec8f2b8693c766fa62e0d6a7413c6784 Mon Sep 17 00:00:00 2001
From: Pat <54077094+patrickd77-eng@users.noreply.github.com>
Date: Fri, 11 Apr 2025 20:51:21 +0100
Subject: [PATCH] Add option to limit hls segment length for webOS (#6530)
* -Add clientside ability to limit segment length to 1. See https://github.com/jellyfin/jellyfin-webos/issues/248 for details.
-Add translations for this new setting (generated by github copilot).
-Corrected small typo 'perfer'.
* Move this to relevant scope
* Revert translations except en-us
* rewrite and relocate translation to alphabetical order
* Relocate new setting to 'video advanced' heading instead of 'advanced'
* Hide hls segment setting initially but show it for WebOS users.
* Update src/components/playbackSettings/playbackSettings.js
Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com>
* Update src/components/playbackSettings/playbackSettings.js
Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com>
---------
Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com>
---
.../playbackSettings/playbackSettings.js | 7 +++++++
.../playbackSettings.template.html | 8 ++++++++
src/scripts/browserDeviceProfile.js | 7 +++++--
src/scripts/settings/userSettings.js | 18 ++++++++++++++++--
src/strings/en-us.json | 2 ++
5 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js
index 81e82d041..f15627a3e 100644
--- a/src/components/playbackSettings/playbackSettings.js
+++ b/src/components/playbackSettings/playbackSettings.js
@@ -190,6 +190,11 @@ function loadForm(context, user, userSettings, systemInfo, apiClient) {
context.querySelector('.fldEnableHi10p').classList.remove('hide');
}
+ // Show hls segment length setting for webOS only, as the setting only aims to fix an issue on that platform.
+ if (browser.web0s) {
+ context.querySelector('.fldLimitSegmentLength').classList.remove('hide');
+ }
+
context.querySelector('#selectAllowedAudioChannels').value = userSettings.allowedAudioChannels();
apiClient.getCultures().then(allCultures => {
@@ -220,6 +225,7 @@ function loadForm(context, user, userSettings, systemInfo, apiClient) {
context.querySelector('.chkPlayDefaultAudioTrack').checked = user.Configuration.PlayDefaultAudioTrack || false;
context.querySelector('.chkPreferFmp4HlsContainer').checked = userSettings.preferFmp4HlsContainer();
+ context.querySelector('.chkLimitSegmentLength').checked = userSettings.limitSegmentLength();
context.querySelector('.chkEnableDts').checked = appSettings.enableDts();
context.querySelector('.chkEnableTrueHd').checked = appSettings.enableTrueHd();
context.querySelector('.chkEnableHi10p').checked = appSettings.enableHi10p();
@@ -293,6 +299,7 @@ function saveUser(context, user, userSettingsInstance, apiClient) {
user.Configuration.PlayDefaultAudioTrack = context.querySelector('.chkPlayDefaultAudioTrack').checked;
user.Configuration.EnableNextEpisodeAutoPlay = context.querySelector('.chkEpisodeAutoPlay').checked;
userSettingsInstance.preferFmp4HlsContainer(context.querySelector('.chkPreferFmp4HlsContainer').checked);
+ userSettingsInstance.limitSegmentLength(context.querySelector('.chkLimitSegmentLength').checked);
userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked);
userSettingsInstance.selectAudioNormalization(context.querySelector('#selectAudioNormalization').value);
userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked);
diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html
index ed1409eff..2bd2026df 100644
--- a/src/components/playbackSettings/playbackSettings.template.html
+++ b/src/components/playbackSettings/playbackSettings.template.html
@@ -190,6 +190,14 @@
${EnableHi10pHelp}
+
+
+
${LimitSegmentLengthHelp}
+
+