#[non_exhaustive]pub struct SmoothConfig {
pub live_join_fragments: usize,
pub max_fragment_failures: u32,
pub max_manifest_failures: u32,
pub max_refresh_misses: u32,
pub backoff_ms: Vec<u64>,
pub backoff_cap_ms: u64,
pub jitter_seed: u64,
pub refresh_min_us: u64,
pub refresh_max_us: u64,
pub video_quality: QualitySelector,
}Expand description
Engine tunables: start from SmoothConfig::default and set what differs
with the with_* setters.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.live_join_fragments: usizeLive join point, in fragments behind the newest.
max_fragment_failures: u32Consecutive failures of one fragment before it is skipped (live) or the session ends (static); default 5.
max_manifest_failures: u32Consecutive manifest failures before the session ends; default 5.
max_refresh_misses: u32Consecutive refreshes lacking a stream before that stream is abandoned; default 5.
backoff_ms: Vec<u64>Retry delays by attempt, in milliseconds.
backoff_cap_ms: u64Retry delay past the end of Self::backoff_ms, in milliseconds.
jitter_seed: u64Seed of the retry jitter (broadcast_common::backoff::RetrySchedule): the first retry of
a fragment or manifest waits exactly its step, every later one a term of [5/6, 1.0) of its
step drawn from this seed, so a fleet of clients that fail together does not retry in
lockstep. The engine reads no clock and no RNG, so a host gives each client its own entropy;
two clients with the same seed retry identically (which is what makes a replay reproducible).
refresh_min_us: u64Lower clamp of the live refresh wait, in microseconds.
refresh_max_us: u64Upper clamp of the live refresh wait, in microseconds.
video_quality: QualitySelectorVideo quality choice.
Implementations§
Source§impl SmoothConfig
impl SmoothConfig
Sourcepub fn with_live_join_fragments(self, live_join_fragments: usize) -> Self
pub fn with_live_join_fragments(self, live_join_fragments: usize) -> Self
Sourcepub fn with_max_fragment_failures(self, max_fragment_failures: u32) -> Self
pub fn with_max_fragment_failures(self, max_fragment_failures: u32) -> Self
Sourcepub fn with_max_manifest_failures(self, max_manifest_failures: u32) -> Self
pub fn with_max_manifest_failures(self, max_manifest_failures: u32) -> Self
Sourcepub fn with_max_refresh_misses(self, max_refresh_misses: u32) -> Self
pub fn with_max_refresh_misses(self, max_refresh_misses: u32) -> Self
Sourcepub fn with_backoff_ms(self, backoff_ms: Vec<u64>) -> Self
pub fn with_backoff_ms(self, backoff_ms: Vec<u64>) -> Self
Set Self::backoff_ms.
Sourcepub fn with_backoff_cap_ms(self, backoff_cap_ms: u64) -> Self
pub fn with_backoff_cap_ms(self, backoff_cap_ms: u64) -> Self
Set Self::backoff_cap_ms.
Sourcepub fn with_jitter_seed(self, jitter_seed: u64) -> Self
pub fn with_jitter_seed(self, jitter_seed: u64) -> Self
Set Self::jitter_seed.
Sourcepub fn with_refresh_min_us(self, refresh_min_us: u64) -> Self
pub fn with_refresh_min_us(self, refresh_min_us: u64) -> Self
Set Self::refresh_min_us.
Sourcepub fn with_refresh_max_us(self, refresh_max_us: u64) -> Self
pub fn with_refresh_max_us(self, refresh_max_us: u64) -> Self
Set Self::refresh_max_us.
Sourcepub fn with_video_quality(self, video_quality: QualitySelector) -> Self
pub fn with_video_quality(self, video_quality: QualitySelector) -> Self
Set Self::video_quality.