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

Realtime-produced, fixed-capacity, trivially-copyable probe summary. More...

#include <audio_probe_snapshot.hpp>

Public Attributes

double sample_rate = 0.0
std::uint32_t block_size = 0
std::uint32_t channel_count = 0
AudioProbeStage stage_id = AudioProbeStage::kUnknown
std::uint64_t sequence_number = 0
 Monotonic per-publish counter.
float peak [kMaxChannels] = {}
 Peak absolute sample value this block, per channel (linear, >= 0).
float rms [kMaxChannels] = {}
 RMS of this block, per channel (linear, >= 0).
float peak_max = 0.0f
 Max peak across active channels (linear).
float rms_max = 0.0f
 Max RMS across active channels (linear).
std::uint64_t clip_count = 0
 Samples seen with |x| > clip ceiling, summed over all blocks/channels.
std::uint64_t nan_inf_count = 0
 Samples seen as NaN or Inf, summed over all blocks/channels.
std::uint64_t clipped_blocks = 0
 BLOCKS that contained at least one clipped sample (per-block tally, not the per-sample clip_count).
std::uint64_t nan_blocks = 0
 BLOCKS that contained at least one NaN/Inf sample (per-block tally, not the per-sample nan_inf_count).
std::uint64_t callbacks = 0
 Number of analyzed callbacks (blocks) since prepare().
std::uint64_t silence_run_blocks = 0
 Consecutive blocks (most recent run) below the silence threshold.
std::uint64_t dropped_capture_frames = 0
 Capture frames the producer could not enqueue because the ring was full (only meaningful when last-N capture is enabled).
std::uint64_t overwritten_capture_frames = 0
 Capture frames overwritten in the ring before a consumer read them (only meaningful when overwrite-on-full capture is enabled).

Static Public Attributes

static constexpr int kMaxChannels = 32
 Compile-time channel ceiling.

Detailed Description

Realtime-produced, fixed-capacity, trivially-copyable probe summary.

Per-channel metrics are stored in fixed arrays sized to kMaxChannels. Only the first channel_count entries are meaningful. Aggregate (across active channels) scalars are also provided for cheap UI consumption.

Member Data Documentation

◆ block_size

std::uint32_t pulp::audio::AudioProbeSnapshot::block_size = 0

◆ callbacks

std::uint64_t pulp::audio::AudioProbeSnapshot::callbacks = 0

Number of analyzed callbacks (blocks) since prepare().

◆ channel_count

std::uint32_t pulp::audio::AudioProbeSnapshot::channel_count = 0

◆ clip_count

std::uint64_t pulp::audio::AudioProbeSnapshot::clip_count = 0

Samples seen with |x| > clip ceiling, summed over all blocks/channels.

◆ clipped_blocks

std::uint64_t pulp::audio::AudioProbeSnapshot::clipped_blocks = 0

BLOCKS that contained at least one clipped sample (per-block tally, not the per-sample clip_count).

This is what AudioStats::clipped_blocks mirrors.

◆ dropped_capture_frames

std::uint64_t pulp::audio::AudioProbeSnapshot::dropped_capture_frames = 0

Capture frames the producer could not enqueue because the ring was full (only meaningful when last-N capture is enabled).

0 otherwise.

◆ kMaxChannels

int pulp::audio::AudioProbeSnapshot::kMaxChannels = 32
staticconstexpr

Compile-time channel ceiling.

The probe's runtime capacity (set at prepare()) must not exceed this. 32 covers ambisonic/surround layouts while keeping the snapshot small enough to copy through a TripleBuffer.

◆ nan_blocks

std::uint64_t pulp::audio::AudioProbeSnapshot::nan_blocks = 0

BLOCKS that contained at least one NaN/Inf sample (per-block tally, not the per-sample nan_inf_count).

Mirrored by AudioStats::nan_blocks.

◆ nan_inf_count

std::uint64_t pulp::audio::AudioProbeSnapshot::nan_inf_count = 0

Samples seen as NaN or Inf, summed over all blocks/channels.

◆ overwritten_capture_frames

std::uint64_t pulp::audio::AudioProbeSnapshot::overwritten_capture_frames = 0

Capture frames overwritten in the ring before a consumer read them (only meaningful when overwrite-on-full capture is enabled).

0 otherwise.

◆ peak

float pulp::audio::AudioProbeSnapshot::peak[kMaxChannels] = {}

Peak absolute sample value this block, per channel (linear, >= 0).

◆ peak_max

float pulp::audio::AudioProbeSnapshot::peak_max = 0.0f

Max peak across active channels (linear).

◆ rms

float pulp::audio::AudioProbeSnapshot::rms[kMaxChannels] = {}

RMS of this block, per channel (linear, >= 0).

◆ rms_max

float pulp::audio::AudioProbeSnapshot::rms_max = 0.0f

Max RMS across active channels (linear).

◆ sample_rate

double pulp::audio::AudioProbeSnapshot::sample_rate = 0.0

◆ sequence_number

std::uint64_t pulp::audio::AudioProbeSnapshot::sequence_number = 0

Monotonic per-publish counter.

A reader stores the last value it saw; a gap means snapshots were dropped between reads (TripleBuffer is latest-wins). Starts at 0; the first published snapshot is 1.

◆ silence_run_blocks

std::uint64_t pulp::audio::AudioProbeSnapshot::silence_run_blocks = 0

Consecutive blocks (most recent run) below the silence threshold.

Reset to 0 by the first non-silent block. Lets a UI say "silent for N blocks".

◆ stage_id

AudioProbeStage pulp::audio::AudioProbeSnapshot::stage_id = AudioProbeStage::kUnknown

The documentation for this struct was generated from the following file: