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

◆ get_frame_typed_as()

template<typename T >
auto MayaFlux::Kakshya::TextureContainer::get_frame_typed_as ( uint64_t  frame_index) const -> std::span<const T>
private

Definition at line 874 of file TextureContainer.cpp.

875{
876 if (frame_index >= m_data.size())
877 return {};
878
879 std::span<const T> result;
880 seqlock_read_void(m_slot_locks[frame_index], 8, [&] {
881 const auto* vec = std::get_if<std::vector<T>>(&m_data[frame_index]);
882 if (!vec || vec->empty())
883 return;
884 const size_t layer_elems = static_cast<size_t>(m_width) * m_height * m_channels;
885 const size_t n = std::min(layer_elems, vec->size());
886 result = std::span<const T>(vec->data(), n);
887 });
888
889 return result;
890}
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