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

◆ stop_capture() [2/2]

void MayaFlux::IO::IOManager::stop_capture ( uint32_t  capture_id)

Stop a running capture and finalise the file.

Unregisters the AudioBackendService observer, calls writer->close(), and stores the encode future in m_save_tasks. Non-blocking.

Parameters
capture_idHandle returned by capture_output().

Definition at line 424 of file IOManager.cpp.

425{
426 AudioCaptureState state;
427 {
428 std::lock_guard lock(m_audio_captures_mutex);
429 auto it = m_audio_captures.find(capture_id);
430 if (it == m_audio_captures.end()) {
432 "stop_capture: unknown capture_id={}", capture_id);
433 return;
434 }
435 state = std::move(it->second);
436 m_audio_captures.erase(it);
437 }
438
440 .get_service<Registry::Service::AudioBackendService>();
441 if (svc)
442 svc->unregister_output_observer(state.observer_id);
443
444 auto fut = state.writer->close();
445
446 std::lock_guard lock(m_save_tasks_mutex);
447 m_save_tasks.push_back(std::move(fut));
448 std::erase_if(m_save_tasks, [](std::future<bool>& f) {
449 return f.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
450 });
451}
#define MF_WARN(comp, ctx,...)
std::unordered_map< uint32_t, AudioCaptureState > m_audio_captures
std::mutex m_save_tasks_mutex
std::vector< std::future< bool > > m_save_tasks
std::mutex m_audio_captures_mutex
Interface * get_service()
Query for a backend service.
static BackendRegistry & instance()
Get the global registry instance.
@ FileIO
Filesystem I/O operations.
@ IO
Networking, file handling, streaming.

References MayaFlux::Journal::FileIO, MayaFlux::Registry::BackendRegistry::get_service(), MayaFlux::Registry::BackendRegistry::instance(), MayaFlux::Journal::IO, m_audio_captures, m_audio_captures_mutex, m_save_tasks, m_save_tasks_mutex, MF_WARN, MayaFlux::IO::IOManager::AudioCaptureState::observer_id, MayaFlux::Registry::Service::AudioBackendService::unregister_output_observer, and MayaFlux::IO::IOManager::AudioCaptureState::writer.

Referenced by stop_capture(), and ~IOManager().

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