zemp_bp.h (8258B)
1 /* 2 * ISC License (ISC) 3 * 4 * © 2024-2026 Randy Palamar <randy@rnpnr.xyz> 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 // GENERATED CODE 20 21 #include <stdint.h> 22 23 #define ZBP_HeaderMagic (0x5042504d455afecaULL) 24 #define ZBP_OffsetAlignment (0x04U) 25 26 typedef enum { 27 ZBP_RCAOrientation_None = 0, 28 ZBP_RCAOrientation_Rows = 1, 29 ZBP_RCAOrientation_Columns = 2, 30 ZBP_RCAOrientation_Count, 31 } ZBP_RCAOrientation; 32 33 typedef enum { 34 ZBP_DecodeMode_None = 0, 35 ZBP_DecodeMode_Hadamard = 1, 36 ZBP_DecodeMode_Walsh = 2, 37 ZBP_DecodeMode_Count, 38 } ZBP_DecodeMode; 39 40 typedef enum { 41 ZBP_SamplingMode_Standard = 0, 42 ZBP_SamplingMode_Bandpass = 1, 43 ZBP_SamplingMode_Count, 44 } ZBP_SamplingMode; 45 46 typedef enum { 47 ZBP_AcquisitionKind_FORCES = 0, 48 ZBP_AcquisitionKind_UFORCES = 1, 49 ZBP_AcquisitionKind_HERCULES = 2, 50 ZBP_AcquisitionKind_RCA_VLS = 3, 51 ZBP_AcquisitionKind_RCA_TPW = 4, 52 ZBP_AcquisitionKind_UHERCULES = 5, 53 ZBP_AcquisitionKind_RACES = 6, 54 ZBP_AcquisitionKind_EPIC_FORCES = 7, 55 ZBP_AcquisitionKind_EPIC_UFORCES = 8, 56 ZBP_AcquisitionKind_EPIC_UHERCULES = 9, 57 ZBP_AcquisitionKind_Flash = 10, 58 ZBP_AcquisitionKind_HERO_PA = 11, 59 ZBP_AcquisitionKind_HEXDoppler = 12, 60 ZBP_AcquisitionKind_XDoppler = 13, 61 ZBP_AcquisitionKind_Count, 62 } ZBP_AcquisitionKind; 63 64 typedef enum { 65 ZBP_ContrastMode_None = 0, 66 ZBP_ContrastMode_A1S2 = 1, 67 ZBP_ContrastMode_A2 = 2, 68 ZBP_ContrastMode_Count, 69 } ZBP_ContrastMode; 70 71 typedef enum { 72 ZBP_EmissionKind_Sine = 0, 73 ZBP_EmissionKind_Chirp = 1, 74 ZBP_EmissionKind_Count, 75 } ZBP_EmissionKind; 76 77 typedef enum { 78 ZBP_DataKind_Int16 = 0, 79 ZBP_DataKind_Int16Complex = 1, 80 ZBP_DataKind_Float32 = 2, 81 ZBP_DataKind_Float32Complex = 3, 82 ZBP_DataKind_Float16 = 4, 83 ZBP_DataKind_Float16Complex = 5, 84 ZBP_DataKind_Count, 85 } ZBP_DataKind; 86 87 typedef enum { 88 ZBP_DataCompressionKind_None = 0, 89 ZBP_DataCompressionKind_ZSTD = 1, 90 ZBP_DataCompressionKind_Count, 91 } ZBP_DataCompressionKind; 92 93 typedef enum { 94 ZBP_ContrastDataFlags_Reduced = 1 << 0, 95 } ZBP_ContrastDataFlags; 96 97 typedef struct ZBP_BaseHeader { 98 uint64_t magic; 99 uint32_t major; 100 uint32_t minor; 101 } ZBP_BaseHeader; 102 103 typedef struct ZBP_HeaderV1 { 104 uint64_t magic; 105 uint32_t version; 106 int16_t decode_mode; 107 int16_t beamform_mode; 108 uint32_t raw_data_dimension[4]; 109 uint32_t sample_count; 110 uint32_t channel_count; 111 uint32_t receive_event_count; 112 uint32_t frame_count; 113 float transducer_element_pitch[2]; 114 float transducer_transform_matrix[16]; 115 int16_t channel_mapping[256]; 116 float steering_angles[256]; 117 float focal_depths[256]; 118 int16_t sparse_elements[256]; 119 int16_t hadamard_rows[256]; 120 float speed_of_sound; 121 float demodulation_frequency; 122 float sampling_frequency; 123 float time_offset; 124 uint32_t transmit_mode; 125 } ZBP_HeaderV1; 126 127 typedef struct ZBP_HeaderV2 { 128 uint64_t magic; 129 uint32_t major; 130 uint32_t minor; 131 uint32_t raw_data_dimension[4]; 132 ZBP_DataKind raw_data_kind; 133 int32_t raw_data_offset; 134 ZBP_DataCompressionKind raw_data_compression_kind; 135 ZBP_DecodeMode decode_mode; 136 ZBP_SamplingMode sampling_mode; 137 float sampling_frequency; 138 float demodulation_frequency; 139 float speed_of_sound; 140 int32_t channel_mapping_offset; 141 uint32_t sample_count; 142 uint32_t channel_count; 143 uint32_t receive_event_count; 144 float transducer_transform_matrix[16]; 145 float transducer_element_pitch[2]; 146 float time_offset; 147 float group_acquisition_time; 148 float ensemble_repetition_interval; 149 ZBP_AcquisitionKind acquisition_mode; 150 int32_t acquisition_parameters_offset; 151 ZBP_ContrastMode contrast_mode; 152 int32_t contrast_parameters_offset; 153 int32_t emission_descriptors_offset; 154 } ZBP_HeaderV2; 155 156 typedef struct ZBP_HeaderV3 { 157 uint64_t magic; 158 uint32_t major; 159 uint32_t minor; 160 uint32_t raw_data_dimension[4]; 161 uint64_t raw_data_size; 162 int32_t raw_data_offset; 163 ZBP_DataKind raw_data_kind; 164 ZBP_DataCompressionKind raw_data_compression_kind; 165 int32_t raw_data_layout_offset; 166 ZBP_DecodeMode decode_mode; 167 ZBP_SamplingMode sampling_mode; 168 float sampling_frequency; 169 float speed_of_sound; 170 int32_t channel_mapping_offset; 171 uint32_t sample_count; 172 uint32_t channel_count; 173 uint32_t receive_event_count; 174 uint32_t transducer_tile_count[2]; 175 float transducer_element_pitch[2]; 176 float group_acquisition_time; 177 float ensemble_repetition_interval; 178 ZBP_AcquisitionKind acquisition_mode; 179 int32_t acquisition_parameters_offset; 180 ZBP_ContrastMode contrast_mode; 181 uint32_t contrast_data_flags; 182 int32_t contrast_parameters_offset; 183 int32_t emission_descriptors_offset; 184 int32_t time_delays_offset; 185 int32_t demodulation_frequencies_offset; 186 int32_t transducer_transforms_offset; 187 uint32_t string_count; 188 int32_t string_table_offset; 189 int32_t format_extension_offset; 190 } ZBP_HeaderV3; 191 192 typedef struct ZBP_StringTableEntry { 193 uint32_t string_tag_length; 194 int32_t string_tag_offset; 195 uint32_t string_length; 196 int32_t string_offset; 197 } ZBP_StringTableEntry; 198 199 typedef struct ZBP_EmissionDescriptor { 200 ZBP_EmissionKind emission_kind; 201 int32_t parameters_offset; 202 } ZBP_EmissionDescriptor; 203 204 typedef struct ZBP_EmissionSineParameters { 205 float cycles; 206 float frequency; 207 } ZBP_EmissionSineParameters; 208 209 typedef struct ZBP_EmissionChirpParameters { 210 float duration; 211 float min_frequency; 212 float max_frequency; 213 } ZBP_EmissionChirpParameters; 214 215 typedef struct ZBP_RCATransmitFocus { 216 float focal_depth; 217 float steering_angle; 218 float origin_offset; 219 uint32_t transmit_receive_orientation; 220 } ZBP_RCATransmitFocus; 221 222 typedef struct ZBP_FORCESParameters { 223 ZBP_RCATransmitFocus transmit_focus; 224 } ZBP_FORCESParameters; 225 226 typedef struct ZBP_uFORCESParameters { 227 ZBP_RCATransmitFocus transmit_focus; 228 int32_t sparse_elements_offset; 229 } ZBP_uFORCESParameters; 230 231 typedef struct ZBP_HERCULESParameters { 232 ZBP_RCATransmitFocus transmit_focus; 233 } ZBP_HERCULESParameters; 234 235 typedef struct ZBP_uHERCULESParameters { 236 ZBP_RCATransmitFocus transmit_focus; 237 int32_t sparse_elements_offset; 238 } ZBP_uHERCULESParameters; 239 240 typedef struct ZBP_TPWParameters { 241 int32_t tilting_angles_offset; 242 int32_t transmit_receive_orientations_offset; 243 } ZBP_TPWParameters; 244 245 typedef struct ZBP_VLSParameters { 246 int32_t focal_depths_offset; 247 int32_t origin_offsets_offset; 248 int32_t transmit_receive_orientations_offset; 249 } ZBP_VLSParameters; 250 251 typedef struct ZBP_HERO_PAParameters { 252 uint32_t transmit_receive_orientation; 253 } ZBP_HERO_PAParameters; 254 255 typedef struct ZBP_HEXDopplerParameters { 256 int32_t bin_count[2]; 257 int32_t bin_size[2]; 258 } ZBP_HEXDopplerParameters; 259 260 typedef struct ZBP_XDopplerParameters { 261 int32_t angle_count[2]; 262 int32_t tilting_angles_offset; 263 } ZBP_XDopplerParameters; 264 265 typedef struct ZBP_EPIC_FORCESParameters { 266 int32_t transmit_foci_offset; 267 } ZBP_EPIC_FORCESParameters;