MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Kakshya::DataDimension Struct Reference

Minimal dimension descriptor focusing on structure only. More...

#include <NDData.hpp>

+ Collaboration diagram for MayaFlux::Kakshya::DataDimension:

Classes

struct  ComponentGroup
 Grouping information for sub-dimensions. More...
 

Public Types

enum class  Role : uint8_t {
  TIME , CHANNEL , SPATIAL_X , SPATIAL_Y ,
  SPATIAL_Z , FREQUENCY , POSITION , NORMAL ,
  TANGENT , BITANGENT , UV , COLOR ,
  INDEX , MIP_LEVEL , CUSTOM
}
 Semantic role of the dimension. More...
 
using DataModule = std::pair< std::vector< DataVariant >, std::vector< DataDimension > >
 Data container combining variants and dimensions.
 

Public Member Functions

 DataDimension ()=default
 
 DataDimension (std::string n, uint64_t s, uint64_t st=1, Role r=Role::CUSTOM)
 Construct a dimension descriptor.
 

Static Public Member Functions

static DataDimension time (uint64_t samples, std::string name="time")
 Convenience constructor for a temporal (time) dimension.
 
static DataDimension channel (uint64_t count, uint64_t stride=1)
 Convenience constructor for a channel dimension.
 
static DataDimension frequency (uint64_t bins, std::string name="frequency")
 Convenience constructor for a frequency dimension.
 
static DataDimension spatial (uint64_t size, char axis, uint64_t stride=1, std::string name="spatial")
 Convenience constructor for a spatial dimension.
 
static DataDimension spatial_1d (uint64_t width)
 Convenience constructor for an array dimension.
 
static DataDimension spatial_2d (uint64_t width, uint64_t height)
 Convenience constructor for a 2D spatial dimension.
 
static DataDimension spatial_3d (uint64_t width, uint64_t height, uint64_t depth)
 Convenience constructor for a 3D spatial dimension.
 
static DataDimension grouped (std::string name, uint64_t element_count, uint8_t components_per_element, Role role=Role::CUSTOM)
 Create dimension with component grouping.
 
static DataDimension vertex_positions (uint64_t count)
 Create dimension for vertex positions (vec3)
 
static DataDimension vertex_normals (uint64_t count)
 Create dimension for vertex normals (vec3)
 
static DataDimension texture_coords (uint64_t count)
 Create dimension for texture coordinates (vec2)
 
static DataDimension vertex_colors (uint64_t count, bool has_alpha=false)
 Create dimension for colors (vec3 or vec4)
 
static DataDimension mipmap_levels (uint64_t levels)
 Create dimension for mipmap levels.
 
template<typename T >
static DataModule create_for_modality (DataModality modality, const std::vector< uint64_t > &shape, T default_value=T {}, MemoryLayout layout=MemoryLayout::ROW_MAJOR, OrganizationStrategy strategy=OrganizationStrategy::PLANAR)
 Create data module for a specific modality.
 
static std::vector< DataDimensioncreate_dimensions (DataModality modality, const std::vector< uint64_t > &shape, MemoryLayout layout=MemoryLayout::ROW_MAJOR)
 Create dimension descriptors for a data modality.
 
template<typename T >
static DataModule create_audio_1d (uint64_t samples, T default_value=T {})
 Create 1D audio data module.
 
template<typename T >
static DataModule create_audio_multichannel (uint64_t samples, uint64_t channels, T default_value=T {})
 Create multi-channel audio data module.
 
template<typename T >
static DataModule create_image_2d (uint64_t height, uint64_t width, T default_value=T {})
 Create 2D image data module.
 
template<typename T >
static DataModule create_spectral_2d (uint64_t time_windows, uint64_t frequency_bins, T default_value=T {})
 Create 2D spectral data module.
 
static std::vector< uint64_t > calculate_strides (const std::vector< uint64_t > &shape, MemoryLayout layout)
 Calculate memory strides based on shape and layout.
 

Public Attributes

std::optional< ComponentGroupgrouping
 
std::string name
 Human-readable identifier for the dimension.
 
uint64_t size {}
 Number of elements in this dimension.
 
uint64_t stride {}
 Memory stride (elements between consecutive indices)
 
Role role = Role::CUSTOM
 Semantic hint for common operations.
 

Static Private Member Functions

template<typename T >
static std::vector< DataVariantcreate_variants (DataModality modality, const std::vector< uint64_t > &shape, T default_value, OrganizationStrategy org=OrganizationStrategy::PLANAR)
 Create data variants for a specific modality.
 

Detailed Description

Minimal dimension descriptor focusing on structure only.

DataDimension describes a single axis of an N-dimensional dataset, providing semantic hints (such as TIME, CHANNEL, SPATIAL_X, etc.) and structural information (name, size, stride).

This abstraction enables containers to describe arbitrary data organizations, supporting digital-first, data-driven processing without imposing analog metaphors (e.g., "track", "tape", etc.).

Definition at line 138 of file NDData.hpp.


The documentation for this struct was generated from the following files: