pub enum Application {
Voip = 2_048,
Audio = 2_049,
RestrictedLowDelay = 2_051,
}Expand description
What the encoder is being asked to optimise for, fixed when it is created.
This is the one setting that cannot be changed afterwards, because it
decides which coding layers the encoder is allowed to use at all. It biases
the SILK/CELT decision rather than dictating it: Audio and
Voip both reach all three modes, and speech still codes as
SILK under Audio when the content analysis says so.
The discriminants are libopus’s OPUS_APPLICATION_* values, so a caller
bridging to a C API can cast between the two.
Variants§
Voip = 2_048
Speech over a network. Shifts the mode threshold 8 kHz toward SILK
(opus_encoder.c), so borderline content codes as speech, and enables
the speech-oriented machinery: the analysis-driven bandwidth cap, DTX,
and in-band FEC being worth spending bits on.
Audio = 2_049
General audio, and the right default when the content is unknown or mixed. Favours reproducing the input over making speech intelligible at low rates.
RestrictedLowDelay = 2_051
Lowest achievable latency, at a cost in quality.
Forces CELT for every frame and removes the 2.5 ms CELT lookahead that
the other two spend to keep the layers aligned across a mode switch
(opus_encoder.c:1904), since with no mode switching there is nothing to
align. That lookahead is part of what
OpusHead::RECOMMENDED_PRE_SKIP
counts, so a stream encoded this way has less delay to skip.
Trait Implementations§
Source§impl Clone for Application
impl Clone for Application
Source§fn clone(&self) -> Application
fn clone(&self) -> Application
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more