pub struct PacketReport {
pub ssrc: u32,
pub id: u64,
pub rtp_sequence_number: u16,
pub is_twcc: bool,
pub twcc_sequence_number: u16,
pub size: usize,
pub arrived: bool,
pub departure: Instant,
pub arrival: Option<Duration>,
pub ecn: Ecn,
}Expand description
One outgoing packet, joined with whatever the receiver later said about it.
This is the record congestion control consumes: what was sent, when it left here, and when it turned up there.
Fields§
§ssrc: u32SSRC of the stream the packet belongs to.
id: u64Monotonic identifier assigned when the packet was recorded, so reports stay in send order however the sequence numbers wrap.
rtp_sequence_number: u16The RTP sequence number the packet carried.
is_twcc: boolWhether this packet is tracked by its transport-wide sequence number rather than its RTP one — the two feedback formats identify packets differently.
twcc_sequence_number: u16The transport-wide sequence number, when is_twcc.
size: usizeSize on the wire, in bytes.
arrived: boolWhether the receiver reported it as arrived.
departure: InstantWhen it left this endpoint. The release instant, not the instant the application enqueued it — see the chain contract’s rule 3, since a pacer’s queueing delay counted as network delay is exactly what corrupts a bandwidth estimate.
arrival: Option<Duration>When it arrived, on the receiver’s clock. See Acknowledgement::arrival.
ecn: EcnThe ECN marking the receiver observed.
Trait Implementations§
Source§impl Clone for PacketReport
impl Clone for PacketReport
Source§fn clone(&self) -> PacketReport
fn clone(&self) -> PacketReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more