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

◆ setup_io_service() [2/2]

void MayaFlux::IO::VideoFileReader::setup_io_service ( uint64_t  reader_id = 0)

Internal setup for IOService integration.

Called by load_into_container() if no IOService is registered yet. Can also be called manually to pre-register before load_into_container().

In standalone mode, the reader generates its own reader_id and registers an IOService lambda that calls signal_decode() when a decode request is dispatched with the matching reader_id.

When IOManager is present, it assigns a globally unique reader_id and calls the second overload of setup_io_service() with the shared IOService instance it manages. The reader then registers a lambda that calls signal_decode() when a decode request is dispatched with the matching id.

Definition at line 25 of file VideoFileReader.cpp.

26{
27 m_reader_id = reader_id;
28
30 .get_service<Registry::Service::IOService>()) {
31
32 m_io_service = std::make_shared<Registry::Service::IOService>();
33 m_io_service->request_decode = [this](uint64_t reader_id) {
34 if (reader_id == m_reader_id)
36 };
37
39 .register_service<Registry::Service::IOService>(
40 [this]() -> void* { return m_io_service.get(); });
41
42 m_owns_io_service = true;
43 }
44}
std::shared_ptr< Registry::Service::IOService > m_io_service
void signal_decode()
Non-blocking signal to the background decode thread.
void register_service(ServiceFactory factory)
Register a backend service capability.
static BackendRegistry & instance()
Get the global registry instance.

References MayaFlux::Registry::BackendRegistry::instance(), m_io_service, m_owns_io_service, m_reader_id, MayaFlux::Registry::BackendRegistry::register_service(), and signal_decode().

+ Here is the call graph for this function: