Skip to main content

Track

Struct Track 

Source
#[non_exhaustive]
pub struct Track {
Show 17 fields pub name: String, pub packaging: Packaging, pub is_live: bool, pub role: Option<Role>, pub codec: Option<String>, pub width: Option<u32>, pub height: Option<u32>, pub framerate: Option<f64>, pub samplerate: Option<u32>, pub channel_config: Option<String>, pub bitrate: Option<u64>, pub init_data: Option<String>, pub render_group: Option<u32>, pub alt_group: Option<u32>, pub max_grp_sap_starting_type: Option<u8>, pub max_obj_sap_starting_type: Option<u8>, pub jitter: Option<f64>,
}
Expand description

A single track in the MSF catalog.

Marked #[non_exhaustive] because the CMSF/MSF drafts continue to grow optional fields. External callers build a track with Track::new and then assign whichever optional fields they need; struct-literal construction (with or without ..base) is not available outside this crate.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§name: String

Unique track name (case-sensitive).

§packaging: Packaging

Packaging mode.

§is_live: bool

Whether new objects will be appended.

§role: Option<Role>

Content role.

§codec: Option<String>

WebCodecs codec string.

§width: Option<u32>

Video frame width in pixels.

§height: Option<u32>

Video frame height in pixels.

§framerate: Option<f64>

Video frame rate.

§samplerate: Option<u32>

Audio sample rate in Hz.

§channel_config: Option<String>

Audio channel configuration.

§bitrate: Option<u64>

Bitrate in bits per second.

§init_data: Option<String>

Base64-encoded initialization data.

§render_group: Option<u32>

Render group for synchronized playback.

§alt_group: Option<u32>

Alternate group for quality switching.

§max_grp_sap_starting_type: Option<u8>

Maximum SAP starting type for groups (CMSF 3.5.2). A value of 1 means every group starts with a closed-GOP IDR.

§max_obj_sap_starting_type: Option<u8>

Maximum SAP starting type for objects (CMSF 3.5.2). A value of 1 means every object starts with a closed-GOP IDR.

§jitter: Option<f64>

Jitter in milliseconds (non-standard extension, matches JS implementation).

Implementations§

Source§

impl Track

Source

pub fn new(name: impl Into<String>, packaging: Packaging) -> Self

Construct a track with the required identity fields set and every optional field cleared. Fields are pub, so callers set whatever they need by assignment afterwards.

This is the only path external crates have to build a Track since the type is #[non_exhaustive].

Trait Implementations§

Source§

impl Clone for Track

Source§

fn clone(&self) -> Track

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 Debug for Track

Source§

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

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

impl<'de> Deserialize<'de> for Track

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Track

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Track

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Track

Auto Trait Implementations§

§

impl Freeze for Track

§

impl RefUnwindSafe for Track

§

impl Send for Track

§

impl Sync for Track

§

impl Unpin for Track

§

impl UnsafeUnpin for Track

§

impl UnwindSafe for Track

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> 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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,