15uint64_t
coordinates_to_linear(
const std::vector<uint64_t>& coords,
const std::vector<DataDimension>& dimensions);
25std::vector<uint64_t>
linear_to_coordinates(uint64_t index,
const std::vector<DataDimension>& dimensions);
32std::vector<uint64_t>
calculate_strides(
const std::vector<DataDimension>& dimensions);
50 const std::vector<uint64_t>& slice_end,
51 const std::vector<DataDimension>& dimensions);
59 const std::vector<DataDimension>& dimensions);
70 const std::vector<double>& scale_factors = {},
71 const std::vector<int64_t>& offset_values = {},
72 const std::unordered_map<std::string, std::any>& rotation_params = {});
82std::vector<uint64_t>
wrap_position_with_loop(
const std::vector<uint64_t>& position,
const Region& loop_region,
bool looping_enabled);
94 const std::vector<uint64_t>& current_positions,
95 uint64_t frames_to_advance,
96 const ContainerDataStructure& structure,
98 const Region& loop_region);
110 const std::vector<uint64_t>& current_positions,
111 const std::vector<uint64_t>& frames_per_channel,
112 const ContainerDataStructure& structure,
113 bool looping_enabled,
114 const Region& loop_region);
159std::vector<std::unordered_map<std::string, std::any>>
create_dimension_info(
const std::vector<DataDimension>& dimensions);
166std::unordered_map<std::string, std::any>
create_coordinate_mapping(
const std::shared_ptr<SignalSourceContainer>& container);
176 const std::vector<uint64_t>& coords,
177 const std::vector<DataDimension>& dimensions);
uint64_t coordinates_to_linear(const std::vector< uint64_t > &coords, const std::vector< DataDimension > &dimensions)
Convert N-dimensional coordinates to a linear index for interleaved data.
std::vector< std::unordered_map< std::string, std::any > > create_dimension_info(const std::vector< DataDimension > &dimensions)
Create structured dimension information.
void clamp_coordinates_to_bounds(std::vector< uint64_t > &coords, const std::vector< DataDimension > &dimensions)
Clamp coordinates to valid container bounds.
std::pair< size_t, uint64_t > coordinates_to_planar_indices(const std::vector< uint64_t > &coords, const std::vector< DataDimension > &dimensions)
Convert coordinates to planar indices (channel vector + frame index).
std::vector< int > extract_dimension_roles(const std::vector< DataDimension > &dimensions)
Extract dimension roles as integers.
bool validate_slice_bounds(const std::vector< uint64_t > &slice_start, const std::vector< uint64_t > &slice_end, const std::vector< DataDimension > &dimensions)
Validate slice coordinates against container bounds.
std::vector< uint64_t > advance_position(const std::vector< uint64_t > ¤t_positions, uint64_t frames_to_advance, const ContainerDataStructure &structure, bool looping_enabled, const Region &loop_region)
Advance current positions by a number of frames, with optional looping.
std::vector< uint64_t > calculate_strides(const std::vector< DataDimension > &dimensions)
Calculate memory strides for each dimension (row-major order).
std::vector< uint64_t > linear_to_coordinates(uint64_t index, const std::vector< DataDimension > &dimensions)
Convert a linear index to N-dimensional coordinates for interleaved data.
bool validate_region_bounds(const Region ®ion, const std::vector< DataDimension > &dimensions)
Validate region bounds against container dimensions.
double position_to_time(uint64_t position, double sample_rate)
Convert position (samples/frames) to time (seconds) given a sample rate.
uint64_t calculate_frame_size_for_dimension(const std::vector< DataDimension > &dimensions, size_t primary_dim)
Calculate the frame size for a specific primary dimension.
std::unordered_map< std::string, std::any > create_coordinate_mapping(const std::shared_ptr< SignalSourceContainer > &container)
Create coordinate mapping information for container.
std::vector< uint64_t > extract_dimension_sizes(const std::vector< DataDimension > &dimensions)
Extract dimension sizes.
uint64_t time_to_position(double time, double sample_rate)
Convert time (seconds) to position (samples/frames) given a sample rate.
std::vector< uint64_t > transform_coordinates(const std::vector< uint64_t > &coords, const std::vector< double > &scale_factors, const std::vector< int64_t > &offset_values, const std::unordered_map< std::string, std::any > &rotation_params)
Transform coordinates using scaling, translation, rotation.
std::vector< uint64_t > wrap_position_with_loop(const std::vector< uint64_t > &positions, const Region &loop_region, bool looping_enabled)
Wrap a position within loop boundaries if looping is enabled.