MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Kakshya::NDDataContainer Class Referenceabstract

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, RegionGroupget_all_region_groups () const =0
 Get all region groups in the container.
 
virtual std::vector< DataDimensionget_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< DataVariantget_region_data (const Region &region) 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< DataVariantget_region_group_data (const RegionGroup &regions) const =0
 Get data for multiple regions efficiently.
 
virtual std::vector< DataVariantget_segments_data (const std::vector< RegionSegment > &segments) const =0
 Get data for multiple region segments efficiently.
 
virtual const ContainerDataStructureget_structure () const =0
 
virtual ContainerDataStructureget_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>
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 &region) 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 &region)=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 &region, 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 &region)=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.
 

Detailed Description

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:

  • Arbitrary dimension support (not limited to 2D or 3D)
  • Explicit memory layout control (row-major/column-major)
  • Region-based access for efficient subsetting and streaming
  • Thread-safe locking for concurrent processing
  • Support for multiple data types and precisions
  • Designed for composability with processors, buffers, and computational nodes

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.


The documentation for this class was generated from the following file: