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

◆ write()

void MayaFlux::IO::IOManager::write ( const std::shared_ptr< Kakshya::SoundStreamContainer > &  container,
const std::string &  filepath,
AVCodecID  codec_id = AV_CODEC_ID_NONE 
)

Write a SoundStreamContainer to file in one shot.

Opens a writer, posts the container's full data, closes, and stores the encode future in m_save_tasks. Non-blocking; returns immediately. Container metadata (sample_rate, channels) drives the encoder parameters.

Parameters
containerSource container; any SoundStreamContainer child.
filepathOutput file path.
codec_idEncoder override; AV_CODEC_ID_NONE = container default.

Definition at line 350 of file IOManager.cpp.

353{
354 if (!container) {
356 "write: null container");
357 return;
358 }
359
360 auto writer = std::make_shared<SoundFileWriter>();
361 if (!writer->open(filepath,
362 container->get_num_channels(),
363 container->get_sample_rate(),
364 codec_id)) {
366 "write: open failed for '{}': {}", filepath, writer->last_error());
367 return;
368 }
369
370 writer->write(container->get_data());
371 auto fut = writer->close();
372
373 std::lock_guard lock(m_save_tasks_mutex);
374 m_save_tasks.push_back(std::move(fut));
375 std::erase_if(m_save_tasks, [](std::future<bool>& f) {
376 return f.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
377 });
378}
#define MF_ERROR(comp, ctx,...)
std::mutex m_save_tasks_mutex
std::vector< std::future< bool > > m_save_tasks
@ FileIO
Filesystem I/O operations.
@ IO
Networking, file handling, streaming.

References MayaFlux::Journal::FileIO, MayaFlux::Journal::IO, m_save_tasks, m_save_tasks_mutex, and MF_ERROR.