MayaFlux 1.0.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 842 of file SoundStreamContainer.cpp.

843{
844 if (!m_span_cache_dirty.load(std::memory_order_acquire) && m_span_cache.has_value())
845 return *m_span_cache;
846
848 if (!m_span_cache_dirty.load(std::memory_order_acquire) && m_span_cache.has_value())
849 return;
850
851 auto spans = m_data
852 | std::views::transform([](auto& variant) {
853 return convert_variant<double>(const_cast<DataVariant&>(variant));
854 })
855 | std::ranges::to<std::vector>();
856
857 m_span_cache = std::move(spans);
858 m_span_cache_dirty.store(false, std::memory_order_release);
859 });
860
861 return *m_span_cache;
862}
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:70
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:268

References m_data, m_data_lock, m_span_cache, and m_span_cache_dirty.

Referenced by gather_frames(), 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: