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

Add options for album gain

This commit is contained in:
TelepathicWalrus 2023-08-04 17:45:59 +01:00 committed by Bill Thornton
parent edb1c8867a
commit 4dcb0fa658
4 changed files with 22 additions and 10 deletions

View file

@ -173,7 +173,7 @@ function loadForm(context, user, userSettings, apiClient) {
context.querySelector('.chkPlayDefaultAudioTrack').checked = user.Configuration.PlayDefaultAudioTrack || false;
context.querySelector('.chkPreferFmp4HlsContainer').checked = userSettings.preferFmp4HlsContainer();
context.querySelector('.chkEnableCinemaMode').checked = userSettings.enableCinemaMode();
context.querySelector('.chkEnableAudioNormalization').checked = userSettings.enableAudioNormalization();
context.querySelector('#selectAudioNormalization').checked = userSettings.audioNormalization();
context.querySelector('.chkEnableNextVideoOverlay').checked = userSettings.enableNextVideoInfoOverlay();
context.querySelector('.chkRememberAudioSelections').checked = user.Configuration.RememberAudioSelections || false;
context.querySelector('.chkRememberSubtitleSelections').checked = user.Configuration.RememberSubtitleSelections || false;
@ -218,7 +218,7 @@ function saveUser(context, user, userSettingsInstance, apiClient) {
user.Configuration.EnableNextEpisodeAutoPlay = context.querySelector('.chkEpisodeAutoPlay').checked;
userSettingsInstance.preferFmp4HlsContainer(context.querySelector('.chkPreferFmp4HlsContainer').checked);
userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked);
userSettingsInstance.enableAudioNormalization(context.querySelector('.chkEnableAudioNormalization').checked);
userSettingsInstance.audioNormalization(context.querySelector('#selectAudioNormalization').checked);
userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked);
user.Configuration.RememberAudioSelections = context.querySelector('.chkRememberAudioSelections').checked;
user.Configuration.RememberSubtitleSelections = context.querySelector('.chkRememberSubtitleSelections').checked;

View file

@ -72,13 +72,22 @@
${TabAdvanced}
</h2>
<div class="checkboxContainer checkboxContainer-withDescription">
<div class="selectContainer">
<select is="emby-select" id="selectAudioNormalization" label="${LabelStereoDownmixAlgorithm}">
<option value="Off">${None}</option>
<option value="TrackGain">TrackGain</option>
<option value="AlbumGain">AlbumGain</option>
</select>
<div class="fieldDescription">${StereoDownmixAlgorithmHelp}</div>
</div>
<!-- <div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" class="chkEnableAudioNormalization" />
<span>${EnableAudioNormalization}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${EnableAudioNormalizationHelp}</div>
</div>
</div> -->
<div class="checkboxContainer checkboxContainer-withDescription">
<label>

View file

@ -112,9 +112,12 @@ class HtmlAudioPlayer {
let val = options.url;
console.debug('playing url: ' + val);
import('../../scripts/settings/userSettings').then((userSettings) => {
if (userSettings.enableAudioNormalization() && options.item.LUFS != null) {
if (userSettings.udioNormalization() == "TrackGain" && options.item.LUFS != null) {
const dbGain = -18 - options.item.LUFS;
self.gainNode.gain.value = Math.pow(10, (dbGain / 20));
} else if (userSettings.AudioNormalization == "AlbumGain" && options.item.LUFSAlbum != null) {
const dbGain = -18 - options.item.LUFSAlbum;
self.gainNode.gain.value = Math.pow(10, (dbGain / 20));
} else {
self.gainNode.gain.value = 1;
}

View file

@ -158,15 +158,15 @@ export class UserSettings {
/**
* Get or set 'Enable Audio Normalization' state.
* @param {boolean|undefined} val - Flag to enable 'Enable Audio Normalization' or undefined.
* @return {boolean} 'Enable Audio Normalization' state.
* @param {string|undefined} val - Flag to enable 'Enable Audio Normalization' or undefined.
* @return {string} 'Enable Audio Normalization' state.
*/
enableAudioNormalization(val) {
audioNormalization(val) {
if (val !== undefined) {
return this.set('enableAudioNormalization', val.toString(), false);
return this.set('selectAudioNormalization', val, false);
}
return toBoolean(this.get('enableAudioNormalization', false), true);
return this.get('selectAudioNormalization', false) || "TrackGain";
}
/**