MayaFlux 0.2.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 std::unique_lock lock(m_data_mutex);
121
122 auto dest_span = convert_variant<double>(m_data[0]);
123 auto src_span = convert_variant<double>(data[0]);
124
125 set_or_update_region_data<double>(
126 dest_span, src_span, region, m_structure.dimensions);
127
128 } else {
129 size_t channels_to_update = std::min(m_data.size(), data.size());
130
131 std::unique_lock lock(m_data_mutex);
132 for (size_t i = 0; i < channels_to_update; ++i) {
133 auto dest_span = convert_variant<double>(m_data[i]);
134 auto src_span = convert_variant<double>(data[i]);
135
136 set_or_update_region_data<double>(
137 dest_span, src_span, region, m_structure.dimensions);
138 }
139 }
140
142 m_double_extraction_dirty.store(true, std::memory_order_release);
143}
void invalidate_span_cache()
Invalidate the span cache when data or layout changes.
void lock() override
Acquire a lock for thread-safe access.
@ INTERLEAVED
Single DataVariant with interleaved data (LRLRLR for stereo)

References MayaFlux::Kakshya::ContainerDataStructure::dimensions, MayaFlux::Kakshya::INTERLEAVED, invalidate_span_cache(), lock(), m_data, m_data_mutex, 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: