Optional, control-parity GPU route for the two-channel Forge convolution reverb. More...
#include <gpu_convolution_reverb.hpp>
Public Member Functions | |
| GpuConvolutionReverb (GpuConvolutionReverbConfig config) | |
| ~GpuConvolutionReverb () | |
| GpuConvolutionReverb (const GpuConvolutionReverb &)=delete | |
| GpuConvolutionReverb & | operator= (const GpuConvolutionReverb &)=delete |
| bool | prepare () noexcept |
| Prepare the opt-in route. | |
| void | release () noexcept |
| bool | prepared () const noexcept |
| bool | gpu_enabled () const noexcept |
| std::uint32_t | block_size () const noexcept |
| std::uint32_t | latency_samples () const noexcept |
| void | set_ir_gain_db (double db) noexcept |
| void | set_predelay_ms (double ms) noexcept |
| void | set_wet_percent (double percent) noexcept |
| void | set_dry_percent (double percent) noexcept |
| void | set_width_percent (double percent) noexcept |
| void | set_lowcut_hz (double hz) noexcept |
| void | set_highcut_hz (double hz) noexcept |
| void | process (const audio::BufferView< const float > &input, audio::BufferView< float > &output, std::uint32_t n) noexcept |
| Audio-thread entry point. | |
| GpuConvolutionReverbReport | report () const noexcept |
| GpuAudioStatus | status_snapshot () const noexcept |
| Allocation-free status of the least healthy lane (lane 0 on a tie), because one fenced or lost lane already changes what the route emits. | |
| GpuAudioRecoveryReason | recovery_reason () const noexcept |
| First latched recovery cause of that lane, or None. | |
| bool | fenced () const noexcept |
| True before preparation, or when any lane's GPU delivery is fenced. | |
Friends | |
| struct | detail::GpuConvolutionReverbTestAccess |
Optional, control-parity GPU route for the two-channel Forge convolution reverb.
It uses two separately authenticated mono GpuConvolver instances, one per output lane, so a two-channel IR remains dual-mono and distinct L/R stimuli cannot accidentally collapse to one resident mono spectrum.
The wrapper owns only host-side control, filtering, predelay, dry alignment, and lane composition. GPU work and the continuously primed CPU fallbacks remain inside the existing GpuAudioTransport instances. Its fixed latency is exactly three internal host quanta: two transport lead quanta plus one staging quantum that makes the result independent of callback partitioning. It is reported through latency_samples().
|
explicit |
| pulp::gpu_audio::GpuConvolutionReverb::~GpuConvolutionReverb | ( | ) |
|
delete |
|
inlinenoexcept |
|
noexcept |
True before preparation, or when any lane's GPU delivery is fenced.
|
inlinenoexcept |
|
inlinenoexcept |
|
delete |
|
noexcept |
Prepare the opt-in route.
The default config is deliberately disabled and fails closed until gpu_enabled is set true by the selected mode.
|
inlinenoexcept |
|
noexcept |
Audio-thread entry point.
It never allocates, locks, or calls a GPU API. Each lane transport receives the same quantum and sequence shape.
|
noexcept |
First latched recovery cause of that lane, or None.
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
friend |