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

Base class for N-dimensional region processors. More...

#include <RegionProcessorBase.hpp>

+ Inheritance diagram for MayaFlux::Kakshya::RegionProcessorBase:
+ Collaboration diagram for MayaFlux::Kakshya::RegionProcessorBase:

Public Member Functions

const std::vector< uint64_t > & get_current_position () const
 Get the current processing position (N-dimensional coordinates).
 
bool is_processing () const override
 Query if the processor is currently performing processing.
 
void on_attach (const std::shared_ptr< SignalSourceContainer > &container) override
 Attach this processor to a signal source container.
 
void on_detach (const std::shared_ptr< SignalSourceContainer > &container) override
 Detach this processor from its container.
 
void set_auto_caching (bool enabled)
 Enable or disable automatic region caching.
 
void set_cache_limit (size_t max_cached_elements)
 Set the maximum cache size for regions (in elements).
 
void set_current_position (const std::vector< uint64_t > &position)
 Set the current processing position (N-dimensional coordinates).
 
virtual ~RegionProcessorBase ()=default
 
- Public Member Functions inherited from MayaFlux::Kakshya::DataProcessor
virtual void process (const std::shared_ptr< SignalSourceContainer > &container)=0
 Processes the data in the container.
 
virtual ~DataProcessor ()=default
 Virtual destructor for proper cleanup.
 

Protected Member Functions

virtual bool advance_position (std::vector< uint64_t > &position, uint64_t steps=1, const OrganizedRegion *region=nullptr)
 Advance position according to memory layout and looping.
 
virtual void cache_region_if_needed (const RegionSegment &segment, const std::shared_ptr< SignalSourceContainer > &container)
 Cache a region's data if beneficial and not already cached.
 
virtual void ensure_output_dimensioning (std::vector< DataVariant > &output_data, const std::vector< uint64_t > &required_shape)
 Ensure output data is properly dimensioned for region extraction.
 
virtual void organize_container_data (const std::shared_ptr< SignalSourceContainer > &container)=0
 Organize container data into structured regions.
 

Protected Attributes

bool m_auto_caching = true
 
std::unique_ptr< RegionCacheManagerm_cache_manager
 
std::weak_ptr< SignalSourceContainerm_container_weak
 
std::vector< uint64_t > m_current_position
 
size_t m_current_region_index = 0
 
std::atomic< bool > m_is_processing { false }
 
size_t m_max_cache_size { static_cast<size_t>(1024 * 1024) }
 
std::vector< OrganizedRegionm_organized_regions
 
ContainerDataStructure m_structure
 

Detailed Description

Base class for N-dimensional region processors.

RegionProcessorBase provides a foundation for advanced, data-driven region processing in Maya Flux. It abstracts common functionality for working with N-dimensional regions, including:

  • Region organization and management (non-linear, content-driven, or semantic regions)
  • Region-level caching for efficient repeated/random access
  • State and position tracking for non-linear or interactive workflows
  • Dimension role metadata for semantic-aware processing (e.g., TIME, CHANNEL, SPATIAL_X)
  • Coordinate transformations (scaling, translation, rotation) for flexible data access

This class is designed for digital-first, data-driven workflows, enabling:

  • Non-linear playback, editing, and analysis of audio or multi-dimensional data
  • Dynamic region-based processing (e.g., slicing, rearrangement, feature extraction)
  • Efficient streaming and caching of large or remote datasets
  • Integration with higher-level processors such as RegionOrganizationProcessor

Derived classes should implement region organization logic and may override caching, extraction, and transformation methods for specialized behavior.

See also
RegionOrganizationProcessor, DynamicRegionProcessor

Definition at line 34 of file RegionProcessorBase.hpp.


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