Some checks failed
API and SemVer surface / api-surface (push) Failing after 1m34s
Native code generation / deterministic (push) Has been cancelled
Concurrency and resource soak audit / soak (push) Has been cancelled
Documentation / documentation (push) Has been cancelled
performance evidence / audit (push) Has been cancelled
First release candidate / non-fuzz-release-gate (push) Has been cancelled
Release platform and feature matrix / audit (push) Has been cancelled
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Dependency and supply-chain audit / audit (push) Has been cancelled
Native release artifact audit / audit (push) Has been cancelled
Imaging and meshing gate / native (push) Failing after 53s
JPEG 2000 feature / linux (push) Successful in 2m49s
Native Rust workspace compile / compile (push) Failing after 59s
Skia feature / linux (push) Has been cancelled
99 lines
3.0 KiB
Rust
99 lines
3.0 KiB
Rust
//! Native `WebRTC` voice adapter corresponding to `LibreMetaverse.Voice.WebRTC`.
|
|
//!
|
|
//! `ICE`, `DTLS`, `SRTP`, `RTP`, `SCTP` data, `Opus` media, controls, and teardown
|
|
//! run in Rust. System `libopus` is required; the optional `real-audio` feature
|
|
//! adds the cross-platform `CPAL` hardware boundary while default tests use
|
|
//! virtual audio.
|
|
|
|
extern crate self as libremetaverse_voice_webrtc;
|
|
|
|
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
|
|
mod compatibility;
|
|
mod generated;
|
|
mod native;
|
|
|
|
pub use compatibility::VoiceLogRecord;
|
|
pub use generated::*;
|
|
pub use libremetaverse as core;
|
|
pub use libremetaverse_structured_data as structured_data;
|
|
pub use libremetaverse_types::Error;
|
|
pub use native::*;
|
|
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
struct JsonValueInner(serde_json::Value);
|
|
|
|
/// Project-owned boundary types for external JSON signatures.
|
|
pub mod signaling {
|
|
/// Owned JSON value without exposing the implementation's JSON crate in
|
|
/// the public compatibility boundary.
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct JsonValue(crate::JsonValueInner);
|
|
|
|
impl JsonValue {
|
|
/// Parses one complete JSON value.
|
|
///
|
|
/// # Errors
|
|
///
|
|
/// Returns [`crate::Error::Argument`] when `value` is not valid JSON.
|
|
pub fn parse(value: &str) -> Result<Self, crate::Error> {
|
|
serde_json::from_str(value)
|
|
.map(crate::JsonValueInner)
|
|
.map(Self)
|
|
.map_err(|_| crate::Error::Argument)
|
|
}
|
|
|
|
/// Serializes the value as compact JSON.
|
|
///
|
|
/// # Errors
|
|
///
|
|
/// Returns [`crate::Error::Argument`] if serialization fails.
|
|
pub fn to_json(&self) -> Result<String, crate::Error> {
|
|
serde_json::to_string(&self.0.0).map_err(|_| crate::Error::Argument)
|
|
}
|
|
|
|
pub(crate) fn into_inner(self) -> serde_json::Value {
|
|
self.0.0
|
|
}
|
|
|
|
pub(crate) fn from_inner(value: serde_json::Value) -> Self {
|
|
Self(crate::JsonValueInner(value))
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Project-owned boundary types for external WebRTC transport signatures.
|
|
pub mod transport {
|
|
#[derive(Clone, Debug, Default, Eq, PartialEq)]
|
|
pub struct RTCDataChannel {
|
|
pub label: String,
|
|
pub ready: bool,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Default, Eq, PartialEq)]
|
|
pub struct RTCPeerConnection {
|
|
pub connected: bool,
|
|
}
|
|
}
|
|
|
|
/// Project-owned boundary types for external media signatures.
|
|
pub mod media {
|
|
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
|
|
pub struct AudioSamplingRatesEnum(pub i32);
|
|
}
|
|
|
|
/// Project-owned boundary types for external audio signatures.
|
|
pub mod audio {
|
|
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
|
|
pub struct NoiseSuppressionLevel(pub i32);
|
|
|
|
#[derive(Clone, Debug, Default, Eq, PartialEq)]
|
|
pub struct SoundFlowAudioEndPoint {
|
|
pub id: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Default, Eq, PartialEq)]
|
|
pub struct SoundFlowAudioSource {
|
|
pub id: String,
|
|
}
|
|
}
|