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

◆ linearized_view_mut()

template<typename T , typename StoragePolicy , typename ConcurrencyPolicy = SingleThreadedPolicy, typename AccessPattern = QueueAccess>
std::span< T > MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::linearized_view_mut ( )
inline

Get mutable linearized view for modification.

Returns
Mutable span ordered by AccessPattern

Same as linearized_view() but returns mutable references. Changes to span elements affect underlying buffer.

auto history = delay.linearized_view_mut();
for (auto& sample : history) {
sample *= 0.9; // Apply gain reduction
}

Definition at line 873 of file RingBuffer.hpp.

875 {
876 const size_t cap = m_storage.capacity();
877 const size_t count = size();
878
879 if constexpr (AccessPattern::push_front) {
880 for (size_t i = 0; i < count; ++i) {
881 size_t idx = (m_state.write_index + cap - i) % cap;
882 m_linearized[i] = m_storage.buffer[idx];
883 }
884 } else {
885 for (size_t i = 0; i < count; ++i) {
886 size_t idx = (m_state.read_index + i) % cap;
887 m_linearized[i] = m_storage.buffer[idx];
888 }
889 }
890
891 return { m_linearized.data(), count };
892 }
Eigen::Index count
size_t size() const noexcept
Get approximate element count.

References count, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::m_linearized, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::m_state, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::m_storage, and MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::size().

+ Here is the call graph for this function: