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

◆ resolve_image()

std::shared_ptr< Core::VKImage > MayaFlux::Yantra::VisionExtractor::resolve_image ( const std::shared_ptr< Kakshya::SignalSourceContainer > &  source,
size_t  index 
)
private

Definition at line 736 of file VisionExtractor.cpp.

739{
740 if (!source)
741 return nullptr;
742
743 if (auto tc = std::dynamic_pointer_cast<Kakshya::TextureContainer>(source))
744 return tc->to_image(static_cast<uint32_t>(index));
745
746 if (auto wc = std::dynamic_pointer_cast<Kakshya::WindowContainer>(source))
747 return wc->to_image();
748
749 auto vc = std::dynamic_pointer_cast<Kakshya::VideoStreamContainer>(source);
750 if (!vc)
751 return nullptr;
752
753 const uint32_t w = vc->get_width();
754 const uint32_t h = vc->get_height();
755
756 const void* raw = source->get_raw_data();
757 if (!raw)
758 return nullptr;
759
760 if (!m_upload_image || m_upload_w != w || m_upload_h != h) {
762 w, h, Portal::Graphics::ImageFormat::RGBA8, nullptr);
763 m_upload_w = w;
764 m_upload_h = h;
765 }
766 if (!m_upload_image)
767 return nullptr;
768
770 return m_upload_image;
771}
uint32_t h
Definition InkPress.cpp:29
uint32_t index
Definition VKDevice.cpp:122
void upload_data(const std::shared_ptr< Core::VKImage > &image, const void *data, size_t size)
Upload pixel data to an existing texture.
std::shared_ptr< Core::VKImage > create_2d(uint32_t width, uint32_t height, ImageFormat format=ImageFormat::RGBA8, const void *data=nullptr, uint32_t mip_levels=1)
Create a 2D texture.
std::shared_ptr< Core::VKImage > m_upload_image
Source source()
Begin a Source chain.
Definition Plot.hpp:127

References MayaFlux::Portal::Graphics::TextureLoom::create_2d(), h, index, MayaFlux::Portal::Graphics::TextureLoom::instance(), m_upload_h, m_upload_image, m_upload_w, and MayaFlux::Portal::Graphics::TextureLoom::upload_data().

Referenced by run_operation().

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