* Set thread names for additional threads in system.
* Fix linting errors.
* Add additional thread names for Mac and Windows.
* Use const reference for SetThreadName.
* Fix more linting errors.
* Fix PortAudio compiler error.
* Add missed thread names.
* VOX tone atomic doesn't need seq_cst.
* Only wake up non-RT playback thread if FIFO is less than half full.
* Only wake up the TX/RX threads after all audio received.
* Optimized RADE is only for radio integrations.
* Add missed changes.
* Need to build integ in order for lint to work.
* remove invalid target.
* Fix additional Linux compiler failures from previous changes.
* Additional compiler fixes.
* Exclude duplicate tests.
* Fix macOS CI failure.
* Create infrastructure to build freedv-flex binaries.
* Begin porting some ezDV Flex files to freedv-gui.
* Do not build Flex waveform for Windows.
* Port FlexVitaTask from ezDV, link to main() to print available radios.
* Fix Linux compiler error.
* Disable mimalloc for Flex waveform.
* Port FlexTcpTask from ezDV.
* Add beginning of initialization logic for waveform.
* Set up IRealtimeHelper for Flex waveform.
* Adjust FIFO usage to match what FlexVitaTask expects.
* Add linkage between TCP and VITA tasks.
* Use correct FIFO size calculation.
* Force single-threading for PyTorch/numpy.
* We don't need verbosity for RADE.
* Need to let the VITA task know about the radio IP too.
* Enable rtkit.
* Use rtkit for FlexVitaTask too.
* Fix issue causing minPacketsRequired_ to continually increase.
* Adjust MAX_VITA_SAMPLES to reflect no longer doing resampling itself.
* Fix spelling mistake.
* Update comment.
* Try previous TX scale factor to make a TX level 100 = ~100W.
* Tweak TX scale factor so we don't actually overdrive the signal.
* Don't build waveform by default.
* Enable AppImage generation for waveform.
* Update wrong script reference in CI build.
* Use correct filename generated by linuxdeploy.
* Warning cleanup.
* Tweaks to hopefully help reduce dropouts.
* timestamp_type defs from Flex SDK didn't work for some reason.
* Make sure we're always sending stuff back to the radio.
* Try ms-disable-python-gc again as it has a ~10% CPU usage reduction on RX.
* Try implementing timestamp type changes from Flex waveform SDK again.
* No difference with unconditional reads.
* Use Semaphore for pausing TX/RX threads.
* Actually eliminate audio dropouts.
* Connect UDP socket to slightly reduce system CPU consumption.
* Fix memory corruption from recent changes.
* Revert "Use Semaphore for pausing TX/RX threads."
This reverts commit cf7d076ef1.
* Normalize incoming audio so that we don't clip when converting to int16.
* Initial support for sending EOO.
* Add 40ms additional silence to ensure SmartSDR fully transmits EOO.
* Add the 40ms of silence elsewhere to avoid interference with regular freedv-gui.
* Add hooks to at least get FreeDV Reporter connections up and running.
* Add spotting support for FreeDV Reporter.
* Update README based on attempting to compile for rPi.
* Send waveform cleanup commands on startup (avoiding duplicate FDVU/FDVL entries in SmartSDR for Mac).
* Forgot to actually use report_wo role for FreeDV Reporter.
* Work around segfault when switchingn away from FDVU/FDVL.
* Fix stuttering issue on beginning TX.
* Integrate AGC to Flex waveform.
* Fix waveform compiler errors.
* Sleep for as long as it takes to find a radio on the network.
* Add support for processing SSDR_RADIO_ADDRESS envionrment variable.
* Fix compiler errors.
* Ephemeral ports for VITA don't actually work.
* Use same version number as FreeDV proper, cleanup FreeDV Reporter init.
* Support reporting the grid square if the radio has a built-in GPS.
* Add Speex noise reduction to TX pipeline.
* Code cleanup.
* Fix deadlock during radio discovery.
* src/os only needs wxWidgets if on Windows.
* Add missing packages for building Flex AppImage.
* GPS updates use a different delimiter than other update types.
* GitHub runner is forcing Ubuntu 24.04 for ARM.
* Revert "GitHub runner is forcing Ubuntu 24.04 for ARM."
This reverts commit e267fe216b.
* Add cleanup and logging to FreeDV Reporter logic.
* Need to capture newGridSquare.
* Bail out on empty grid square.
* Refactor ReportingController to separate file.
* Report RX prior to receiving callsign.
* Generate waveform Docker container.
* Need Docker Buildx action.
* Fix AppImage filename.
* Check for null before trying to report RX.
* Increment to 2.0.3.
* Fix compiler errors from previous merge.
* Fix typo from previous PR.
* Force mimalloc to be built in Release mode.
* Forgot to support universal macOS build for mimalloc.
* Switch Flex container to Ubuntu, install AppImage prerequisites.
* Remove add-apt-repository call.
* Can't rely on using FUSE, try --appimage-extract-and-run.
* Initialize sync_ variable to avoid spurious calls to FreeDV Reporter.
* Do appimage-extract during container build process.
* Extract AppImage prior to running Docker.
* Add debugging to make sure we're deploying the correct contents.
* Include mimalloc config from main FreeDV application.
* Add README for the Flex waveform.
* Fix typos in README.
* Add PR #1018 to changelog.
* Remove space between number and 'dB'.
* Linux: redraw mic/speaker level slider on update to ensure it remains in sync.
* Add PR #1021 to changelog.
* Make sure redraw happens on some environments.
* Revert accidental change to RADE build config.
* Use rigerror2() for friendlier Hamlib errors.
* Try GH mirror of Opus.
* Make sure we don't use rigerror2() for Ubuntu 22.04.
* Add PR #1020 to changelog.
* Don't write UT features until the end of TX/RX.
* Attempt 2 at preventing spurious Linux asan failures.
* Add PR #975 to changelog.
* Revert "Attempt 2 at preventing spurious Linux asan failures."
This reverts commit 8f53d1a980.
* Another attempt at preventing spurious asan failures.
* Revert back to k6aq.net hosted wheels.
* Resolve warnings in pipeline tests.
* ResampleStep: skip processing if no samples available.
* TapStep: execute in separate thread.
* Fix issue causing mic audio to stop when using Speex.
* Add a bit more time between loads.
* Use -O3 for libsamplerate to see if that helps.
* Revert "Add a bit more time between loads."
This reverts commit 1273d6531e.
* Disable content caching during CI build.
* Add printout of sysctl for debugging.
* Try speexdsp resampling to see if we can reduce CPU usage.
* Slightly increase quality.
* Increase quality again.
* Fix monitor functions not producing audio.
* Reenable Instruments tracing.
* Experiment: update librade to grab sync and SNR while running RX.
* Update SNR retrieval to make sure it happens on RX thread.
* Bump up resample quality again.
* Go back to libsamplerate.
* Use same semaphore wait time calculation for macOS as with other platforms.
* Try 20ms time quantum.
* Try 40ms.
* Back to 60ms.
* Wait needs to be based on start of work.
* Revert "Go back to libsamplerate."
This reverts commit 86d1c640ff.
* Try maximum quality on speex resampler first.
* Go back to calling fwrite() immediately on FIFO read.
* Revert resampler changes, again.
* Try experimental RADE branch again.
* Out of left field: try 2.9ms quantum like what Chrome uses.
* Improve reliability of Linux rade_loss test.
* Smooth out longer than expected semaphore waits on macOS.
* Fix compiler errors.
* Put quantum back to 60ms.
* Fix compiler error.
* More experimentation with time quantums.
* Use relaxed atomic semantics for macOS worker counter.
* Back to 2.9ms due to mpp test failures.
* Disable processing stats.
* Time quantum should match buffer size.
* Remove unneeded variable.
* Time quantum was accidentally getting set to 0.
* Try to reduce standard deviation for macOS wait time.
* Revert previous change, try just halving the wait time.
* Try to reduce likelihood of scheduler contention on macOS.
* macOS: Set lower thread QoS for non-audio threads.
* Using infinite wait for ThreadedObject.
* Force lowest possible latency.
* We can reference the activity ID directly.
* Avoid crash on stop from previous changes.
* Revert recent PulseAudioDevice changes in case those are causing 22.04 tests to fail.
* Try different macOS flag to improve responsiveness.
* Remove memset call from TX handling.
* Disable real-time threading on macOS.
* Use setiopolicy_np() to make sure writing RADE features doesn't interfere with the rest of the app.
* Resample input file for rade_loss test to lower CPU usage.
* Try soxr resampler for further CPU usage reductions.
* Forgot missed file.
* On macOS CI runs, we should also use the Homebrew soxr package.
* Revert soxr adoption, does not meet real time safety guidelines.
* Try deferring feature file writes until the end again.
* Turn on PYTHONOPTIMIZE.
* Read/write entire blocks from FIFO, not just single samples.
* Warning cleanup.
* Allow partial output if FIFO gets empty.
* Remove unneeded memset().
* Fix race condition preventing user from properly being hidden from FreeDV Reporter on startup.
* Downgrade additional pipeline threads to Utility QoS.
* Try malloc-free FIFO for RADE steps.
* Use 2048 samples instead.
* Use PreAllocatedFIFO in RADE steps to avoid cache misses.
* Use MKL enabled version of numpy for Intel macOS.
* Try Intel MKL version of PyTorch for macOS.
* Fix GH compiler issue on macOS ARM.
* Replace sleep_for with semaphore for TapStep.
* Only signal semaphore every 100ms like with previous sleep_based impl.
* Replace additional sleeps with semaphore waits.
* Fix compiler error.
* Adjust timing thresholds for dumping feature debug data.
* macOS: reenable real-time threading as a test.
* Make sure both RX and TX threads start processing at the same time.
* Update missed shared_ptr reference.
* Remove hidden allocation due to use of lambdas.
* Undo FIFO size reduction.
* Suppress spurious PlaybackStep completion messages.
* Fix CI compiler error.
* Use Time Profiler to get a better idea as to why RADE steps intermittently take longer to execute.
* g_voice_keyer_tx should use acquire/release.
* Revert "Use Time Profiler to get a better idea as to why RADE steps intermittently take longer to execute."
This reverts commit 711f83be0c.
* Only grab TX status once through the GUI timer.
* Only get sync once per timer run.
* Remove use of wxThread from TxRxThread.
* Use relaxed for retrieving sync status.
* Test: disable Mic In plot.
* Try using relaxed memory ordering.
* Revert "Use relaxed for retrieving sync status."
This reverts commit 364bc62e8c.
* Revert "Try using relaxed memory ordering."
This reverts commit bac5a8a799.
* One more attempt at using Speex resampler.
* Add optimizations for PlotScalar in case it's impacting test runs.
* Reenable lower quality level for plots.
* Try quality level 6.
* Actually fix spurious playback complete log messages.
* Back to quality level 10.
* macOS: Begin wait from end of work.
* Try DISPATCH_TIME_FOREVER.
* Revert "Try DISPATCH_TIME_FOREVER."
This reverts commit a913e8573e.
* Revert "macOS: Begin wait from end of work."
This reverts commit 7c719a3e3c.
* Add crazy hack to inhibit the UI thread while the pipeline is executing.
* Try checking pipeline spinlock every time we have to redraw something.
* Try actually sleeping instead of yielding.
* Revert crazy hack.
* Use separate RX thread instead of ThreadedTimer.
* Begin splitting GUI timer work into separate timers.
* Only update sync and TX state on the timers that need it.
* Defer item updates until highlights are updated.
* Delete accidentally added files.
* Try smaller block sizes.
* Try bigger block size for comparison.
* Re-disable real-time threading.
* Preallocate what we need to output RX/TX features.
* No need to duplicate bitmap to draw onto graphics context. (Reduces number of mmap() calls req'd on macOS.)
* Reenable real time threading.
* Force 50ms time quantum regardless of buffer size.
* Update reporting timers to attempt to guarantee that only one is active at a time.
* Add safety offset to BlackHole virtual audio device.
* WIP: Reduce CPU usage in PlotWaterfall.
* Fix compiler errors and rendering bugs.
* Fix compile error for real this time.
* Don't update FreeDV Reporter window if it's not actually visible.
* Back to 60ms time quantum.
* Back to 50ms.
* Slightly adjust how IsShownOnScreen() suppresses updates.
* Just use an array instead of map for PlotScalar.
* Prevent propagation of changes to FreeDV Reporter window unless something actually changed.
* Tweak Speex resampler quality again.
* Resample level 7.
* Don't need to recreate ThreadedTimer thread every time we need to restart.
* Try not running xctrace to see if we're close to fixing the issues.
* Wait a bit more time between loop iterations when playing UT recordings.
* Revert "Try not running xctrace to see if we're close to fixing the issues."
This reverts commit decff7a5b2.
* Add Time Profiler to xctrace files.
* Make all FreeDV Reporter rows invisible when window is not visible.
* Make FreeDV Reporter object synchronous.
* Add support for queuing on parent object thread instead of own.
* Fix Linux segfault.
* Use macOS Dispatch for ThreadedObject.
* Try disabling threading in TapStep.
* Reenable threading for TapStep.
* More quality level tweaking.
* Re-disable separate threading.
* Only allocate memory for feature storage if necessary.
* Use GCD for TapStep.
* Fix compiler error on Linux.
* Tweak maximum sizes of FIFOs based on recorded max usage during ctests.
* Additional adjustments to FIFO sizes.
* More tweaks of FIFO sizes for Linux.
* Disable workflow telemtry for macOS runs.
* Fix syntax error.
* Revert "Use GCD for TapStep."
This reverts commit e1522a7ab3.
* Fix memory violations when using PlotScalar.
* Fix rendering bugs from previous optimization.
* Try only returning numInputSamples at a time from vocoders.
* Revert src/pipeline to last passed build.
* Quality level 8 works better locally.
* Try 40ms blocks on macOS.
* Reduce the number of context switches while handling FreeDV Reporter traffic.
* Try reducing FIFO sizes again.
* Try reverting PyTorch upgrade.
* Didn't fully revert PyTorch changes.
* SoX is ignoring errors from Core Audio, use buffer sizes known to work.
* SoX divides by 8 to produce frame size sent to CoreAudio.
* Reset resampler back to last known working level.
* Update Linux/macOS audio code to match Windows implementation more closely.
* Try 40ms blocks again.
* Add middle click reset support for speaker/mic level.
* Revert "Try 40ms blocks again."
This reverts commit 3ca16e0335.
* Have FreeDV itself load test.wav due to performance limitations in GH environment.
* GitHub Actions: Disable iCloud (!)
* Need to set config value and not the slider (middle-click).
* Disable xctrace collection.
* Disable mic/speaker level slider unless modem is active.
* Return to libsamplerate for ResampleStep.
* MacAudioDevice cleanup.
* Remove unneeded warning message.
* Need memory_order_acquire for legacy sync state.
* Try RADE main branch again.
* Debugging: see if anything else is running that shouldn't be.
* GitHub: disable Spotlight too.
* Fix typo in README.
* Reenable macOS runner debugging.
* Include mimalloc for a bit extra boost.
* Disable mimalloc ctests.
* Disable macOS debugging again.
* mimalloc wasn't actually being used on macOS.
* mimalloc: decrease purge interval.
* Fix hidden memory allocation during TX output handling.
* Fix additional hidden memory allocations.
* Unit test: make sure rade_loss shows sync state.
* More hidden memory allocation removals.
* Further reduce duplicate memory allocations.
* Fix voice keyer bug reported by @barjac.
* More cleanup of unneeded allocations.
* Fix mini versions of scalar plots (discovered during testing).
* Remove some wxAsyncCallEventFunctor instances from gprof profile.
* Fix compiler error.
* Additional refactoring and memory allocation reduction.
* Extend purge delay a bit just in case.
* Allow GitHub Actions to re-execute test in case of an intermittent failure.
* Fix typo in rade_reporting test.
* Minor reduction in allocations during FreeDV Reporter RX handling.
* Use std::atomic for PlaybackStep.
* Revert "Use std::atomic for PlaybackStep."
This reverts commit 0ee65a38eb.
* Return nullptr to PlaybackStep if not actively playing.
* PlaybackStep: wait for main thread to finish stopping TX instead of previous approach.
* Fix rendering issue going between TX and RX.
* Fix issue where VK monitor plays previously TX audio prior to current VK cycle.
* Fix segfault in Hamlib on pressing Stop.
* Add missed destroying check while setting PTT.
* Additional cleanup in rig_control due to previous commits.
* Adjust constants based on Instruments analysis.
* Update comments.
* Try reading only FRAME_DURATION at a time during TX.
* Speex step doesn't need to be locked.
* Use shared pointers instead of locking during EqualizerStep.
* Move file read out of the RT context.
* Remove file I/O from RT context for RecordStep too.
* Try requesting 10ms blocks from Windows.
* Allow all GH tests to run.
* Revert back to 20ms frames.
* Minor tweak to Easy Setup window formatting.
* Revert "Revert back to 20ms frames."
This reverts commit b67313cdef.
* Update freedv-ctest-fullduplex.conf.tmpl
Disable multiple RX for testing.
* Turn off multiple RX for reporting tests as well.
* Force single threaded if only one step is available.
* Revert changes to freedv-ctest-fullduplex.conf.tmpl.
* Revert changes to freedv-ctest-reporting.conf.tmpl.
* Need to wake up all threads whenever we get a block of audio.
* Fix compiler errors.
* Revert previous changes as they didn't help.
* Refactor ParallelStep to remove usage of locks.
* Fix compiler errors and warnings.
* Fix issue preventing EOO from being sent.
* Another attempt at fixing the test failures.
* Use semaphores to wake up ParallelStep threads on receipt of new audio data.
* Fix compiler errors.
* Forgot to wake up helper threads.
* Helper threads should wait until ended or until there's data.
* Fix compiler error.
* Increase fifo sizes for FreeDV TX and RX steps.
* macOS: add protection in case semaphore wasn't created.
* Prevent waterfall from clearing itself when RX mode changes.
* Add logic to read in any data that may have come in during processing.
* GitHub Actions: run all Windows tests even if one or more fail.
* Revert "Add logic to read in any data that may have come in during processing."
This reverts commit 11ce99bb6a.
* Meter out only a little bit of data at a time.
* Revert "Meter out only a little bit of data at a time."
This reverts commit 35e81d6ce5.
* Use 20ms blocks instead of 10ms.
* Revert "Use 20ms blocks instead of 10ms."
This reverts commit 1ec6fb308a.
* Update FRAME_DURATION instead.
* Only process entire TX blocks at a time.
* Set sRGB color space for all open windows.
* Change version tag to rc to reflect release candidate status.
* Revert waveform FIFO changes from previous PR.
* libsamplerate needs to be built with optimizations on macOS and Windows.
* Fix Windows build failure.
* Update LLVM MinGW in Windows CI build to match version used for packaging.
* Test: use RADE main to see if Python GC actually matters.
* Automatically switch to new default audio device if the system loses existing one.
* Display error if non-default devices go away.
* Add device name to existing error strings.
* Add handler at engine level for device list changes. Does nothing yet.
* Prevent accidental deadlock when enqueuing functions onto ThreadedObject.
* Disable OnDeviceListChange logic; only handle active device disconnects.
* Attempt to restart devices if they stop unexpectedly.
* Defer stop to make sure remove handler runs first.
* Experiment: disable Python GC in RADE code to see if macOS pass rates improve.
* Fix possible deadlock issue in FreeDV Reporter code.
* Split out audio latency and PTT response time in logs per email discussion.
* Improve reliability of original PR logic by listening for AVAudioEngineConfigurationChangeNotification instead.
* Fix compiler error in GH environment.
* Make sure we join the new workgroup if the device ID changes.
* Remove unused code.
* Revert unnecessary ThreadedObject change.
* Remove extra whitespace.
* Revert ThreadedObject for real.
* Log audio underflows on macOS.
* Remove unneeded include.
* Get stuff off the audio thread that shouldn't be there.
* Make sure ThreadedObject doesn't hang.
* See if we can avoid FreeDV Reporter window crash on Windows.
* Tweak ThreadedObject event loop so we can execute more than one function between sleeps.
* Main window UI fixes:
1. Make FreeDV Mode indicator re-center itself every time it changes.
2. Add additional space for radio mode at bottom.
* Revert TapStep changes as we're better off not locking at all.
* Fix FreeDV Reporter tracking crash for real.
* Don't allow columns in FreeDV Reporter window to shrink.
* Warning cleanup.
* Try creating tiny column at end to fix Linux/Windows formatting problem.
* Remove minimum width logic as it didn't work.
* Sort equal items by connect time to keep rows stable.
* Fix deadlocks and crashes in the Audio Options window.
* Actually prevent same rows from moving around in FreeDV Reporter window.
* Deselect FreeDV Reporter row after filter change completes.
* Defer sending initial station info to FreeDV Reporter server until fully connected.
* Make sure we're not accessing invalid memory when getting audio device latency.
* Make sure PTT button is in the correct state when pushed.
* Fix From Mic plot rendering bug.
* Update changelog.
* Fix fargan_config.h issue when not building universal binaries.
* Add additional dependencies to force RADE to be built first.
* Try matrix build of macOS to verify both universal and non-universal builds.
* Fix syntax error.
* Update conditionals to actually evaluate properly.
* Need single quotes for matrix comparison.
* Bring back original permissions workaround for some builds.
* Oops, copied the wrong permissions lines from previous commit.
* Revert GH action changes.
* Integrate SNR reporting from latest RADE.
* Show -- for SNR when using RADE and not in sync.
* Suppress SNR display when not in sync for legacy modes.
* Ensure that __pycache__ folders are cleaned up by the Windows uninstaller.
* Fix syntax errors.
* Might as well include changes to macOS GH action to stash result.
* Prevent EOO from being repeatedly sent during TX stop.
* Make sure we don't accidentally overflow the output FIFO when transmitting EOO.
* Add additional logging to verify EOO behavior.
* Fix issue preventing EOO from being sent on voice keyer completion.
* Scale EOO the same as the primary waveform.
* Remove #ifdef code per PR comment.
* Use main branch for RADE.
* WIP checkin so we can build in Windows environment.
* Use version of opus built by RADE to avoid Linux compiler errors.
* Bring back fargan_config.h generation.
* Add logic for automatically running RX/TX tests.
* Add GH action to load loopback audio driver.
* Add ctest configuration file.
* Try loading modules after installing packages.
* Add additional required packages.
* Add automated test script.
* Temporarily disable GH action changes.
* Have RX take 60 seconds as well.
* Ubuntu upgrade broke /bin/sh.
* Fix issue preventing no zero message from printing.
* Print sync status once per second and validate no resyncs.
* Fix spelling error.
* Switch to RADE main.
* Another attempt at enabling aloop in the GH action.
* Use _ instead of - for module name.
* Use pacmd to create virtual sound devices instead.
* Check sync state every 100ms instead of every 1s.
* Fix issue preventing sync changes from making it to the log.
* Add full duplex test.
* Add full duplex tests to CMakeLists.
* Generate sine wave for TX.
* Update GH action to allow new ctests to run.
* Add debugging for UT.
* pipewire-pulse is needed to actually use PipeWire.
* Install suggested packages to get additional required commands.
* Can't use --install-suggests, so explicitly mention packages.
* Enable pipewire service.
* Fix call to helper Python script.
* Show status of pipewire prior to running tests.
* Remove status display from GH action.
* Use module-loopback to simulate TX plugged into RX.
* Try explicitly starting pipewire.
* Use strict 20ms cadence for TX/RX thread instead of relying on the audio subsystem.
* Need to install wireplumber as well.
* Update regular expression in ctest as sync change message isn't printed unless there's a problem.
* Add RADE to ctests.
* RADE ctest pass wasn't actually a pass.
* Need to explicitly check for LINUX for PulseAudio based ctests.
* Reenable PortAudio build.
* Invert test criteria.
* Show pipewire status just before thye test run.
* List sink info prior to each test.
* Make sure virtual devices aren't suspended.
* Need to have the suspension disable code in another file.
* Actually, installing pulseaudio isn't a good idea.
* Need a window manager for things to refresh properly.
* Display wireplumber info after FDV start.
* Add additional sleep to guarantee that FreeDV is listening when wireplumber status is printed.
* Add pw-top for additional info.
* dbus needs to be running for pipewire to work.
* Need to wait a bit for Xvfb to become available.
* Get additional pipewire logs prior to UT run.
* Install/run rtkit too.
* Attempt to get pipewire logs after test execution.
* Looks like we still need to start pipewire manually.
* Further increase pipewire debugging.
* Too much debugging output before.
* Upgrade packages first before installing new ones.
* We weren't actually running 24.04 on GH.
* Adjust packages due to using 24.04.
* Suppress spellcheck issue.
* Disable pipewire debugging.
* Test changes to PulseAudioDevice to improve dropouts.
* Update tests to reflect 1 resync per 120s proposed threshold.
* Disable additional debugging output.
* Allow override of test audio devices from the command line.
* Enable ctests on macOS.
* getSync() isn't thread safe, causing false UT failures.
* Install virtual audio devices in CI environment for macOS.
* Use script to build drivers instead.
* Oops, forgot to remove some code first.
* Adjust permissions of script.
* Make tests work on Linux again with loopback devices.
* Attempt change to make virtual audio devices actually build.
* Try building on x86 macOS.
* Fix quote escape issues.
* More quote escape issues.
* Forgot missed folder change.
* Enable mirrored virtual audio devices.
* Fix incorrect device names in ctest execution.
* Need to append '2ch' to the other device names too.
* Clear sync when transmitting.
* Grant microphone access to FreeDV.
* Need to back out one of the changes due to voice keyer problems.
* Attempt to fix CI failures.
* Take screenshot of macOS CI environment for debugging.
* Let's try running the script separately to get a screenshot.
* Screenshot was in the wrong place.
* Need to grant access to provisioner for microphone.
* Alternate way of granting permissions.
* Oops, remove call to tccutil.
* Per PLT meeting, we shouldn't drop sync at all.
* Shorten test time to 60s.
* More tweaks to make sure that the devices are correct on Linux.
* Disable screen capture.
* Additional fixes to resolve script problems on macOS.
* I don't think previous PulseAudio changes made anything better.
* Improve dropouts when using PulseAudio/pipewire.
* Revert "Improve dropouts when using PulseAudio/pipewire."
This reverts commit f16c27f4d3.
* Have stream write callback get audio data from higher level code.
* Add PowerShell script for Windows testing.
* Move ctest files into a separate location for organization purposes.
* Add parameters for PowerShell test script.
* Add help text for the script.
* Update conf file path due to previous commits.
* Fix syntax errors in script.
* Experiment: Test Windows installer on GH action.
* Try actually running full duplex test inside Windows.
* Add 5 seconds to allow Xvfb to fully come up.
* Update other actions to use latest checkout.
* Need VS command prompt.
* Add additional debugging.
* Maybe we need to throw an exception to make the GH action fail.
* List devices another way.
* Add yet more debugging.
* Fix audio devices.
* Try with 700D to at least make sure we're on the right track.
* Fix GH action.
* Fix syntax errors.
* Try installing VAC instead as FreeDV is crashing with Scream.
* Fix syntax error.
* Try different hardware ID.
* Ignore error code that actually means success.
* Oops, fix syntax error.
* Try earlier version of VAC.
* Fix archive commands.
* Fix path.
* Probably need to start AudioEndpointBuilder too.
* Stop services first.
* Print out any errors that might be getting thrown.
* Revert "Print out any errors that might be getting thrown."
This reverts commit 15e3908c80.
* Disable test GH action for Windows and investigate failure later.
* Reenable Windows testing with new way of debugging.
* Add logging based on clues from Windows event log.
* Revert "Add logging based on clues from Windows event log."
This reverts commit de4f11362e.
* Use procdump to get a crash dump.
* Full dump seems to take a while.
* Run procdump in the background.
* Log audio errors.
* Print device name in error message.
* Make sure message box doesn't display.
* Enable additional PortAudio debugging.
* Add yet more logging.
* Add additional Registry key to ensure FreeDV has microphone permissions.
* Need to add Registry key.
* Add more keys to try to force microphone permission.
* Clean up debugging, add tests for RADE/700E/1600.
* More cleanup.
* Include very basic Python install in the FreeDV Windows installer.
* Bump version to 2.0.0 devel.
* Adjust pth file to allow pip to work.
* Create post-install script. Not tied into the installer yet.
* Install needed packages during setup.
* Fix issue preventing uninstall commands from being properly added to the installer.
* Add RADE binaries to installer for initial tests.
* Suppress RADAE/RADE in code spelling check.
* Fix additional compiler errors.
* Fix GitHub actions on Linux and macOS.
* Print API version later on startup so it'll actually show up in the Windows console.
* Enforce minimum 16 kHz sample rate for voice keyer files.
* Disallow sample rates lower than 16000 in audio config.
* Initial support for RX using librade.
* Adjust dependencies in CMake infrastructure to make sure RADE/Opus build before FreeDV code.
* Add GUI for RADE.
* Add forgotten files.
* Add initialize/finalize calls for RADE.
* Add progress text to post-install script.
* Adjust paths based on recent RADE commits.
* Add basic support for RADE TX.
* Output EOO on end of TX.
* Fix error preventing Windows installer from being created without 2020 mode.
* Change working directory to folder containing freedv.exe.
* Remove quotes from messages in post-setup script.
* Fix compiler errors.
* Fix assertion failure in PlaybackStep.
* Fix assertion failure in FreeDVInterface.
* Suppress warnings during post-install.
* Get missed bugfixes from previous PR.
* Test changes to get GH actions working again for Windows.
* Forgot to install WINE in GH action.
* Try win64 instead of win32 for WINE.
* wine32 and not wine64
* Try different way of installing wine.
* Remove packages that don't exist.
* Oops, actually installed Python 3.12.7.
* Use normal Python installer instead of wenv.
* Need to make sure wine runs in console-only.
* Use Wine from Ubuntu.
* Install wine32 too.
* Ignore return value.
* Use xvfb since trying to bypass doesn't work for winecfg.
* s/xvfb/xvfb-run/
* Separate WINE install from Python.
* More tweaks to the GH workflow.
* wine64 instead of wine
* Use WINEARCH when creating env.
* test changes
* Start xvfb separately.
* xvfb -> Xvfb
* Add debugging
* Forgot :
* Make WINE think it's Windows 10.
* Back to using wine-staging.
* Reenable xvfb.
* Fix cmake invocation.
* Integrate BuildOpus changes from RADE.
* Ensure Opus is built for minimum supported FreeDV version.
* Warning cleanup.
* Ensure RADE is actually built as a universal binary.
* Include basic Python into the .app file.
* macOS version now builds. Still need to figure out how to get modules installed.
* Resolve problems preventing proper execution of the macOS binary.
* torchvision isn't necessary.
* Fix reporting so that we report RADE instead of 'unk'.
* Expire devel versions of FreeDV after six months.
* Attenuate RADE TX by 4dB to avoid needing to adjust TX Attenuation dial just for that mode.
* Disable 2020/2020B on all platforms.
* Stop building 32 bit Windows builds.
* Move RADE mode to the top of the mode list.
* Tweak preprocess function for RADE.
* Update Windows Python to 3.12.7.
* Re-disable ARM Windows builds while we figure out how to build it.
* Build Wine in signing environment.
* Update wxWidgets to 3.2.6.
* Workaround time display issue in FreeDV Reporter on macOS.
* Limit number of numpy/OpenBLAS threads due to known issues with their interaction with Python/C++ threading.
* Add additional guarding around Codec2 FIFO calls.
* Split off DMG creation into separate target to save time during development.
* Use dr-reset for initial release.