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}
+
+