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

◆ hook_camera_to_buffer()

std::shared_ptr< Buffers::VideoContainerBuffer > MayaFlux::IO::IOManager::hook_camera_to_buffer ( const std::shared_ptr< Kakshya::CameraContainer > &  container)

Wire a CameraContainer to the graphics buffer system.

Creates a VideoContainerBuffer via BufferManager with GRAPHICS_BACKEND token, stores it keyed by container pointer, and returns it. Identical to hook_video_container_to_buffer() but accepts CameraContainer.

Parameters
containerOpened CameraContainer from open_camera().
Returns
Created VideoContainerBuffer, or nullptr on failure.

Definition at line 1135 of file IOManager.cpp.

1137{
1138 if (!container) {
1140 "hook_camera_to_buffer: null container");
1141 return nullptr;
1142 }
1143
1144 auto stream_container = std::dynamic_pointer_cast<Kakshya::StreamContainer>(container);
1145 if (!stream_container) {
1147 "hook_camera_to_buffer: container is not a StreamContainer");
1148 return nullptr;
1149 }
1150
1151 auto video_buffer = Detail::create_video_container_buffer(m_buffer_manager, stream_container);
1152
1153 if (!video_buffer) {
1155 "hook_camera_to_buffer: failed to create VideoContainerBuffer");
1156 return nullptr;
1157 }
1158
1159 {
1160 std::unique_lock lock(m_camera_mutex);
1161 m_camera_buffers[container] = video_buffer;
1162 }
1163
1165 "Hooked CameraContainer to VideoContainerBuffer ({}x{})",
1166 video_buffer->get_width(), video_buffer->get_height());
1167
1168 return video_buffer;
1169}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
std::unordered_map< std::shared_ptr< Kakshya::CameraContainer >, std::shared_ptr< Buffers::VideoContainerBuffer > > m_camera_buffers
std::shared_mutex m_camera_mutex
std::shared_ptr< Buffers::BufferManager > m_buffer_manager
std::shared_ptr< Buffers::VideoContainerBuffer > create_video_container_buffer(const std::shared_ptr< Buffers::BufferManager > &buffer_manager, const std::shared_ptr< Kakshya::StreamContainer > &container)
@ BufferManagement
Buffer Management (Buffers::BufferManager, creating buffers)
@ Runtime
General runtime operations (default fallback)
@ API
MayaFlux/API Wrapper and convenience functions.

References MayaFlux::Journal::API, MayaFlux::Journal::BufferManagement, MayaFlux::IO::Detail::create_video_container_buffer(), m_buffer_manager, m_camera_buffers, m_camera_mutex, MF_ERROR, MF_INFO, and MayaFlux::Journal::Runtime.

+ Here is the call graph for this function: