Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::gpu_audio::detail Namespace Reference

Functions

bool configure_gpu_convolver_trial (GpuConvolver &, const GpuConvolverTrialConfig &) noexcept
bool drain_gpu_convolver_trial_records (GpuConvolver &, std::vector< SharedIoTraceRecord > &) noexcept
bool drain_gpu_convolver_trial_admissions (GpuConvolver &, std::vector< SharedIoTraceAdmission > &) noexcept
std::uint64_t gpu_convolver_trial_engine_id (const GpuConvolver &) noexcept
bool prepare_gpu_multi_convolver_with (GpuMultiConvolver &, std::unique_ptr< render::GpuCompute >) noexcept
void circular_box_blur (const std::vector< float > &m, std::vector< float > &out, std::uint32_t radius, float inv_kernel, std::uint32_t n)
 Circular box blur of width (2*radius+1) over m[0..n) into out[0..n), in O(n) via a sliding running sum (not O(n*radius) direct summation, and not a prefix sum — a windowed add-one/drop-one sum, which only ever holds the current window and so does not accumulate the precision loss of subtracting two large cumulative totals).

Function Documentation

◆ circular_box_blur()

void pulp::gpu_audio::detail::circular_box_blur ( const std::vector< float > & m,
std::vector< float > & out,
std::uint32_t radius,
float inv_kernel,
std::uint32_t n )

Circular box blur of width (2*radius+1) over m[0..n) into out[0..n), in O(n) via a sliding running sum (not O(n*radius) direct summation, and not a prefix sum — a windowed add-one/drop-one sum, which only ever holds the current window and so does not accumulate the precision loss of subtracting two large cumulative totals).

radius must be < n/2 so the window is shorter than the circle and the add/drop bins never alias; smear_kernel bounds it at n/32. Exposed for unit testing against the direct summation.

◆ configure_gpu_convolver_trial()

bool pulp::gpu_audio::detail::configure_gpu_convolver_trial ( GpuConvolver & ,
const GpuConvolverTrialConfig &  )
noexcept

◆ drain_gpu_convolver_trial_admissions()

bool pulp::gpu_audio::detail::drain_gpu_convolver_trial_admissions ( GpuConvolver & ,
std::vector< SharedIoTraceAdmission > &  )
noexcept

◆ drain_gpu_convolver_trial_records()

bool pulp::gpu_audio::detail::drain_gpu_convolver_trial_records ( GpuConvolver & ,
std::vector< SharedIoTraceRecord > &  )
noexcept

◆ gpu_convolver_trial_engine_id()

std::uint64_t pulp::gpu_audio::detail::gpu_convolver_trial_engine_id ( const GpuConvolver & )
noexcept

◆ prepare_gpu_multi_convolver_with()

bool pulp::gpu_audio::detail::prepare_gpu_multi_convolver_with ( GpuMultiConvolver & ,
std::unique_ptr< render::GpuCompute >  )
noexcept