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

◆ set_region_data()

void MayaFlux::Kakshya::SoundStreamContainer::set_region_data ( const Region region,
const std::vector< DataVariant > &  data 
)
overridevirtual

Set data for a specific region.

Parameters
regionThe region to write data to
dataThe data to write

Implements MayaFlux::Kakshya::NDDataContainer.

Definition at line 114 of file SoundStreamContainer.cpp.

115{
117 if (m_data.empty() || data.empty())
118 return;
119
120 Memory::SeqlockWriteGuard g(m_data_lock);
121 auto dest_span = convert_variant<double>(m_data[0]);
122 auto src_span = convert_variant<double>(data[0]);
123
124 set_or_update_region_data<double>(dest_span, src_span, region, m_structure.dimensions);
125 } else {
126 size_t channels_to_update = std::min(m_data.size(), data.size());
127 Memory::SeqlockWriteGuard g(m_data_lock);
128
129 for (size_t i = 0; i < channels_to_update; ++i) {
130 auto dest_span = convert_variant<double>(m_data[i]);
131 auto src_span = convert_variant<double>(data[i]);
132 set_or_update_region_data<double>(dest_span, src_span, region, m_structure.dimensions);
133 }
134 }
135
137 m_double_extraction_dirty.store(true, std::memory_order_release);
138}
void invalidate_span_cache()
Invalidate the span cache when data or layout changes.
@ INTERLEAVED
Single DataVariant with interleaved data (LRLRLR for stereo)

References MayaFlux::Kakshya::ContainerDataStructure::dimensions, MayaFlux::Kakshya::INTERLEAVED, invalidate_span_cache(), m_data, m_data_lock, m_double_extraction_dirty, m_structure, and MayaFlux::Kakshya::ContainerDataStructure::organization.

Referenced by MayaFlux::Kakshya::DynamicSoundStream::write_frames().

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