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

◆ processed_frame_as_float()

std::span< const float > MayaFlux::Kakshya::WindowContainer::processed_frame_as_float ( uint32_t  frame_index = 0) const

processed_data[frame_index] as a normalised float span.

Valid after WindowAccessProcessor has written processed_data[frame_index]. uint8_t values divided by 255.0f; uint16_t by 65535.0f; float is zero-copy. Returns empty span if frame_index is out of range or the variant holds a non-pixel type.

Result is cached per slot and reused until invalidate_float_frame_cache() is called for that slot.

Parameters
frame_indexZero-based index into processed_data. Defaults to 0.
Returns
Normalised float span, width * height * channels elements.

Definition at line 474 of file WindowContainer.cpp.

475{
476 if (frame_index >= m_processed_data.size())
477 return {};
478
479 if (!m_normalised_dirty[frame_index].load(std::memory_order_acquire))
480 return { m_normalised_cache[frame_index] };
481
482 std::span<const float> result;
484 result = Kakshya::as_normalised_float(m_processed_data[frame_index], m_normalised_cache[frame_index]);
485 });
486
487 if (!result.empty())
488 m_normalised_dirty[frame_index].store(false, std::memory_order_release);
489
490 return result;
491}
std::vector< std::vector< float > > m_normalised_cache
std::vector< DataVariant > m_processed_data
std::vector< std::atomic< bool > > m_normalised_dirty
std::span< const float > as_normalised_float(const DataVariant &variant, std::vector< float > &storage)
Extract a DataVariant holding pixel data as a normalised float span.
Definition DataUtils.cpp:61
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
std::shared_ptr< T > store(std::shared_ptr< T > obj)
Transfer ownership of an existing object to the persistent store for process lifetime.
Definition Persist.hpp:28

References MayaFlux::Kakshya::as_normalised_float(), m_data_lock, m_normalised_cache, m_normalised_dirty, m_processed_data, and MayaFlux::store().

+ Here is the call graph for this function: