Expand description
Jitter buffer implementations for RTP media.
Jitter buffers smooth out variable network delay (jitter) by buffering packets before playout. This module provides two strategies:
- Fixed: Constant delay, simple and predictable
- Adaptive: Dynamically adjusts delay based on observed jitter
§Example
use rtp_engine::jitter::{JitterBuffer, JitterConfig, JitterMode};
// Create an adaptive jitter buffer
let config = JitterConfig {
mode: JitterMode::Adaptive { target_ms: 60, min_ms: 20, max_ms: 200 },
clock_rate: 8000,
max_packets: 50,
};
let mut jitter = JitterBuffer::new(config);
// Push received RTP packets (seq, timestamp, payload)
jitter.push(0, 0, vec![0u8; 160]);
jitter.push(1, 160, vec![0u8; 160]);
// Pop packets for playout (returns None if not ready yet)
// In real usage, wait for the jitter delay before poppingStructs§
- Buffered
Packet - A buffered RTP packet ready for playout.
- Jitter
Buffer - Jitter buffer for RTP packet reordering and playout scheduling.
- Jitter
Config - Configuration for the jitter buffer.
- Jitter
Stats - Statistics from the jitter buffer.
Enums§
- Jitter
Mode - Jitter buffer operating mode.