|
MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
|
FrameAccessProcessor whose read position follows a function of time. More...
#include <FrameSeekProcessor.hpp>
Inheritance diagram for MayaFlux::Kakshya::FrameSeekProcessor:
Collaboration diagram for MayaFlux::Kakshya::FrameSeekProcessor:Public Member Functions | |
| void | on_attach (const std::shared_ptr< SignalSourceContainer > &container) override |
| Attach the processor to a video container. | |
| void | process (const std::shared_ptr< SignalSourceContainer > &container) override |
| Extract the current frame(s) into the container's processed_data. | |
| void | reset () |
| Restart the clock and the repeat. | |
| void | set_blend (bool enable) |
| Mix the two frames either side of a fractional position. | |
| void | set_repeat (const std::shared_ptr< const Kinesis::TimeMap > &length) |
| Restart the time map over and over, with a length that can change. | |
| void | set_time_map (const std::shared_ptr< const Kinesis::TimeMap > &map) |
| Drive the read position from a function of time. | |
| void | trail (double write_head, double lag_frames) |
| Trail a stream that is being written by a fixed number of frames. | |
| void | trail (double write_head, Kinesis::TimeMap lag) |
| Trail a stream that is being written, by a lag that can change. | |
Public Member Functions inherited from MayaFlux::Kakshya::FrameAccessProcessor | |
| FrameAccessProcessor ()=default | |
| bool | get_auto_advance () const |
| Get the current auto-advance state. | |
| uint64_t | get_current_frame () const |
| Get the current frame index. | |
| uint64_t | get_frame_byte_size () const |
| Get the cached frame byte size (width × height × channels). | |
| uint64_t | get_frames_per_batch () const |
| Get the number of frames per batch. | |
| bool | is_processing () const override |
| Query if the processor is currently performing processing. | |
| void | on_detach (const std::shared_ptr< SignalSourceContainer > &container) override |
| Detach the processor from its container. | |
| void | set_auto_advance (bool enable) |
| Enable or disable automatic frame advancement after each process() call. | |
| void | set_current_frame (uint64_t frame) |
| Set the current frame index (temporal cursor). | |
| void | set_frames_per_batch (uint64_t count) |
| Set the number of frames extracted per process() call. | |
| void | set_global_fps (double fps) |
| ~FrameAccessProcessor () override=default | |
Public Member Functions inherited from MayaFlux::Kakshya::DataProcessor | |
| virtual | ~DataProcessor ()=default |
| Virtual destructor for proper cleanup. | |
Private Member Functions | |
| double | position_at (uint64_t tick) |
Private Attributes | |
| bool | m_blend {} |
| std::shared_ptr< const Kinesis::TimeMap > | m_repeat |
| uint64_t | m_repeat_length {} |
| uint64_t | m_repeat_start {} |
| uint64_t | m_ticks {} |
| std::shared_ptr< const Kinesis::TimeMap > | m_time_map |
Additional Inherited Members | |
Protected Member Functions inherited from MayaFlux::Kakshya::FrameAccessProcessor | |
| void | advance_frame (uint64_t frames_to_advance) |
| Advance the frame cursor, respecting loop boundaries. | |
| void | store_metadata (const std::shared_ptr< SignalSourceContainer > &container) |
| Cache dimension metadata and frame geometry from the container. | |
| void | validate () |
| Validate that the container is suitable for frame-based processing. | |
Protected Attributes inherited from MayaFlux::Kakshya::FrameAccessProcessor | |
| bool | m_auto_advance { true } |
| uint64_t | m_channels {} |
| uint64_t | m_current_frame {} |
| double | m_frame_accumulator {} |
| Sub-frame accumulator for wall-clock-driven advancement. | |
| uint64_t | m_frame_byte_size {} |
| double | m_frame_rate {} |
| Cached video frame rate in frames per second. | |
| uint64_t | m_frames_per_batch { 1 } |
| double | m_global_fps { 60.0 } |
| uint64_t | m_height {} |
| std::atomic< bool > | m_is_processing { false } |
| std::chrono::steady_clock::time_point | m_last_process_time {} |
| Region | m_loop_region |
| bool | m_looping_enabled {} |
| bool | m_prepared {} |
| std::weak_ptr< SignalSourceContainer > | m_source_container_weak |
| ContainerDataStructure | m_structure |
| uint64_t | m_total_frames {} |
| uint64_t | m_width {} |
FrameAccessProcessor whose read position follows a function of time.
The video counterpart of the time-mapped read in CursorAccessProcessor. With a time map set, each process() call advances a clock by 1 / global fps seconds and reads the frame the map points at, so scrub, freeze, reverse, a tap trailing a live DynamicVideoStream (TimeMaps::lagged with the stream's frame rate) and stutter all work on video. Without a map it behaves exactly like FrameAccessProcessor.
The map takes seconds since the last reset() and returns a position in frames. Positions wrap inside the loop region when the container loops, and are held at the first or last frame otherwise.
Definition at line 24 of file FrameSeekProcessor.hpp.