Make explicit various codec2 dependencies to avoid compile race condition. (#957)

* Make explicit various codec2 dependencies to avoid compile race condition.

* Add PR #957 to changelog.

* No need to use build_rade as the dependency if we're using rade.

* Forgot to check in a change.

* Looks like we need the larger FIFO after all.

* Use SRC_SINC_FASTEST for plots.

Should be low to no-impact as previous RADE testing showed only a slight quality
decrease vs. SRC_SINC_MEDIUM_QUALITY.

* Update changelog.

* Back to SRC_LINEAR.

* Update comments.

* Don't fail fast for Linux builds.

* Add libsamplerate deps where appropriate.

* Add sndfile deps.

* Revert "Add sndfile deps."

This reverts commit dc00a3b7cd.

* Revert "Add libsamplerate deps where appropriate."

This reverts commit 65c4766c20.

* Reenable processing stats.

* Try building with -O3.

* Try building using LTO.

* Revert "Try building using LTO."

This reverts commit 2536a15dd2.

* Revert "Try building with -O3."

This reverts commit 8b9b824a88.

* Revert "Reenable processing stats."

This reverts commit 5b0d31b1a2.
ms-hamlib-build-dep
Mooneer Salem 2025-07-05 10:37:10 -07:00 committed by GitHub
parent ce7c4af793
commit 469b22dbc7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 17 additions and 25 deletions

View File

@ -203,7 +203,7 @@ jobs:
build:
strategy:
fail-fast: true
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-22.04]
sanitizer: [WITH_ASAN=0, WITH_RTSAN=1, WITH_ASAN=1]

View File

