Skip to main content

Crate saorsa_webrtc_core

Crate saorsa_webrtc_core 

Source
Expand description

Saorsa WebRTC - WebRTC implementation over ant-quic transport

This library provides a WebRTC implementation that uses ant-quic as the underlying transport layer instead of traditional ICE/STUN/TURN. It features:

  • Native QUIC Transport: Uses ant-quic for reliable, encrypted connections
  • DHT-based Signaling: Distributed signaling without centralized servers
  • Post-Quantum Cryptography: Built-in PQC support via ant-quic
  • NAT Traversal: Automatic hole punching and relay fallback
  • High Performance: Low-latency media streaming with QoS

§Examples

use saorsa_webrtc_core::{WebRtcService, MediaConstraints, SignalingHandler, AntQuicTransport, TransportConfig, PeerIdentityString};
use std::sync::Arc;

// Create signaling transport
let transport = Arc::new(AntQuicTransport::new(TransportConfig::default()));
let signaling = Arc::new(SignalingHandler::new(transport));

// Create WebRTC service
let service = WebRtcService::<PeerIdentityString, AntQuicTransport>::new(
    signaling,
    Default::default()
).await?;

// Start service
service.start().await?;

// Initiate a video call
let call_id = service.initiate_call(
    PeerIdentityString::new("eve-frank-grace-henry"),
    MediaConstraints::video_call()
).await?;

Re-exports§

pub use call::CallManager;
pub use call::CallManagerConfig;
pub use identity::PeerIdentity;
pub use identity::PeerIdentityString;
pub use link_transport::LinkTransport;
pub use link_transport::LinkTransportError;
pub use link_transport::PeerConnection;
pub use link_transport::StreamType as LinkStreamType;
pub use media::AudioDevice;
pub use media::AudioTrack;
pub use media::MediaEvent;
pub use media::MediaStream;
pub use media::MediaStreamManager;
pub use media::VideoDevice;
pub use media::VideoTrack;
pub use protocol_handler::WebRtcHandlerConfig;
pub use protocol_handler::WebRtcHandlerError;
pub use protocol_handler::WebRtcIncoming;
pub use protocol_handler::WebRtcProtocolHandler;
pub use protocol_handler::WebRtcProtocolHandlerBuilder;
pub use quic_bridge::RtpPacket;
pub use quic_bridge::StreamConfig;
pub use quic_bridge::StreamType;
pub use quic_bridge::WebRtcQuicBridge;
pub use quic_media_transport::MediaTransportError;
pub use quic_media_transport::MediaTransportState;
pub use quic_media_transport::QuicMediaTransport;
pub use quic_media_transport::StreamHandle;
pub use quic_media_transport::StreamPriority;
pub use quic_media_transport::TransportStats;
pub use service::WebRtcConfig;
pub use service::WebRtcEvent;
pub use service::WebRtcService;
pub use service::WebRtcServiceBuilder;
pub use signaling::SignalingHandler;
pub use signaling::SignalingMessage as SignalingMessageType;
pub use signaling::SignalingTransport;
pub use transport::AntQuicTransport;
pub use transport::TransportConfig;
pub use types::*;

Modules§

call
Call management and state (requires legacy-webrtc feature) Call management for WebRTC
identity
Peer identity abstraction Peer identity abstraction
link_transport
Link transport abstraction layer Link transport abstraction layer
media
Media stream management (requires legacy-webrtc feature) Media stream management for WebRTC
prelude
Prelude module for convenient imports
protocol_handler
Protocol handler for SharedTransport integration WebRTC protocol handler for SharedTransport integration
quic_bridge
Bridge between WebRTC and QUIC WebRTC to QUIC bridge
quic_media_transport
QUIC-based media transport for RTP/RTCP over QUIC streams QUIC Media Transport for WebRTC over ant-quic
quic_streams
QUIC media stream management with QoS QUIC media stream management with QoS
service
WebRTC service and configuration (requires legacy-webrtc feature) WebRTC service orchestration
signaling
Signaling protocol and handlers WebRTC signaling protocol
transport
ant-quic transport integration Transport layer implementations
types
Core WebRTC types and data structures WebRTC types and data structures