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

Classes

struct  SampleMemoryGovernorState

Enumerations

enum class  SampleMipBuildFaultForTesting {
  None , PayloadPublicationException , ManifestPolicyFinalization , SourceChangedAfterManifestPublication ,
  PublishedManifestVerification , PublishedManifestVerificationException , PostCommitGarbageCollectionException
}

Functions

std::optional< std::vector< float > > finish_impulse_response (std::vector< float > mono, double file_sr, double session_sr, const ImpulseResponseLoadOptions &opts)
 The post-decode half of the IR pipeline, shared by every entry point: resample the mono buffer from file_sr to session_sr, drop the resampler's leading group delay, clamp to the cap, reject non-finite content, and (optionally) unit-energy normalize.
template<typename T>
std::vector< T > intersect_sorted (const std::vector< T > &a, const std::vector< T > &b)
constexpr RtSafetyContract make_rt_safety_contract (std::string_view component, std::string_view operation, RtSafetyClass safety_class, bool audio_callback_allowed, bool may_allocate, bool may_lock, bool may_block, bool requires_prepare, std::string_view owner_boundary, std::string_view notes) noexcept
constexpr bool host_is_little_endian () noexcept
Endianness resolve_endianness (Endianness e) noexcept
template<typename T>
T byteswap_int (T value) noexcept
template<typename T>
T load_int (const uint8_t *src, Endianness src_endian) noexcept
template<typename T>
void store_int (uint8_t *dst, T value, Endianness dst_endian) noexcept
int32_t load_int24 (const uint8_t *src, Endianness src_endian) noexcept
void store_int24 (uint8_t *dst, int32_t value, Endianness dst_endian) noexcept
float finite_or_zero (float v) noexcept
std::uint64_t next_random (std::uint64_t &state) noexcept
float bipolar_random (std::uint64_t &state) noexcept
bool valid_neutral_profile_id (std::string_view id) noexcept
std::uint64_t heritage_next_random (std::uint64_t &state) noexcept
float heritage_bipolar_random (std::uint64_t &state) noexcept
void saturating_add (std::uint64_t &target, std::uint64_t value) noexcept
void set_sample_mip_build_fault_for_testing (SampleMipBuildFaultForTesting fault) noexcept
std::string sample_mip_coordination_key_for_manifest_path (std::string_view normalized_manifest_path, bool case_insensitive)
std::string sample_mip_coordination_key (std::string_view source_path, const runtime::FileIdentity &source_identity)
void apply_sample_starvation_envelope (SampleStarvationEnvelope &envelope, BufferView< float > destination, const SampleStreamVoiceBlockResult &result, std::uint32_t output_frames) noexcept

Variables

constexpr float kInt8Scale = 1.0f / 128.0f
constexpr float kInt16Scale = 1.0f / 32768.0f
constexpr float kInt24Scale = 1.0f / 8388608.0f
constexpr double kInt32Scale = 1.0 / 2147483648.0
template<typename Stage>
constexpr std::size_t stage_type_index
template<typename>
constexpr bool unsupported_voice_runtime_owner = false

Enumeration Type Documentation

◆ SampleMipBuildFaultForTesting

Enumerator
None 
PayloadPublicationException 
ManifestPolicyFinalization 
SourceChangedAfterManifestPublication 
PublishedManifestVerification 
PublishedManifestVerificationException 
PostCommitGarbageCollectionException 

Function Documentation

◆ apply_sample_starvation_envelope()

void pulp::audio::detail::apply_sample_starvation_envelope ( SampleStarvationEnvelope & envelope,
BufferView< float > destination,
const SampleStreamVoiceBlockResult & result,
std::uint32_t output_frames )
inlinenoexcept

◆ bipolar_random()

float pulp::audio::detail::bipolar_random ( std::uint64_t & state)
inlinenoexcept

◆ byteswap_int()

template<typename T>
T pulp::audio::detail::byteswap_int ( T value)
inlinenoexcept

◆ finish_impulse_response()

std::optional< std::vector< float > > pulp::audio::detail::finish_impulse_response ( std::vector< float > mono,
double file_sr,
double session_sr,
const ImpulseResponseLoadOptions & opts )
inline

The post-decode half of the IR pipeline, shared by every entry point: resample the mono buffer from file_sr to session_sr, drop the resampler's leading group delay, clamp to the cap, reject non-finite content, and (optionally) unit-energy normalize.

