"Generate PGO data" fails intermittently when a VB-Cable / VAC endpoint
isn't enumerable at the moment FreeDV starts a UT: FreeDV pops a fatal
"device cannot be found" message box and aborts.
The old "Start Windows Audio Service" step only polled WMI
Win32_SoundDevice (driver nodes, not the MMDevice endpoints FreeDV
uses), had an operator-precedence bug in its until-condition
((A -and B) -or C), ran once minutes before the test, and never checked
the specific endpoints the job needs.
* ci/Wait-AudioDevices.ps1: restarts AudioEndpointBuilder/audiosrv and
polls "Get-AudioDevice -List" (the active-endpoint surface FreeDV
actually enumerates) until every required playback/recording endpoint
is present, nudging the audio stack again halfway through and dumping
full diagnostics before failing on timeout.
* ci/Invoke-PgoProfileCollection.ps1: runs the endpoint wait +
GeneratePGOProfiles.ps1 and retries the whole thing up to 3x, since an
endpoint can also drop mid-run right after SoX releases the capture
device. Partial .profraw files are cleared between attempts.
* collect-pgo-profile now calls these; the Generate PGO data timeout
goes 10 -> 25 min to cover the retries.
* GeneratePGOProfiles.ps1: best-effort wait for the endpoints before
each of the TX and RX passes.
The identical "Start Windows Audio Service" step in the test job is left
as-is here; this change is scoped to collect-pgo-profile.
Claude-Session: https://claude.ai/code/session_01AYJXLpaEyPTsegX93QzE1a
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* Windows: increase audio block time to match other implementations.
* Set Communications category for FreeDV streams.
* Fix compiler errors.
* Another attempt at fixing compiler errors.
* Fix typo.
* Disable HW offload.
* Add PR #1300 to changelog.
* AudioClientProperties needs to be set before getting mix format.
* Try including intttypes.h.
* Try FALSE in GetBufferSizeLimits.
* Try enabling offload first, then fall back to no offload.
* Try installing audio drivers as administrator.
* Fix syntax errors.
* Fix typo in script.
* Fix additional typo.
* Take wakeup time into account for timeout calculation.
* Fix incorrect cast.
* Use same method of retrieving cert as for Virtual Audio Cable.
* Update driver install script to create missing Registry key.
* Round up to next millisecond.
* Add basic implementation of IAudioClient3, no tuning of periods yet.
* Fix typo.
* Fix another compiler error.
* Enable Windows on ARM builds for FreeDV.
* Use test branch to make sure no other problems compiling.
* Force certificate store creation to work around CI failure.
* Fix typo.
* Fix syntax errors.
* Choose the correct installer to use.
* Fix rename.
* Disable Windows on ARM CI testing.
* Revert "Use test branch to make sure no other problems compiling."
This reverts commit e6be639275.
* Add PR #1297 to changelog.
* Cleanup driver setup in CI environment.
* Add debugging.
* Fix VAD path.
* Trust certificate prior to install.
* Need to run devgen first.
* Install WDK.
* Find location of devgen.exe.
* Fix syntax errors.
* Try shorter path for search.
* Last ditch effort to find devgen.exe.
* Debugging: output all Windows SDK files.
* Remove dereference to devgenpath to force command output to print.
* Retry filter.
* Figured out actual path to use for devgen.exe.
* Use GH Action way of referencing environment variables.
* Add quotes around devgen.exe path.
* Need to add & to the beginning of command.
* /add, not add.
* Try 4.70 version of VAC.
* Forgot .zip.
* CI cleanup.
* Update signed Windows release script.
* No need to install PyTorch for Windows tests.
* Use windows-2025 to be more in line with Windows ARM runners.
* Forgot to update excludes.
* Revert to windows -2022.