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

◆ process_to_container_async() [2/2]

template<typename CompleteFn >
void MayaFlux::Yantra::Granular::process_to_container_async ( const std::shared_ptr< GranularMatrix > &  matrix,
const std::shared_ptr< Kakshya::SignalSourceContainer > &  container,
AttributeExecutor  executor,
CompleteFn &&  on_complete,
const GranularConfig config = {},
GranularOutput  output = GranularOutput::CONTAINER 
)

Async offline granular pipeline (AttributeExecutor path).

Parameters
matrixComputeMatrix that owns the async future.
containerSource signal data.
executorLambda receiving grain samples and context, returning a scalar.
on_completeCalled on the worker thread with the finished container.
configPipeline scalar parameters.
outputCONTAINER for concatenative, CONTAINER_ADDITIVE for OLA.

Definition at line 582 of file GranularWorkflow.hpp.

587 {},
588 GranularOutput output = GranularOutput::CONTAINER)
589{
590 auto ctx = make_granular_context(config, std::move(executor));
591
592 ctx.execution_metadata["container"] = container;
593 if (config.taper)
594 ctx.execution_metadata["grain_taper"] = config.taper;
595
596 auto seg_op = matrix->get_operation<SegmentOp>("segment");
597 auto attr_op = matrix->get_operation<AttributeOp>("attribute");
598 auto sort_op = matrix->get_operation<SortOp>("sort");
599 apply_context_parameters(seg_op, ctx);
600 apply_context_parameters(attr_op, ctx);
601 apply_context_parameters(sort_op, ctx);
602
603 matrix->with_async(make_granular_input(container), [seg_op, attr_op, sort_op, ctx, output](auto chain) {
604 auto sorted = chain
605 .template then<SegmentOp>("segment")
606 .template then<AttributeOp>("attribute")
607 .template then<SortOp>("sort")
608 .to_io();
609 if (output == GranularOutput::CONTAINER_ADDITIVE) {
610 return safe_any_cast_or_throw<
612 reconstruct_grains_additive(std::any(sorted), ctx));
613 }
614 return safe_any_cast_or_throw<
615 Datum<std::shared_ptr<Kakshya::SignalSourceContainer>>>(
616 reconstruct_grains(std::any(sorted), ctx)); }, std::forward<CompleteFn>(on_complete));
617}
void apply_context_parameters(std::shared_ptr< OperationType > operation, const ExecutionContext &ctx)
Applies context parameters to an operation.
Input/Output container for computation pipeline data flow with structure preservation.
Definition DataIO.hpp:24