feat(local-library): DSD quality chip

DSD gets its own Quality chip and Hi-Res goes back to 24-bit PCM only, in
the MediaFilter, the native catalog SQL (tracks CASE and the materialized
album quality_tier) and the legacy QML filters. A Format chip would be the
same predicate, so there is none. Schema version 6 re-derives the album
tiers that were materialized as hires.

cc
This commit is contained in:
vicrodh committed 2026-09-02 20:34:59 -06:00
1 parent 35ff1818f6
commit baf0dc2bb9
7 files changed
+71 -11

No files matched your search

+6 -4
View File
@@ -407,8 +407,8 @@ Rectangle {
{ group: QbzSession.tr("Favorites", tr),
values: pick(["favorite"], [QbzSession.tr("Favorites only", tr)]) },
{ group: QbzSession.tr("Quality", tr),
values: pick(["hires", "cd", "lossy"],
[QbzSession.tr("Hi-Res", tr), QbzSession.tr("CD", tr),
values: pick(["dsd", "hires", "cd", "lossy"],
["DSD", QbzSession.tr("Hi-Res", tr), QbzSession.tr("CD", tr),
QbzSession.tr("Lossy", tr)]) },
{ group: QbzSession.tr("Format", tr),
values: pick(["flac", "alac", "ape", "wav", "mp3", "aac", "other"],
@@ -785,7 +785,8 @@ Rectangle {
var tier = (r.qualityTier || "").toLowerCase()
var fmt = (r.format || "").toLowerCase()
if (qAny) {
var qok = (selected.hires && (tier === "hires" || tier === "max" || tier === "dsd"))
var qok = (selected.dsd && tier === "dsd")
|| (selected.hires && (tier === "hires" || tier === "max"))
|| (selected.cd && tier === "cd")
|| (selected.lossy && (tier === "mp3" || tier === "lossy"))
if (!qok) continue
@@ -897,7 +898,8 @@ Rectangle {
var qualityOk = false
for (i = 0; i < (artist.qualityTiers || []).length; i++) {
value = (artist.qualityTiers[i] || "").toLowerCase()
if ((selected.hires && (value === "hires" || value === "max"))
if ((selected.dsd && value === "dsd")
|| (selected.hires && (value === "hires" || value === "max"))
|| (selected.cd && value === "cd")
|| (selected.lossy && (value === "mp3" || value === "lossy"))) {
qualityOk = true; break