* 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.
* 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.
* 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.