mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Added client setting to enable experimental Pgs subtitle renderer.
This commit is contained in:
parent
c5d3b081cf
commit
8753f84335
4 changed files with 31 additions and 1 deletions
|
@ -61,6 +61,9 @@ function loadForm(context, user, userSettings, appearanceSettings, apiClient) {
|
||||||
context.querySelector('#sliderVerticalPosition').value = appearanceSettings.verticalPosition;
|
context.querySelector('#sliderVerticalPosition').value = appearanceSettings.verticalPosition;
|
||||||
|
|
||||||
context.querySelector('#selectSubtitleBurnIn').value = appSettings.get('subtitleburnin') || '';
|
context.querySelector('#selectSubtitleBurnIn').value = appSettings.get('subtitleburnin') || '';
|
||||||
|
context.querySelector('#chkSubtitleRenderPgs').checked = appSettings.get('subtitlerenderpgs') === 'true';
|
||||||
|
|
||||||
|
context.querySelector('#selectSubtitleBurnIn').dispatchEvent(new CustomEvent('change', {}));
|
||||||
|
|
||||||
onAppearanceFieldChange({
|
onAppearanceFieldChange({
|
||||||
target: context.querySelector('#selectTextSize')
|
target: context.querySelector('#selectTextSize')
|
||||||
|
@ -86,6 +89,7 @@ function save(instance, context, userId, userSettings, apiClient, enableSaveConf
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
appSettings.set('subtitleburnin', context.querySelector('#selectSubtitleBurnIn').value);
|
appSettings.set('subtitleburnin', context.querySelector('#selectSubtitleBurnIn').value);
|
||||||
|
appSettings.set('subtitlerenderpgs', context.querySelector('#chkSubtitleRenderPgs').checked);
|
||||||
|
|
||||||
apiClient.getUser(userId).then(function (user) {
|
apiClient.getUser(userId).then(function (user) {
|
||||||
saveUser(context, user, userSettings, instance.appearanceKey, apiClient).then(function () {
|
saveUser(context, user, userSettings, instance.appearanceKey, apiClient).then(function () {
|
||||||
|
@ -111,6 +115,19 @@ function onSubtitleModeChange(e) {
|
||||||
view.querySelector('.subtitles' + this.value + 'Help').classList.remove('hide');
|
view.querySelector('.subtitles' + this.value + 'Help').classList.remove('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onSubtitleBurnInChange(e) {
|
||||||
|
const view = dom.parentWithClass(e.target, 'subtitlesettings');
|
||||||
|
|
||||||
|
const fieldRenderPgs = view.querySelector('.fldRenderPgs');
|
||||||
|
|
||||||
|
// Pgs option is only available if burn-in mode is set to 'auto' (empty string)
|
||||||
|
if (this.value) {
|
||||||
|
fieldRenderPgs.classList.add('hide');
|
||||||
|
} else {
|
||||||
|
fieldRenderPgs.classList.remove('hide');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function onAppearanceFieldChange(e) {
|
function onAppearanceFieldChange(e) {
|
||||||
const view = dom.parentWithClass(e.target, 'subtitlesettings');
|
const view = dom.parentWithClass(e.target, 'subtitlesettings');
|
||||||
|
|
||||||
|
@ -166,6 +183,7 @@ function embed(options, self) {
|
||||||
options.element.querySelector('form').addEventListener('submit', self.onSubmit.bind(self));
|
options.element.querySelector('form').addEventListener('submit', self.onSubmit.bind(self));
|
||||||
|
|
||||||
options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange);
|
options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange);
|
||||||
|
options.element.querySelector('#selectSubtitleBurnIn').addEventListener('change', onSubtitleBurnInChange);
|
||||||
options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange);
|
options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange);
|
||||||
options.element.querySelector('#selectTextWeight').addEventListener('change', onAppearanceFieldChange);
|
options.element.querySelector('#selectTextWeight').addEventListener('change', onAppearanceFieldChange);
|
||||||
options.element.querySelector('#selectDropShadow').addEventListener('change', onAppearanceFieldChange);
|
options.element.querySelector('#selectDropShadow').addEventListener('change', onAppearanceFieldChange);
|
||||||
|
|
|
@ -32,6 +32,15 @@
|
||||||
</select>
|
</select>
|
||||||
<div class="fieldDescription">${BurnSubtitlesHelp}</div>
|
<div class="fieldDescription">${BurnSubtitlesHelp}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="checkboxContainer checkboxContainer-withDescription fldRenderPgs hide">
|
||||||
|
<label>
|
||||||
|
<input is="emby-checkbox" type="checkbox" id="chkSubtitleRenderPgs" />
|
||||||
|
<span>${RenderPgsSubtitle}</span>
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<div class="fieldDescription checkboxFieldDescription">${RenderPgsSubtitleHelp}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="verticalSection subtitleAppearanceSection hide">
|
<div class="verticalSection subtitleAppearanceSection hide">
|
||||||
|
|
|
@ -1424,6 +1424,7 @@ export default function (options) {
|
||||||
// External vtt or burn in
|
// External vtt or burn in
|
||||||
profile.SubtitleProfiles = [];
|
profile.SubtitleProfiles = [];
|
||||||
const subtitleBurninSetting = appSettings.get('subtitleburnin');
|
const subtitleBurninSetting = appSettings.get('subtitleburnin');
|
||||||
|
const subtitleRenderPgsSetting = appSettings.get('subtitlerenderpgs') === 'true';
|
||||||
if (subtitleBurninSetting !== 'all') {
|
if (subtitleBurninSetting !== 'all') {
|
||||||
if (supportsTextTracks()) {
|
if (supportsTextTracks()) {
|
||||||
profile.SubtitleProfiles.push({
|
profile.SubtitleProfiles.push({
|
||||||
|
@ -1442,7 +1443,7 @@ export default function (options) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (supportsCanvas2D() && options.enablePgsRender !== false && !options.isRetry
|
if (supportsCanvas2D() && options.enablePgsRender !== false && !options.isRetry && subtitleRenderPgsSetting
|
||||||
&& subtitleBurninSetting !== 'allcomplexformats' && subtitleBurninSetting !== 'onlyimageformats') {
|
&& subtitleBurninSetting !== 'allcomplexformats' && subtitleBurninSetting !== 'onlyimageformats') {
|
||||||
profile.SubtitleProfiles.push({
|
profile.SubtitleProfiles.push({
|
||||||
Format: 'pgssub',
|
Format: 'pgssub',
|
||||||
|
|
|
@ -1383,6 +1383,8 @@
|
||||||
"Remixer": "Remixer",
|
"Remixer": "Remixer",
|
||||||
"RemoveFromCollection": "Remove from collection",
|
"RemoveFromCollection": "Remove from collection",
|
||||||
"RemoveFromPlaylist": "Remove from playlist",
|
"RemoveFromPlaylist": "Remove from playlist",
|
||||||
|
"RenderPgsSubtitle": "Experimental PGS subtitle rendering",
|
||||||
|
"RenderPgsSubtitleHelp": "Determine if the client should render PGS subtitles instead of using burned in subtitles. This can avoid server-side transcoding in exchange of client-side rendering performance.",
|
||||||
"Repeat": "Repeat",
|
"Repeat": "Repeat",
|
||||||
"RepeatAll": "Repeat all",
|
"RepeatAll": "Repeat all",
|
||||||
"RepeatEpisodes": "Repeat episodes",
|
"RepeatEpisodes": "Repeat episodes",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue