* Enable CCache to make CI builds run more quickly.
* Ensure Hamlib is also part of ccache.
* Try creating symlink.
* Increase ccache max size limit.
* Add ccache for Windows builds.
* Add cache for lint as well.
* Make sure PGO is covered by ccache.
* Dummy change to make sure build is cached.
* macOS: Ensure node 24 is used for ccache
* Windows: use node 24.
* Increase max cache size on macOS to 5G.
* Add Windows debugging for ccache.
* Use CMake compiler launcher to launch ccache.
* Use symlinks for PGO builds.
* Don't cache PGO use steps, we can't afford to with only 10GB available.
* Fix issue causing cache misses.
* Forgot that we need to use single quotes.
* Revert previous whitespace change.
* Enable ccache for Linux builds.
* Fix shell command error.
* Add PR #1328 to changelog.
* Enable Linux AppImage builds for Profile Guided Optimization (PGO).
* Fix typo.
* Fix another typo.
* oops, need to install pulseaudio.
* Need to set PYTHONPATH.
* Make sure dbus is installed.
* Don't strip symbols (debugging).
* Some fixes that should hopefully reverse performance regression.
* Enable temporal-profile.
* Use lld for linking instead.
* Add PR #1173 to changelog.
* Enable PGO for macOS DMG builds.
* Don't use LLVM Clang.
* Revert macOS PGO changes.
* Use -O3 for AppImages.
* Have CMake add PGO flags.
* Enable PGO again on macOS.
* Fix typos.
* Force Apple ld.
* Make absolutely sure we're using Apple ar and ranlib.
* Use Release for DMG build.
* Enable verbose build output for debugging.
* Force /usr to be first in PATH.
* Force LLD linker.
* Oops, need CMAKE_LINKER_TYPE instead.
* Use same Clang as in lint.
* Override ar path.
* AppleClang on macOS 26 supports PGO.
* Need to install Homebrew LLVM for profdata.
* Try deferring LLVM 19 install until time to run profgen.
* LLVM without LTO.
* Adapt use of libtool from LLVM.
* Try forcing libtool usage in Codec2 too.
* Disable verbose build.
* Explicitly pass CMAKE_AR and CMAKE_RANLIB into dependent projects.
* Fix typo.
* Use LLVM 20 instead of 21.
* Ensure all macOS dependencies use -O3 and 11.0 min.
* Cache Python generation during macOS build.
* Fix typos.
* Revert previous changes.
* Make sure FreeDV Reporter window is visible during PGO data collection.
* Fix waterfall rendering issue with multiple plots displayed at once.
* Disable PGO on macOS except for official releases.
* Revert logging previously committed.
* Linux: test -O3 only, no PGO.
* UdpHandler: fix crash when unable to resolve DNS.
* Revert "Linux: test -O3 only, no PGO."
This reverts commit 26da306b48.
* Revert "Disable PGO on macOS except for official releases."
This reverts commit a7cc6852db.
* Allow DMG generation to run during lint.
* Ensure debug symbols are enabled even for Release builds.
* Linux: allow AppImages to build during lint.
* Add documentation for building with PGO.
* macOS: Try performing non-universal instrumented build to improve CI performance.
* Enable LTO for macOS DMG build.
* Revert "Enable LTO for macOS DMG build."
This reverts commit 6e54a1c39d.
* Another attempt at enabling LTO for macOS.
* Revert "Another attempt at enabling LTO for macOS."
This reverts commit 60080db6b2.
* Upgrade MinGW LLVM to 20251216.
* Experiment: collect profiling data for legacy modes as well.
* Disable PGO on macOS due to long build times.
* No difference in CPU usage when profiling legacy modes, so just profile RADE.
* Forgot to change utmode back to RADEV1.
* Experiment: Enable Link Time Optimization for AppImage/DMG/.exe builds.
* Forgot to update main AppImage build.
* Use clang 21 for Linux build
* Oops, need to change compiler name too.
* Make sure all LLVM packages are installed.
* Force correct version of lld.
* Enable LTO at the CMake level instead of forcing compiler arguments.
* Fix CMake warnings from previous PR.
* Add PR #1163 to changelog.
* Set NO_AT_BRIDGE inside Fedora VM.
* Try forcing libc++ for AppImage builds.
* Need to install all LLVM packages.
* Revert previous libc++ changes.
* Force static libstdc++ instead.
* Add static flags at CMake level.
* Add STATIC_LIBGCC config option to ensure only AppImages statically link libstdc++.
* Add PR #1158 to changelog.
* Attempt to address intermittent FreeDV Reporter-related crash on Windows.
* CI: Work around Azure outage.
* Additional tweaks to previous ThreadedObject fix.
* Enable UBSan test support in the CI process.
* Add missed UBSan flags for CI run.
* Fix sanitizers check to allow integrations to build.
* Initial pass at silencing UBSan warnings.
* Fix compiler errors.
* Allow tests to fully run before erroring.
* Add missed initializers for reporter dates.
* Revert "Allow tests to fully run before erroring."
This reverts commit 6a91e834a7.
* Initialize missed wxDateTime.
* Get remaining wxDateTime warnings in FreeDV Reporter window.
* Enable TSan and UBSan in macOS CI.
* Fix compiler error.
* Try making TabFreeAuiNotebook destructor virtual.
* Remove extra wxPanel for spectrum plot.
* Cleanup of notebook initialization.
* Add UBSan suppressions.
* Tweak UBSan suppressions to reflect GH environment.
* Increase the number of times to TX to improve mpp pass rate.
* Add PR #1075 to changelog.
* Increase MPP TX amount again.
* Reorganize FlexRadio integration so we can share code with KA9Q console app.
* Fix rtkit file path.
* Use same variable for both static and non-static Speex DSP library.
* Update Linux CI to reflect new paths.
* Refactor more common code for use by other integrations.
* Create skeleton KA9Q appplication, need to read/write from/to stdin/stdout to get basics up.
* Need to link against fdv_os_wrapper in common.
* Actually fix Linux linker failure in Flex waveform.
* Allow software name to be passed into ReportingController.
* Read audio from stdin and write to stdout.
* Fix crash on shutdown due to threads not being freed.
* Add pauses to make sure audio is handled live (i.e. not faster than RT).
* Add command line options to freedv-ka9q tool.
* Flesh out ka9q README.
* Clean up AppImage generation and enable CI for KA9Q integration.
* Add missed speex dependency.
* Forgot to change references to APPEXEC.
* Fix app paths for AppImages.
* Force AppImage file name.
* Use separate desktop files to avoid needing to override linuxdeploy.
* Use echo instead of ls for AppImage name generation.
* Fix test-appimage and enable verification on ARM targets.
* Need to use pattern, not glob.
* Need to use step ID.
* More fixes.
* Re-add accidentally deleted ./ from Fedora container execution.
* Add arm64 Fedora testing.
* Use RADE main again as a test.
* Revert "Use RADE main again as a test."
This reverts commit 60559ef0bc.
* Switch to raw file I/O.
* Update command line usage message.
* Add PR #1066 to changelog.
* Fix compiler error.
* Report RX only to FreeDV Reporter to indicate we can't TX.
* Fix crash on shutdown.
* Actually have audio process live.
* Fix typo in build_linux.sh.
* Enable ThreadSanitizer checks for CI builds.
* Make sure we're not actually checking for test results with tsan.
* Enable sanitizers on 22.04 and ARM runners.
* Suppress sanitizer errors in Ubuntu 22.04.
* We probably need Clang 22 to have Ubuntu 22.04 RTsan tests work properly.
* Use LLVM 22 for ASAN too to see if that will suppress the final leaks.
* Add missed lock in onRecvEnd.
* [no-ci] Update documentation.
* [no-ci] Further tweaks to user manual wording.
* Extend rtsan declarations to rest of pipeline and audio classes.
* Add construct for marking RT-unsafe code.
* Use realtime_fp instead of std::function for stuff that needs to happen real-time.
* Add realtime_fp wrapper to allow checking of lambdas in pipeline.
* Add annotations to lambdas.
* Add additional nonblocking assertions.
* Create wrapper around wxGetApp() to suppress warnings.
* mustStopWork needs to be non-blocking.
* Disable thread-local variables in PulseAudioDevice.
* Misc warning cleanup.
* Add missed file.
* Refactor EqualizerStep to not need shared_ptr.
* Annotate MacAudioDevice.
* Fix compiler errors.
* Add additional suppressions in src/pipeline and some dependent code.
* Increment version to 2.0.3 and reenable dev tag.
* Remove std::function from RADEReceiveStep.
* Additional codec2 annotation, missed reference to codec2_malloc in kiss_fft.
* Add additional codec2 annotations.
* Resolve remaining freedv_interface.cpp realtime compiler warnings.
* Minor TSan based cleanup.
* Use relaxed atomic semantics for GenericFIFO.
* Enable ability to instrument with TSan.
* Fix localtime-related data races in ulog.
* Fix g_State related data races.
* Fix memcpy related data races in GenericFIFO.
* Remove macos-13 from CI as it's about to go away.
* Add PR #1039 to changelog.
* test-app-folder isn't actually failing the CI run.
* Enable TSan support via build scripts.
* TSan warning cleanup on macOS.
* Add default virtual destructors for audio devices.
* Work around IAudioDevice destruction data race.
* Fix PlotWaterfall data race.
* 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.
* Remove 800XA, 700C, 2020 and 2020B from UI,
* Remove additional 700C references in UI.
* Remove 2020/AVX detection logic from codebase.
* Remove LPCNet from build scripts.
* Add PR #889 to changelog.
* Forgot to remove LPCNet from Windows installer generation.
* Generate Release build for GH workflows.
* Disable PSK Reporter reporting during test execution as invalid callsigns are used.
* Build type was being overwritten.
* Missed mutex removal.
* Temporarily use Instruments to trace macOS CI execution.
* Minor update.
* Use 2 minute window in xctrace to actually capture wanted events.
* Disable xctrace execution but keep in tests just in case.
* Hide main window during tests to prevent GUI from interfering.
* Experiment: set infifo2 max length to 30 seconds
* Oops, forgot to remove division from previous commit.
* Deallocation of PulseAudio stream should occur while mainloop is locked.
* Revert "Hide main window during tests to prevent GUI from interfering."
This reverts commit 69689bb927.
* Based on online code snippets nullptr for neg is fine.
* Clear PYTHONHOME if set on the user's system (Windows/macOS only).
* Bring back locking in TxRxThread just in case.
* Remove unneeded backslash.
* Revert "Bring back locking in TxRxThread just in case."
This reverts commit fc6a9f8797.
* Manually back out the changes instead of using git checkout.
* Use shared_ptr for LinkStep.
* Try removing the TX mode change mutex again.
* Try moving actual codec activity out of RT context.
* Fix compiler error.
* Fix issue preventing legacy modes from transmitting.
* Another attempt at preventing RX dropouts.
* Try putting mode TX into separate threads again.
* Only limit output samples if input samples were provided.
* Put codec RX back into RT context.
* Put TX on RT context.
* Remove unused code.
* Deallocation should occur only in the destructor.
* Fix Windows spectrum plot formatting issues.
* Prevent buffer overflow during TX/RX processing.
* Bring FRAME_DURATION back down to 10ms.
* We want to feed samples into the RADE/FreeDV TX/RX FIFOs regardless of whether there's room in the output.
* ParallelStep should only feed FRAME_DURATION ms worth of samples at a time.
* Sleep fallback should track FRAME_DURATION.
* Don't execute the parallel steps if there isn't enough room in the output FIFO.
* We really can only inject a portion of EOO samples at a time.
* Queue EOO as a single unit to ensure it gets transmitted as a unit.
* Allow ParallelStep to provide up to 4x the number of input samples as output.
* Back to processing 20ms frames.
* Run GH Linux tests using asan enabled.
* Suppress Python related memory leaks and Hamlib related invalid memory accesses.
* Forgot suppressions= in test execution.
* Add more leak suppressions based on GH output.
* Resolve memory leaks.
* Fix broken RadeTextTest.
* Additional suppressions from GH.
* Go back to processing TxNumSpeechSamples every TX cycle.
* Revert "Go back to processing TxNumSpeechSamples every TX cycle."
This reverts commit abe816d00b.
* Fix 1600 mode dropouts.
* Make TX single-threaded again.
* Revert back to last working pipeline logic (for fullduplex_* anyway).
* Revert most EOO behavior.
* Run AddressSanitizer tests separately as they interfere with real time audio.
* Need to start Xvfb etc. before asan tests.
* Only a subset of tests need to run with asan enabled.
* Fix issue causing PTT input not to work.
* Maybe we don't need to restart servers after all.
* Try using rtkit to ask for high priority instead of RT.
* Clear FIFOs a different way.
* Windows: determine minimum number of audio channels supported.
* Initial implementation of macOS audio handling using native APIs.
* Fix minor calculation issue in Easy Setup when generating sine waves.
* Fix spelling error.
* Fix issue causing distorted output audio.
* Refactor audio device info retrieval to a separate method.
* Get channel information for discovered macOS audio devices.
* Add support for retrieving default audio devices.
* Try using AVAudioSinkNode for getting mic/RX audio.
* Use AVAudioSourceNode for output side too.
* Fix compiler error.
* Set minimum macOS version to 10.15 due to PyTorch and new audio code requiring it.
* Disable universal build in GH action to make it run a bit faster.
* Additionally use Homebrew packages as deps instead of building own for GH action.
* Don't build hamlib if BUILD_DEPS is 0.
* Use matrix to test macOS build on both x86_64 and ARM64.
* Experiment: always sleep for 10ms every time through the TX/RX loop.
* Temporarily enable longer tests to make sure previous pass wasn't a fluke.
* Remove logic not available in 10.15.
* Revert "Experiment: always sleep for 10ms every time through the TX/RX loop."
This reverts commit 6019c9a522.
* Need to query valid sample rates from Core Audio.
* Validate provided sample rate and channel data when creating audio object.
* Set device sample rate to user-configured option.
* Sample rates could be different between input and output.
* Revert "Temporarily enable longer tests to make sure previous pass wasn't a fluke."
This reverts commit f90c4cd081.
* Remove now unused code.
* Harmonize native vs. PortAudio config across build scripts.
* Zero out audio by default to prevent buzzing.
* Update README to use new environment variable for audio driver control.
* Add COM wrapper class around ThreadedObject. Prerequisite for WASAPI audio support.
* Disable OLE 1.0 per Windows documentation.
* WIP WASPI device enumeration.
* Forgot to check in some changes.
* Fix compiler errors.
* Avoid deadlock during sample rate list retrieval.
* s/WASPI/WASAPI/g
* WIP WASAPIAudioDevice design.
* Full WASAPIAudioDevice implementation.
* Increase priority of audio tasks to prevent dropouts.
* Add missed nullptr initialization.
* Increase buffer time to 40ms
* Fix issue where non-English device names were getting corrupted.
* Add additional logging.
* Need to create macOS audio device name just like with Windows.
* Update README to document new config options.
* Update build scripts to use optimal number of parallel builds.
* Update Windows GH action similarly to other build scripts.
* Add PR #842 to changelog.
* Need -j6 for Windows for some reason.
* Increase Windows test timeouts.
* -j doesn't actually limit the number of parallel builds.
* 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.
The build_linux.sh scripts stops when encountering an error
and reports what it is doing.
Directories constructed temporarily during the build
and files commonly constructed by the build
ignored by git, as we do not want to version those.
/usr/bin has become the official dwelling place of bash.