Struct webrtc_media::Sample
source · pub struct Sample {
pub data: Bytes,
pub timestamp: SystemTime,
pub duration: Duration,
pub packet_timestamp: u32,
pub prev_dropped_packets: u16,
pub prev_padding_packets: u16,
}
Expand description
A Sample contains encoded media and timing information
Fields§
§data: Bytes
The assembled data in the sample, as a bitstream.
The format is Codec dependant, but is always a bitstream format rather than the packetized format used when carried over RTP.
See: rtp::packetizer::Depacketizer
and implementations of it for more details.
timestamp: SystemTime
The wallclock time when this sample was generated.
duration: Duration
The duration of this sample
packet_timestamp: u32
The RTP packet timestamp of this sample.
For all RTP packets that contributed to a single sample the timestamp is the same.
prev_dropped_packets: u16
The number of packets that were dropped prior to building this sample.
Packets being dropped doesn’t necessarily indicate something wrong, e.g., packets are sometimes dropped because they aren’t relevant for sample building.
prev_padding_packets: u16
The number of packets that were identified as padding prior to building this sample.
Some implementations, notably libWebRTC, send padding packets to keep the send rate steady. These packets don’t carry media and aren’t useful for building samples.
This field can be combined with Sample::prev_dropped_packets
to determine if any
dropped packets are likely to have detrimental impact on the steadiness of the RTP stream.
Example adjustment
let adjusted_dropped =
sample.prev_dropped_packets.saturating_sub(sample.prev_padding_packets);