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

◆ on_attach()

void MayaFlux::Kakshya::VisionProcessor::on_attach ( const std::shared_ptr< SignalSourceContainer > &  container)
overridevirtual

Cache frame geometry from get_structure().

Resets executor state.

Called automatically by DataProcessingChain::add_processor.

Parameters
containerThe SignalSourceContainer to attach to.

Implements MayaFlux::Kakshya::DataProcessor.

Definition at line 20 of file VisionProcessor.cpp.

21{
22 if (!container)
23 return;
24
25 const bool valid = std::dynamic_pointer_cast<VideoStreamContainer>(container)
26 || std::dynamic_pointer_cast<WindowContainer>(container)
27 || std::dynamic_pointer_cast<TextureContainer>(container);
28
29 if (!valid) {
30 error<std::invalid_argument>(
33 std::source_location::current(),
34 "VisionProcessor requires a VideoStreamContainer, WindowContainer, "
35 "or TextureContainer; got {}",
36 typeid(*container).name());
37 }
38
39 const auto& structure = container->get_structure();
40 m_width = static_cast<uint32_t>(structure.get_width());
41 m_height = static_cast<uint32_t>(structure.get_height());
42
45 } else if (m_width > 0 && m_height > 0) {
46 if (!m_executor)
47 m_executor = std::make_unique<Yantra::VisionGpuExecutor>();
48
50 m_gpu_frame = loom.create_2d(m_width, m_height, ImageFormat::RGBA8, nullptr);
52 }
53
54 if (m_width == 0 || m_height == 0) {
56 "VisionProcessor attached to container with zero spatial dimensions");
57 } else {
59 "VisionProcessor attached: {}x{}", m_width, m_height);
60 }
61}
#define MF_INFO(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
std::shared_ptr< Buffers::VKBuffer > m_upload_staging
Kinesis::Vision::VisionExecutor m_cpu_executor
Kinesis::Vision::VisionSequence m_sequence
std::unique_ptr< Yantra::VisionGpuExecutor > m_executor
std::shared_ptr< Core::VKImage > m_gpu_frame
void reset()
Clear stored inter-frame state.
std::shared_ptr< VKBuffer > create_image_staging_buffer(size_t size)
Allocate a persistent host-visible staging buffer sized for repeated streaming uploads to an image of...
@ ContainerProcessing
Container operations (Kakshya - file/stream/region processing)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.
@ RGBA8
Four channel 8-bit.
@ CPU
Execute the sequence with the Kinesis host executor.
VisionBackend backend
Backend used for every step.
Definition VisionOp.hpp:383

References MayaFlux::Kinesis::Vision::VisionSequence::backend, MayaFlux::Journal::ContainerProcessing, MayaFlux::Kinesis::Vision::CPU, MayaFlux::Buffers::create_image_staging_buffer(), MayaFlux::Portal::Graphics::TextureLoom::instance(), MayaFlux::Journal::Kakshya, m_cpu_executor, m_executor, m_gpu_frame, m_height, m_sequence, m_upload_staging, m_width, MF_INFO, MF_WARN, MayaFlux::Kinesis::Vision::VisionExecutor::reset(), and MayaFlux::Kakshya::RGBA8.

+ Here is the call graph for this function: