dragon-iso/src/TeamsISO.Engine
Zac Gaetano ca124540a7 fix(parser): accept 'MS Teams' brand prefix from current Teams NDI broadcasts
The new Microsoft Teams desktop client (observed against a live meeting on Teams 26106.1906.4665.7308) emits NDI source strings of the form

    WOOGLIN (MS Teams - Brendon Power)

    WOOGLIN (MS Teams - (Local))

    WOOGLIN (MS Teams - Active Speaker)

rather than the legacy 'MACHINE (Teams - ...)' shape NdiSourceParser was written to. As a result every Teams source was rejected and TeamsISO showed zero participants in real meetings.

Refactor the parser to recognize 'Teams', 'MS Teams', and (defensively) 'Microsoft Teams' as brand prefixes — longest first so 'MS Teams' isn't shadowed. Also recognize reserved suffix tokens after a dash ('Active Speaker' / 'Audio' / 'Audio Mix' / 'Screen Share') so the new active-speaker output is correctly classified as ActiveSpeaker rather than misread as a participant named 'Active Speaker'.

Tests: kept all legacy cases, added MS Teams + Microsoft Teams variants and the new dash-prefixed reserved-suffix cases. 69/69 unit tests passing; verified end-to-end against a live Teams meeting where TeamsISO.exe now shows '(Local)' and 'Brendon Power' in the Participants DataGrid.
2026-05-07 23:33:43 -04:00
..
Controller feat(controller): add IIsoController and IsoController implementation 2026-05-07 15:28:27 +00:00
Discovery fix(parser): accept 'MS Teams' brand prefix from current Teams NDI broadcasts 2026-05-07 23:33:43 -04:00
Domain feat(domain): default global framerate to 59.94p (user's primary production target) 2026-05-07 15:21:58 +00:00
Interop refactor(interop): NdiRuntimeProbe now matches by prefix to handle NDI runtime version strings 2026-05-07 15:36:26 +00:00
Logging feat(logging): add EngineLogging.CreateConsole helper 2026-05-07 15:16:17 +00:00
Persistence feat(persistence): add ConfigStore with atomic JSON writes and corruption-safe load 2026-05-07 15:12:01 +00:00
Pipeline feat(pipeline): add managed BGRA nearest-neighbor scaler with aspect modes 2026-05-07 15:37:07 +00:00
TeamsISO.Engine.csproj feat(pipeline): add IsoPipeline with lifecycle and restart supervisor 2026-05-07 15:26:54 +00:00