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

◆ set_target_fps()

void MayaFlux::Vruta::FrameClock::set_target_fps ( uint32_t  new_fps)

Set new target frame rate (runtime adjustment)

Parameters
new_fpsNew target frames per second

Definition at line 129 of file Clock.cpp.

130{
131 if (new_fps == 0 || new_fps > 1000) {
132 error<std::runtime_error>(Journal::Component::Vruta,
134 std::source_location::current(),
135 "FrameClock", "set_target_fps", "Invalid FPS value: {}",
136 new_fps);
137 }
138
139 if (new_fps == m_target_fps)
140 return;
141
142 m_target_fps = new_fps;
144
145 auto frames_elapsed = static_cast<double>(m_current_frame.load());
146 auto expected_time = m_start_time + std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::duration<double>(frames_elapsed / m_target_fps));
147
148 m_next_frame_time = expected_time + m_frame_duration;
149}
void recalculate_frame_duration()
Recalculate frame duration when target FPS changes.
Definition Clock.cpp:171
std::chrono::nanoseconds m_frame_duration
Definition Clock.hpp:276
std::chrono::steady_clock::time_point m_next_frame_time
Definition Clock.hpp:284
std::chrono::steady_clock::time_point m_start_time
Definition Clock.hpp:282
std::atomic< uint64_t > m_current_frame
Definition Clock.hpp:279
@ ClockSync
Clock synchronization (SampleClock, FrameClock coordination)
@ Vruta
Coroutines, schedulers, clocks, task management.

References MayaFlux::Journal::ClockSync, m_current_frame, m_frame_duration, m_next_frame_time, m_start_time, m_target_fps, recalculate_frame_duration(), and MayaFlux::Journal::Vruta.

+ Here is the call graph for this function: