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

◆ get_span_cache()

const std::vector< std::span< double > > & MayaFlux::Kakshya::SoundStreamContainer::get_span_cache ( ) const
protected

Get the cached spans for each channel, recomputing if dirty.

Definition at line 805 of file SoundStreamContainer.cpp.

806{
807 if (!m_span_cache_dirty.load(std::memory_order_acquire) && m_span_cache.has_value())
808 return *m_span_cache;
809
811 if (!m_span_cache_dirty.load(std::memory_order_acquire) && m_span_cache.has_value())
812 return;
813
814 auto spans = m_data
815 | std::views::transform([](auto& variant) {
816 return convert_variant<double>(const_cast<DataVariant&>(variant));
817 })
818 | std::ranges::to<std::vector>();
819
820 m_span_cache = std::move(spans);
821 m_span_cache_dirty.store(false, std::memory_order_release);
822 });
823
824 return *m_span_cache;
825}
std::optional< std::vector< std::span< double > > > m_span_cache
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
Definition NDData.hpp:102
bool seqlock_read_void(const Seqlock &lock, uint32_t max_attempts, Fn &&fn)
Invoke a void read functor under a Seqlock with a bounded retry count.
Definition SeqLock.hpp:222

References m_data, m_data_lock, m_span_cache, and m_span_cache_dirty.

Referenced by get_data_as_double(), get_frame_typed(), get_region_data(), get_region_group_data(), get_segments_data(), get_value_impl(), and set_value_impl().

+ Here is the caller graph for this function: