Skip to main content

Rtpmap

Struct Rtpmap 

Source
pub struct Rtpmap<'a> { /* private fields */ }
Expand description

The format an a=rtpmap value names.

<encoding name>/<clock rate>[/<encoding parameters>] (RFC 8866 §6.6). For audio the encoding parameter is the channel count, and an omitted one means one channel.

Deliberately not PartialEq. Derived equality would compare the encoding name as bytes, and the name compares case-insensitively — so == would be a second, wrong answer to the question this module exists to answer once. Rtpmap::same_format_as is the only comparison.

Implementations§

Source§

impl<'a> Rtpmap<'a>

Source

pub fn parse(value: &'a str) -> Result<Self, RtpmapError>

Read the format a value names.

The value is the part of the attribute after the payload type — PCMU/8000, not 0 PCMU/8000 — which is what crate::MediaDescription::rtpmap returns.

§Errors

RtpmapError when the value is not RFC 8866 §6.6’s grammar. This is a parser for data that arrived from the network, so every rejection is a returned error: an empty rate, a rate that is not digits, a rate too large for a u32, and a value carrying a field the grammar does not have.

Source

pub fn encoding(&self) -> &'a str

The encoding name, as the description spelled it.

Source

pub fn clock_rate(&self) -> u32

The RTP clock rate, which for several codecs is not the sample rate.

Source

pub fn channels(&self) -> u32

The channel count, with RFC 8866 §6.6’s default of one already applied.

Source

pub fn same_format_as(&self, other: &Rtpmap<'_>) -> bool

Whether two values name the same format.

RFC 8866 §6.6: the encoding name compares case-insensitively, and the clock rate and channel count are part of the format’s identity — the same codec at two rates is two formats.

The rate and the count compare by value, because they are numbers and the identity of a number is numeric. Comparing them as text answers a different question — whether they are spelled the same — and answering that one by accident is exactly the defect M-31 fixed.

Trait Implementations§

Source§

impl<'a> Clone for Rtpmap<'a>

Source§

fn clone(&self) -> Rtpmap<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Rtpmap<'a>

Source§

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

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

impl<'a> Copy for Rtpmap<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Rtpmap<'a>

§

impl<'a> RefUnwindSafe for Rtpmap<'a>

§

impl<'a> Send for Rtpmap<'a>

§

impl<'a> Sync for Rtpmap<'a>

§

impl<'a> Unpin for Rtpmap<'a>

§

impl<'a> UnsafeUnpin for Rtpmap<'a>

§

impl<'a> UnwindSafe for Rtpmap<'a>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.
§

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

§

fn vzip(self) -> V

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,