summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaltycrys <73420320+saltycrys@users.noreply.github.com>2020-12-19 17:48:20 +0100
committersaltycrys <73420320+saltycrys@users.noreply.github.com>2020-12-19 18:37:41 +0100
commiteed78c960d01a6945403d82ec262087e9da0b8e3 (patch)
tree63b2826685acbcdcf9701eb787ff80ab9de0f625
parenteea7ca9b72ac71560900b8d744287a97ac23c4eb (diff)
downloadinvidious-eed78c960d01a6945403d82ec262087e9da0b8e3.tar.gz
invidious-eed78c960d01a6945403d82ec262087e9da0b8e3.tar.bz2
invidious-eed78c960d01a6945403d82ec262087e9da0b8e3.zip
Improve DASH quality preference
Besides `auto`, `best` and `worst` it is now possible to select a target height. If the target height is not available the closest lower height is selected.
-rw-r--r--assets/js/player.js21
-rw-r--r--src/invidious/views/preferences.ecr2
2 files changed, 20 insertions, 3 deletions
diff --git a/assets/js/player.js b/assets/js/player.js
index 930680d6..fcba43d8 100644
--- a/assets/js/player.js
+++ b/assets/js/player.js
@@ -159,9 +159,26 @@ if (!video_data.params.listen && video_data.params.quality === 'dash') {
player.ready(() => {
player.on("loadedmetadata", () => {
const qualityLevels = Array.from(player.qualityLevels()).sort((a, b) => a.height - b.height);
- const targetQualityLevel = video_data.params.quality_dash == "best" ? qualityLevels.length - 1 : 0;
+ let targetQualityLevel;
+ switch (video_data.params.quality_dash) {
+ case "best":
+ targetQualityLevel = qualityLevels.length - 1;
+ break;
+ case "worst":
+ targetQualityLevel = 0;
+ break;
+ default:
+ const targetHeight = Number.parseInt(video_data.params.quality_dash, 10);
+ for (let i = 0; i < qualityLevels.length; i++) {
+ if (qualityLevels[i].height <= targetHeight) {
+ targetQualityLevel = i;
+ } else {
+ break;
+ }
+ }
+ }
for (let i = 0; i < qualityLevels.length; i++) {
- qualityLevels[i].enabled = (i == targetQualityLevel)
+ qualityLevels[i].enabled = (i == targetQualityLevel);
}
});
});
diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr
index 46aa714c..9eac10a7 100644
--- a/src/invidious/views/preferences.ecr
+++ b/src/invidious/views/preferences.ecr
@@ -61,7 +61,7 @@
<div class="pure-control-group">
<label for="quality_dash"><%= translate(locale, "Preferred dash video quality: ") %></label>
<select name="quality_dash" id="quality_dash">
- <% {"auto", "best", "worst"}.each do |option| %>
+ <% {"auto", "best", "4320p", "2160p", "1440p", "1080p", "720p", "480p", "360p", "240p", "144p", "worst"}.each do |option| %>
<option value="<%= option %>" <% if preferences.quality_dash == option %> selected <% end %>><%= translate(locale, option) %></option>
<% end %>
</select>