* Make sure RTSan-related code isn't added if not installed.
* Enable RTSan checks in GH Actions.
* Fix syntax error in GH action.
* Fix GCC compile failures.
* Use different GH workflow to get correct Clang installed.
* Split RTSan test into separate build and test steps
* Move LLVM installation to beginning in case there are side effects.
* Prevent dynamic resampling in AudioPipeline when playing back files.
* Mixed up sample calculation, causing tests to fail.
* Additional changes to see if it still hangs.
* Update cmake-macos.yml
* Do completion check after queuing to output FIFO.
* Fix buffer overflow.
* Some additional changes based on local testing.
* GH tests weren't actually being run through the resampler.
* Remove ExclusiveAccessStep files as they're not being used.
* Remove some logging that shouldn't be in RT context.
* Add reset() to IPipelineStep to avoid repeated deallocations and reallocations of the TX pipeline.
* Fix segfault from previous changes.
* Remove RADE specific logging in RT context and suppress RTSan for RADE EOO handling.
* Disable RTSan for RADE text handling.
* Try disabling real-time for macOS.
* Force Windows 2022.
* Revert "Try disabling real-time for macOS."
This reverts commit c8ee871406.
* Experiment: use O(1) heap allocator for Codec2.
* Fix patch commands.
* thread_local is only in C++11 and above.
* Force codec2 folder to be removed every call.
* Update codec2 patch.
* Fix Windows compiler error.
* Oops, should be _aligned_malloc.
* Integrate codec2 into source tree so we don't need to deal with patch.
* Update Codec2 README.
* mbest needs to use o1heap too.
* Remove rtsan disable from FreeDV TX/RX steps.
* Bring back AudioPipeline change previously removed by master merge.
* Result resampler needs to be initialized on construction.
* Create resampler only if input and output rates don't match.
* Increase Codec2 RT heap size.
* Fix Windows failures.
* Ensure separate threads spawned from PipelineStep are also checked by RTSan.
* Support RTSan builds on macOS if user has appropriate LLVM.
* Remove no longer needed patch.
* Remove unneeded resettingThread property.
* Fix issue discovered during testing.
* Test: match Linux and macOS requested latency to Windows.
* Add PR #900 to changelog.
* 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.
* Bound requested frames between both min and max.
* Request real-time scheduling for pipeline threads (currently macOS-only).
* Ensure pipeline threads never execute at the same time as audio threads.
* macOS: ask for 5ms audio blocks.
* Temporarily re-enable stress test.
* Suppress codespell for .mm files.
* Swap times/buffer sizes.
* Fix compiler error.
* Go back to previous frame size and time.
* Re-disable stress test.
* Try adjusting time quantum.
* Move audio priority handling to audio layer.
* Set helper thread to real-time on Windows.
* Temporarily disable audio workgroup code.
* Disable periodicity in macOS RT request
* Forgot to define variable.
* Only allow a max of 50% CPU time for audio helpers.
* More tuning of the duty cycle.
* Make sure we sleep some amount of time every time through the loop.
* Go back to smaller time quantum.
* Another quantum tweak.
* Increase audio sample block size to 20ms.
* Use 2.5ms for audio block time.
* Try increasing FIFO sizes for RX.
* Oops, forgot to comment out the / 1000 too.
* Get faster turnaround for macOS GH builds.
* Revert FIFO changes.
* Add additional debugging.
* Fix compiler error.
* Fix typo.
* Use semaphores to notify TX/RX worker threads.
* Try dividing duty cycle by 2 to avoid starvation.
* Reenable audio workgroups.
* No point in having parallel threads if only one mode is active.
* Ensure that ParallelStep gets added to the audio workgroup too.
* Anything for GUI consumption shouldn't be in the RT path.
* Go back to 10ms audio blocks to see if reporting tests can more reliably pass.
* Fix issue causing audio to not work on certain Macs.
* Support real-time threading on Linux when using PulseAudio/pipewire.
* Fix misspelling.
* dbus needs to be installed in the environment.
* macOS: try a smaller block size again.
* Revert "macOS: try a smaller block size again."
This reverts commit 1d21ad6934.
* Try architecture-specific audio block times.
* rtkit itself also needs to be installed in the environment.
* Revert ordering changes to macOS CI builds.
* GH user needs to be added to rtkit group.
* Implement semaphores on Windows.
* Don't exit the render/capture threads unless requested by higher level code.
* Don't take address of a pointer.
* macOS: set thread QoS for RT threads.
* Move RADE RX/TX memory allocations out of real-time path.
* Moving additional memory allocations outside of RT context.
* Move all remaining allocations in pipeline outside of RT except for legacy FreeDV modes.
* Longer audio block times don't seem to be making a difference.
* Move legacy mode memory allocations out of RT context.
* Prevent unbounded mutex locks inside pipeline.
* Windows: fallback to a simple sleep if we can't lock the semaphore.
* Increase maximum wait time to match what Windows returns for buffer size.
* PulseAudio: fallback to simple sleep if we can't wait on semaphore.
* Prevent unbounded locking in TapStep.
* 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.