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