MayaFlux
1.0.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
1044
of file
TextureContainer.cpp
.
1045
{
1046
if
(frame_index >=
m_data
.size())
1047
return
{};
1048
1049
ensure_cpu
(
static_cast<
uint32_t
>
(frame_index));
1050
1051
std::span<const T> result;
1052
seqlock_read_void
(
m_slot_locks
[frame_index], 8, [&] {
1053
const
auto
* vec = std::get_if<std::vector<T>>(&
m_data
[frame_index]);
1054
if
(!vec || vec->empty())
1055
return
;
1056
const
size_t
layer_elems =
static_cast<
size_t
>
(
m_width
) *
m_height
*
m_channels
;
1057
const
size_t
n = std::min(layer_elems, vec->size());
1058
result = std::span<const T>(vec->data(), n);
1059
});
1060
1061
return
result;
1062
}
MayaFlux::Kakshya::TextureContainer::m_slot_locks
Memory::SeqlockArray m_slot_locks
Definition
TextureContainer.hpp:538
MayaFlux::Kakshya::TextureContainer::m_height
uint32_t m_height
Definition
TextureContainer.hpp:513
MayaFlux::Kakshya::TextureContainer::m_channels
uint32_t m_channels
Definition
TextureContainer.hpp:515
MayaFlux::Kakshya::TextureContainer::m_width
uint32_t m_width
Definition
TextureContainer.hpp:512
MayaFlux::Kakshya::TextureContainer::m_data
std::vector< DataVariant > m_data
Definition
TextureContainer.hpp:518
MayaFlux::Kakshya::TextureContainer::ensure_cpu
void ensure_cpu(uint32_t layer) const
Download a GPU-held layer into m_data before a CPU read.
Definition
TextureContainer.cpp:155
MayaFlux::Memory::seqlock_read_void
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
MayaFlux
Kakshya
TextureContainer
Generated by
1.9.8