';
html += '
' + current.Code + '
';
@@ -57,7 +57,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
};
QuickConnectSettings.prototype.activate = function() {
- var url = ApiClient.getUrl("/QuickConnect/Activate");
+ let url = ApiClient.getUrl("/QuickConnect/Activate");
ApiClient.ajax({
type: "POST",
url: url,
diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js
index 86e8874e7e..8b0bcdd28d 100644
--- a/src/controllers/auth/login.js
+++ b/src/controllers/auth/login.js
@@ -151,10 +151,10 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
}
function loginQuickConnect() {
- var apiClient = getApiClient();
- var friendlyName = navigator.userAgent;
+ let apiClient = getApiClient();
+ let friendlyName = navigator.userAgent;
- var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName);
+ let url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName);
apiClient.getJSON(url)
.then(json => {
if (!json.Secret || !json.Code) {
@@ -173,15 +173,15 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
loading.show();
- var interval = setInterval(async function() {
+ let interval = setInterval(async function() {
try {
let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret);
let data = await apiClient.getJSON(connectUrl);
if (data.Authenticated) {
let result = await apiClient.quickConnect(data.Authentication);
- var user = result.User;
- var serverId = getParameterByName("serverid");
- var newUrl = "home.html";
+ let user = result.User;
+ let serverId = getParameterByName("serverid");
+ let newUrl = "home.html";
if (user.Policy.IsAdministrator && !serverId) {
newUrl = "dashboard.html";
diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js
index 3432e79231..93b74a1b52 100644
--- a/src/controllers/quickconnect.js
+++ b/src/controllers/quickconnect.js
@@ -1,9 +1,9 @@
define(["jQuery", "loading", "fnchecked"], function ($, loading) {
"use strict";
- var page;
+ let page;
function loadPage(status) {
- var available = status === "Available" || status === "Active";
+ let available = status === "Available" || status === "Active";
page.querySelector("#quickConnectStatus").textContent = status.toLocaleLowerCase();
page.querySelector("#chkQuickConnectAvailable").checked = available;
@@ -14,9 +14,9 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) {
function onSubmit() {
loading.show();
- var newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable";
+ let newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable";
- var url = ApiClient.getUrl("/QuickConnect/Available");
+ let url = ApiClient.getUrl("/QuickConnect/Available");
ApiClient.ajax({
type: "POST",
@@ -41,7 +41,7 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) {
}
function updatePage() {
- var promise1 = ApiClient.getQuickConnect("Status");
+ let promise1 = ApiClient.getQuickConnect("Status");
Promise.all([promise1]).then((responses) => {
loadPage(responses[0]);
return true;
diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickconnect.js
index 035aef8f2f..bee0c1b817 100644
--- a/src/controllers/user/quickconnect.js
+++ b/src/controllers/user/quickconnect.js
@@ -2,7 +2,7 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", "
"use strict";
return function (view) {
- var quickConnectSettingsInstance = null;
+ let quickConnectSettingsInstance = null;
view.addEventListener("viewshow", function () {
quickConnectSettingsInstance = new QuickConnectSettings({
From 8655de4469c3aade0e1f949169c8f536a43e210b Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Fri, 1 May 2020 13:49:06 -0500
Subject: [PATCH 009/281] Rename to camel case
---
.../quickConnectSettings.js} | 0
src/controllers/{quickconnect.js => quickConnect.js} | 0
src/controllers/user/{quickconnect.js => quickConnect.js} | 0
...referencesquickconnect.html => myPreferencesQuickConnect.html} | 0
src/{quickconnect.html => quickConnect.html} | 0
5 files changed, 0 insertions(+), 0 deletions(-)
rename src/components/{quickconnectsettings/quickconnectsettings.js => quickConnectSettings/quickConnectSettings.js} (100%)
rename src/controllers/{quickconnect.js => quickConnect.js} (100%)
rename src/controllers/user/{quickconnect.js => quickConnect.js} (100%)
rename src/{mypreferencesquickconnect.html => myPreferencesQuickConnect.html} (100%)
rename src/{quickconnect.html => quickConnect.html} (100%)
diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickConnectSettings/quickConnectSettings.js
similarity index 100%
rename from src/components/quickconnectsettings/quickconnectsettings.js
rename to src/components/quickConnectSettings/quickConnectSettings.js
diff --git a/src/controllers/quickconnect.js b/src/controllers/quickConnect.js
similarity index 100%
rename from src/controllers/quickconnect.js
rename to src/controllers/quickConnect.js
diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickConnect.js
similarity index 100%
rename from src/controllers/user/quickconnect.js
rename to src/controllers/user/quickConnect.js
diff --git a/src/mypreferencesquickconnect.html b/src/myPreferencesQuickConnect.html
similarity index 100%
rename from src/mypreferencesquickconnect.html
rename to src/myPreferencesQuickConnect.html
diff --git a/src/quickconnect.html b/src/quickConnect.html
similarity index 100%
rename from src/quickconnect.html
rename to src/quickConnect.html
From d8cfe064e60379033fdf61a963efbc27296130af Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Fri, 1 May 2020 14:18:04 -0500
Subject: [PATCH 010/281] Changed code to camel case
---
src/controllers/user/menu.js | 2 +-
src/scripts/librarymenu.js | 2 +-
src/scripts/routes.js | 8 ++++----
src/scripts/site.js | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js
index f5d05c5be3..9482b26cb5 100644
--- a/src/controllers/user/menu.js
+++ b/src/controllers/user/menu.js
@@ -24,7 +24,7 @@ define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby-
page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId);
page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId);
page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId);
- page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "mypreferencesquickconnect.html?userId=" + userId);
+ page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "myPreferencesQuickConnect.html?userId=" + userId);
if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) {
page.querySelector(".clientSettings").classList.remove("hide");
diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js
index e3ef65f22f..d123395ca0 100644
--- a/src/scripts/librarymenu.js
+++ b/src/scripts/librarymenu.js
@@ -352,7 +352,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
});
links.push({
name: globalize.translate("QuickConnect"),
- href: "quickconnect.html",
+ href: "quickConnect.html",
pageIds: ["quickConnectPage", "quickConnectPage"],
icon: "tap_and_play"
});
diff --git a/src/scripts/routes.js b/src/scripts/routes.js
index 1520e96632..f0806f56e0 100644
--- a/src/scripts/routes.js
+++ b/src/scripts/routes.js
@@ -73,10 +73,10 @@ define([
controller: "user/subtitles"
});
defineRoute({
- path: "/mypreferencesquickconnect.html",
+ path: "/myPreferencesQuickConnect.html",
autoFocus: false,
transition: "fade",
- controller: "user/quickconnect"
+ controller: "user/quickConnect"
});
defineRoute({
@@ -110,10 +110,10 @@ define([
controller: "device"
});
defineRoute({
- path: "/quickconnect.html",
+ path: "/quickConnect.html",
autoFocus: false,
roles: "admin",
- controller: "quickconnect"
+ controller: "quickConnect"
});
defineRoute({
path: "/dlnaprofile.html",
diff --git a/src/scripts/site.js b/src/scripts/site.js
index 3b8abf2bfe..ca8a828b0b 100644
--- a/src/scripts/site.js
+++ b/src/scripts/site.js
@@ -829,7 +829,7 @@ var AppInfo = {};
define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency);
define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency);
define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency);
- define("quickConnectSettings", [componentsPath + "/quickconnectsettings/quickconnectsettings"], returnFirstDependency);
+ define("quickConnectSettings", [componentsPath + "/quickConnectSettings/quickConnectSettings"], returnFirstDependency);
define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager);
define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager);
define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency);
From 2655b4dca3da200f9dc720f37b4d6e7f32b4d839 Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Mon, 4 May 2020 17:23:57 -0500
Subject: [PATCH 011/281] Migrate API changes to apiclient repo
---
src/libraries/apiclient/apiclientcore.js | 25 ------------------------
1 file changed, 25 deletions(-)
diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js
index e1892505fc..557a4e1033 100644
--- a/src/libraries/apiclient/apiclientcore.js
+++ b/src/libraries/apiclient/apiclientcore.js
@@ -356,31 +356,6 @@ define(["events", "appStorage"], function(events, appStorage) {
instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated()
}, reject)
})
- }, ApiClient.prototype.quickConnect = function (token) {
- if (!token) return Promise.reject();
- var url = this.getUrl("Users/AuthenticateWithQuickConnect");
- var instance = this;
- return new Promise(function(resolve, reject) {
- var postData = {
- Token: token
- };
- instance.ajax({
- type: "POST",
- url: url,
- data: JSON.stringify(postData),
- dataType: "json",
- contentType: "application/json"
- }).then(function(result) {
- var afterOnAuthenticated = function() {
- redetectBitrate(instance);
- return resolve(result);
- };
- instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated()
- }, reject)
- })
- }, ApiClient.prototype.getQuickConnect = function(verb) {
- var url = this.getUrl("/QuickConnect/" + verb);
- return this.getJSON(url);
}, ApiClient.prototype.ensureWebSocket = function() {
if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try {
this.openWebSocket()
From 429c47f414851bf95f24736ce2e08e370c397eac Mon Sep 17 00:00:00 2001
From: nyanmisaka
Date: Thu, 25 Jun 2020 16:53:45 +0800
Subject: [PATCH 012/281] add tonemapping settings
---
src/components/itemMediaInfo/itemMediaInfo.js | 12 +++++
src/components/playerstats/playerstats.js | 28 ++++++++++
src/controllers/dashboard/encodingsettings.js | 26 +++++++++
src/encodingsettings.html | 53 +++++++++++++++++++
src/strings/en-us.json | 26 ++++++++-
src/strings/zh-cn.json | 26 ++++++++-
6 files changed, 169 insertions(+), 2 deletions(-)
diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js
index 81c84b6a23..ad5f261ec6 100644
--- a/src/components/itemMediaInfo/itemMediaInfo.js
+++ b/src/components/itemMediaInfo/itemMediaInfo.js
@@ -90,6 +90,18 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
if (stream.BitDepth) {
attributes.push(createAttribute(globalize.translate('MediaInfoBitDepth'), stream.BitDepth + ' bit'));
}
+ if (stream.VideoRange) {
+ attributes.push(createAttribute(globalize.translate('MediaInfoVideoRange'), stream.VideoRange));
+ }
+ if (stream.ColorSpace) {
+ attributes.push(createAttribute(globalize.translate('MediaInfoColorSpace'), stream.ColorSpace));
+ }
+ if (stream.ColorTransfer) {
+ attributes.push(createAttribute(globalize.translate('MediaInfoColorTransfer'), stream.ColorTransfer));
+ }
+ if (stream.ColorPrimaries) {
+ attributes.push(createAttribute(globalize.translate('MediaInfoColorPrimaries'), stream.ColorPrimaries));
+ }
if (stream.PixelFormat) {
attributes.push(createAttribute(globalize.translate('MediaInfoPixelFormat'), stream.PixelFormat));
}
diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js
index a65baf3553..e3fe6452f8 100644
--- a/src/components/playerstats/playerstats.js
+++ b/src/components/playerstats/playerstats.js
@@ -279,6 +279,34 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'syncPlay
});
}
+ if (videoStream.VideoRange) {
+ sessionStats.push({
+ label: globalize.translate('LabelVideoRange'),
+ value: videoStream.VideoRange
+ });
+ }
+
+ if (videoStream.ColorSpace) {
+ sessionStats.push({
+ label: globalize.translate('LabelColorSpace'),
+ value: videoStream.ColorSpace
+ });
+ }
+
+ if (videoStream.ColorTransfer) {
+ sessionStats.push({
+ label: globalize.translate('LabelColorTransfer'),
+ value: videoStream.ColorTransfer
+ });
+ }
+
+ if (videoStream.ColorPrimaries) {
+ sessionStats.push({
+ label: globalize.translate('LabelColorPrimaries'),
+ value: videoStream.ColorPrimaries
+ });
+ }
+
var audioInfos = [];
if (audioCodec) {
diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js
index 0f54f9d70f..d728321284 100644
--- a/src/controllers/dashboard/encodingsettings.js
+++ b/src/controllers/dashboard/encodingsettings.js
@@ -8,12 +8,20 @@ define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, lo
page.querySelector('#chkDecodingColorDepth10Hevc').checked = config.EnableDecodingColorDepth10Hevc;
page.querySelector('#chkDecodingColorDepth10Vp9').checked = config.EnableDecodingColorDepth10Vp9;
page.querySelector('#chkHardwareEncoding').checked = config.EnableHardwareEncoding;
+ page.querySelector('#chkTonemapping').checked = config.EnableTonemapping;
$('#selectVideoDecoder', page).val(config.HardwareAccelerationType);
$('#selectThreadCount', page).val(config.EncodingThreadCount);
$('#txtDownMixAudioBoost', page).val(config.DownMixAudioBoost);
page.querySelector('.txtEncoderPath').value = config.EncoderAppPathDisplay || '';
$('#txtTranscodingTempPath', page).val(systemInfo.TranscodingTempPath || '');
$('#txtVaapiDevice', page).val(config.VaapiDevice || '');
+ $('#txtOpenclDevice', page).val(config.OpenclDevice || '');
+ $('#selectTonemappingAlgorithm', page).val(config.TonemappingAlgorithm);
+ $('#selectTonemappingRange', page).val(config.TonemappingRange);
+ $('#txtTonemappingDesat', page).val(config.TonemappingDesat);
+ $('#txtTonemappingThreshold', page).val(config.TonemappingThreshold);
+ $('#txtTonemappingPeak', page).val(config.TonemappingPeak);
+ $('#txtTonemappingParam', page).val(config.TonemappingParam || '');
page.querySelector('#selectEncoderPreset').value = config.EncoderPreset || '';
page.querySelector('#txtH264Crf').value = config.H264Crf || '';
page.querySelector('#selectDeinterlaceMethod').value = config.DeinterlaceMethod || '';
@@ -59,6 +67,14 @@ define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, lo
config.EncodingThreadCount = $('#selectThreadCount', form).val();
config.HardwareAccelerationType = $('#selectVideoDecoder', form).val();
config.VaapiDevice = $('#txtVaapiDevice', form).val();
+ config.OpenclDevice = $('#txtOpenclDevice', form).val();
+ config.EnableTonemapping = form.querySelector('#chkTonemapping').checked;
+ config.TonemappingAlgorithm = form.querySelector('#selectTonemappingAlgorithm').value;
+ config.TonemappingRange = form.querySelector('#selectTonemappingRange').value;
+ config.TonemappingDesat = $('#txtTonemappingDesat', form).val();
+ config.TonemappingThreshold = $('#txtTonemappingThreshold', form).val();
+ config.TonemappingPeak = $('#txtTonemappingPeak', form).val();
+ config.TonemappingParam = $('#txtTonemappingParam', form).val();
config.EncoderPreset = form.querySelector('#selectEncoderPreset').value;
config.H264Crf = parseInt(form.querySelector('#txtH264Crf').value || '0');
config.DeinterlaceMethod = form.querySelector('#selectDeinterlaceMethod').value;
@@ -141,6 +157,16 @@ define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, lo
page.querySelector('#txtVaapiDevice').removeAttribute('required');
}
+ if ('nvenc' == this.value) {
+ page.querySelector('.fldOpenclDevice').classList.remove('hide');
+ page.querySelector('#txtOpenclDevice').setAttribute('required', 'required');
+ page.querySelector('.tonemappingOptions').classList.remove('hide');
+ } else {
+ page.querySelector('.fldOpenclDevice').classList.add('hide');
+ page.querySelector('#txtOpenclDevice').removeAttribute('required');
+ page.querySelector('.tonemappingOptions').classList.add('hide');
+ }
+
if (this.value) {
page.querySelector('.hardwareAccelerationOptions').classList.remove('hide');
} else {
diff --git a/src/encodingsettings.html b/src/encodingsettings.html
index 858375b145..c020df9121 100644
--- a/src/encodingsettings.html
+++ b/src/encodingsettings.html
@@ -31,6 +31,11 @@
${LabelVaapiDeviceHelp}