Expand description
§Media Core library for the RVOIP project
media-core provides comprehensive media processing capabilities for SIP servers.
It focuses exclusively on media processing, codec management, and media session
coordination while integrating cleanly with session-core and rtp-core.
§Core Components
- MediaEngine: Central orchestrator for all media processing
- MediaSession: Per-dialog media management
- Codec Framework: Audio codec support (G.711, Opus, etc.)
- Audio Processing: AEC, AGC, VAD, noise suppression
- Quality Monitoring: Real-time quality metrics and adaptation
§Audio Muting
The media-core library implements silence-based muting that maintains continuous RTP packet flow. When a session is muted, audio samples are replaced with silence before encoding, preserving:
- RTP sequence numbers and timestamps
- NAT traversal and binding keepalive
- Compatibility with all SIP endpoints
- Instant mute/unmute without renegotiation
Use MediaSessionController::set_audio_muted() for production-ready muting.
§Quick Start
ⓘ
use rvoip_media_core::relay::controller::MediaSessionController;
use rvoip_media_core::types::{MediaSessionId, DialogId};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create media session controller
let controller = MediaSessionController::new();
// RTP bridge callbacks can be added for external RTP event handling
// This enables integration with session-core for audio frame delivery
Ok(())
}Re-exports§
pub use error::Error;pub use error::Result;pub use engine::MediaEngine;pub use engine::MediaEngineConfig;pub use engine::EngineCapabilities;pub use engine::MediaSessionParams;pub use engine::MediaSessionHandle;pub use engine::EngineState;pub use engine::media_engine::PerformanceLevel;pub use engine::media_engine::AdvancedProcessorFactory;pub use session::MediaSession;pub use session::MediaSessionConfig;pub use session::MediaSessionState;pub use session::MediaSessionEvent as SessionEvent;pub use session::MediaSessionEventType;pub use integration::RtpBridge;pub use integration::RtpBridgeConfig;pub use integration::SessionBridge;pub use integration::SessionBridgeConfig;pub use integration::IntegrationEvent;pub use integration::IntegrationEventType;pub use integration::RtpEvent;pub use integration::RtpEventCallback;pub use codec::Codec;pub use codec::CodecRegistry;pub use relay::MediaSessionController;pub use relay::MediaConfig;pub use relay::MediaSessionStatus;pub use relay::MediaSessionInfo;pub use relay::G711PcmuCodec;pub use relay::G711PcmaCodec;pub use engine::config::PerformanceConfig;pub use engine::config::AdvancedProcessingConfig;pub use engine::config::AudioConfig;pub use engine::config::CodecConfig;pub use engine::config::QualityConfig;pub use engine::config::BufferConfig;pub use types::*;
Modules§
- audio
- Audio processing and utilities module
- buffer
- Media Buffering
- codec
- Codec Framework for Media Processing
- engine
- Media Engine - Central orchestrator for media processing
- error
- Error types for media-core operations
- integration
- Integration Bridges
- performance
- Performance optimizations for media processing
- prelude
- Prelude module with commonly used types
- processing
- Media Processing Pipeline
- quality
- Quality Monitoring and Adaptation
- relay
- Media Relay Module for Basic SIP Server
- session
- Media Session Management
- types
- Core types and constants for media-core
Structs§
- Audio
Buffer - A chunk of audio samples (PCM or encoded)
- Audio
Format - Audio format (channels, bit depth, sample rate)
- RtpSession
Stats - Stats for an RTP session
- RtpStream
Stats - Stats for an RTP stream
Type Aliases§
- Sample
- Media sample type (raw audio data)