dragon-iso/src/TeamsISO.Engine.NdiInterop
Zac Gaetano d880941ad5
Some checks failed
CI / build-and-test (push) Failing after 26s
fix(ndi): canonicalize 'public' -> 'Public' in discovery + sender group strings (the real bug)
6+ hours of misdiagnosis today, root cause finally found this evening: the user's config.json persisted ndiGroups.discoveryGroups = 'public,teamsiso-input'. NDI group names are case-sensitive in the runtime. Teams broadcasts to the canonical 'Public' (capital P) group. Lowercase 'public' didn't match -> NDI Find returned zero sources forever. NDI Studio Monitor sees Teams sources because it uses default groups (no filter = 'Public'). Every TeamsISO launch that read the config got zero -> looked like a TeamsISO bug.

Fix: add NdiInteropPInvoke.NormalizeGroups that case-folds 'Public' specifically (the most common operator footgun) while passing through custom group names (e.g. 'teamsiso-input') verbatim. Wire it into CreateFinder and CreateSender. End-to-end test: restored bad lowercase config -> launched via Start Menu shortcut -> Serilog now logs 'NDI finder created with groups: Public,teamsiso-input' (note capital P) -> REST returns 2 participants. 264/264 tests passing (Engine 124 +12 NormalizeGroups cases, App 131, Integration 9).

Also adds InternalsVisibleTo on the NdiInterop project so the engine test project can cover the internal helper directly.
2026-05-16 18:33:49 -04:00
..
NdiInteropPInvoke.cs fix(ndi): canonicalize 'public' -> 'Public' in discovery + sender group strings (the real bug) 2026-05-16 18:33:49 -04:00
NdiNative.cs Wire engine audio peak metering — UI VU bars now animate 2026-05-10 13:28:26 -04:00
NdiNativeLibraryResolver.cs fix(ndi): resolve Processing.NDI.Lib.x64 via NDI_RUNTIME_DIR_V6 env var 2026-05-07 15:14:54 -04:00
NdiPInvokeHandles.cs feat(interop): add NDI 6 native bindings, handle types, and version constants 2026-05-07 15:34:54 +00:00
NdiVersion.cs fix(ndi): match the NDI 6 WIN64 runtime banner in version probe 2026-05-07 15:15:03 -04:00
Placeholder.cs feat(interop): scaffold TeamsISO.Engine.NdiInterop project 2026-05-07 15:08:21 +00:00
TeamsISO.Engine.NdiInterop.csproj fix(ndi): canonicalize 'public' -> 'Public' in discovery + sender group strings (the real bug) 2026-05-16 18:33:49 -04:00