1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #5688 from Arcus92/native-pgs

Add support for native PGS subtitle rendering without transcoding
This commit is contained in:
Bill Thornton 2024-09-20 15:55:30 -04:00 committed by GitHub
commit 6d0f0e85a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 89 additions and 2 deletions

View file

@ -61,6 +61,9 @@ function loadForm(context, user, userSettings, appearanceSettings, apiClient) {
context.querySelector('#sliderVerticalPosition').value = appearanceSettings.verticalPosition;
context.querySelector('#selectSubtitleBurnIn').value = appSettings.get('subtitleburnin') || '';
context.querySelector('#chkSubtitleRenderPgs').checked = appSettings.get('subtitlerenderpgs') === 'true';
context.querySelector('#selectSubtitleBurnIn').dispatchEvent(new CustomEvent('change', {}));
onAppearanceFieldChange({
target: context.querySelector('#selectTextSize')
@ -86,6 +89,7 @@ function save(instance, context, userId, userSettings, apiClient, enableSaveConf
loading.show();
appSettings.set('subtitleburnin', context.querySelector('#selectSubtitleBurnIn').value);
appSettings.set('subtitlerenderpgs', context.querySelector('#chkSubtitleRenderPgs').checked);
apiClient.getUser(userId).then(function (user) {
saveUser(context, user, userSettings, instance.appearanceKey, apiClient).then(function () {
@ -111,6 +115,14 @@ function onSubtitleModeChange(e) {
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)
fieldRenderPgs.classList.toggle('hide', !!this.value);
}
function onAppearanceFieldChange(e) {
const view = dom.parentWithClass(e.target, 'subtitlesettings');
@ -166,6 +178,7 @@ function embed(options, self) {
options.element.querySelector('form').addEventListener('submit', self.onSubmit.bind(self));
options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange);
options.element.querySelector('#selectSubtitleBurnIn').addEventListener('change', onSubtitleBurnInChange);
options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange);
options.element.querySelector('#selectTextWeight').addEventListener('change', onAppearanceFieldChange);
options.element.querySelector('#selectDropShadow').addEventListener('change', onAppearanceFieldChange);

View file

@ -32,6 +32,14 @@
</select>
<div class="fieldDescription">${BurnSubtitlesHelp}</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 class="verticalSection subtitleAppearanceSection hide">