Crate rvoip_media_core

Source
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§

AudioBuffer
A chunk of audio samples (PCM or encoded)
AudioFormat
Audio format (channels, bit depth, sample rate)
RtpSessionStats
Stats for an RTP session
RtpStreamStats
Stats for an RTP stream

Type Aliases§

Sample
Media sample type (raw audio data)