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

Merge branch 'master' into unavailable-yt-video-trailer-bug-fix

This commit is contained in:
Dmitry Lyzo 2020-11-21 22:30:04 +03:00 committed by GitHub
commit 3124a4af9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 509 additions and 374 deletions

View file

@ -34,7 +34,6 @@ function getDeviceProfile(item, options = {}) {
profile = window.NativeShell.AppHost.getDeviceProfile(profileBuilder);
} else {
const builderOpts = getBaseProfileOptions(item);
builderOpts.enableSsaRender = (item && !options.isRetry && appSettings.get('subtitleburnin') !== 'allcomplexformats');
profile = profileBuilder(builderOpts);
}

View file

@ -147,6 +147,8 @@ import toast from '../toast/toast';
showHideQualityFields(context, user, apiClient);
context.querySelector('#selectAllowedAudioChannels').value = userSettings.allowedAudioChannels();
apiClient.getCultures().then(allCultures => {
populateLanguages(context.querySelector('#selectAudioLanguage'), allCultures);
@ -189,6 +191,7 @@ import toast from '../toast/toast';
}
context.querySelector('.chkPlayDefaultAudioTrack').checked = user.Configuration.PlayDefaultAudioTrack || false;
context.querySelector('.chkPreferFmp4HlsContainer').checked = userSettings.preferFmp4HlsContainer();
context.querySelector('.chkEnableCinemaMode').checked = userSettings.enableCinemaMode();
context.querySelector('.chkEnableNextVideoOverlay').checked = userSettings.enableNextVideoInfoOverlay();
context.querySelector('.chkExternalVideoPlayer').checked = appSettings.enableSystemExternalPlayers();
@ -224,10 +227,11 @@ import toast from '../toast/toast';
setMaxBitrateFromField(context.querySelector('.selectVideoInternetQuality'), false, 'Video');
setMaxBitrateFromField(context.querySelector('.selectMusicInternetQuality'), false, 'Audio');
userSettingsInstance.allowedAudioChannels(context.querySelector('#selectAllowedAudioChannels').value);
user.Configuration.AudioLanguagePreference = context.querySelector('#selectAudioLanguage').value;
user.Configuration.PlayDefaultAudioTrack = context.querySelector('.chkPlayDefaultAudioTrack').checked;
user.Configuration.EnableNextEpisodeAutoPlay = context.querySelector('.chkEpisodeAutoPlay').checked;
userSettingsInstance.preferFmp4HlsContainer(context.querySelector('.chkPreferFmp4HlsContainer').checked);
userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked);
userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked);

View file

@ -4,6 +4,16 @@
${HeaderAudioSettings}
</h2>
<div class="selectContainer">
<select is="emby-select" id="selectAllowedAudioChannels" label="${LabelAllowedAudioChannels}">
<option value="-1">${Auto}</option>
<option value="1">${LabelSelectMono}</option>
<option value="2">${LabelSelectStereo}</option>
<option value="6">5.1 ${LabelSelectAudioChannels}</option>
<option value="8">7.1 ${LabelSelectAudioChannels}</option>
</select>
</div>
<div class="selectContainer">
<select is="emby-select" id="selectAudioLanguage" label="${LabelAudioLanguagePreference}"></select>
</div>
@ -49,6 +59,14 @@
${TabAdvanced}
</h2>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" class="chkPreferFmp4HlsContainer" />
<span>${PreferFmp4HlsContainer}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${PreferFmp4HlsContainerHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription cinemaModeOptions">
<label>
<input type="checkbox" is="emby-checkbox" class="chkEnableCinemaMode" />

View file

@ -372,15 +372,26 @@ import ServerConnections from '../ServerConnections';
const session = responses[1];
const displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session);
let localizedDisplayMethod = displayPlayMethod;
if (displayPlayMethod === 'DirectPlay') {
localizedDisplayMethod = globalize.translate('DirectPlaying');
} else if (displayPlayMethod === 'Remux') {
localizedDisplayMethod = globalize.translate('Remuxing');
} else if (displayPlayMethod === 'DirectStream') {
localizedDisplayMethod = globalize.translate('DirectStreaming');
} else if (displayPlayMethod === 'Transcode') {
localizedDisplayMethod = globalize.translate('Transcoding');
}
const baseCategory = {
stats: [],
name: 'Playback Info'
name: globalize.translate('LabelPlaybackInfo')
};
baseCategory.stats.unshift({
label: globalize.translate('LabelPlayMethod'),
value: displayPlayMethod
value: localizedDisplayMethod
});
baseCategory.stats.unshift({
@ -395,30 +406,37 @@ import ServerConnections from '../ServerConnections';
for (let i = 0, length = playerStats.length; i < length; i++) {
const category = playerStats[i];
if (category.type === 'audio') {
category.name = 'Audio Info';
category.name = globalize.translate('LabelAudioInfo');
} else if (category.type === 'video') {
category.name = 'Video Info';
category.name = globalize.translate('LabelVideoInfo');
}
categories.push(category);
}
let localizedTranscodingInfo = globalize.translate('LabelTranscodingInfo');
if (displayPlayMethod === 'Remux') {
localizedTranscodingInfo = globalize.translate('LabelRemuxingInfo');
} else if (displayPlayMethod === 'DirectStream') {
localizedTranscodingInfo = globalize.translate('LabelDirectStreamingInfo');
}
if (session.TranscodingInfo) {
categories.push({
stats: getTranscodingStats(session, player, displayPlayMethod),
name: displayPlayMethod === 'Transcode' ? 'Transcoding Info' : 'Direct Stream Info'
name: localizedTranscodingInfo
});
}
categories.push({
stats: getMediaSourceStats(session, player),
name: 'Original Media Info'
name: globalize.translate('LabelOriginalMediaInfo')
});
const apiClient = ServerConnections.getApiClient(playbackManager.currentItem(player).ServerId);
if (syncPlayManager.isSyncPlayEnabled() && apiClient.isMinServerVersion('10.6.0')) {
categories.push({
stats: getSyncPlayStats(),
name: 'SyncPlay Info'
name: globalize.translate('LabelSyncPlayInfo')
});
}