MayaFlux 0.5.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 21 of file VisionProcessor.cpp.

22{
23 if (!container)
24 return;
25
26 const bool valid = std::dynamic_pointer_cast<VideoStreamContainer>(container)
27 || std::dynamic_pointer_cast<WindowContainer>(container)
28 || std::dynamic_pointer_cast<TextureContainer>(container);
29
30 if (!valid) {
31 error<std::invalid_argument>(
34 std::source_location::current(),
35 "VisionProcessor requires a VideoStreamContainer, WindowContainer, "
36 "or TextureContainer; got {}",
37 typeid(*container).name());
38 }
39
40 const auto& structure = container->get_structure();
41 m_width = static_cast<uint32_t>(structure.get_width());
42 m_height = static_cast<uint32_t>(structure.get_height());
43
44 if (m_force_cpu) {
46 } else if (m_width > 0 && m_height > 0) {
47 if (!m_executor)
48 m_executor = std::make_unique<Yantra::VisionGpuExecutor>();
49
53 }
54
55 if (m_width == 0 || m_height == 0) {
57 "VisionProcessor attached to container with zero spatial dimensions");
58 } else {
60 "VisionProcessor attached: {}x{}", m_width, m_height);
61 }
62}
#define MF_INFO(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
std::shared_ptr< Buffers::VKBuffer > m_upload_staging
Kinesis::Vision::VisionExecutor m_cpu_executor
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.

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

+ Here is the call graph for this function: