Aligns N already-processed paths to the largest declared intrinsic latency. More...
#include <path_latency_aligner.hpp>
Public Member Functions | |
| PathLatencyAlignerT (const Allocator &allocator=Allocator{}) | |
| bool | prepare (std::size_t paths, std::size_t channels, std::size_t max_latency_samples, std::size_t max_block_size) |
| bool | configure_latencies (std::span< const std::size_t > latencies) noexcept |
| void | reset () noexcept |
| std::size_t | reported_latency_samples () const noexcept |
| std::size_t | path_latency_samples (std::size_t path) const noexcept |
| std::size_t | compensation_delay_samples (std::size_t path) const noexcept |
| std::size_t | path_count () const noexcept |
| std::size_t | channel_count () const noexcept |
| std::size_t | retained_samples () const noexcept |
| bool | process (const SampleType *const *inputs, std::size_t input_count, SampleType *const *outputs, std::size_t output_count, std::size_t frames) noexcept |
Static Public Attributes | |
| static constexpr std::size_t | max_paths = MaxPaths |
| static constexpr std::size_t | max_channels = MaxChannels |
Aligns N already-processed paths to the largest declared intrinsic latency.
prepare() allocates bounded ring storage on the control thread. Latency changes are control-thread operations: configure_latencies() validates the whole set atomically and hard-resets history, preventing mixed-delay audio. process() is allocation-free and reports the exact maximum path latency.
Layout is path-major then channel-major. Each output may exactly alias its corresponding input; cross-path/channel aliasing is rejected. Samples and non-finite values are delayed unchanged.
|
inlineexplicit |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
staticconstexpr |
|
staticconstexpr |