dragon-iso/src/TeamsISO.Engine
Zac Gaetano 5a43c9cb6a
Some checks failed
CI / build-and-test (push) Failing after 30s
feat: per-ISO framerate/resolution/aspect/audio overrides + thumbnail BMP
Engine: IsoAssignment record gets optional Override (FrameProcessingSettings?). IsoController hydrates _overrides dict from config.json on startup, uses override at EnableIsoAsync, persists with assignment, exposes GetIsoOverride + SetIsoOverrideAsync. SetIsoOverrideAsync hot-swaps a running pipeline (Disable + 150ms delay + Enable) when the override changes.

REST: POST /participants/{id}/override (body: framerate/resolution/aspect/audio enum strings, all optional, missing fall back to globals); DELETE /participants/{id}/override clears. GET /participants now includes per-row effective {framerate, resolution, aspect, audio, isOverride} plus top-level globals block.

Web /ui: per-card collapsible override panel with four selects + Apply / Clear. OVR pill + cyan inset edge mark overridden rows. Open-panel state survives WS re-renders.

Desktop: per-row gear column in the v2 DataGrid opens IsoOverrideDialog (420x360) with four combos. Clear button removes the override.

Thumbnail endpoint switched from WPF JpegBitmapEncoder (NREs from non-UI HttpListener threads) to pure-managed 32bpp BMP encoder. Nearest-neighbor downscale to 192-wide. /participants/{id}/thumbnail.bmp; legacy .jpg URL still works.

Known limitation: ParticipantTracker regenerates IDs for display-name-keyed participants across process restarts, orphaning the persisted override. Override works within a session; cross-restart persistence is best-effort until the tracker is taught to use stable keys. Filed as task 43.
2026-05-15 15:31:32 -04:00
..
Controller feat: per-ISO framerate/resolution/aspect/audio overrides + thumbnail BMP 2026-05-15 15:31:32 -04:00
Discovery feat(engine): refresh discovery affordance + idempotent re-Add handling 2026-05-10 09:41:29 -04:00
Domain feat: per-ISO framerate/resolution/aspect/audio overrides + thumbnail BMP 2026-05-15 15:31:32 -04:00
Interop Wire engine audio peak metering — UI VU bars now animate 2026-05-10 13:28:26 -04:00
Logging fix: address review findings on tonight's commits 2026-05-08 01:01:00 -04:00
Persistence feat(persistence): add ConfigStore with atomic JSON writes and corruption-safe load 2026-05-07 15:12:01 +00:00
Pipeline Audio peak: high-water mark across UI poll interval 2026-05-10 14:04:04 -04:00
TeamsISO.Engine.csproj Investigate MF activation — Vortice 3.6.2 API mismatch, defer port 2026-05-10 20:39:23 -04:00