feat(plex): honest transcode cold-start + encoder in stats (E6 S1d)
Surface the transcode session's runtime facts in the player. The session response's transcode/hw flags now thread through: the stats overlay's mode row reads "transcode · GPU" (VAAPI) or "transcode · CPU" (libx264) — the at-a-glance confirmation of which S1 path engaged — and the initial-load overlay says "Preparing stream…" instead of "Loading…" for a transcode session, since its first segment is genuinely slower than a remux and shouldn't read as a hang. fmtMode (pure, unit-tested) appends the encoder only for a transcode with a known encoder. i18n HU/EN for the new preparing label. Browser-UAT'd on the XviD fixture: mode row reads "transcode · CPU" live (software, no render node here).
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
fmtCodec,
|
||||
fmtFrames,
|
||||
fmtLevel,
|
||||
fmtMode,
|
||||
fmtRes,
|
||||
type PlexStatsInput,
|
||||
} from "./plexStats";
|
||||
@@ -110,7 +111,25 @@ describe("buildStatRows", () => {
|
||||
expect(rows.find((r) => r.key === "position")?.value).toBe("2:10 / 86:54");
|
||||
});
|
||||
|
||||
it("appends the transcode encoder to the mode row when known", () => {
|
||||
const gpu = buildStatRows({ ...base, playable: "transcode", hwEncoder: true });
|
||||
expect(gpu.find((r) => r.key === "mode")?.value).toBe("transcode · GPU");
|
||||
const cpu = buildStatRows({ ...base, playable: "transcode", hwEncoder: false });
|
||||
expect(cpu.find((r) => r.key === "mode")?.value).toBe("transcode · CPU");
|
||||
});
|
||||
|
||||
it("shows an empty classification honestly as a dash", () => {
|
||||
expect(buildStatRows({ ...base, playable: "" }).find((r) => r.key === "mode")?.value).toBe(DASH);
|
||||
});
|
||||
});
|
||||
|
||||
describe("fmtMode", () => {
|
||||
it("appends the encoder only for a transcode with a known encoder", () => {
|
||||
expect(fmtMode("transcode", true)).toBe("transcode · GPU");
|
||||
expect(fmtMode("transcode", false)).toBe("transcode · CPU");
|
||||
expect(fmtMode("transcode", null)).toBe("transcode"); // encoder unknown → bare mode
|
||||
expect(fmtMode("transcode")).toBe("transcode");
|
||||
expect(fmtMode("remux", true)).toBe("remux"); // not a transcode → no encoder suffix
|
||||
expect(fmtMode("")).toBe(DASH);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user