feat(plex): filter the feed by playback class (Direct Play / Direct Stream / Transcode HW/SW)
Adds a movie-scoped "Playback" filter to the Plex feed so a user can isolate items by how they play — the groundwork for collecting HW-transcodable (or no-transcode) versions. Four classes derived from the stored `playable` + a new `transcode_hw` facet: - Direct Play (direct), Direct Stream (remux) - Transcode · HW — playable=transcode AND the iGPU can hardware-transcode it - Transcode · SW — playable=transcode, software libx264 only The HW/SW split is precise, not codec-only: a 10-bit/HDR HEVC is HW-decodable yet breaks the VAAPI nv12 pipeline (the same case plex/stream special-cases), so it must count as SW. Backend: - New PlexItem columns (migration 0077): transcode_hw, video_bit_depth, media_probed_at. Migration backfills transcode_hw codec-only so the filter works immediately. - `plex.sync.transcode_hw_capable` is the single classifier; the HW-decodable codec set moves to sync as `HW_DECODABLE_CODECS` and plex.stream imports it, so the catalog facet and the runtime encoder choice can't disagree by codec. - Bit-depth backfill (`_probe_media_batch`, wired into sync): probes only HW-decodable transcode items' video Stream for bit-depth + HDR and refines a 10-bit/HDR HEVC to software. Bounded per run, watermarked by media_probed_at. A codec change resets the watermark (stale probe). - Filter + self-excluded facet on a shared `playback_class_expr` CASE (movie-leg only — a show is an aggregate with no single class). transcode_hw threaded onto the feed/detail/card JSON. Frontend: - Multi-select "Playback" Combobox in the sidebar (movie scope, facet-empty drop-out), active chips, 4-way corner-dot badge (green/blue/amber/red) + tooltip, and an info-page playback chip with a codec · bit-depth subtitle. New `bg-info` (blue) token, i18n HU/EN parity. - Fix a regression where the card's playback dot lost its hover tooltip: the full-card reveal overlay swallowed the cursor; the dot now sits above it (z-20). Gate: backend full lane + frontend typecheck/lint/knip/prettier/vitest all green. Browser-UAT'd on localdev (filter narrows to the SW set, facet counts, badge colour + tooltip, info chip).
This commit is contained in:
@@ -104,6 +104,13 @@
|
||||
"collectionEmpty": "No collections",
|
||||
"matchLabel": "Match",
|
||||
"studio": "Studio",
|
||||
"playable": "Playback",
|
||||
"playableOpt": {
|
||||
"direct": "Direct Play",
|
||||
"remux": "Direct Stream",
|
||||
"transcode_hw": "Transcode · HW",
|
||||
"transcode_sw": "Transcode · SW"
|
||||
},
|
||||
"moreRefine": "{{count}} more — refine with search"
|
||||
},
|
||||
"count": "{{count}} titles",
|
||||
@@ -285,8 +292,10 @@
|
||||
},
|
||||
"playable": {
|
||||
"direct": "Plays directly in the browser",
|
||||
"remux": "Needs a light remux (no video re-encode)",
|
||||
"transcode": "Needs transcoding (heavier)"
|
||||
"remux": "Direct Stream — a light remux (no video re-encode)",
|
||||
"transcode": "Needs transcoding (heavier)",
|
||||
"transcode_hw": "Transcoded on the hardware encoder",
|
||||
"transcode_sw": "Transcoded in software (heaviest)"
|
||||
},
|
||||
"playlistAdd": {
|
||||
"manage": "Add to playlist",
|
||||
|
||||
@@ -104,6 +104,13 @@
|
||||
"collectionEmpty": "Nincs kollekció",
|
||||
"matchLabel": "Egyezés",
|
||||
"studio": "Stúdió",
|
||||
"playable": "Lejátszás",
|
||||
"playableOpt": {
|
||||
"direct": "Közvetlen lejátszás",
|
||||
"remux": "Direct Stream",
|
||||
"transcode_hw": "Transcode · HW",
|
||||
"transcode_sw": "Transcode · SW"
|
||||
},
|
||||
"moreRefine": "még {{count}} — finomíts kereséssel"
|
||||
},
|
||||
"count": "{{count}} cím",
|
||||
@@ -285,8 +292,10 @@
|
||||
},
|
||||
"playable": {
|
||||
"direct": "Közvetlenül játszható a böngészőben",
|
||||
"remux": "Könnyű remux kell (nincs videó-újrakódolás)",
|
||||
"transcode": "Transcode kell (nehezebb)"
|
||||
"remux": "Direct Stream — könnyű remux (nincs videó-újrakódolás)",
|
||||
"transcode": "Transcode kell (nehezebb)",
|
||||
"transcode_hw": "Hardveres kódolóval transcode-olva",
|
||||
"transcode_sw": "Szoftveresen transcode-olva (legnehezebb)"
|
||||
},
|
||||
"playlistAdd": {
|
||||
"manage": "Listához adás",
|
||||
|
||||
Reference in New Issue
Block a user