MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ process()

void MayaFlux::Kakshya::RegionOrganizationProcessor::process ( std::shared_ptr< SignalSourceContainer container)
overridevirtual

Processes audio data according to the current region organization.

Applies region selection, transitions, and looping as configured.

Parameters
containerThe signal container to process.

Implements MayaFlux::Kakshya::DataProcessor.

Definition at line 42 of file RegionProcessors.cpp.

43{
44 if (!container || m_organized_regions.empty()) {
45 return;
46 }
47
48 m_is_processing.store(true);
49
50 try {
51 std::vector<uint64_t> output_shape;
52 uint64_t current_region_frames = 0;
54 auto& current_region = m_organized_regions[m_current_region_index];
55 for (const auto& segment : current_region.segments) {
56 current_region_frames += segment.segment_size[0];
57 }
58 }
59
60 output_shape.push_back(current_region_frames);
61 output_shape.push_back(m_structure.get_frame_size());
62
63 auto& output_data = container->get_processed_data();
64 ensure_output_dimensioning(output_data, output_shape);
65
66 process_organized_regions(container, output_data);
67
68 container->update_processing_state(ProcessingState::PROCESSED);
69
70 } catch (const std::exception& e) {
71 container->update_processing_state(ProcessingState::ERROR);
72 throw;
73 }
74
75 m_is_processing.store(false);
76}
virtual void process_organized_regions(const std::shared_ptr< SignalSourceContainer > &container, std::vector< DataVariant > &output_data)
Process regions according to their selection pattern.
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.
std::vector< OrganizedRegion > m_organized_regions
@ ERROR
Container is in an error state and cannot proceed.
@ PROCESSED
Container has completed processing and results are available.
static size_t get_frame_size(const std::vector< DataDimension > &dimensions)
Extract the size of non time dimensions (channel, spatial, frequency)

References MayaFlux::Kakshya::RegionProcessorBase::ensure_output_dimensioning(), MayaFlux::Kakshya::ERROR, MayaFlux::Kakshya::ContainerDataStructure::get_frame_size(), MayaFlux::Kakshya::RegionProcessorBase::m_current_region_index, MayaFlux::Kakshya::RegionProcessorBase::m_is_processing, MayaFlux::Kakshya::RegionProcessorBase::m_organized_regions, MayaFlux::Kakshya::RegionProcessorBase::m_structure, process_organized_regions(), and MayaFlux::Kakshya::PROCESSED.

Referenced by MayaFlux::Kakshya::DynamicRegionProcessor::process().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: