use crate::api::client::transport::VoipMetrics;
use crate::api::common::stats::QualityLevel;
use std::net::SocketAddr;
use std::time::Duration;
#[derive(Debug, Clone)]
pub enum MediaTransportEvent {
Connected,
Disconnected,
QualityChanged {
quality: QualityLevel,
},
BandwidthEstimate {
bps: u32,
},
RemoteAddressChanged {
address: SocketAddr,
},
FrameReceived(crate::api::common::frame::MediaFrame),
Error(crate::api::common::error::MediaTransportError),
StateChanged(String),
StreamEnded {
ssrc: u32,
reason: String,
},
NewStream {
ssrc: u32,
},
RtcpReport {
jitter: f64,
packet_loss: f64,
round_trip_time: Option<Duration>,
},
RtcpAppReceived {
ssrc: u32,
name: String,
data: Vec<u8>,
},
RtcpByeReceived {
ssrc: u32,
reason: Option<String>,
},
RtcpXrVoipMetrics {
metrics: VoipMetrics,
},
}
pub type MediaEventCallback = Box<dyn Fn(MediaTransportEvent) + Send + Sync>;