Skip to main content

KeyEpochSerializer

Struct KeyEpochSerializer 

Source
pub struct KeyEpochSerializer;
Expand description

Reference ExtensionSerializer for the SFrame key-epoch (KID) RTP header extension.

§Wire format

A fixed 4-byte, big-endian 32-bit KID, matching RFC 9605 §6.1 (the v1 KID width) and the sframe-ratchet browser client. This is the interoperable default; if your clients encode the KID differently, implement your own serializer that parses into / writes from a KeyEpoch user value — the fanout path keys on the KeyEpoch type, not these bytes.

KeyEpoch holds a u64 for generality, but the RFC v1 KID is 32-bit: a value exceeding u32::MAX cannot be represented in the 4-byte form and is not written (str0m then omits the extension), rather than silently truncated. Supply your own serializer for wider KIDs.

The serializer applies to both audio and video media (SFrame protects either). Its 4-byte value never requires the two-byte extension form (str0m may still pick that form globally if another registered extension needs it — a full u8 length encodes 4 bytes fine).

Trait Implementations§

Source§

impl Clone for KeyEpochSerializer

Source§

fn clone(&self) -> KeyEpochSerializer

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 Copy for KeyEpochSerializer

Source§

impl Debug for KeyEpochSerializer

Source§

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

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

impl Default for KeyEpochSerializer

Source§

fn default() -> KeyEpochSerializer

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

impl ExtensionSerializer for KeyEpochSerializer

Source§

fn write_to(&self, buf: &mut [u8], ev: &ExtensionValues) -> usize

Write the extension to the buffer of bytes. Must return the number of bytes written. This can be 0 if the extension could not be serialized.
Source§

fn parse_value(&self, buf: &[u8], ev: &mut ExtensionValues) -> bool

Parse a value and put it in the ExtensionValues::user_values field.
Source§

fn is_video(&self) -> bool

Tell if this extension should be used for video media.
Source§

fn is_audio(&self) -> bool

Tell if this extension should be used for audio media.
Source§

fn requires_two_byte_form(&self, _ev: &ExtensionValues) -> bool

When calling write_to, if the size of the written value may exceed 16 bytes, or may be 0 bytes, the two byte header extension form must be used. Otherwise, the one byte form may be used, which is usually the case.

Auto Trait Implementations§

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> CryptoSafe for T
where T: Send + Sync + Debug,

Source§

impl<T> CryptoSafe for T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more