79struct RealtimeGpuNodeBinding;
122 uint32_t )
noexcept {}
134 uint32_t n)
noexcept {
135 const uint32_t ch = output.num_channels() < input.num_channels()
136 ? output.num_channels()
137 : input.num_channels();
138 for (uint32_t c = 0; c < ch; ++c) {
139 const float* src = input.channel_ptr(c);
140 float* dst = output.channel_ptr(c);
141 for (uint32_t i = 0; i < n; ++i) dst[i] = src[i];
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
A unit of audio work the transport schedules onto a non-real-time worker.
Definition gpu_audio_node.hpp:92
virtual bool bind_realtime_path(detail::RealtimeGpuNodeBinding &) noexcept
Private transport hook, not for node authors: a node that the GPU audio transport drives through a st...
Definition gpu_audio_node.hpp:165
virtual ~GpuAudioNode()=default
virtual void process_cpu_fallback(const audio::BufferView< const float > &input, audio::BufferView< float > &output, uint32_t n) noexcept
RT-safe fallback.
Definition gpu_audio_node.hpp:132
virtual bool release_bounded(std::uint64_t) noexcept
Host thread, audio stopped.
Definition gpu_audio_node.hpp:157
virtual GpuAudioStatus status_snapshot() const noexcept
Host/UI thread.
Definition gpu_audio_node.hpp:150
virtual void process_block(const audio::BufferView< const float > &input, audio::BufferView< float > &output, uint32_t n)=0
Non-RT worker context. Process exactly one block (n == block_size).
virtual GpuAudioNodeDescriptor descriptor() const =0
virtual bool prepare()=0
Non-RT. Allocate/compile/upload static data here.
virtual void prime_fallback(const audio::BufferView< const float > &, uint32_t) noexcept
RT-safe.
Definition gpu_audio_node.hpp:121
virtual bool cpu_fallback_prepared() const noexcept
Host-thread witness that the realtime CPU fallback is already built before prepare() returns.
Definition gpu_audio_node.hpp:107
Definition gpu_audio_node.hpp:78
Definition flow_pans.hpp:19
MissPolicy
What the transport does for a block when the GPU result is not ready in time (the worker fell behind,...
Definition gpu_audio_node.hpp:12
@ PassthroughDry
Output the dry input for the missed block.
Definition gpu_audio_node.hpp:31
@ CpuFallback
Run the node's CPU fallback for the missed block.
Definition gpu_audio_node.hpp:38
@ Silence
Output silence for the missed block (+ telemetry).
Definition gpu_audio_node.hpp:15
Declared, fixed scheduling properties of a GPU audio node.
Definition gpu_audio_node.hpp:44
uint32_t output_channels
Definition gpu_audio_node.hpp:47
bool supports_cpu_fallback
Definition gpu_audio_node.hpp:60
uint32_t block_size
Definition gpu_audio_node.hpp:48
uint32_t input_channels
Definition gpu_audio_node.hpp:46
uint32_t sample_rate
Definition gpu_audio_node.hpp:49
MissPolicy miss_policy
Definition gpu_audio_node.hpp:59
std::string name
Definition gpu_audio_node.hpp:45
std::uint32_t worker_pipeline_blocks
Number of blocks the node's worker emits behind its submit (wet(N-D)).
Definition gpu_audio_node.hpp:67
uint32_t latency_blocks
Fixed latency in host blocks.
Definition gpu_audio_node.hpp:52
Versioned, allocation-free status shared by native hosts and UI adapters.
Definition gpu_audio_status.hpp:80