mono is consumed. Returns nullopt on any failure. Off-audio-thread only (it allocates).

◆ finite_or_zero()

float pulp::audio::detail::finite_or_zero ( float v)
inlinenoexcept

◆ heritage_bipolar_random()

float pulp::audio::detail::heritage_bipolar_random ( std::uint64_t & state)
inlinenoexcept

◆ heritage_next_random()

std::uint64_t pulp::audio::detail::heritage_next_random ( std::uint64_t & state)
inlinenoexcept

◆ host_is_little_endian()

bool pulp::audio::detail::host_is_little_endian ( )
constexprnoexcept

◆ intersect_sorted()

template<typename T>
std::vector< T > pulp::audio::detail::intersect_sorted ( const std::vector< T > & a,
const std::vector< T > & b )

◆ load_int()

template<typename T>
T pulp::audio::detail::load_int ( const uint8_t * src,
Endianness src_endian )
inlinenoexcept

◆ load_int24()

int32_t pulp::audio::detail::load_int24 ( const uint8_t * src,
Endianness src_endian )
inlinenoexcept

◆ make_rt_safety_contract()

RtSafetyContract pulp::audio::detail::make_rt_safety_contract ( std::string_view component,
std::string_view operation,
RtSafetyClass safety_class,
bool audio_callback_allowed,
bool may_allocate,
bool may_lock,
bool may_block,
bool requires_prepare,
std::string_view owner_boundary,
std::string_view notes )
nodiscardconstexprnoexcept

◆ next_random()

std::uint64_t pulp::audio::detail::next_random ( std::uint64_t & state)
inlinenoexcept

◆ resolve_endianness()

Endianness pulp::audio::detail::resolve_endianness ( Endianness e)
inlinenoexcept

◆ sample_mip_coordination_key()

std::string pulp::audio::detail::sample_mip_coordination_key ( std::string_view source_path,
const runtime::FileIdentity & source_identity )

◆ sample_mip_coordination_key_for_manifest_path()

std::string pulp::audio::detail::sample_mip_coordination_key_for_manifest_path ( std::string_view normalized_manifest_path,
bool case_insensitive )

◆ saturating_add()

void pulp::audio::detail::saturating_add ( std::uint64_t & target,
std::uint64_t value )
inlinenoexcept

◆ set_sample_mip_build_fault_for_testing()

void pulp::audio::detail::set_sample_mip_build_fault_for_testing ( SampleMipBuildFaultForTesting fault)
noexcept

◆ store_int()

template<typename T>
void pulp::audio::detail::store_int ( uint8_t * dst,
T value,
Endianness dst_endian )
inlinenoexcept

◆ store_int24()

void pulp::audio::detail::store_int24 ( uint8_t * dst,
int32_t value,
Endianness dst_endian )
inlinenoexcept

◆ valid_neutral_profile_id()

bool pulp::audio::detail::valid_neutral_profile_id ( std::string_view id)
inlinenoexcept

Variable Documentation

◆ kInt16Scale

float pulp::audio::detail::kInt16Scale = 1.0f / 32768.0f
constexpr

◆ kInt24Scale

float pulp::audio::detail::kInt24Scale = 1.0f / 8388608.0f
constexpr

◆ kInt32Scale

double pulp::audio::detail::kInt32Scale = 1.0 / 2147483648.0
constexpr

◆ kInt8Scale

float pulp::audio::detail::kInt8Scale = 1.0f / 128.0f
constexpr

◆ stage_type_index

template<typename Stage>
std::size_t pulp::audio::detail::stage_type_index
inlineconstexpr
Initial value:
= [] {
if constexpr (std::is_same_v<Stage, SampleHeritageMachineDomainStage>) return 0u;
if constexpr (std::is_same_v<Stage, SampleHeritageQuantizationStage>) return 1u;
if constexpr (std::is_same_v<Stage, SampleHeritageClockPitchStage>) return 2u;
if constexpr (std::is_same_v<Stage, SampleHeritageDacHoldStage>) return 3u;
if constexpr (std::is_same_v<Stage, SampleHeritageReconstructionFilterStage>) return 4u;
if constexpr (std::is_same_v<Stage, SampleHeritageNoiseStage>) return 5u;
return 6u;
}()

◆ unsupported_voice_runtime_owner

template<typename>
bool pulp::audio::detail::unsupported_voice_runtime_owner = false
inlineconstexpr