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);

Trait Implementations§

source§

impl Debug for Sample

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Sample

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for Sample

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

§

impl !Freeze for Sample

§

impl RefUnwindSafe for Sample

§

impl Send for Sample

§

impl Sync for Sample

§

impl Unpin for Sample

§

impl UnwindSafe for Sample

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V