#![allow(clippy::cast_precision_loss)] #![allow(clippy::cast_possible_truncation)] #![allow(clippy::cast_sign_loss)] #![allow(clippy::missing_errors_doc)] #![allow(clippy::missing_panics_doc)] #![allow(clippy::unused_self)] #![allow(clippy::must_use_candidate)] #![allow(clippy::doc_markdown)] #![allow(clippy::unnecessary_wraps)] #![allow(clippy::float_cmp)] #![allow(clippy::match_same_arms)] #![allow(clippy::module_name_repetitions)] #![allow(clippy::struct_excessive_bools)] #![allow(clippy::too_many_lines)] #![allow(clippy::needless_pass_by_value)] #![allow(clippy::similar_names)] #![allow(clippy::unused_async)] #![allow(clippy::needless_range_loop)] #![allow(clippy::uninlined_format_args)] #![allow(clippy::manual_clamp)] #![allow(clippy::return_self_not_must_use)] #![allow(clippy::cast_possible_wrap)] #![allow(clippy::cast_lossless)] #![allow(clippy::wildcard_imports)] #![allow(clippy::format_push_string)] #![allow(clippy::redundant_closure_for_method_calls)] #![deny(unsafe_code)]
#![warn(missing_docs)]
pub mod ambisonics;
pub mod automotive;
pub mod backends;
pub mod beamforming;
pub mod binaural;
pub mod compression;
pub mod config;
pub mod core;
pub mod gaming;
pub mod gestures;
pub mod gpu;
pub mod haptic;
pub mod hrtf;
pub mod memory;
pub mod mobile;
pub mod multiuser;
pub mod neural;
pub mod performance;
pub mod performance_targets;
pub mod platforms;
pub mod plugins;
pub mod position;
pub mod power;
pub mod public_spaces;
pub mod realtime; pub mod room;
pub mod smart_speakers;
pub mod technical_testing;
pub mod telepresence;
pub mod types;
pub mod utils;
pub mod validation;
pub mod visual_audio;
pub mod webxr;
pub mod wfs;
pub use ambisonics::{
channel_count, AmbisonicsDecoder, AmbisonicsEncoder, AmbisonicsOrder, AmbisonicsProcessor,
ChannelOrdering, NormalizationScheme, SpeakerConfiguration, SphericalCoordinate,
SphericalHarmonics,
};
pub use automotive::{
AcousticTreatment, AdaptiveVolumeConfig, AudioZone, DashboardSide, DriverProtectionConfig,
EmergencyAlertType, EmergencyAudioConfig, EngineNoiseCompensation, EngineType,
ExternalAwarenessConfig, ExternalConditions, FrequencyBand, FrequencyWeighting, GearPosition,
HearingCharacteristics, HvacConfig, HvacState, InteriorMaterials, LegalComplianceConfig,
MaterialType, NoiseCompensationConfig, PassengerActivity, PassengerConfig, PassengerInfo,
PassengerPreferences, PrecipitationType, ResourceUsage, RoadNoiseCompensation, SafetyConfig,
SeatPosition, SpatialPreferences, SpeakerCharacteristics, SpeakerMounting, SpeakerType,
SurfaceType, TimeLimits, TireNoiseModel, TireType, VehicleAcousticConfig, VehicleAudioConfig,
VehicleAudioConfigBuilder, VehicleAudioMetrics, VehicleAudioProcessor, VehicleSide,
VehicleSpeaker, VehicleSpeakerConfig, VehicleState, VehicleType, VentPosition,
WindNoiseCompensation, WindowConfig, WindowState, WindowTinting, ZoneAudioSource,
};
pub use beamforming::{
AdaptationConfig, BeamPattern, BeamformerWeights, BeamformingAlgorithm, BeamformingConfig,
BeamformingProcessor, DoaResult, SpatialSmoothingConfig,
};
pub use binaural::{BinauralConfig, BinauralMetrics, BinauralRenderer, SourceType};
pub use compression::{
AdaptiveParams, CompressedFrame, CompressionCodec, CompressionQuality, CompressionStats,
PerceptualParams, SourceClustering, SpatialCompressionConfig, SpatialCompressor,
SpatialMetadata, SpatialParams, TemporalMasking,
};
pub use config::{SpatialConfig, SpatialConfigBuilder};
pub use core::{SpatialProcessor, SpatialProcessorBuilder};
pub use gaming::{
console, AttenuationCurve, AttenuationSettings, AudioCategory, GameAudioSource, GameEngine,
GamingAudioManager, GamingConfig, GamingMetrics,
};
pub use gestures::{
AudioAction, GestureBuilder, GestureConfidence, GestureConfig, GestureController, GestureData,
GestureDirection, GestureEvent, GestureEventType, GestureRecognitionMethod, GestureType, Hand,
};
pub use gpu::{
GpuAmbisonics, GpuConfig, GpuConvolution, GpuDevice, GpuResourceManager, GpuSpatialMath,
};
pub use haptic::{
AudioHapticMapping, DistanceAttenuation, HapticAccessibilitySettings, HapticAudioConfig,
HapticAudioProcessor, HapticCapabilities, HapticComfortSettings, HapticDevice,
HapticEffectType, HapticElement, HapticMetrics, HapticPattern, PatternStyle,
};
pub use hrtf::{
ai_personalization::{
AdaptationStrategy, AiHrtfPersonalizer, AnthropometricMeasurements, HrtfModifications,
PerceptualFeedback, PersonalizationConfig, PersonalizationMetadata, PersonalizedHrtf,
TrainingResults,
},
HrtfDatabase, HrtfProcessor,
};
pub use memory::{
cache_optimization, Array2Pool, BufferPool, CacheManager, CachePolicy, MemoryConfig,
MemoryManager, MemoryStatistics,
};
pub use mobile::{
android, ios, MobileConfig, MobileDevice, MobileMetrics, MobileOptimizer, MobilePlatform,
PowerState, QualityPreset,
};
pub use multiuser::{
AccessibilitySettings, AcousticSettings, AudioEffect, AudioEffectsProcessor,
AudioQualityMetrics, AudioSourceType, BandwidthSettings, CodecState, CodecTiming,
CompensationMethod, ConnectionStatus, DirectionalPattern, DisconnectReason,
InterpolationMethod, LatencyCompensator, LowBandwidthMode, MicrophoneSettings, MixerConfig,
MultiUserAttenuationCurve, MultiUserAudioProcessor, MultiUserAudioSource, MultiUserConfig,
MultiUserConfigBuilder, MultiUserEnvironment, MultiUserEvent, MultiUserMetrics, MultiUserUser,
NetworkEventType, NetworkStats, OptimizationLevel, Permission, PermissionSystem,
PositionInterpolator, PositionSnapshot, RoomId, SourceAccessControl, SourceId,
SourceProcessingState, SourceQualitySettings, SourceVisibility, SpatialAudioMixer,
SpatialProperties, SpatialZone, SynchronizationManager, SynchronizedClock, UserId, UserRole,
VadAlgorithm, VadState, VadThresholds, VoiceActivityDetector, ZoneAudioProperties, ZoneBounds,
ZoneType,
};
pub use neural::{
AdaptiveQualityController, AugmentationConfig, ConvolutionalModel, FeedforwardModel,
LossFunction, NeuralInputFeatures, NeuralModel, NeuralModelType, NeuralPerformanceMetrics,
NeuralSpatialConfig, NeuralSpatialConfigBuilder, NeuralSpatialOutput, NeuralSpatialProcessor,
NeuralTrainer, NeuralTrainingResults, OptimizerType, RealtimeConstraints, TrainingConfig,
TransformerModel,
};
pub use performance::{
PerformanceConfig, PerformanceMetrics, PerformanceReport, PerformanceSummary,
PerformanceTargetResult, PerformanceTestSuite, ResourceMonitor, ResourceStatistics,
};
pub use performance_targets::{
LatencyMeasurements, PerformanceTargetReport, PerformanceTargetValidator, PerformanceTargets,
PerformanceValidationResult, QualityMeasurements, QualityTargets, RealtimeTargets,
ResourceMeasurements, ResourceTargets, ResourceUsageStats, ScalabilityMeasurements,
ScalabilityTargets, TargetCategory, TargetComparison,
};
pub use platforms::{
ARCorePlatform, ARKitPlatform, DeviceInfo, EyeData, EyeTrackingData, GenericPlatform, HandData,
HandGesture, HandTrackingData, OculusPlatform, PlatformCapabilities, PlatformFactory,
PlatformIntegration, PlatformTrackingData, PoseData, TrackingConfig, TrackingQuality,
TrackingState, WMRPlatform,
};
#[cfg(feature = "steamvr")]
pub use platforms::SteamVRPlatform;
pub use plugins::{
PluginCapabilities, PluginConfig, PluginManager, PluginParameter, PluginParameters,
PluginState, ProcessingChain, ProcessingContext, ReverbPlugin, SpatialPlugin,
};
pub use position::{
advanced_prediction::{
AdaptationPhase, AdvancedPredictiveTracker, ModelSelectionStrategy, MotionPattern,
MotionPatternType, PatternRecognitionConfig, PredictedPosition, PredictionMetrics,
PredictionModelType, PredictiveTrackingConfig,
},
Box3D, CalibrationData, ComfortSettings, DopplerProcessor, DynamicSource, DynamicSourceManager,
HeadTracker, Listener, ListenerMovementSystem, MotionPredictor, MotionSnapshot,
MovementConstraints, MovementMetrics, NavigationMode, OcclusionDetector, OcclusionMaterial,
OcclusionMethod, OcclusionResult, PlatformData, PlatformType, SoundSource,
SpatialSourceManager,
};
pub use power::{
DeviceType, PowerConfig, PowerMetrics, PowerOptimizer, PowerProfile, PowerStrategy,
};
pub use room::{
adaptive_acoustics::{
AdaptationAction, AdaptationController, AdaptationMetrics, AdaptationTrigger,
AdaptiveAcousticEnvironment, AdaptiveAcousticsConfig, EnvironmentSensors,
EnvironmentSnapshot, EnvironmentType, SensorConfig, UserFeedback,
},
ConnectionAcousticProperties, ConnectionState, ConnectionType, GlobalAcousticConfig,
MultiRoomEnvironment, Room, RoomAcoustics, RoomConnection, RoomSimulator,
};
pub use smart_speakers::{
ArrayMetrics, ArrayTopology, AudioFormat, AudioRoute, AudioRouter, AudioSource, AudioSpecs,
CalibrationEngine, CalibrationMethod, CalibrationResults, CalibrationStatus, ClockSource,
CompressionConfig, DeviceFilter, DirectivityPattern, DiscoveryProtocol, DiscoveryService,
DspFeature, EQFilter, FilterType, LimitingConfig, MixSettings, NetworkConfig, NetworkInfo,
NetworkProtocol, ProcessingConfig, ProcessingStep, RoomCorrection, SmartSpeaker,
SpeakerArrayConfig, SpeakerArrayConfigBuilder, SpeakerArrayManager, SpeakerCapabilities,
SyncConfig,
};
pub use technical_testing::{
create_standard_technical_configs, LatencyAnalysis, MemoryConstraints, PlatformAnalysis,
PlatformTestResult, StabilityAnalysis, StressTestParams, TechnicalSuccessCriteria,
TechnicalTestConfig, TechnicalTestParameters, TechnicalTestReport, TechnicalTestResult,
TechnicalTestSuite, TechnicalTestType, TestOutcome,
};
pub use telepresence::{
AcousticEchoSettings, AcousticMatchingSettings, AcousticProperties, AdaptiveQualitySettings,
AirAbsorptionSettings, AnonymizationMethod, AnonymizationSettings, AudioCodec,
AudioDeviceConfig, AudioEnhancementSettings, AudioFormat as TelepresenceAudioFormat,
AudioMetadata, AudioPresenceSettings, AudioQualityPreferences, AudioQualitySettings,
BandwidthConstraints, BandwidthExtensionSettings, CodecPreferences, CompressionSettings,
ConsentManagementSettings, CrossRoomSettings, DataCollectionSettings, DistanceModelingSettings,
DopplerEffectsSettings, EchoCancellationSettings, EnvironmentalAwarenessSettings,
EqualizationSettings, HeadTrackingSettings, HrtfPersonalizationSettings, NetworkSettings,
NoiseSuppressionSettings, Orientation, PresenceIndicatorSettings, PrivacySettings,
QualityLevel, QualitySettings, ReceivedAudio, RoomSimulationSettings, SessionJoinResult,
SessionState, SessionStatistics, SpatialTelepresenceSettings, TelepresenceAudioSettings,
TelepresenceConfig, TelepresenceProcessor, TelepresenceSession, TrackingPredictionSettings,
UserConfig, VadSettings, Velocity, VirtualRoomParameters, VisualPresenceSettings,
VoiceProcessingSettings, VoiceSpatializationSettings,
};
pub use types::{
AudioChannel, BinauraAudio, Position3D, SIMDSpatialOps, SpatialEffect, SpatialRequest,
SpatialResult,
};
pub use validation::{
create_standard_test_configs, create_test_subjects, AccuracyMetrics, AudioExpertise,
ExperienceLevel, Gender, HearingAbility, PerceptualTestSuite, PopulationAnalysis, ResponseData,
StimulusData, SubjectiveRatings, SuccessCriteria, TestParameters, TestStatistics, TestSubject,
ValidationReport, ValidationTestConfig, ValidationTestResult, ValidationTestType,
};
pub use visual_audio::{
AnimationParams, AnimationType, AudioVisualMapping, ColorRGBA, ColorScheme, ColorSchemeType,
DirectionZone, DirectionalCueMapping, EasingFunction, EventTriggerMapping,
FrequencyVisualMapping, OnsetTrigger, RhythmTrigger, ScalingCurve, ShapeType, SilenceTrigger,
SpectralTrigger, VisualAccessibilitySettings, VisualAudioConfig, VisualAudioMetrics,
VisualAudioProcessor, VisualDisplay, VisualDisplayCapabilities, VisualDistanceAttenuation,
VisualEffect, VisualElement, VisualElementType, VisualPerformanceSettings, VisualResourceUsage,
VisualSyncSettings,
};
pub use webxr::{
utils as webxr_utils, BrowserType, WebXRCapabilities, WebXRConfig, WebXRMetrics, WebXRPose,
WebXRProcessor, WebXRSessionType, WebXRSourceType,
};
pub use wfs::{
ArrayGeometry, PreEmphasisConfig, WfsArrayBuilder, WfsConfig, WfsDrivingFunction, WfsProcessor,
WfsSource, WfsSourceType,
};
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Configuration error: {0}")]
Config(#[from] ConfigError),
#[error("Processing error: {0}")]
Processing(#[from] ProcessingError),
#[error("HRTF error: {0}")]
Hrtf(#[from] HrtfError),
#[error("Position error: {0}")]
Position(#[from] PositionError),
#[error("Room acoustics error: {0}")]
Room(#[from] RoomError),
#[error("Audio error: {0}")]
Audio(#[from] AudioError),
#[error("Memory error: {0}")]
Memory(#[from] MemoryError),
#[error("GPU error: {0}")]
Gpu(#[from] GpuError),
#[error("Platform error: {0}")]
Platform(#[from] PlatformError),
#[error("Validation error: {0}")]
Validation(#[from] ValidationError),
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("Serialization error: {0}")]
Serialization(#[from] serde_json::Error),
#[error("Candle error: {0}")]
Candle(#[from] candle_core::Error),
#[error("Error: {message}")]
Generic {
message: String,
code: ErrorCode,
context: Option<Box<ErrorContext>>,
},
#[error("Configuration error: {0}")]
LegacyConfig(String),
#[error("Processing error: {0}")]
LegacyProcessing(String),
#[error("HRTF error: {0}")]
LegacyHrtf(String),
#[error("Position error: {0}")]
LegacyPosition(String),
#[error("Room acoustics error: {0}")]
LegacyRoom(String),
#[error("Audio error: {0}")]
LegacyAudio(String),
#[error("Validation error: {0}")]
LegacyValidation(String),
}
#[derive(Debug, thiserror::Error)]
pub enum ConfigError {
#[error("Invalid parameter '{parameter}': {message}. Expected: {expected}")]
InvalidParameter {
parameter: String,
message: String,
expected: String,
},
#[error("Missing required parameter: {parameter}")]
MissingParameter {
parameter: String,
},
#[error("Conflicting parameters: {params:?}. {resolution}")]
ConflictingParameters {
params: Vec<String>,
resolution: String,
},
#[error("Configuration file not found: {path}")]
FileNotFound {
path: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum ProcessingError {
#[error("Buffer size mismatch: expected {expected}, got {actual}")]
BufferSizeMismatch {
expected: usize,
actual: usize,
},
#[error("Sample rate mismatch: expected {expected}Hz, got {actual}Hz")]
SampleRateMismatch {
expected: u32,
actual: u32,
},
#[error("Real-time processing constraint violated: {duration_ms}ms > {max_ms}ms")]
RealtimeViolation {
duration_ms: f64,
max_ms: f64,
},
#[error("Resource exhausted: {resource}. Usage: {usage}/{limit}")]
ResourceExhausted {
resource: String,
usage: u64,
limit: u64,
},
}
#[derive(Debug, thiserror::Error)]
pub enum HrtfError {
#[error("Failed to load HRTF database from {path}: {reason}")]
DatabaseLoadFailed {
path: String,
reason: String,
},
#[error("Invalid position for HRTF lookup: azimuth={azimuth}°, elevation={elevation}°")]
InvalidPosition {
azimuth: f32,
elevation: f32,
},
#[error("HRTF interpolation failed: {reason}")]
InterpolationFailed {
reason: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum PositionError {
#[error("Invalid coordinates: x={x}, y={y}, z={z}. {constraint}")]
InvalidCoordinates {
x: f32,
y: f32,
z: f32,
constraint: String,
},
#[error("Tracking system unavailable: {system}")]
TrackingUnavailable {
system: String,
},
#[error("Calibration required for {component}: {instructions}")]
CalibrationRequired {
component: String,
instructions: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum RoomError {
#[error("Invalid room dimensions: {width}x{height}x{depth}m. {constraint}")]
InvalidDimensions {
width: f32,
height: f32,
depth: f32,
constraint: String,
},
#[error("Invalid material properties: {material}. {issue}")]
InvalidMaterial {
material: String,
issue: String,
},
#[error("Ray tracing computation failed: {reason}")]
RayTracingFailed {
reason: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum AudioError {
#[error("Unsupported audio format: {format}. Supported: {supported:?}")]
UnsupportedFormat {
format: String,
supported: Vec<String>,
},
#[error("Audio clipping detected: {severity}% samples above threshold")]
ClippingDetected {
severity: f32,
},
#[error("Audio buffer {kind}: {samples} samples")]
BufferIssue {
kind: AudioBufferIssue,
samples: usize,
},
}
#[derive(Debug, thiserror::Error)]
pub enum MemoryError {
#[error("Out of memory: requested {requested}MB, available {available}MB")]
OutOfMemory {
requested: u64,
available: u64,
},
#[error("Memory pool exhausted: {pool_type}, size={size}")]
PoolExhausted {
pool_type: String,
size: usize,
},
#[error("Cache miss: {cache_type}, key={key}")]
CacheMiss {
cache_type: String,
key: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum GpuError {
#[error("GPU not available: {reason}")]
NotAvailable {
reason: String,
},
#[error("CUDA error: {message}")]
Cuda {
message: String,
},
#[error("GPU memory allocation failed: requested {requested}MB")]
AllocationFailed {
requested: u64,
},
}
#[derive(Debug, thiserror::Error)]
pub enum PlatformError {
#[error("Platform not supported: {platform}")]
NotSupported {
platform: String,
},
#[error("SDK initialization failed: {sdk}, reason: {reason}")]
SdkInitFailed {
sdk: String,
reason: String,
},
#[error("Feature not available: {feature} on {platform}")]
FeatureUnavailable {
feature: String,
platform: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum ValidationError {
#[error("Schema validation failed: {field}. {message}")]
SchemaFailed {
field: String,
message: String,
},
#[error("Value out of range: {field}={value}, expected [{min}, {max}]")]
RangeError {
field: String,
value: f64,
min: f64,
max: f64,
},
#[error("Test failed: {test_name}. Expected: {expected}, Got: {actual}")]
TestFailed {
test_name: String,
expected: String,
actual: String,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ErrorCode {
ConfigInvalidParameter = 1001,
ConfigMissingParameter = 1002,
ConfigConflictingParameters = 1003,
ConfigFileNotFound = 1004,
ProcessingBufferSizeMismatch = 2001,
ProcessingSampleRateMismatch = 2002,
ProcessingRealtimeViolation = 2003,
ProcessingResourceExhausted = 2004,
HrtfDatabaseLoadFailed = 3001,
HrtfInvalidPosition = 3002,
HrtfInterpolationFailed = 3003,
PositionInvalidCoordinates = 4001,
PositionTrackingUnavailable = 4002,
PositionCalibrationRequired = 4003,
RoomInvalidDimensions = 5001,
RoomInvalidMaterial = 5002,
RoomRayTracingFailed = 5003,
AudioUnsupportedFormat = 6001,
AudioClippingDetected = 6002,
AudioBufferIssue = 6003,
MemoryOutOfMemory = 7001,
MemoryPoolExhausted = 7002,
MemoryCacheMiss = 7003,
GpuNotAvailable = 8001,
GpuCudaError = 8002,
GpuAllocationFailed = 8003,
PlatformNotSupported = 9001,
PlatformSdkInitFailed = 9002,
PlatformFeatureUnavailable = 9003,
Generic = 10000,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AudioBufferIssue {
Underrun,
Overrun,
Corruption,
}
impl std::fmt::Display for AudioBufferIssue {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
AudioBufferIssue::Underrun => write!(f, "underrun"),
AudioBufferIssue::Overrun => write!(f, "overrun"),
AudioBufferIssue::Corruption => write!(f, "corruption"),
}
}
}
#[derive(Debug, Clone)]
pub struct ErrorContext {
pub module: String,
pub function: String,
pub line: Option<u32>,
pub data: std::collections::HashMap<String, String>,
pub recovery_suggestions: Vec<String>,
pub related_errors: Vec<String>,
}
impl ErrorContext {
pub fn new(module: &str, function: &str) -> Self {
Self {
module: module.to_string(),
function: function.to_string(),
line: None,
data: std::collections::HashMap::new(),
recovery_suggestions: Vec::new(),
related_errors: Vec::new(),
}
}
pub fn with_data(mut self, key: &str, value: &str) -> Self {
self.data.insert(key.to_string(), value.to_string());
self
}
pub fn with_suggestion(mut self, suggestion: &str) -> Self {
self.recovery_suggestions.push(suggestion.to_string());
self
}
pub fn with_related_error(mut self, error: &str) -> Self {
self.related_errors.push(error.to_string());
self
}
}
impl Error {
pub fn config(message: &str) -> Self {
Self::Config(ConfigError::InvalidParameter {
parameter: "unknown".to_string(),
message: message.to_string(),
expected: "valid configuration".to_string(),
})
}
pub fn processing(message: &str) -> Self {
Self::Processing(ProcessingError::ResourceExhausted {
resource: "processing".to_string(),
usage: 0,
limit: 0,
})
}
pub fn hrtf(message: &str) -> Self {
Self::Hrtf(HrtfError::InterpolationFailed {
reason: message.to_string(),
})
}
pub fn room(message: &str) -> Self {
Self::Room(RoomError::RayTracingFailed {
reason: message.to_string(),
})
}
pub fn code(&self) -> ErrorCode {
match self {
Error::Config(config_err) => match config_err {
ConfigError::InvalidParameter { .. } => ErrorCode::ConfigInvalidParameter,
ConfigError::MissingParameter { .. } => ErrorCode::ConfigMissingParameter,
ConfigError::ConflictingParameters { .. } => ErrorCode::ConfigConflictingParameters,
ConfigError::FileNotFound { .. } => ErrorCode::ConfigFileNotFound,
},
Error::LegacyConfig(_) => ErrorCode::ConfigInvalidParameter,
Error::LegacyProcessing(_) => ErrorCode::ProcessingResourceExhausted,
Error::LegacyHrtf(_) => ErrorCode::HrtfInterpolationFailed,
Error::LegacyPosition(_) => ErrorCode::PositionInvalidCoordinates,
Error::LegacyRoom(_) => ErrorCode::RoomRayTracingFailed,
Error::LegacyAudio(_) => ErrorCode::AudioBufferIssue,
Error::LegacyValidation(_) => ErrorCode::Generic,
Error::Processing(processing_err) => match processing_err {
ProcessingError::BufferSizeMismatch { .. } => {
ErrorCode::ProcessingBufferSizeMismatch
}
ProcessingError::SampleRateMismatch { .. } => {
ErrorCode::ProcessingSampleRateMismatch
}
ProcessingError::RealtimeViolation { .. } => ErrorCode::ProcessingRealtimeViolation,
ProcessingError::ResourceExhausted { .. } => ErrorCode::ProcessingResourceExhausted,
},
Error::Hrtf(hrtf_err) => match hrtf_err {
HrtfError::DatabaseLoadFailed { .. } => ErrorCode::HrtfDatabaseLoadFailed,
HrtfError::InvalidPosition { .. } => ErrorCode::HrtfInvalidPosition,
HrtfError::InterpolationFailed { .. } => ErrorCode::HrtfInterpolationFailed,
},
Error::Position(position_err) => match position_err {
PositionError::InvalidCoordinates { .. } => ErrorCode::PositionInvalidCoordinates,
PositionError::TrackingUnavailable { .. } => ErrorCode::PositionTrackingUnavailable,
PositionError::CalibrationRequired { .. } => ErrorCode::PositionCalibrationRequired,
},
Error::Room(room_err) => match room_err {
RoomError::InvalidDimensions { .. } => ErrorCode::RoomInvalidDimensions,
RoomError::InvalidMaterial { .. } => ErrorCode::RoomInvalidMaterial,
RoomError::RayTracingFailed { .. } => ErrorCode::RoomRayTracingFailed,
},
Error::Audio(audio_err) => match audio_err {
AudioError::UnsupportedFormat { .. } => ErrorCode::AudioUnsupportedFormat,
AudioError::ClippingDetected { .. } => ErrorCode::AudioClippingDetected,
AudioError::BufferIssue { .. } => ErrorCode::AudioBufferIssue,
},
Error::Memory(memory_err) => match memory_err {
MemoryError::OutOfMemory { .. } => ErrorCode::MemoryOutOfMemory,
MemoryError::PoolExhausted { .. } => ErrorCode::MemoryPoolExhausted,
MemoryError::CacheMiss { .. } => ErrorCode::MemoryCacheMiss,
},
Error::Gpu(gpu_err) => match gpu_err {
GpuError::NotAvailable { .. } => ErrorCode::GpuNotAvailable,
GpuError::Cuda { .. } => ErrorCode::GpuCudaError,
GpuError::AllocationFailed { .. } => ErrorCode::GpuAllocationFailed,
},
Error::Platform(platform_err) => match platform_err {
PlatformError::NotSupported { .. } => ErrorCode::PlatformNotSupported,
PlatformError::SdkInitFailed { .. } => ErrorCode::PlatformSdkInitFailed,
PlatformError::FeatureUnavailable { .. } => ErrorCode::PlatformFeatureUnavailable,
},
Error::Validation(validation_err) => match validation_err {
ValidationError::SchemaFailed { .. } => ErrorCode::Generic,
ValidationError::RangeError { .. } => ErrorCode::Generic,
ValidationError::TestFailed { .. } => ErrorCode::Generic,
},
Error::Generic { code, .. } => *code,
_ => ErrorCode::Generic,
}
}
pub fn with_context(message: &str, code: ErrorCode, context: ErrorContext) -> Self {
Error::Generic {
message: message.to_string(),
code,
context: Some(Box::new(context)),
}
}
pub fn is_recoverable(&self) -> bool {
match self {
Error::Config(_) => false, Error::Processing(ProcessingError::RealtimeViolation { .. }) => true,
Error::Processing(ProcessingError::ResourceExhausted { .. }) => true,
Error::Memory(_) => true, Error::Gpu(_) => true, Error::Position(PositionError::TrackingUnavailable { .. }) => true,
Error::Audio(AudioError::BufferIssue { .. }) => true,
_ => false,
}
}
pub fn recovery_suggestions(&self) -> Vec<String> {
match self {
Error::Processing(ProcessingError::RealtimeViolation { max_ms, .. }) => {
vec![
"Reduce buffer size to improve latency".to_string(),
format!("Increase processing timeout above {}ms", max_ms),
"Consider using GPU acceleration".to_string(),
]
}
Error::Memory(MemoryError::OutOfMemory { .. }) => {
vec![
"Clear cache memory".to_string(),
"Reduce buffer pool sizes".to_string(),
"Close unused audio sources".to_string(),
]
}
Error::Gpu(GpuError::NotAvailable { .. }) => {
vec![
"Fallback to CPU processing".to_string(),
"Check GPU drivers".to_string(),
"Verify CUDA installation".to_string(),
]
}
Error::Generic {
context: Some(ctx), ..
} => ctx.recovery_suggestions.clone(),
_ => vec!["Check configuration and retry".to_string()],
}
}
}
pub mod prelude {
pub use crate::{
ambisonics::{
channel_count, AmbisonicsDecoder, AmbisonicsEncoder, AmbisonicsOrder,
AmbisonicsProcessor, ChannelOrdering, NormalizationScheme, SpeakerConfiguration,
SphericalCoordinate, SphericalHarmonics,
},
beamforming::{
AdaptationConfig, BeamPattern, BeamformerWeights, BeamformingAlgorithm,
BeamformingConfig, BeamformingProcessor, DoaResult, SpatialSmoothingConfig,
},
binaural::{BinauralConfig, BinauralMetrics, BinauralRenderer, SourceType},
compression::{
AdaptiveParams, CompressedFrame, CompressionCodec, CompressionQuality,
CompressionStats, PerceptualParams, SourceClustering, SpatialCompressionConfig,
SpatialCompressor, SpatialMetadata, SpatialParams, TemporalMasking,
},
config::{SpatialConfig, SpatialConfigBuilder},
core::{SpatialProcessor, SpatialProcessorBuilder},
gaming::{
console, AttenuationCurve, AttenuationSettings, AudioCategory, GameAudioSource,
GameEngine, GamingAudioManager, GamingConfig, GamingMetrics,
},
gestures::{
AudioAction, GestureBuilder, GestureConfidence, GestureConfig, GestureController,
GestureData, GestureDirection, GestureEvent, GestureEventType,
GestureRecognitionMethod, GestureType, Hand,
},
gpu::{
GpuAmbisonics, GpuConfig, GpuConvolution, GpuDevice, GpuResourceManager, GpuSpatialMath,
},
haptic::{
AudioHapticMapping, DistanceAttenuation, HapticAccessibilitySettings,
HapticAudioConfig, HapticAudioProcessor, HapticCapabilities, HapticComfortSettings,
HapticDevice, HapticEffectType, HapticElement, HapticMetrics, HapticPattern,
PatternStyle,
},
hrtf::{
ai_personalization::{
AdaptationStrategy, AiHrtfPersonalizer, AnthropometricMeasurements,
HrtfModifications, PerceptualFeedback, PersonalizationConfig,
PersonalizationMetadata, PersonalizedHrtf, TrainingResults,
},
HrtfDatabase, HrtfProcessor,
},
multiuser::{
AccessibilitySettings, AcousticSettings, AudioEffect, AudioEffectsProcessor,
AudioQualityMetrics, AudioSourceType, BandwidthSettings, CodecState, CodecTiming,
CompensationMethod, ConnectionStatus, DirectionalPattern, DisconnectReason,
InterpolationMethod, LatencyCompensator, LowBandwidthMode, MicrophoneSettings,
MixerConfig, MultiUserAttenuationCurve, MultiUserAudioProcessor, MultiUserAudioSource,
MultiUserConfig, MultiUserConfigBuilder, MultiUserEnvironment, MultiUserEvent,
MultiUserMetrics, MultiUserUser, NetworkEventType, NetworkStats, OptimizationLevel,
Permission, PermissionSystem, PositionInterpolator, PositionSnapshot, RoomId,
SourceAccessControl, SourceId, SourceProcessingState, SourceQualitySettings,
SourceVisibility, SpatialAudioMixer, SpatialProperties, SpatialZone,
SynchronizationManager, SynchronizedClock, UserId, UserRole, VadAlgorithm, VadState,
VadThresholds, VoiceActivityDetector, ZoneAudioProperties, ZoneBounds, ZoneType,
},
neural::{
AdaptiveQualityController, AugmentationConfig, ConvolutionalModel, FeedforwardModel,
LossFunction, NeuralInputFeatures, NeuralModel, NeuralModelType,
NeuralPerformanceMetrics, NeuralSpatialConfig, NeuralSpatialConfigBuilder,
NeuralSpatialOutput, NeuralSpatialProcessor, NeuralTrainer, NeuralTrainingResults,
OptimizerType, RealtimeConstraints, TrainingConfig, TransformerModel,
},
performance::{
PerformanceConfig, PerformanceMetrics, PerformanceReport, PerformanceSummary,
PerformanceTargetResult, PerformanceTestSuite, ResourceMonitor, ResourceStatistics,
},
platforms::{
ARCorePlatform, ARKitPlatform, DeviceInfo, EyeData, EyeTrackingData, GenericPlatform,
HandData, HandGesture, HandTrackingData, OculusPlatform, PlatformCapabilities,
PlatformFactory, PlatformIntegration, PlatformTrackingData, PoseData, TrackingConfig,
TrackingQuality, TrackingState, WMRPlatform,
},
plugins::{
PluginCapabilities, PluginConfig, PluginManager, PluginParameter, PluginParameters,
PluginState, ProcessingChain, ProcessingContext, ReverbPlugin, SpatialPlugin,
},
position::{
advanced_prediction::{
AdaptationPhase, AdvancedPredictiveTracker, ModelSelectionStrategy, MotionPattern,
MotionPatternType, PatternRecognitionConfig, PredictedPosition, PredictionMetrics,
PredictionModelType, PredictiveTrackingConfig,
},
Box3D, CalibrationData, ComfortSettings, DopplerProcessor, DynamicSource,
DynamicSourceManager, HeadTracker, Listener, ListenerMovementSystem, MotionPredictor,
MotionSnapshot, MovementConstraints, MovementMetrics, NavigationMode,
OcclusionDetector, OcclusionMaterial, OcclusionMethod, OcclusionResult, PlatformData,
PlatformType, SoundSource, SpatialSourceManager,
},
room::{
adaptive_acoustics::{
AdaptationAction, AdaptationController, AdaptationMetrics, AdaptationTrigger,
AdaptiveAcousticEnvironment, AdaptiveAcousticsConfig, EnvironmentSensors,
EnvironmentSnapshot, EnvironmentType, SensorConfig, UserFeedback,
},
ConnectionAcousticProperties, ConnectionState, ConnectionType, GlobalAcousticConfig,
MultiRoomEnvironment, Room, RoomAcoustics, RoomConnection, RoomSimulator,
},
smart_speakers::{
ArrayMetrics, ArrayTopology, AudioFormat, AudioRoute, AudioRouter, AudioSource,
AudioSpecs, CalibrationEngine, CalibrationMethod, CalibrationResults,
CalibrationStatus, ClockSource, CompressionConfig, DeviceFilter, DirectivityPattern,
DiscoveryProtocol, DiscoveryService, DspFeature, EQFilter, FilterType, LimitingConfig,
MixSettings, NetworkConfig, NetworkInfo, NetworkProtocol, ProcessingConfig,
ProcessingStep, RoomCorrection, SmartSpeaker, SpeakerArrayConfig,
SpeakerArrayConfigBuilder, SpeakerArrayManager, SpeakerCapabilities, SyncConfig,
},
technical_testing::{
create_standard_technical_configs, LatencyAnalysis, MemoryConstraints,
PlatformAnalysis, PlatformTestResult, StabilityAnalysis, StressTestParams,
TechnicalSuccessCriteria, TechnicalTestConfig, TechnicalTestParameters,
TechnicalTestReport, TechnicalTestResult, TechnicalTestSuite, TechnicalTestType,
TestOutcome,
},
telepresence::{
AcousticEchoSettings, AcousticMatchingSettings, AcousticProperties,
AdaptiveQualitySettings, AirAbsorptionSettings, AnonymizationMethod,
AnonymizationSettings, AudioCodec, AudioDeviceConfig, AudioEnhancementSettings,
AudioFormat as TelepresenceAudioFormat, AudioMetadata, AudioPresenceSettings,
AudioQualityPreferences, AudioQualitySettings, BandwidthConstraints,
BandwidthExtensionSettings, CodecPreferences, CompressionSettings,
ConsentManagementSettings, CrossRoomSettings, DataCollectionSettings,
DistanceModelingSettings, DopplerEffectsSettings, EchoCancellationSettings,
EnvironmentalAwarenessSettings, EqualizationSettings, HeadTrackingSettings,
HrtfPersonalizationSettings, NetworkSettings, NoiseSuppressionSettings, Orientation,
PresenceIndicatorSettings, PrivacySettings, QualityLevel, QualitySettings,
ReceivedAudio, RoomSimulationSettings, SessionJoinResult, SessionState,
SessionStatistics, SpatialTelepresenceSettings, TelepresenceAudioSettings,
TelepresenceConfig, TelepresenceProcessor, TelepresenceSession,
TrackingPredictionSettings, UserConfig, VadSettings, Velocity, VirtualRoomParameters,
VisualPresenceSettings, VoiceProcessingSettings, VoiceSpatializationSettings,
},
types::{
AudioChannel, BinauraAudio, Position3D, SIMDSpatialOps, SpatialEffect, SpatialRequest,
SpatialResult,
},
validation::{
create_standard_test_configs, create_test_subjects, AccuracyMetrics, AudioExpertise,
ExperienceLevel, Gender, HearingAbility, PerceptualTestSuite, PopulationAnalysis,
ResponseData, StimulusData, SubjectiveRatings, SuccessCriteria, TestParameters,
TestStatistics, TestSubject, ValidationReport, ValidationTestConfig,
ValidationTestResult, ValidationTestType,
},
visual_audio::{
AnimationParams, AnimationType, AudioVisualMapping, ColorRGBA, ColorScheme,
ColorSchemeType, DirectionZone, DirectionalCueMapping, EasingFunction,
EventTriggerMapping, FrequencyVisualMapping, OnsetTrigger, RhythmTrigger, ScalingCurve,
ShapeType, SilenceTrigger, SpectralTrigger, VisualAccessibilitySettings,
VisualAudioConfig, VisualAudioMetrics, VisualAudioProcessor, VisualDisplay,
VisualDisplayCapabilities, VisualDistanceAttenuation, VisualEffect, VisualElement,
VisualElementType, VisualPerformanceSettings, VisualResourceUsage, VisualSyncSettings,
},
wfs::{
ArrayGeometry, PreEmphasisConfig, WfsArrayBuilder, WfsConfig, WfsDrivingFunction,
WfsProcessor, WfsSource, WfsSourceType,
},
Error, Result,
};
}