Commit Graph

48 Commits (ms-hamlib-compile-error)

Author SHA1 Message Date
Mooneer Salem e9ec9347d9
Make sure RTSan-related code isn't added if not installed. (#900)
* 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.
2025-06-05 08:17:24 -07:00
Mooneer Salem 30c9e5b9c6
Remove 800XA, 700C, 2020 and 2020B. (#889)
* 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.
2025-05-26 12:29:47 -07:00
Mooneer Salem 149d37230b
Move to using native audio on macOS and Windows (#847)
* 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.
2025-03-31 22:35:35 -07:00
Mooneer Salem bbba124a9c
Update build scripts to use optimal number of parallel builds. (#842)
* 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.
2025-03-10 22:35:54 -07:00
Mooneer Salem e7f7b35646
Integrate RADE into FreeDV application (#748)
* 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.
2024-10-20 18:09:11 -07:00
Mooneer Salem d8ee413693 Add CMake and code logic to allow compilation without LPCNet. 2024-04-12 22:27:17 -07:00
Mooneer Salem 3f069dc38f Fix bugs encountered while testing. 2023-07-30 23:32:14 -07:00
Mooneer Salem 0e9fc4fc6c Add CMake logic to emit deprecation warning on Linux systems for PortAudio. 2023-07-30 23:12:35 -07:00
Mooneer Salem 6fa4d506d6 master is now 'main' on new Codec2 tree. 2023-07-24 22:06:30 -07:00
Mooneer Salem 435f41bcdd v isn't in front of the Codec2 tag. 2023-07-24 21:48:53 -07:00
Mooneer Salem 05ebe90f5e Update for codec2 v1.2.0 release. 2023-07-24 21:17:35 -07:00
Mooneer Salem 2111e1a63f Bump Codec2 version to v1.1.1. 2023-06-15 08:49:24 -07:00
Mooneer Salem b067ca594b Use Codec2 and LPCNet tags for build scripts. 2023-05-06 23:37:59 -07:00
Mooneer Salem 4054f9500f Add check for .git folder to allow use of build scripts in official release tarballs. 2022-11-01 00:39:43 -07:00
Mooneer Salem 2000b62803 Go back to using LPCNet master. 2022-08-24 00:44:51 -07:00
Mooneer Salem 01a50e9861 One more test with LPCNet PR branch. 2022-08-22 08:34:11 -07:00
Mooneer Salem 819a9cf4fb Update package dependencies. 2022-08-20 22:33:41 -07:00
Mooneer Salem 4e6b7d72b0 Use LPCNet test branch to test possible updates. 2022-08-20 11:25:30 -07:00
Mooneer Salem 30a29934a1 Oops, re-introduce codec2 git clone. 2022-08-20 01:06:34 -07:00
Mooneer Salem e20dbbcda1 Temporarily use master for testing changes. 2022-08-20 01:01:31 -07:00
Mooneer Salem a402b53204 Use v0.4 of LPCNet and remove unneeded non-LPCNet Codec2 compile. 2022-08-20 00:58:15 -07:00
Mooneer Salem a8422b8209 Prepare dependencies for upcoming 1.8.2 release. 2022-07-17 02:21:25 -07:00
Mooneer Salem b7e758d212 Use latest Codec2/LPCNet. 2022-07-13 17:12:27 -07:00
Mooneer Salem 3382021e21 Fix git switch call to actually go to master. 2022-07-10 02:27:17 -07:00
Mooneer Salem 219e37bd9e Rearrange ordering of git commands to make GitHub CI happy. 2022-07-10 01:47:51 -07:00
Mooneer Salem beede91ea0 Use specific Codec2 and LPCNet branches for build scripts. 2022-07-10 01:41:03 -07:00
Mooneer Salem 1099eb70fb Use codec2 master for 1.8.0. 2022-07-05 22:02:51 -07:00
Mooneer Salem d6259117ed Switch Codec2 to dr-2020B branch in preparation for 2020C implementation. 2022-04-27 22:31:18 -07:00
Mooneer Salem 75190e1a80 Merge branch 'ms-audio-path' into ms-2020-experiment 2022-04-25 00:48:05 -07:00
Mooneer Salem 9bddc18b66 Run ctests when GitHub workflow executes. 2022-04-25 00:16:21 -07:00
Mooneer Salem a471748ad6 Switch branches back to master. 2022-04-22 00:00:22 -07:00
Mooneer Salem efdbc7daeb Point build scripts to test codec2/LPCNet branches. 2022-02-08 00:45:47 -08:00
Mooneer Salem 7d62fddd25 Auto-build both PulseAudio and PortAudio variants on PR push. 2021-12-31 10:56:17 -08:00
Mooneer Salem bc33356ccc Merge branch 'master' into ms-pulseaudio 2021-12-29 01:14:08 -08:00
David Rowe 0d873491e8 build_linux.sh doesn't break if codec2 and LPCNet repos have already been cloned 2021-12-29 06:18:06 +10:30
Mooneer Salem 4fc0aea237 Use more portable way of referring to bash as we can't rely on it being in /bin or /usr/bin. 2021-12-25 16:19:30 -08:00
Mooneer Salem 17d0cb05f9 Update build_linux script to use PulseAudio. 2021-12-24 22:36:55 -08:00
Andreas Krüger 9033564224
Minor build improvements.
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.
2021-11-07 23:40:56 +01:00
drowe67 5ddbb3f565 getting ready for merge 2020-12-20 08:31:17 +10:30
drowe67 3a6c2b3c48 spell check and correct branch for Travis 2020-12-18 17:04:05 +10:30
drowe67 f939353cc2
use codec2/master now codec2/dr-dpsk branch merged 2019-09-10 05:50:32 +09:30
David 1c31a65341 added DPSK option 2019-09-09 10:17:35 +09:30
drowe67 33ee705d71
use codec2/master 2019-08-12 05:52:21 +09:30
David 2bfaee49dc build with codec2 development branch 2019-08-11 06:22:41 +09:30
David Rowe ff5df26f7f make sure build scripts use latets and greatest 2019-05-30 19:57:48 +09:30
drowe67 95db756106
updated after codec2/brad-2020 merged 2019-05-29 07:25:05 +09:30
David d7a8dc243d working on a build script for windows X-compile 2019-05-07 19:57:50 +09:30
David b3da96cd8f added some test wave files 2019-05-07 18:51:58 +09:30