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 1029 of file TextureContainer.cpp.

1030{
1031 if (frame_index >= m_data.size())
1032 return {};
1033
1034 std::span<const T> result;
1035 seqlock_read_void(m_slot_locks[frame_index], 8, [&] {
1036 const auto* vec = std::get_if<std::vector<T>>(&m_data[frame_index]);
1037 if (!vec || vec->empty())
1038 return;
1039 const size_t layer_elems = static_cast<size_t>(m_width) * m_height * m_channels;
1040 const size_t n = std::min(layer_elems, vec->size());
1041 result = std::span<const T>(vec->data(), n);
1042 });
1043
1044 return result;
1045}
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