1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3mod audio_provider;
12mod backend;
13mod capability;
14mod cassette;
15mod catalog;
16mod config;
17mod config_probe;
18pub mod cookbook;
19mod device;
20mod eval_site;
21mod fake;
22mod glasses;
23mod glasses_placement;
24mod inventory;
25mod midi_live_eval_site;
26mod midi_provider;
27mod model;
28mod placement;
29mod provider;
30mod queue;
31mod registry;
32mod ring;
33mod router;
34#[cfg(feature = "rtp-midi")]
35mod rtp_midi;
36mod site;
37mod store_evict;
38mod watch;
39
40pub use audio_provider::ModeledAudioProvider;
41pub use backend::{HostBackend, HostOpenStream, HostStreamDriver};
42pub use capability::{DeviceCapability, HostBackendCapability, missing_capability_card_expr};
43pub use cassette::{HostCallbackCassette, HostCallbackReplayReport};
44pub use catalog::{DeviceCatalog, audio_device_export_symbol, audio_site_export_symbol};
45pub use config::{
46 HostClockInfo, HostLatencyInfo, HostReconnectPolicy, HostStreamConfig, HostStreamConfigRequest,
47};
48pub use config_probe::{
49 HostStreamConfigProbe, hardware_inventory_probe_capability_symbol,
50 host_stream_config_probe_symbol, stream_host_config_lib_symbol,
51};
52pub use cookbook::fake_backend_demo;
53pub use device::{
54 DeviceError, DeviceProfile, DeviceProvider, DeviceResult, DeviceSample, DeviceSession,
55 StubProvider, StubSession, device_sample_kind_symbol, poll_device_sample,
56};
57pub use eval_site::{DeviceProvider as CatalogDeviceProvider, StreamEvalSite};
58pub use fake::{FakeBackend, fake_backend_symbol};
59pub use glasses::{
60 CAP_GLASSES_CAMERA, CAP_GLASSES_HAND, CAP_GLASSES_MIC, CAP_GLASSES_POSE,
61 CAP_GLASSES_VENDOR_REPORT, CAP_GLASSES_WORLD_ANCHOR, GlassesCapability, glasses_camera_grant,
62 glasses_capability_for_sample, glasses_hand_grant, glasses_mic_grant, glasses_pose_grant,
63 glasses_retention_windows, glasses_vendor_report_grant, glasses_world_anchor_grant,
64 require_glasses_consent, require_glasses_sample_ingest, store_glasses_frame,
65 sweep_glasses_retention,
66};
67pub use glasses_placement::{
68 GlassesAdapterKind, GlassesPlacementError, GlassesPlacementRequest, ResolvedGlassesPlacement,
69 resolve_glasses_placement,
70};
71pub use inventory::{HostDeviceInventory, HostPortSpec};
72pub use midi_live_eval_site::MidiLiveEvalSite;
73pub use midi_provider::ModeledMidiProvider;
74pub use model::{
75 HostBackendInfo, HostDeviceSpec, HostDirection, HostOpenPlan, stream_host_capability,
76 stream_host_device_read_effect_kind, stream_host_device_write_effect_kind,
77};
78pub use placement::{
79 AudioDeviceCard, AudioPlacementRequest, AudioSiteKey, DeviceDirection, DeviceKind,
80 DevicePlacement, DeviceRecord, LanPlacementMode, LanPlacementReport, LanPlacementRequest,
81 Placement, PlacementError, lan_bar_delay_mode_symbol,
82 lan_experimental_remote_sample_capability, lan_jitter_buffered_mode_symbol,
83 lan_peer_site_symbol, lan_pinned_sample_experimental_diagnostic,
84 lan_pinned_sample_refusal_diagnostic,
85};
86pub use provider::{
87 AUDIO_PROVIDER_ABI_VERSION, AUDIO_PROVIDER_ENTRY_V1, AudioProviderEntry, AudioProviderHost,
88 AudioProviderProofEntries, AudioProviderRegistrar, RouterAudioProviderRegistrar,
89 native_audio_provider_capability,
90};
91pub use queue::HostCallbackQueue;
92pub use registry::HostBackendRegistry;
93pub use ring::{ProcessRingPush, ProcessRingSnapshot, ProcessSharedRing};
94pub use router::{AudioRouter, RegisteredAudioSite};
95#[cfg(feature = "rtp-midi")]
96pub use rtp_midi::{RtpMidiBackend, RtpMidiPort, rtp_midi_backend_symbol};
97pub use site::{AudioSite, DeviceSite, DeviceSiteLocality, ModeledAudioSite};
98pub use store_evict::{
99 BoundedContentStore, ContentFrame, RetentionWindow, StoreEvicted, StoreKey, retention_reason,
100 size_bound_reason,
101};
102pub use watch::{
103 CAP_WATCH_HEALTH, CAP_WATCH_LOCATION, CAP_WATCH_MIC, CAP_WATCH_VENDOR_REPORT, WatchCapability,
104 require_watch_consent, require_watch_worn_ingest, watch_capability_for_worn_event,
105 watch_health_grant, watch_location_grant, watch_mic_grant, watch_vendor_report_grant,
106};
107
108#[cfg(test)]
109mod catalog_tests;
110#[cfg(test)]
111mod config_probe_tests;
112#[cfg(test)]
113mod device_tests;
114#[cfg(test)]
115mod glasses_placement_tests;
116#[cfg(test)]
117mod glasses_tests;
118#[cfg(test)]
119mod placement_tests;
120#[cfg(test)]
121mod provider_tests;
122#[cfg(test)]
123mod ring_tests;
124#[cfg(test)]
125mod tests;
126#[cfg(test)]
127mod watch_tests;