vicrodh
6328994c00
fix(library): read "DSD" back out of the database as DSD, not Unknown
...
`LibraryDatabase::parse_format` is the inverse of `AudioFormat`'s Display,
which is what the scanner stores. It had no arm for "DSD", so every DSD row
came back out of the DB as `Unknown`: the album header printed "UNKNOWN" as
its format, the quality badge said CD (depth 1 IS a known depth below 24) and
the detail line read "1-bit / 2822.4 kHz". The now-playing bar was right all
along because it reads the decoder, not the row — which is exactly the clue
that separated the two data sources.
A fold to `Unknown` is a VALID answer, so nothing failed: not the build, not
`cargo check` (it cannot see the match at all), not a single test.
Three sites had the same hole and all three are fixed:
- `database.rs`, the one that bit;
- `local_plex.rs`, same fold for a Plex server serving DSD;
- `media_servers_qt.rs`, worse than the others — its fallback is `Flac`, so
a .dsf from Jellyfin or Navidrome was not losing its format, it was being
mislabelled as lossless PCM.
The guard is a round-trip over EVERY variant rather than a "DSD parses" test:
adding a variant without an arm now fails here instead of shipping the same
silent loss again. Verified against the real rows: format is stored as "DSD",
so this is a READ-side fix and no rescan is needed.
cc
2026-08-20 21:13:51 -06:00
..
2026-08-20 10:57:28 -06:00
2026-08-15 00:52:25 -06:00
2026-08-15 00:52:25 -06:00
2026-08-11 08:59:36 -06:00
2026-08-16 18:52:52 -06:00
2026-08-17 14:41:26 -06:00
2026-08-16 08:22:57 -06:00
2026-07-29 21:24:12 -06:00
2026-08-15 00:52:25 -06:00
2026-08-02 16:34:58 -06:00
2026-08-17 14:41:26 -06:00
2026-08-02 16:34:58 -06:00
2026-08-14 19:25:11 -06:00
2026-08-20 12:57:36 -06:00
2026-07-29 00:06:34 -06:00
2026-08-20 01:23:40 -06:00
2026-08-20 13:49:37 -06:00
2026-08-16 19:54:15 -06:00
2026-07-29 21:24:12 -06:00
2026-08-16 18:54:28 -06:00
2026-08-11 01:38:18 -06:00
2026-08-19 13:53:30 -06:00
2026-08-17 14:41:26 -06:00
2026-07-29 00:56:07 -06:00
2026-08-20 01:28:26 -06:00
2026-08-17 14:40:40 -06:00
2026-08-15 00:52:25 -06:00
2026-08-11 11:26:50 -06:00
2026-08-11 11:26:50 -06:00
2026-08-15 00:52:25 -06:00
2026-07-29 21:23:45 -06:00
2026-08-19 13:53:30 -06:00
2026-07-28 21:12:31 -06:00
2026-07-29 16:25:12 -06:00
2026-07-31 22:10:19 -06:00
2026-07-31 22:10:19 -06:00
2026-07-31 22:10:19 -06:00
2026-08-19 23:55:07 -06:00
2026-07-28 19:55:33 -06:00
2026-08-19 23:55:07 -06:00
2026-08-19 13:53:30 -06:00
2026-08-14 19:25:11 -06:00
2026-08-14 19:25:11 -06:00
2026-08-20 10:57:28 -06:00
2026-08-19 23:54:09 -06:00
2026-08-19 23:55:56 -06:00
2026-08-04 00:09:01 -06:00
2026-08-03 23:23:24 -06:00
2026-08-11 13:59:24 -06:00
2026-08-17 14:41:26 -06:00
2026-08-16 18:53:56 -06:00
2026-07-31 22:10:19 -06:00
2026-08-01 15:29:03 -06:00
2026-08-16 18:53:56 -06:00
2026-08-20 14:49:28 -06:00
2026-07-31 22:10:19 -06:00
2026-08-16 08:22:57 -06:00
2026-08-20 18:16:33 -06:00
2026-08-20 13:49:45 -06:00
2026-08-20 01:44:31 -06:00
2026-08-20 12:12:22 -06:00
2026-08-20 16:38:28 -06:00
2026-08-20 16:38:28 -06:00
2026-08-01 21:36:07 -06:00
2026-08-20 12:12:22 -06:00
2026-08-20 01:23:40 -06:00
2026-08-20 18:16:33 -06:00
2026-08-19 07:34:28 -06:00
2026-08-20 21:13:51 -06:00
2026-08-20 12:12:22 -06:00
2026-08-20 12:12:22 -06:00
2026-08-20 12:12:22 -06:00
2026-08-15 00:52:25 -06:00
2026-08-01 20:23:38 -06:00
2026-08-10 17:15:18 -06:00
2026-08-20 09:20:07 -06:00
2026-08-20 13:49:26 -06:00
2026-08-20 21:13:51 -06:00
2026-08-20 09:20:07 -06:00
2026-08-04 12:50:01 -06:00
2026-08-04 12:50:01 -06:00
2026-08-14 19:25:11 -06:00
2026-08-14 19:25:11 -06:00
2026-07-29 21:23:45 -06:00
2026-07-30 17:14:40 -06:00
2026-07-30 18:41:06 -06:00
2026-08-20 09:20:07 -06:00
2026-07-29 21:23:45 -06:00
2026-07-29 21:23:45 -06:00
2026-08-01 15:29:03 -06:00
2026-08-01 15:29:03 -06:00
2026-07-29 21:23:45 -06:00
2026-08-20 01:28:26 -06:00
2026-08-01 15:29:03 -06:00
2026-07-29 21:23:45 -06:00
2026-08-19 23:54:46 -06:00
2026-08-16 08:23:15 -06:00
2026-08-16 18:54:16 -06:00
2026-08-10 17:17:43 -06:00
2026-08-16 18:54:16 -06:00
2026-08-16 18:54:16 -06:00
2026-08-17 14:41:26 -06:00
2026-07-28 16:22:48 -06:00
2026-08-20 18:16:45 -06:00
2026-08-20 18:16:45 -06:00
2026-08-19 23:55:25 -06:00
2026-08-19 23:55:25 -06:00
2026-08-17 14:40:40 -06:00
2026-08-19 23:55:56 -06:00
2026-08-19 23:55:56 -06:00
2026-07-31 22:10:19 -06:00
2026-08-17 14:40:40 -06:00
2026-07-31 22:10:19 -06:00
2026-07-31 22:10:19 -06:00
2026-07-31 22:10:19 -06:00
2026-08-17 14:40:40 -06:00
2026-08-19 07:34:28 -06:00
2026-08-10 17:16:30 -06:00
2026-08-16 11:54:05 -06:00
2026-08-16 11:54:05 -06:00
2026-08-01 20:23:38 -06:00
2026-08-01 20:23:38 -06:00
2026-08-01 20:23:38 -06:00
2026-08-15 00:52:25 -06:00
2026-08-01 20:23:38 -06:00
2026-08-17 11:09:26 -06:00
2026-08-10 17:16:46 -06:00
2026-08-18 12:40:52 -06:00
2026-08-19 07:00:35 -06:00
2026-07-29 21:24:12 -06:00
2026-08-19 07:00:35 -06:00
2026-08-16 08:22:57 -06:00
2026-08-16 08:22:57 -06:00
2026-08-14 19:25:11 -06:00
2026-08-03 16:13:02 -06:00
2026-08-03 18:09:04 -06:00
2026-08-20 13:49:45 -06:00
2026-08-17 14:41:26 -06:00
2026-08-03 22:32:10 -06:00
2026-08-20 16:38:28 -06:00
2026-08-19 23:54:09 -06:00
2026-08-10 20:24:25 -06:00
2026-08-19 23:55:25 -06:00
2026-08-17 14:40:40 -06:00
2026-07-31 22:10:19 -06:00
2026-08-20 09:20:07 -06:00
2026-08-03 08:07:24 -06:00
2026-08-16 08:23:15 -06:00
2026-08-15 00:52:25 -06:00
2026-07-29 21:23:45 -06:00
2026-07-28 16:23:08 -06:00
2026-08-17 14:41:39 -06:00
2026-08-17 14:41:39 -06:00
2026-08-04 14:55:36 -06:00
2026-08-04 02:47:56 -06:00
2026-08-10 17:15:18 -06:00
2026-08-16 18:53:37 -06:00
2026-08-16 08:22:57 -06:00
2026-08-13 13:01:50 -06:00
2026-08-19 13:53:57 -06:00
2026-08-15 00:52:25 -06:00