ogl_beamforming

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

beamformer_core.c (5978B)


      1 /* See LICENSE for license details. */
      2 
      3 // GENERATED CODE
      4 
      5 typedef enum {
      6 	BeamformerDataLayout_ChannelEventSample = 0,
      7 	BeamformerDataLayout_ChannelSampleEvent = 1,
      8 	BeamformerDataLayout_EventChannelSample = 2,
      9 	BeamformerDataLayout_SampleChannelEvent = 3,
     10 	BeamformerDataLayout_Image              = 4,
     11 	BeamformerDataLayout_Count,
     12 } BeamformerDataLayout;
     13 
     14 typedef enum {
     15 	BeamformerRFDimension_Channels = 0,
     16 	BeamformerRFDimension_Events   = 1,
     17 	BeamformerRFDimension_Samples  = 2,
     18 	BeamformerRFDimension_Count,
     19 } BeamformerRFDimension;
     20 
     21 typedef enum {
     22 	BeamformerPanelKind_Nil                 = 0,
     23 	BeamformerPanelKind_Split               = 1,
     24 	BeamformerPanelKind_TabGroup            = 2,
     25 	BeamformerPanelKind_ComputeBarGraph     = 3,
     26 	BeamformerPanelKind_ComputeStats        = 4,
     27 	BeamformerPanelKind_FrameViewLive       = 5,
     28 	BeamformerPanelKind_FrameViewCopy       = 6,
     29 	BeamformerPanelKind_FrameViewXPlane     = 7,
     30 	BeamformerPanelKind_LiveImagingControls = 8,
     31 	BeamformerPanelKind_ParameterListing    = 9,
     32 	BeamformerPanelKind_Count,
     33 } BeamformerPanelKind;
     34 
     35 typedef enum {
     36 	BeamformerRegisterSlot_String         = 0,
     37 	BeamformerRegisterSlot_TreeNode       = 1,
     38 	BeamformerRegisterSlot_Window         = 2,
     39 	BeamformerRegisterSlot_Frame          = 3,
     40 	BeamformerRegisterSlot_FrameView      = 4,
     41 	BeamformerRegisterSlot_LiveControls   = 5,
     42 	BeamformerRegisterSlot_SplitAxis      = 6,
     43 	BeamformerRegisterSlot_SplitLeftTree  = 7,
     44 	BeamformerRegisterSlot_SplitRightTree = 8,
     45 	BeamformerRegisterSlot_DropTargetTree = 9,
     46 	BeamformerRegisterSlot_DropChildIndex = 10,
     47 	BeamformerRegisterSlot_Count,
     48 } BeamformerRegisterSlot;
     49 
     50 typedef enum {
     51 	BeamformerCommandKind_Nil       = 0,
     52 	BeamformerCommandKind_CloseTab  = 1,
     53 	BeamformerCommandKind_FocusTab  = 2,
     54 	BeamformerCommandKind_MoveTab   = 3,
     55 	BeamformerCommandKind_OpenTab   = 4,
     56 	BeamformerCommandKind_SplitTree = 5,
     57 	BeamformerCommandKind_Count,
     58 } BeamformerCommandKind;
     59 
     60 typedef enum {
     61 	BeamformerPanelFlags_List        = 1 << 0,
     62 	BeamformerPanelFlags_NeedsFrame  = 1 << 1,
     63 	BeamformerPanelFlags_HasSettings = 1 << 2,
     64 } BeamformerPanelFlags;
     65 
     66 typedef struct {
     67 	str8                 display;
     68 	str8                 string;
     69 	str8                 description;
     70 	BeamformerPanelFlags flags;
     71 } BeamformerPanelInfo;
     72 
     73 typedef struct {
     74 	str8 string;
     75 	u64  tree_node;
     76 	u64  window;
     77 	u64  frame;
     78 	u64  frame_view;
     79 	u64  live_controls;
     80 	u64  split_axis;
     81 	u64  split_left_tree;
     82 	u64  split_right_tree;
     83 	u64  drop_target_tree;
     84 	u64  drop_child_index;
     85 } BeamformerRegisters;
     86 
     87 typedef struct {
     88 	str8 string;
     89 	str8 display;
     90 	str8 description;
     91 } BeamformerCommandInfo;
     92 
     93 read_only BeamformerPanelInfo beamformer_panel_infos[] = {
     94 	{str8_comp(""), str8_comp("nil"), str8_comp(""), (0*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(0*BeamformerPanelFlags_HasSettings)},
     95 	{str8_comp(""), str8_comp("split"), str8_comp(""), (0*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(0*BeamformerPanelFlags_HasSettings)},
     96 	{str8_comp(""), str8_comp("group"), str8_comp(""), (0*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(0*BeamformerPanelFlags_HasSettings)},
     97 	{str8_comp("Compute Bar Graph"), str8_comp("compute_bar_graph"), str8_comp("Bar graph showing portions of compute occupied by each stage."), (1*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(0*BeamformerPanelFlags_HasSettings)},
     98 	{str8_comp("Compute Stats"), str8_comp("compute_stats"), str8_comp("Average stats about beamforming computations."), (1*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(0*BeamformerPanelFlags_HasSettings)},
     99 	{str8_comp("Frame View"), str8_comp("frame_view_live"), str8_comp("Latest frame with selected tag."), (1*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(1*BeamformerPanelFlags_HasSettings)},
    100 	{str8_comp("Frame View (Copy)"), str8_comp("frame_view_copy"), str8_comp("Copy of an old frame. Useful for comparisons."), (0*BeamformerPanelFlags_List)|(1*BeamformerPanelFlags_NeedsFrame)|(1*BeamformerPanelFlags_HasSettings)},
    101 	{str8_comp("3D X-Plane"), str8_comp("frame_view_xplane"), str8_comp("3D Cross Plane View."), (1*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(1*BeamformerPanelFlags_HasSettings)},
    102 	{str8_comp("Live Controls"), str8_comp("live_controls"), str8_comp("Imaging system controls."), (1*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(0*BeamformerPanelFlags_HasSettings)},
    103 	{str8_comp("Parameter Listing"), str8_comp("parameters_listing"), str8_comp("Editable parameter set used for beamforming."), (1*BeamformerPanelFlags_List)|(0*BeamformerPanelFlags_NeedsFrame)|(1*BeamformerPanelFlags_HasSettings)},
    104 };
    105 
    106 #define beamformer_registers_init_literal \
    107 	.string           = beamformer_registers()->string, \
    108 	.tree_node        = beamformer_registers()->tree_node, \
    109 	.window           = beamformer_registers()->window, \
    110 	.frame            = beamformer_registers()->frame, \
    111 	.frame_view       = beamformer_registers()->frame_view, \
    112 	.live_controls    = beamformer_registers()->live_controls, \
    113 	.split_axis       = beamformer_registers()->split_axis, \
    114 	.split_left_tree  = beamformer_registers()->split_left_tree, \
    115 	.split_right_tree = beamformer_registers()->split_right_tree, \
    116 	.drop_target_tree = beamformer_registers()->drop_target_tree, \
    117 	.drop_child_index = beamformer_registers()->drop_child_index, \
    118 
    119 read_only BeamformerCommandInfo beamformer_command_infos[] = {
    120 	{0},
    121 	{str8_comp("close_tab"), str8_comp("Close Tab"), str8_comp("Closes currently active tab.")},
    122 	{str8_comp("focus_tab"), str8_comp("Focus Tab"), str8_comp("Focus the currently selected tab in its group.")},
    123 	{str8_comp("move_tab"), str8_comp("Move Tab"), str8_comp("Moves an exisiting tab to a different group/split.")},
    124 	{str8_comp("open_tab"), str8_comp("Open Tab"), str8_comp("Opens a new tab with a specified view.")},
    125 	{str8_comp("split_tree"), str8_comp("Split Tree"), str8_comp("Splits the UI into two new splits.")},
    126 };
    127