|
MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
|
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< DataDimension > | create_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< ComponentGroup > | grouping |
| 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< DataVariant > | create_variants (DataModality modality, const std::vector< uint64_t > &shape, T default_value, OrganizationStrategy org=OrganizationStrategy::PLANAR) |
| Create data variants for a specific modality. | |
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.