45 void organize_container_data(
const std::shared_ptr<SignalSourceContainer>& container)
override;
52 void process(
const std::shared_ptr<SignalSourceContainer>& container)
override;
68 void add_segment_to_region(
69 const std::string& group_name,
71 const std::vector<uint64_t>& start_coords,
72 const std::vector<uint64_t>& end_coords,
73 const std::unordered_map<std::string, std::any>& attributes);
82 void set_region_transition(
const std::string& group_name,
93 void set_region_looping(
const std::string& group_name,
96 const std::vector<uint64_t>& loop_start = {},
97 const std::vector<uint64_t>& loop_end = {});
104 void jump_to_region(
const std::string& group_name,
size_t region_index);
110 void jump_to_position(
const std::vector<uint64_t>&
position);
118 void set_selection_pattern(
const std::string& group_name,
size_t region_index,
RegionSelectionPattern pattern);
126 virtual void process_organized_regions(
const std::shared_ptr<SignalSourceContainer>& container,
127 std::vector<DataVariant>& output_data);
138 const std::shared_ptr<SignalSourceContainer>& container,
139 std::vector<DataVariant>& output_data);
148 virtual void apply_region_transition(
const OrganizedRegion& current_region,
150 const std::shared_ptr<SignalSourceContainer>& container,
151 std::vector<DataVariant>& output_data);
158 virtual size_t select_next_segment(
const OrganizedRegion& region)
const;
161 const std::vector<uint64_t>&
position,
162 const std::vector<OrganizedRegion>& regions)
const;
166 mutable std::mt19937 m_random_engine { std::random_device {}() };
174 void organize_group(
const std::shared_ptr<SignalSourceContainer>& container,
180 void refresh_organized_data();
190using RegionOrganizer = std::function<void(std::vector<OrganizedRegion>&, std::shared_ptr<SignalSourceContainer>)>;
224 void process(
const std::shared_ptr<SignalSourceContainer>& container)
override;
229 void trigger_reorganization();
236 const std::shared_ptr<SignalSourceContainer>&)>
239 m_auto_reorganization_criteria = std::move(criteria);
243 std::atomic<bool> m_needs_reorganization {
false };
250 bool should_reorganize(
const std::shared_ptr<SignalSourceContainer>& container);
258 std::function<bool(
const std::vector<OrganizedRegion>&,
259 const std::shared_ptr<SignalSourceContainer>&)>
std::function< bool(const std::vector< OrganizedRegion > &, const std::shared_ptr< SignalSourceContainer > &)> m_auto_reorganization_criteria
Criteria function for automatic reorganization.
void set_auto_reorganization(std::function< bool(const std::vector< OrganizedRegion > &, const std::shared_ptr< SignalSourceContainer > &)> criteria)
Set automatic reorganization based on custom criteria.
RegionOrganizer m_reorganizer_callback
Callback for reorganization.
Extends RegionOrganizationProcessor with dynamic, runtime reorganization capabilities.
std::vector< double > m_segment_weights
Data-driven processor for organizing and processing non-linear audio regions.
Base class for N-dimensional region processors.
std::function< void(std::vector< OrganizedRegion > &, std::shared_ptr< SignalSourceContainer >)> RegionOrganizer
Function type for dynamic region reorganization.
bool is_segment_complete(const OrganizedRegion ®ion, size_t segment_index)
void add_region_group(std::unordered_map< std::string, RegionGroup > &groups, const RegionGroup &group)
Add a RegionGroup to a group map.
RegionSelectionPattern
Describes how regions are selected for processing or playback.
RegionTransition
Describes how transitions between regions are handled.
std::optional< size_t > find_region_for_position(const std::vector< uint64_t > &position, const std::vector< Region > ®ions)
Find optimal region containing given position.
A structured audio region with metadata and transition information.
Organizes related signal regions into a categorized collection.
Represents a discrete segment of audio data with caching capabilities.