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

◆ process()

void MayaFlux::Kakshya::RegionOrganizationProcessor::process ( const 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 45 of file RegionProcessors.cpp.

46{
47 if (!container || m_organized_regions.empty()) {
48 return;
49 }
50
51 m_is_processing.store(true);
52
53 try {
54 std::vector<uint64_t> output_shape;
55 uint64_t current_region_frames = 0;
57 auto& current_region = m_organized_regions[m_current_region_index];
58 for (const auto& segment : current_region.segments) {
59 current_region_frames += segment.segment_size[0];
60 }
61 }
62
63 output_shape.push_back(current_region_frames);
64 output_shape.push_back(m_structure.get_frame_size());
65
66 auto& output_data = container->get_processed_data();
67 ensure_output_dimensioning(output_data, output_shape);
68
69 process_organized_regions(container, output_data);
70
71 container->update_processing_state(ProcessingState::PROCESSED);
72
73 } catch (const std::exception& e) {
74 container->update_processing_state(ProcessingState::ERROR);
78 std::source_location::current(),
79 "Error during region organization processing: {}",
80 e.what());
81 }
82
83 m_is_processing.store(false);
84}
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
@ Runtime
General runtime operations (default fallback)
void error_rethrow(Component component, Context context, std::source_location location=std::source_location::current(), std::string_view additional_context="")
Catch and log an exception, then rethrow it.
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.
@ 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::Journal::Kakshya, 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(), MayaFlux::Kakshya::PROCESSED, and MayaFlux::Journal::Runtime.

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

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