|
Some checks failed
CI / build-and-test (push) Failing after 31s
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. |
||
|---|---|---|
| .. | ||
| TeamsISO.App | ||
| TeamsISO.Console | ||
| TeamsISO.Engine | ||
| TeamsISO.Engine.NdiInterop | ||
| tests | ||
| .gitkeep | ||