ogl_beamforming

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

ogl_beamformer_lib_base.h (2857B)


      1 /* See LICENSE for license details. */
      2 #if defined(_WIN32)
      3 #define LIB_FN __declspec(dllexport)
      4 #else
      5 #define LIB_FN
      6 #endif
      7 
      8 #define BEAMFORMER_LIB_ERRORS \
      9 	X(NONE,                    0, "None") \
     10 	X(VERSION_MISMATCH,        1, "host-library version mismatch")                \
     11 	X(COMPUTE_STAGE_OVERFLOW,  2, "compute stage overflow: maximum stages: " str(MAX_COMPUTE_SHADER_STAGES)) \
     12 	X(INVALID_COMPUTE_STAGE,   3, "invalid compute shader stage")                 \
     13 	X(INVALID_IMAGE_PLANE,     4, "invalid image plane")                          \
     14 	X(BUFFER_OVERFLOW,         5, "passed buffer size exceeds available space")   \
     15 	X(WORK_QUEUE_FULL,         6, "work queue full")                              \
     16 	X(OPEN_EXPORT_PIPE,        7, "failed to open export pipe")                   \
     17 	X(READ_EXPORT_PIPE,        8, "failed to read full export data from pipe")    \
     18 	X(SHARED_MEMORY,           9, "failed to open shared memory region")          \
     19 	X(SYNC_VARIABLE,          10, "failed to acquire lock within timeout period")
     20 
     21 #define X(type, num, string) BF_LIB_ERR_KIND_ ##type = num,
     22 typedef enum {BEAMFORMER_LIB_ERRORS} BeamformerLibErrorKind;
     23 #undef X
     24 
     25 LIB_FN uint32_t beamformer_get_api_version(void);
     26 
     27 LIB_FN BeamformerLibErrorKind beamformer_get_last_error(void);
     28 LIB_FN const char *beamformer_get_last_error_string(void);
     29 LIB_FN const char *beamformer_error_string(BeamformerLibErrorKind kind);
     30 
     31 /* IMPORTANT: timeout of -1 will block forever */
     32 
     33 LIB_FN uint32_t set_beamformer_parameters(BeamformerParametersV0 *);
     34 LIB_FN uint32_t set_beamformer_pipeline(int32_t *stages, int32_t stages_count);
     35 LIB_FN uint32_t send_data(void *data, uint32_t data_size);
     36 /* NOTE: sends data and waits for (complex) beamformed data to be returned.
     37  * out_data: must be allocated by the caller as 2 floats per output point. */
     38 LIB_FN uint32_t beamform_data_synchronized(void *data, uint32_t data_size, uint32_t output_points[3],
     39                                            float *out_data, int32_t timeout_ms);
     40 
     41 LIB_FN uint32_t beamformer_start_compute(uint32_t image_plane_tag);
     42 
     43 /* NOTE: these functions only queue an upload; you must flush (old data functions or start_compute) */
     44 LIB_FN uint32_t beamformer_push_data(void *data, uint32_t size, int32_t timeout_ms);
     45 LIB_FN uint32_t beamformer_push_channel_mapping(int16_t *mapping,  uint32_t count, int32_t timeout_ms);
     46 LIB_FN uint32_t beamformer_push_sparse_elements(int16_t *elements, uint32_t count, int32_t timeout_ms);
     47 LIB_FN uint32_t beamformer_push_focal_vectors(float     *vectors,  uint32_t count, int32_t timeout_ms);
     48 
     49 LIB_FN uint32_t beamformer_push_parameters(BeamformerParameters *, int32_t timeout_ms);
     50 LIB_FN uint32_t beamformer_push_parameters_ui(BeamformerUIParameters *, int32_t timeout_ms);
     51 LIB_FN uint32_t beamformer_push_parameters_head(BeamformerParametersHead *, int32_t timeout_ms);