MayaFlux 0.1.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 112 of file SoundStreamContainer.cpp.

113{
115 if (m_data.empty() || data.empty())
116 return;
117
118 std::unique_lock lock(m_data_mutex);
119
120 auto dest_span = convert_variant<double>(m_data[0]);
121 auto src_span = convert_variant<double>(data[0]);
122
123 set_or_update_region_data<double>(
124 dest_span, src_span, region, m_structure.dimensions);
125
126 } else {
127 size_t channels_to_update = std::min(m_data.size(), data.size());
128
129 std::unique_lock lock(m_data_mutex);
130 for (size_t i = 0; i < channels_to_update; ++i) {
131 auto dest_span = convert_variant<double>(m_data[i]);
132 auto src_span = convert_variant<double>(data[i]);
133
134 set_or_update_region_data<double>(
135 dest_span, src_span, region, m_structure.dimensions);
136 }
137 }
138
140 m_double_extraction_dirty.store(true, std::memory_order_release);
141}
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: