MayaFlux 0.1.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 ~NDDataContainer ()=default
 
virtual std::vector< DataDimensionget_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< DataVariantget_region_data (const Region &region) const =0
 Get data for a specific region.
 
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 void set_region_data (const Region &region, 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 RegionGroupget_region_group (const std::string &name) const =0
 Get a region group by name.
 
virtual std::unordered_map< std::string, RegionGroupget_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 &region) const =0
 Check if a region is loaded in memory.
 
virtual void load_region (const Region &region)=0
 Load a region into memory.
 
virtual void unload_region (const Region &region)=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 ContainerDataStructureget_structure ()=0
 Get the data structure defining this container's layout.
 
virtual const ContainerDataStructureget_structure () const =0
 
virtual void set_structure (ContainerDataStructure structure)=0
 Set the data structure for this container.
 

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: