|
MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
|
Abstract interface for N-dimensional data containers. More...
#include <NDimensionalContainer.hpp>
Inheritance diagram for MayaFlux::Kakshya::NDDataContainer:
Collaboration diagram for MayaFlux::Kakshya::NDDataContainer:Public Member Functions | |
| virtual | ~NDDataContainer ()=default |
| virtual std::vector< DataDimension > | get_dimensions () const =0 |
| Get the dimensions describing the structure of the data. | |
| virtual uint64_t | get_total_elements () const =0 |
| Get the total number of elements in the container. | |
| virtual MemoryLayout | get_memory_layout () const =0 |
| Get the memory layout used by this container. | |
| virtual void | set_memory_layout (MemoryLayout layout)=0 |
| Set the memory layout for this container. | |
| virtual uint64_t | get_frame_size () const =0 |
| Get the number of elements that constitute one "frame". | |
| virtual uint64_t | get_num_frames () const =0 |
| Get the number of frames in the primary (temporal) dimension. | |
| virtual std::vector< DataVariant > | get_region_data (const Region ®ion) const =0 |
| Get data for a specific region. | |
| virtual std::vector< DataVariant > | get_region_group_data (const RegionGroup ®ions) const =0 |
| Get data for multiple regions efficiently. | |
| virtual std::vector< DataVariant > | get_segments_data (const std::vector< RegionSegment > &segments) const =0 |
| Get data for multiple region segments efficiently. | |
| virtual void | set_region_data (const Region ®ion, const std::vector< DataVariant > &data)=0 |
| Set data for a specific region. | |
| virtual std::span< const double > | get_frame (uint64_t frame_index) const =0 |
| Get a single frame of data efficiently. | |
| virtual void | get_frames (std::span< double > output, uint64_t start_frame, uint64_t num_frames) const =0 |
| Get multiple frames efficiently. | |
| virtual double | get_value_at (const std::vector< uint64_t > &coordinates) const =0 |
| Get a single value at the specified coordinates. | |
| virtual void | set_value_at (const std::vector< uint64_t > &coordinates, double value)=0 |
| Set a single value at the specified coordinates. | |
| virtual void | add_region_group (const RegionGroup &group)=0 |
| Add a named group of regions to the container. | |
| virtual const RegionGroup & | get_region_group (const std::string &name) const =0 |
| Get a region group by name. | |
| virtual std::unordered_map< std::string, RegionGroup > | get_all_region_groups () const =0 |
| Get all region groups in the container. | |
| virtual void | remove_region_group (const std::string &name)=0 |
| Remove a region group by name. | |
| virtual bool | is_region_loaded (const Region ®ion) const =0 |
| Check if a region is loaded in memory. | |
| virtual void | load_region (const Region ®ion)=0 |
| Load a region into memory. | |
| virtual void | unload_region (const Region ®ion)=0 |
| Unload a region from memory. | |
| virtual uint64_t | coordinates_to_linear_index (const std::vector< uint64_t > &coordinates) const =0 |
| Convert coordinates to linear index based on current memory layout. | |
| virtual std::vector< uint64_t > | linear_index_to_coordinates (uint64_t linear_index) const =0 |
| Convert linear index to coordinates based on current memory layout. | |
| virtual void | clear ()=0 |
| Clear all data in the container. | |
| virtual void | lock ()=0 |
| Acquire a lock for thread-safe access. | |
| virtual void | unlock ()=0 |
| Release a previously acquired lock. | |
| virtual bool | try_lock ()=0 |
| Attempt to acquire a lock without blocking. | |
| virtual const void * | get_raw_data () const =0 |
| Get a raw pointer to the underlying data storage. | |
| virtual bool | has_data () const =0 |
| Check if the container currently holds any data. | |
| virtual ContainerDataStructure & | get_structure ()=0 |
| Get the data structure defining this container's layout. | |
| virtual const ContainerDataStructure & | get_structure () const =0 |
| virtual void | set_structure (ContainerDataStructure structure)=0 |
| Set the data structure for this container. | |
Abstract interface for N-dimensional data containers.
NDDataContainer provides a dimension-agnostic API for accessing and manipulating multi-dimensional data (audio, video, tensors, etc). It is designed for digital-first, data-driven workflows, enabling flexible, efficient, and generic processing of structured data without imposing analog metaphors or legacy constraints.
Key features:
This interface is the foundation for all high-level data containers in Maya Flux, enabling advanced workflows such as real-time streaming, offline analysis, and hybrid computational models.
Definition at line 214 of file NDimensionalContainer.hpp.