Versioned, allocation-free status shared by native hosts and UI adapters. More...
#include <gpu_audio_status.hpp>
Public Attributes | |
| std::uint32_t | schema_version = kSchemaVersion |
| GpuAudioEngine | requested_engine = GpuAudioEngine::Unknown |
| GpuAudioEngine | selected_engine = GpuAudioEngine::Unknown |
| GpuAudioProviderState | provider_state = GpuAudioProviderState::Uninitialized |
| GpuAudioProvider | provider = GpuAudioProvider{} |
| MissPolicy | fallback_policy = MissPolicy{} |
| std::uint32_t | sample_rate = 0 |
| std::uint32_t | block_size = 0 |
| std::uint32_t | latency_samples = 0 |
| std::uint32_t | prepared_lead_blocks = 0 |
| bool | fallback_available = false |
| bool | diagnostics_available = false |
| std::uint64_t | produced_blocks = 0 |
| std::uint64_t | missed_blocks = 0 |
| std::uint64_t | fallback_blocks = 0 |
| std::uint64_t | resynced_blocks = 0 |
| std::uint64_t | input_dropped_frames = 0 |
| double | last_block_us = 0.0 |
| double | avg_block_us = 0.0 |
| GpuAudioRecoveryReason | recovery_reason = GpuAudioRecoveryReason::None |
| The first cause latched in the current delivery epoch. | |
| std::uint64_t | recovery_sequence = UINT64_MAX |
| std::uint64_t | epoch = 0 |
| bool | delivery_epoch_active = false |
| std::uint64_t | terminal_counts [kTerminalDispositionCount] = {} |
| Admitted blocks by terminal disposition, indexed by the numeric value of GpuAudioTerminalDisposition. | |
| GpuAudioCompletionMode | completion_mode = GpuAudioCompletionMode::Unknown |
| bool | timestamps_available = false |
| std::uint64_t | last_delivery_ns = 0 |
| bool | gpu_kernel_available = false |
| GpuAudioShadowMode | shadow_mode = GpuAudioShadowMode::None |
| float | shadow_inline_cost_pct = 0.0f |
| Inline shadow cost as a percentage of the callback budget. | |
| std::uint64_t | shadow_delivered_blocks = 0 |
| Blocks delivered from the shadow instead of the GPU result. | |
| std::uint64_t | shadow_late_blocks = 0 |
| Blocks whose shadow result was not ready in time. | |
| std::uint64_t | shadow_double_miss_blocks = 0 |
| Blocks where both the GPU result and the shadow missed the deadline. | |
| bool | shadow_model_differs = false |
| The shadow runs a different model from the GPU path, so its output is a substitute rather than a bit-identical fallback. | |
| std::uint64_t | reacquire_attempts = 0 |
| Provider replacements the transport attempted after a fence. | |
| std::uint64_t | reacquire_successes = 0 |
| Attempts that opened a new delivery epoch on a new provider. | |
| std::uint64_t | last_reacquire_to_gpu_ns = 0 |
| Nanoseconds from the transport first observing the fence to the first GPU-delivered block of the epoch that replaced it; zero until measured. | |
Static Public Attributes | |
| static constexpr std::uint32_t | kSchemaVersion = 4 |
| static constexpr std::uint32_t | kTerminalDispositionCount = 8 |
| Number of GpuAudioTerminalDisposition values counted by terminal_counts. | |
Versioned, allocation-free status shared by native hosts and UI adapters.
A web or plugin-specific status object may project this into JSON, but must preserve the distinction between GPU production and CPU fallback. In particular, missed_blocks is not a synonym for fallback_blocks.
| double pulp::gpu_audio::GpuAudioStatus::avg_block_us = 0.0 |
| std::uint32_t pulp::gpu_audio::GpuAudioStatus::block_size = 0 |
| GpuAudioCompletionMode pulp::gpu_audio::GpuAudioStatus::completion_mode = GpuAudioCompletionMode::Unknown |
| bool pulp::gpu_audio::GpuAudioStatus::delivery_epoch_active = false |
| bool pulp::gpu_audio::GpuAudioStatus::diagnostics_available = false |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::epoch = 0 |
| bool pulp::gpu_audio::GpuAudioStatus::fallback_available = false |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::fallback_blocks = 0 |
| MissPolicy pulp::gpu_audio::GpuAudioStatus::fallback_policy = MissPolicy{} |
| bool pulp::gpu_audio::GpuAudioStatus::gpu_kernel_available = false |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::input_dropped_frames = 0 |
|
staticconstexpr |
|
staticconstexpr |
Number of GpuAudioTerminalDisposition values counted by terminal_counts.
| double pulp::gpu_audio::GpuAudioStatus::last_block_us = 0.0 |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::last_delivery_ns = 0 |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::last_reacquire_to_gpu_ns = 0 |
Nanoseconds from the transport first observing the fence to the first GPU-delivered block of the epoch that replaced it; zero until measured.
| std::uint32_t pulp::gpu_audio::GpuAudioStatus::latency_samples = 0 |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::missed_blocks = 0 |
| std::uint32_t pulp::gpu_audio::GpuAudioStatus::prepared_lead_blocks = 0 |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::produced_blocks = 0 |
| GpuAudioProvider pulp::gpu_audio::GpuAudioStatus::provider = GpuAudioProvider{} |
| GpuAudioProviderState pulp::gpu_audio::GpuAudioStatus::provider_state = GpuAudioProviderState::Uninitialized |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::reacquire_attempts = 0 |
Provider replacements the transport attempted after a fence.
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::reacquire_successes = 0 |
Attempts that opened a new delivery epoch on a new provider.
| GpuAudioRecoveryReason pulp::gpu_audio::GpuAudioStatus::recovery_reason = GpuAudioRecoveryReason::None |
The first cause latched in the current delivery epoch.
A successful automatic re-acquire opens a new epoch, so the cause that fenced the old one is replaced by the informational ProviderReacquired, with recovery_sequence set to the first block the new provider can deliver. The replaced cause remains in the trace (a Recovery record for the epoch change) and in the reacquire_* counters below.
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::recovery_sequence = UINT64_MAX |
| GpuAudioEngine pulp::gpu_audio::GpuAudioStatus::requested_engine = GpuAudioEngine::Unknown |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::resynced_blocks = 0 |
| std::uint32_t pulp::gpu_audio::GpuAudioStatus::sample_rate = 0 |
| std::uint32_t pulp::gpu_audio::GpuAudioStatus::schema_version = kSchemaVersion |
| GpuAudioEngine pulp::gpu_audio::GpuAudioStatus::selected_engine = GpuAudioEngine::Unknown |
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::shadow_delivered_blocks = 0 |
Blocks delivered from the shadow instead of the GPU result.
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::shadow_double_miss_blocks = 0 |
Blocks where both the GPU result and the shadow missed the deadline.
| float pulp::gpu_audio::GpuAudioStatus::shadow_inline_cost_pct = 0.0f |
Inline shadow cost as a percentage of the callback budget.
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::shadow_late_blocks = 0 |
Blocks whose shadow result was not ready in time.
| GpuAudioShadowMode pulp::gpu_audio::GpuAudioStatus::shadow_mode = GpuAudioShadowMode::None |
| bool pulp::gpu_audio::GpuAudioStatus::shadow_model_differs = false |
The shadow runs a different model from the GPU path, so its output is a substitute rather than a bit-identical fallback.
| std::uint64_t pulp::gpu_audio::GpuAudioStatus::terminal_counts[kTerminalDispositionCount] = {} |
Admitted blocks by terminal disposition, indexed by the numeric value of GpuAudioTerminalDisposition.
| bool pulp::gpu_audio::GpuAudioStatus::timestamps_available = false |