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

◆ hook_video_container_to_buffer()

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

Wire a video container to the graphics buffer system.

Creates a VideoContainerBuffer via BufferManager with GRAPHICS_BACKEND token, stores it keyed by container pointer, and returns it. A VideoFileContainer or a DynamicVideoStream can be wired. A DynamicVideoStream needs frames or an enabled ring before it can be hooked, and gets its seek processor.

Parameters
containerVideo container to wire.
Returns
Created VideoContainerBuffer, or nullptr on failure.

Definition at line 1067 of file IOManager.cpp.

1069{
1070 if (!container) {
1072 "hook_video_container_to_buffer: null container");
1073 return nullptr;
1074 }
1075
1076 if (const auto dynamic = std::dynamic_pointer_cast<Kakshya::DynamicVideoStream>(container);
1077 dynamic && !dynamic->get_default_processor()) {
1078 dynamic->create_default_processor();
1079 }
1080
1081 auto stream_container = std::dynamic_pointer_cast<Kakshya::StreamContainer>(container);
1082
1083 if (!stream_container) {
1085 "hook_video_container_to_buffer: container is not a VideoStreamContainer");
1086 return nullptr;
1087 }
1088
1089 auto video_buffer = Detail::create_video_container_buffer(m_buffer_manager, stream_container);
1090
1091 {
1092 std::unique_lock lock(m_buffers_mutex);
1093 m_video_buffers[container] = video_buffer;
1094 }
1095
1097 "Hooked VideoFileContainer to VideoContainerBuffer ({}x{})",
1098 video_buffer->get_width(), video_buffer->get_height());
1099
1100 return video_buffer;
1101}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
std::unordered_map< std::shared_ptr< Kakshya::VideoStreamContainer >, std::shared_ptr< Buffers::VideoContainerBuffer > > m_video_buffers
std::shared_mutex m_buffers_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_buffers_mutex, m_video_buffers, MF_ERROR, MF_INFO, and MayaFlux::Journal::Runtime.

+ Here is the call graph for this function: