|
MayaFlux 0.5.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 void | add_region_group (const RegionGroup &group)=0 |
| Add a named group of regions to the container. | |
| virtual void | clear ()=0 |
| Clear all data in the container. | |
| 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::unordered_map< std::string, RegionGroup > | get_all_region_groups () const =0 |
| Get all region groups in the container. | |
| virtual std::vector< DataDimension > | get_dimensions () const =0 |
| Get the dimensions describing the structure of the data. | |
| auto | get_frame (uint64_t frame_index) const -> FrameView |
| Get a single frame of data efficiently. | |
| template<DataVariantElement T> | |
| auto | get_frame_as (uint64_t frame_index) const -> std::span< const T > |
| Get a single frame of data as a typed span. | |
| virtual uint64_t | get_frame_size () const =0 |
| Get the number of elements that constitute one "frame". | |
| template<DataVariantElement T> | |
| void | get_frames (std::span< T > output, uint64_t start_frame, uint64_t num_frames) const |
| Get multiple frames efficiently. | |
| template<DataVariantElement T> | |
| void | get_frames_as (std::vector< T > &output, uint64_t start_frame, uint64_t num_frames) const |
| Get multiple frames efficiently as a typed span. | |
| virtual MemoryLayout | get_memory_layout () const =0 |
| Get the memory layout used by this container. | |
| virtual uint64_t | get_num_frames () const =0 |
| Get the number of frames in the primary (temporal) dimension. | |
| virtual const void * | get_raw_data () const =0 |
| Get a raw pointer to the underlying data storage. | |
| virtual std::vector< DataVariant > | get_region_data (const Region ®ion) const =0 |
| Get data for a specific region. | |
| virtual RegionGroup | get_region_group (const std::string &name) const =0 |
| Get a region group by name. | |
| 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 const ContainerDataStructure & | get_structure () const =0 |
| virtual ContainerDataStructure & | get_structure ()=0 |
| Get the data structure defining this container's layout. | |
| virtual uint64_t | get_total_elements () const =0 |
| Get the total number of elements in the container. | |
| template<DataVariantElement T> | |
| T | get_value_at (const std::vector< uint64_t > &coordinates) const |
| Read a single element at the given N-dimensional coordinates. | |
| virtual bool | has_data () const =0 |
| Check if the container currently holds any data. | |
| virtual bool | is_region_loaded (const Region ®ion) const =0 |
| Check if a region is loaded in memory. | |
| 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 | load_region (const Region ®ion)=0 |
| Load a region into memory. | |
| virtual void | remove_region_group (const std::string &name)=0 |
| Remove a region group by name. | |
| virtual void | set_memory_layout (MemoryLayout layout)=0 |
| Set the memory layout for this container. | |
| virtual void | set_region_data (const Region ®ion, const std::vector< DataVariant > &data)=0 |
| Set data for a specific region. | |
| virtual void | set_structure (ContainerDataStructure structure)=0 |
| Set the data structure for this container. | |
| template<DataVariantElement T> | |
| void | set_value_at (const std::vector< uint64_t > &coordinates, T value) |
| Write a single element at the given N-dimensional coordinates. | |
| virtual void | unload_region (const Region ®ion)=0 |
| Unload a region from memory. | |
| virtual std::type_index | value_element_type () const =0 |
| Runtime query for the native scalar element type of this container. | |
| virtual | ~NDDataContainer ()=default |
Protected Member Functions | |
| virtual auto | get_frame_span_impl (uint64_t frame_index) const -> DataSpanVariant=0 |
| Implementation-specific method to retrieve a frame span. | |
| virtual void | get_frames_impl (void *output, size_t count, uint64_t start_frame, uint64_t num_frames, const std::type_info &type) const =0 |
| Implementation-specific method to retrieve multiple frames. | |
| virtual void | get_value_impl (const std::vector< uint64_t > &coords, void *out, const std::type_info &type) const =0 |
| Type-erased single-element read. | |
| virtual void | set_value_impl (const std::vector< uint64_t > &coords, const void *in, const std::type_info &type)=0 |
| Type-erased single-element write. | |
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.