@ -831,11 +831,12 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
* Add missing dependency for macOS builds to README. (PR #925; thanks @relistan!)
* Add note about using XWayland on Linux. (PR #926)
3. Enhancements:
* General improvements to backend audio processing to further reduce dropouts. (PR #949)
* General improvements to backend audio processing to further reduce dropouts. (PR #949, #957)
4. Build system:
* Update Hamlib to 4.6.3 (macOS/Windows). (PR #930)
* Reload current Git hash every time it changes. (PR #935, #951)
* Add infrastructure for generating AppImage builds. (PR #937)
* Make explicit various codec2 dependencies to avoid compile race condition. (PR #957)
## V2.0.0 June 2025

View File

@ -22,6 +22,7 @@ ExternalProject_Add(build_codec2
ExternalProject_Get_Property(build_codec2 BINARY_DIR)
ExternalProject_Get_Property(build_codec2 SOURCE_DIR)
add_library(codec2 STATIC IMPORTED)
add_dependencies(codec2 build_codec2)
set_target_properties(codec2 PROPERTIES
IMPORTED_LOCATION "${BINARY_DIR}/src/libcodec2${CMAKE_STATIC_LIBRARY_SUFFIX}"

View File

@ -58,21 +58,10 @@ endif(APPLE)
if(APPLE)
target_link_libraries(FreeDV fdv_audio fdv_audio_pipeline fdv_config fdv_gui_controls fdv_gui_dialogs fdv_gui_util fdv_os_wrapper fdv_rig_control fdv_reporting fdv_sox fdv_util codec2 rade opus git_version)
add_dependencies(FreeDV build_rade)
else(APPLE)
target_link_libraries(freedv fdv_audio fdv_audio_pipeline fdv_config fdv_gui_controls fdv_gui_dialogs fdv_gui_util fdv_os_wrapper fdv_rig_control fdv_reporting fdv_sox fdv_util codec2 rade opus git_version)
add_dependencies(freedv build_rade)
endif(APPLE)
# Add build dependencies for internally built external libraries.
if(USE_INTERNAL_CODEC2)
if(APPLE)
add_dependencies(FreeDV build_codec2)
else(APPLE)
add_dependencies(freedv build_codec2)
endif(APPLE)
endif()
# Add dependencies for other statically built libraries, if applicable.
if(FREEDV_STATIC_DEPS)
if(APPLE)

View File

@ -8,7 +8,7 @@ add_library(fdv_config STATIC
)
target_include_directories(fdv_config PRIVATE ${CODEC2_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_BINARY_DIR}/..)
add_dependencies(fdv_config build_rade)
add_dependencies(fdv_config rade codec2)
if(BOOTSTRAP_WXWIDGETS)
add_dependencies(fdv_config wx::core wx::base wx::aui wx::html wx::net wx::adv wx::propgrid wx::xrc)

View File

@ -64,7 +64,7 @@
#define NUM_CHANNELS 2 // I think most sound cards prefer stereo we will convert to mono
#define VOX_TONE_FREQ 1000.0 // optional left channel vox tone freq
#define VOX_TONE_AMP 30000 // optional left channel vox tone amp
#define FIFO_SIZE 540 // default fifo size in ms
#define FIFO_SIZE 640 // default fifo size in ms
#define FRAME_DURATION 0.02 // default frame length of 20 mS = 0.02 seconds
#define MAX_BITS_PER_CODEC_FRAME 64 // 1600 bit/s mode

View File

@ -7,6 +7,7 @@ add_library(fdv_gui_controls STATIC
ReportMessageRenderer.cpp)
target_include_directories(fdv_gui_controls PRIVATE ${CODEC2_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../.. ${CMAKE_CURRENT_BINARY_DIR}/../..)
add_dependencies(fdv_gui_controls codec2)
if(BOOTSTRAP_WXWIDGETS)
add_dependencies(fdv_gui_controls wx::core wx::base wx::aui wx::html wx::net wx::adv wx::propgrid wx::xrc)

View File

@ -9,7 +9,7 @@ add_library(fdv_gui_dialogs STATIC
target_include_directories(fdv_gui_dialogs PRIVATE ${CODEC2_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../.. ${CMAKE_CURRENT_BINARY_DIR}/../..)
add_dependencies(fdv_gui_dialogs rade opus)
add_dependencies(fdv_gui_dialogs rade opus codec2)
if(BOOTSTRAP_WXWIDGETS)
add_dependencies(fdv_gui_dialogs wx::core wx::base wx::aui wx::html wx::net wx::adv wx::propgrid wx::xrc)

View File

@ -25,7 +25,7 @@ add_library(fdv_audio_pipeline STATIC
target_include_directories(fdv_audio_pipeline PRIVATE ${CODEC2_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_BINARY_DIR}/..)
add_dependencies(fdv_audio_pipeline rade opus)
add_dependencies(fdv_audio_pipeline rade opus codec2)
if(BOOTSTRAP_WXWIDGETS)
add_dependencies(fdv_audio_pipeline wx::core wx::base wx::aui wx::html wx::net wx::adv wx::propgrid wx::xrc)

View File

@ -73,6 +73,7 @@ ResampleStep::ResampleStep(int inputSampleRate, int outputSampleRate, bool forPl
, outputSampleRate_(outputSampleRate)
{
int src_error;
resampleState_ = src_new(forPlotsOnly ? SRC_LINEAR : SRC_SINC_MEDIUM_QUALITY, 1, &src_error);
assert(resampleState_ != nullptr);

View File

@ -56,13 +56,12 @@ using namespace std::chrono_literals;
// Experimental options for potential future release:
//
// * ENABLE_FASTER_PLOTS: This uses a faster resampling algorithm to reduce the CPU
// usage required to generate various plots in the user interface. Currently disabled
// due to unknown effects on visual quality. (Tech note: When enabled, libsamplerate is
// directed to use linear interpolation instead of sinc for the plot resampling.)
// usage required to generate various plots in the user interface. (Tech note: When
// enabled, libsamplerate is directed to use SRC_LINEAR for the plot resampling.)
// * ENABLE_PROCESSING_STATS: This causes execution statistics to be collected for RX and TX
// processing and output in the log after the user pushes Stop.
//#define ENABLE_FASTER_PLOTS
#define ENABLE_FASTER_PLOTS
//#define ENABLE_PROCESSING_STATS
// External globals

View File

@ -13,7 +13,7 @@ soundCard2OutDeviceName=@FREEDV_COMPUTER_TO_SPEAKER_DEVICE@
soundCard2OutSampleRate=48000
SquelchActive=1
SquelchLevel=-4
fifoSize_ms=540
fifoSize_ms=640
transmitLevel=0
snrSlow=0
mode=4

View File

@ -13,7 +13,7 @@ soundCard2OutDeviceName=@FREEDV_COMPUTER_TO_SPEAKER_DEVICE@
soundCard2OutSampleRate=48000
SquelchActive=1
SquelchLevel=-4
fifoSize_ms=540
fifoSize_ms=640
transmitLevel=0
snrSlow=0
mode=257

View File

@ -13,7 +13,7 @@ soundCard2OutDeviceName=@FREEDV_COMPUTER_TO_SPEAKER_DEVICE@
soundCard2OutSampleRate=48000
SquelchActive=1
SquelchLevel=-4
fifoSize_ms=540
fifoSize_ms=640
transmitLevel=0
snrSlow=0
mode=257

View File

@ -13,7 +13,7 @@ soundCard2OutDeviceName=@FREEDV_COMPUTER_TO_SPEAKER_DEVICE@
soundCard2OutSampleRate=48000
SquelchActive=1
SquelchLevel=-4
fifoSize_ms=540
fifoSize_ms=640
transmitLevel=0
snrSlow=0
mode=257