ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: 33039379c13734a7357355762157fc1da3f49320
Parent: 6a15ecb41cfded3b96a77f6600703ade6ea35821
Author: Randy Palamar
Date:   Wed, 14 Jan 2026 10:58:54 -0700

lib: rename LIB_FN macro to BEAMFORMER_LIB_EXPORT

Diffstat:
Mlib/ogl_beamformer_lib_base.h | 114++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Mtests/throughput.c | 2+-
2 files changed, 65 insertions(+), 51 deletions(-)

diff --git a/lib/ogl_beamformer_lib_base.h b/lib/ogl_beamformer_lib_base.h @@ -1,9 +1,9 @@ /* See LICENSE for license details. */ -#ifndef LIB_FN +#ifndef BEAMFORMER_LIB_EXPORT #if defined(_WIN32) - #define LIB_FN __declspec(dllexport) + #define BEAMFORMER_LIB_EXPORT __declspec(dllexport) #else - #define LIB_FN + #define BEAMFORMER_LIB_EXPORT #endif #endif @@ -31,11 +31,11 @@ typedef enum {BEAMFORMER_LIB_ERRORS} BeamformerLibErrorKind; #undef X -LIB_FN uint32_t beamformer_get_api_version(void); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_get_api_version(void); -LIB_FN BeamformerLibErrorKind beamformer_get_last_error(void); -LIB_FN const char *beamformer_get_last_error_string(void); -LIB_FN const char *beamformer_error_string(BeamformerLibErrorKind kind); +BEAMFORMER_LIB_EXPORT BeamformerLibErrorKind beamformer_get_last_error(void); +BEAMFORMER_LIB_EXPORT const char *beamformer_get_last_error_string(void); +BEAMFORMER_LIB_EXPORT const char *beamformer_error_string(BeamformerLibErrorKind kind); /////////////////////////// // NOTE: Simple API @@ -48,8 +48,9 @@ LIB_FN const char *beamformer_error_string(BeamformerLibErrorKind kind); * - if the function was unsuccessful you can check the error with beamformer_get_last_error() * or beamformer_get_last_error_string() */ -LIB_FN uint32_t beamformer_beamform_data(BeamformerSimpleParameters *bp, void *data, uint32_t data_size, - void *out_data, int32_t timeout_ms); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_beamform_data(BeamformerSimpleParameters *bp, void *data, + uint32_t data_size, void *out_data, + int32_t timeout_ms); /* NOTE: sets timeout for all functions which may timeout but don't * take a timeout argument. The majority of such functions will not @@ -59,51 +60,63 @@ LIB_FN uint32_t beamformer_beamform_data(BeamformerSimpleParameters *bp, void *d * timeout_ms: milliseconds (Default: 0) * * IMPORTANT: timeout of -1 will block forever */ -LIB_FN void beamformer_set_global_timeout(uint32_t timeout_ms); +BEAMFORMER_LIB_EXPORT void beamformer_set_global_timeout(uint32_t timeout_ms); /////////////////////////// // NOTE: Advanced API /* NOTE: downloads the last 32 frames worth of compute timings into output */ -LIB_FN uint32_t beamformer_compute_timings(BeamformerComputeStatsTable *output, int32_t timeout_ms); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_compute_timings(BeamformerComputeStatsTable *output, + int32_t timeout_ms); /* NOTE: pushes data and tries to immediately starts a compute */ -LIB_FN uint32_t beamformer_push_data_with_compute(void *data, uint32_t size, - uint32_t image_plane_tag, - uint32_t parameter_slot); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_data_with_compute(void *data, uint32_t size, + uint32_t image_plane_tag, + uint32_t parameter_slot); /////////////////////////// // Parameter Configuration -LIB_FN uint32_t beamformer_reserve_parameter_blocks(uint32_t count); -LIB_FN uint32_t beamformer_set_pipeline_stage_parameters(uint32_t stage_index, int32_t parameter); -LIB_FN uint32_t beamformer_push_pipeline(int32_t *shaders, uint32_t shader_count, BeamformerDataKind data_kind); - -LIB_FN uint32_t beamformer_set_pipeline_stage_parameters_at(uint32_t stage_index, - int32_t parameter, - uint32_t parameter_slot); -LIB_FN uint32_t beamformer_push_pipeline_at(int32_t *shaders, uint32_t shader_count, - BeamformerDataKind data_kind, uint32_t parameter_slot); - -LIB_FN uint32_t beamformer_push_simple_parameters(BeamformerSimpleParameters *bp); -LIB_FN uint32_t beamformer_push_simple_parameters_at(BeamformerSimpleParameters *bp, uint32_t parameter_slot); - -LIB_FN uint32_t beamformer_push_parameters(BeamformerParameters *); -LIB_FN uint32_t beamformer_push_parameters_ui(BeamformerUIParameters *); -LIB_FN uint32_t beamformer_push_parameters_head(BeamformerParametersHead *); - -LIB_FN uint32_t beamformer_push_parameters_at(BeamformerParameters *, uint32_t parameter_slot); - -LIB_FN uint32_t beamformer_push_channel_mapping(int16_t *mapping, uint32_t count); -LIB_FN uint32_t beamformer_push_channel_mapping_at(int16_t *mapping, uint32_t count, uint32_t parameter_slot); - -LIB_FN uint32_t beamformer_push_sparse_elements(int16_t *elements, uint32_t count); -LIB_FN uint32_t beamformer_push_sparse_elements_at(int16_t *elements, uint32_t count, uint32_t parameter_slot); - -LIB_FN uint32_t beamformer_push_focal_vectors(float *vectors, uint32_t count); -LIB_FN uint32_t beamformer_push_focal_vectors_at(float *vectors, uint32_t count, uint32_t parameter_slot); - -LIB_FN uint32_t beamformer_push_transmit_receive_orientations(uint8_t *values, uint32_t count); -LIB_FN uint32_t beamformer_push_transmit_receive_orientations_at(uint8_t *values, uint32_t count, uint32_t parameter_slot); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_reserve_parameter_blocks(uint32_t count); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_set_pipeline_stage_parameters(uint32_t stage_index, + int32_t parameter); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_pipeline(int32_t *shaders, uint32_t shader_count, + BeamformerDataKind data_kind); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_set_pipeline_stage_parameters_at(uint32_t stage_index, + int32_t parameter, + uint32_t parameter_slot); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_pipeline_at(int32_t *shaders, uint32_t shader_count, + BeamformerDataKind data_kind, + uint32_t parameter_slot); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_simple_parameters(BeamformerSimpleParameters *bp); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_simple_parameters_at(BeamformerSimpleParameters *bp, + uint32_t parameter_slot); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_parameters(BeamformerParameters *); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_parameters_ui(BeamformerUIParameters *); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_parameters_head(BeamformerParametersHead *); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_parameters_at(BeamformerParameters *, + uint32_t parameter_slot); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_channel_mapping(int16_t *mapping, uint32_t count); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_channel_mapping_at(int16_t *mapping, uint32_t count, + uint32_t parameter_slot); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_sparse_elements(int16_t *elements, uint32_t count); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_sparse_elements_at(int16_t *elements, uint32_t count, + uint32_t parameter_slot); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_focal_vectors(float *vectors, uint32_t count); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_focal_vectors_at(float *vectors, uint32_t count, + uint32_t parameter_slot); + +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_transmit_receive_orientations(uint8_t *values, + uint32_t count); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_push_transmit_receive_orientations_at(uint8_t *values, + uint32_t count, + uint32_t parameter_slot); //////////////////// // Filter Creation @@ -125,12 +138,13 @@ LIB_FN uint32_t beamformer_push_transmit_receive_orientations_at(uint8_t *values * M = (A - 8) / (2.285 (ω_s - ω_p)) */ -LIB_FN uint32_t beamformer_create_filter(BeamformerFilterKind kind, void *filter_parameters, - uint32_t filter_size, float sampling_frequency, - uint32_t complex, uint8_t filter_slot, uint8_t parameter_block); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_create_filter(BeamformerFilterKind kind, + void *filter_parameters, uint32_t filter_size, + float sampling_frequency, uint32_t complex, + uint8_t filter_slot, uint8_t parameter_block); ////////////////////////// // Live Imaging Controls -LIB_FN int32_t beamformer_live_parameters_get_dirty_flag(void); -LIB_FN uint32_t beamformer_set_live_parameters(BeamformerLiveImagingParameters *); -LIB_FN BeamformerLiveImagingParameters *beamformer_get_live_parameters(void); +BEAMFORMER_LIB_EXPORT int32_t beamformer_live_parameters_get_dirty_flag(void); +BEAMFORMER_LIB_EXPORT uint32_t beamformer_set_live_parameters(BeamformerLiveImagingParameters *); +BEAMFORMER_LIB_EXPORT BeamformerLiveImagingParameters *beamformer_get_live_parameters(void); diff --git a/tests/throughput.c b/tests/throughput.c @@ -5,7 +5,7 @@ * [ ]: bug: we aren't inserting rf data between each frame */ -#define LIB_FN function +#define BEAMFORMER_LIB_EXPORT function #include "ogl_beamformer_lib.c" #include <signal.h>