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

◆ cut()

void MayaFlux::Kriya::Chimera::cut ( size_t  layer,
double  seconds 
)

Jump a ring or collection layer to a moment this many seconds behind the live head.

A lagged layer keeps following its lag from there, so a lag that varies carries on from the new moment. Layers fed by an image ignore it.

Parameters
layerLayer index.
secondsDistance behind the write head, at least two frames.

Definition at line 50 of file Chimera.cpp.

51{
52 if (!m_state) {
53 return;
54 }
55
56 auto& target = m_state->layers.at(layer);
57 if (!target.ring && !target.collection) {
58 return;
59 }
60
61 if (target.lag) {
62 const double elapsed = std::max(
63 static_cast<double>(m_state->ticks) / m_state->frame_rate - target.delay, 0.0);
64 target.lag_offset = seconds - (*target.lag)(elapsed);
65 } else if (target.ring) {
66 target.position = static_cast<double>(target.ring->get_write_head())
67 - seconds * target.ring->get_frame_rate();
68 target.entered = true;
69 } else {
70 const double rate = target.collection_rate > 0.0 ? target.collection_rate : m_state->frame_rate;
71 target.position = static_cast<double>(target.collection->get_write_head()) - seconds * rate;
72 target.entered = true;
73 }
74}
float rate
std::shared_ptr< State > m_state
Definition Chimera.hpp:159

References m_state, and rate.