MayaFlux 0.3.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 130 of file Clock.cpp.

131{
132 if (new_fps == 0 || new_fps > 1000) {
133 error<std::runtime_error>(Journal::Component::Vruta,
135 std::source_location::current(),
136 "FrameClock", "set_target_fps", "Invalid FPS value: {}",
137 new_fps);
138 }
139
140 if (new_fps == m_target_fps)
141 return;
142
143 m_target_fps = new_fps;
145
146 auto frames_elapsed = static_cast<double>(m_current_frame.load());
147 auto expected_time = m_start_time + std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::duration<double>(frames_elapsed / m_target_fps));
148
149 m_next_frame_time = expected_time + m_frame_duration;
150}
void recalculate_frame_duration()
Recalculate frame duration when target FPS changes.
Definition Clock.cpp:172
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: