* Fix compiler errors when using wxWidgets 3.0.
* Add GH action to make sure we can compile on Ubuntu 22.04.
* Fix package name.
* Add PR #914 to changelog.
* Ensure only one build per branch happens at a time.
* 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.
* Reenable timeouts once connected to the radio.
* 100ms might be a bit better.
* Request current frequency/mode every second (instead of every 5 seconds).
* Remove pre-PTT interrogation of frequency/mode.
* Increase Hamlib timeout to 500ms per user testing.
* Add PR #893 to changelog.
* Update comment.
* 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.
* Re-attempt Hamlib connection without timeouts if failed.
* Add Hamlib error message to log.
* Remove timeouts.
* Only set ptt_pathname if using RTS or DTR.
* Various Hamlib fixes adapted from WSJT-X.
* Warning cleanup.
* Update changelog.
* Reset PTT type back to RIG to avoid issues when switching between RTS/DTR and CAT.
* Add support for CAT PTT using the Data port (vs. Mic).
* Update user manual.
* 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.
* WIP patch to wxWidgets to enable color emojis on Windows.
* WIP rewrite of FreeDV Reporter window to use wxDataViewCtrl.
* Apparently we need to associate the model before adding columns.
* Force render the Msg column using Direct2D, causing emojis to display in color.
* Move ReportMessageRenderer to a separate file.
* Only use ReportMessageRenderer on Windows. Also, make sure we don't show ellipsis unless for the Msg field.
* Bring back preservation of sort column.
* Bring back preservation of Msg column width.
* Support Request QSY functionality again.
* Fix rendering issues on macOS.
* Fix Windows compiler errors.
* Fix rendering issue on Windows from previous commits.
* Use correct selection foreground color when rendering with Direct2D.
* Set minimum column widths.
* Column headings should be centered.
* Batch up item changed notifications during refresh.
* Reenable clipboard and tooltip support.
* Ellipsize message text on Windows.
* Allow tooltips to at least show when clicking on a row.
* Have emojis display in color in tooltips as well.
* Add warning message when not building wxWidgets ourselves.
* Only notify of adding new connection if visible.
* Add additional checks around ItemAdded/ItemDeleted.
* Add/remove items individually every refresh to avoid intermittent Linux crashes.
* Defer memory deallocation until after the UI actually removes the item from view.
* Another attempt at fixing the crash.
* Need to validate pointer in GetAttr() too.
* Undo previous changes, try locking allReporterData_ instead.
* Fix Hamlib compiler failure due to changes in 4.6.
* Add some missed locks.
* Replace locks with assertions that we're on the main thread.
* Probably don't need to defer delete.
* Add additional checking around query methods.
* Warning cleanup.
* Make sure items are unselected before deleting.
* Unselect selected user once QSY request has been sent.
* Force a complete redraw when rows go away.
* Try another way of forcing a redraw.
* We only need to call Cleared() once per row.
* Improve CPU usage.
* Aggressively clear selected users when not actively interacting with them.
* Sort by connect time if no columns are selected for sorting.
* PAIn thread should be RT too (missed from previous PR).
* Force a re-sort on connect.
* Resort on every update from the server.
* Sort fix that hopefully doesn't crash.
* Some minor additional changes.
* Disable PAIn thread and just rely on the normal PulseAudio callbacks for passing audio in and out.
* Make re-sorting happen only once a second.
* Try putting mutexes around all data access.
* Increase RLIMIT_RTTIME just in case.
* Add missed locks.
* RT limit was set too high.
* Sleep for less time than latency if possible.
* Fix crash in TapStep while stopping.
* Defer FreeDV Reporter initialization on startup to make sure GUI is up beforehand.
* Try again to get RTKit to work in the GH environment.
* Try capping maxlength to avoid RX FIFO full errors.
* Increase max buffer size due to overrun errors.
* Default maxlength for output devices to prevent overruns.
* Try bringing back PAin thread. WIP
* Add missed PulseAudio locking.
* Remove more missed mallocs from RT path.
* Remove unneeded code from PulseAudio logic.
* Tab cleanup.
* Increase RX FIFO size.
* Force sleep if we take much longer than expected (avoids kill by rtkit).
* Forgot to check in file.
* Fix compiler error for real.
* Fix issue causing occasionally being unable to get the mic input on macOS.
* Add timeout for EOO in case we lose input devices.
* Add additional protection to prevent the OS from killing the app.
* macOS: get device names an alternate way to avoid empty names for certain devices.
* Make RX plots more reliable when pipewire sends multiple seconds of RX audio at once.
* Oops, used wrong comparison for EOO timeout.
* Catch SIGXCPU in case we exceed RT limits.
* Prevent RX processing from occurring if there's no space in the output FIFO.
* Apparently I was setting the soft and hard rlimits to be the same.
* Lower soft RT limit to 10ms.
* Disable RT scheduling on Linux.
* Added additional protection against server-caused race condition.
* Defer add to table until after we get connection successful message.
* Add missed lock on connect successful message.
* Add missed visibility check.
* Fix issue on Linux.
* Add additional logging to help diagnose duplicate callsign issue.
* Downgrade additional logging to debug/verbose only.
* Fix bug where incorrect SNR was being reported for RADE signals after EOO received.
* Back out previous change buffering rows until fully connected as it doesn't work properly on Windows.
* Fix right-click menu regression.
* Fix issue preventing column sorting on Windows.
* Upgrade wxWidgets to 3.2.8.
* Right-click should not select items.
* 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.
* Extend RADEv1 unit test time to try to force failures.
* txrx test wasn't actually respecting -txtime.
* Increase test length to 10min.
* Increase timeout.
* Temporarily disable macOS and Linux workflows.
* Run RADE test 10 times.
* Tweak to hopefully cause Windows test to actually fail.
* Ensure that all PortAudio calls are executed from the same thread.
* Use exclusive mode for radio devices for lower latency (at least on Windows).
* Reduce TX/RX thread delay to 10ms.
* Increase GH action timeout.
* Oops, need to tell PortAudio to actually set thread priority.
* Suggest low latency to PortAudio.
* Revert 10ms max wait.
* Try forcing shared mode again.
* Revert "Try forcing shared mode again."
This reverts commit cd025e9a8e.
* Revert "Revert 10ms max wait."
This reverts commit 0227ce5f0c.
* Reenable macOS/Linux builds.
* Run RADE tests 10x on Linux and macOS.
* Revert back to 60s tests on macOS/Linux.
* Use sh -c to run test.
* Try defining FPB as 0.
* Split out repeated RADE test into a separate ctest.
* Disable GH action timeout for Windows tests.
* Fix CMakeLists.txt error.
* Try increasing the timeout back to 20ms again.
* Back to 10ms.
* macOS: minimize CPU usage inside PortAudio.
* Use higher quality macOS settings.
* Use Intel macOS runner as it has more cores and RAM.
* Add debug output so we can adapt GH action for Intel.
* Fix gfortran path based on debug output.
* Fix permissions database issue.
* Disable exclusive mode due to invalid device errors.
* Disable stress tests in GitHub environment by default.
* Restructure TX out code to help the compiler optimize for the common case.
* Forgot to disable the repeated test.
* Use VB-Cable for radio device on macOS due to improved reliability.
* Fix side issue reported in original issue surrouding default mode selection.
* Need to restrict number of runs to 1 for RADE on Windows.
* Remove unnecessary API for setting exclusive mode.
* Wrap sync flag in std::atomic just in case the GH failures are actually threading related.
* Add PR #840 to changelog.
* Save Hamlib rig names on startup as they're able to change out from under us.
* Bump up Hamlib to 4.6.2.
* Add PR #834 to changelog.
* Capture rig names after sorting the rig list. This ensures that the rig names are in the same order as the main list.
* Append -D to USB/LSB if radio is using digital variant.
* Don't adjust Msg column width when user disconnects.
* Add PR #828 to changelog.
* Don't cause Msg col to be resized when it changes (i.e. on user connect).
* Add back 4+ character commit ID to version.
* Clarify purpose of extra space at beginning of truncated message.
* Fix issue preventing suppression of the Msg tooltip for non-truncated messages.
* Add PR #829 to changelog.
* Fix various VK UI issues discovered by test team.
Implements the following:
1. Hardens the "modified" comparison when saving options from Tools->Options (to avoid clearing the VK filename when the folder's not modified).
2. Fixes bug that prevented the Voice Keyer button from properly resizing after selecting a new voice keyer file.
* Add PR #793 to changelog.
* Detect if microphone permissions have been granted in Windows.
* wxWidgets needs to build before the OS specific stuff.
* Also include main wxWidgets files.
* Need to use HKLM version of Microphone key.
* Add PR #790 to changelog.
* Begin cleanup of logging.
* Fix Windows build failure.
* Bump up minimum macOS version to 10.13 to make compiler happy about fmemopen().
* Switch printf/fprintf to log_* calls.
* Remove spurious newlines from log messages.
* Remove g_verbose from codebase.
* Ensure Hamlib logs via ulog.
* Convert cerr/cout to ulog.
* Fix unit test and Linux compiler errors.
* Strip newlines from end of hamlib log messages.
* It would help if we actually printed the non-newline version of the log message.
* Actually fix Windows compiler errors.
* Replace additional printfs with log_* after merge from main.
* Add locking around logging to make sure we don't lose any.
* Try disabling color to get Windows tests working again.
* Use regular wine instead of wine-staging.
* Revert "Use regular wine instead of wine-staging."
This reverts commit 88bf4ef7c2.
* Add missed changelog entries.
* Poll for xvfb to come up.
* Try framebuffer dir instead.
* Fix typo.
* Try 24 bit color.
* Try xvfb-run instead.
* Fix xvfb-run command.
* Try the screen arguments again.
* Try wine-devel instead as it might be more stable.
* Update cmake-windows.yml
* Lock log mutex before running RADE RX.
This is to avoid test output loss on Windows.
* Log to stderr and not stdout.
* Update RADEReceiveStep.cpp
* 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.