Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::engine::session::Router Class Referencefinal

The Router class manages the processing graph for the audio engine. More...

#include <src/engine/session/router.h>

Collaboration diagram for zrythm::engine::session::Router:

Public Member Functions

 Router (device_io::AudioEngine *engine=nullptr)
void recalc_graph (bool soft)
 Recalculates the process acyclic directed graph.
void start_cycle (EngineProcessTimeInfo time_nfo)
 Starts a new cycle.
nframes_t get_max_route_playback_latency ()
 Returns the max playback latency of the trigger nodes.
bool is_processing_kickoff_thread () const
 Returns whether this is the thread that kicks off processing (thread that calls router_start_cycle()).
bool is_processing_thread () const
 Returns if the current thread is a processing thread.

Data Fields

std::unique_ptr< dsp::graph::GraphSchedulerscheduler_
std::atomic< bool > graph_setup_in_progress_ = false
 An atomic variable to check if the graph is currently being setup (so that we can avoid accessing buffers changed by this).
EngineProcessTimeInfo time_nfo_
 Time info for this processing cycle.
nframes_t max_route_playback_latency_ = 0
 Stored for the currently processing cycle.
nframes_t global_offset_ = 0
 Current global latency offset (max latency of all routes - remaining latency from engine).
std::binary_semaphore graph_access_sem_ { 1 }
 Used when recalculating the graph.
bool callback_in_progress_ = false
unsigned int process_kickoff_thread_ = 0
 ID of the thread that calls kicks off the cycle.
device_io::AudioEngineaudio_engine_ {}

Detailed Description

The Router class manages the processing graph for the audio engine.

The Router class is responsible for maintaining the active processing graph, handling graph setup and recalculation, and managing the processing cycle. It provides methods for starting a new processing cycle, retrieving the maximum playback latency, and checking the current processing thread.

Definition at line 49 of file router.h.

Member Function Documentation

◆ is_processing_kickoff_thread()

bool zrythm::engine::session::Router::is_processing_kickoff_thread ( ) const
inlinenodiscard

Returns whether this is the thread that kicks off processing (thread that calls router_start_cycle()).

Definition at line 76 of file router.h.

◆ is_processing_thread()

bool zrythm::engine::session::Router::is_processing_thread ( ) const
inlinenodiscard

Returns if the current thread is a processing thread.

Definition at line 84 of file router.h.

◆ recalc_graph()

void zrythm::engine::session::Router::recalc_graph ( bool soft)

Recalculates the process acyclic directed graph.

Parameters
softIf true, only readjusts latencies.

Field Documentation

◆ audio_engine_

device_io::AudioEngine* zrythm::engine::session::Router::audio_engine_ {}

Definition at line 140 of file router.h.

◆ callback_in_progress_

bool zrythm::engine::session::Router::callback_in_progress_ = false

Definition at line 135 of file router.h.

◆ global_offset_

nframes_t zrythm::engine::session::Router::global_offset_ = 0

Current global latency offset (max latency of all routes - remaining latency from engine).

Definition at line 130 of file router.h.

◆ graph_access_sem_

std::binary_semaphore zrythm::engine::session::Router::graph_access_sem_ { 1 }

Used when recalculating the graph.

Definition at line 133 of file router.h.

◆ graph_setup_in_progress_

std::atomic<bool> zrythm::engine::session::Router::graph_setup_in_progress_ = false

An atomic variable to check if the graph is currently being setup (so that we can avoid accessing buffers changed by this).

Definition at line 119 of file router.h.

◆ max_route_playback_latency_

nframes_t zrythm::engine::session::Router::max_route_playback_latency_ = 0

Stored for the currently processing cycle.

Definition at line 125 of file router.h.

◆ process_kickoff_thread_

unsigned int zrythm::engine::session::Router::process_kickoff_thread_ = 0

ID of the thread that calls kicks off the cycle.

Definition at line 138 of file router.h.

◆ scheduler_

std::unique_ptr<dsp::graph::GraphScheduler> zrythm::engine::session::Router::scheduler_

Definition at line 115 of file router.h.

◆ time_nfo_

EngineProcessTimeInfo zrythm::engine::session::Router::time_nfo_

Time info for this processing cycle.

Definition at line 122 of file router.h.


The documentation for this class was generated from the following file: