dragon-iso/src/tests/TeamsISO.Engine.Tests
Zac Gaetano 2c607a70ff
Some checks failed
CI / build-and-test (push) Failing after 31s
Audio peak: high-water mark across UI poll interval
The audio capture loop runs at ~50Hz publishing every buffer's peak via overwrite; the UI stats poll reads at 1Hz. With overwrite semantics the UI sees one of every ~50 audio frames per second — loud transients between reads were invisible to the VU meter.

New design: NdiReceiver maintains an atomic high-water mark, max-updated on each audio frame via CompareExchange CAS loop. IsoPipeline.GetStats now calls ConsumeAudioPeak() which atomically reads + resets to 0, so the next UI tick reflects the loudest sample seen in the next 1s window.

Added PeekAudioPeak() for non-consuming reads (e.g. external diagnostics dashboards that poll faster than the UI).

FakeNdiInterop gained a ReceiverAudioPeaks queue + CaptureAudioPeak override so tests can drive the audio path. 4 new tests in NdiReceiverTests cover: empty case, single-frame consume+reset, max-hold across 3 frames, no-frame leaves high-water mark untouched. 104 + 46 + 9 = 159/159 passing.
2026-05-10 14:04:04 -04:00
..
Controller feat(ndi): plumb NDI groups (discovery + output) through the engine 2026-05-07 23:48:49 -04:00
Discovery feat(engine): refresh discovery affordance + idempotent re-Add handling 2026-05-10 09:41:29 -04:00
Domain fix(parser): accept 'MS Teams' brand prefix from current Teams NDI broadcasts 2026-05-07 23:33:43 -04:00
Fakes Audio peak: high-water mark across UI poll interval 2026-05-10 14:04:04 -04:00
Interop feat(interop): add NdiRuntimeProbe with version-mismatch result 2026-05-07 15:24:31 +00:00
Logging feat(logging): rolling file sink under %LOCALAPPDATA%\\TeamsISO\\Logs 2026-05-08 00:47:25 -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
GlobalUsings.cs feat(domain): add core enums (NdiSourceKind, IsoState, AspectMode, AudioMode, TargetFramerate, TargetResolution) 2026-05-07 15:10:29 +00:00
SmokeTest.cs test(engine): scaffold TeamsISO.Engine.Tests xUnit project 2026-05-07 15:08:38 +00:00
TeamsISO.Engine.Tests.csproj test(engine): scaffold TeamsISO.Engine.Tests xUnit project 2026-05-07 15:08:38 +00:00