1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//! What the SILK decoder needs to run the Opus Speech Coding Enhancement
//! (OSCE): the LACE and NoLACE enhancers and the bandwidth extension
//! (BWE).
//!
//! libopus passes the OSCE controls in `silk_DecControlStruct`
//! (`osce_method`, `osce_extended_mode`, `prev_osce_extended_mode`) and the
//! models in `silk_decoder` (`osce_model`). opus1 keeps the models in
//! `OpusDecoder` (`DecoderDnn`) and passes `Option<&OsceArgs>` to
//! `SilkDecoder`, built for every SILK frame from the decoder complexity
//! and the BWE switch (libopus `src/opus_decoder.c:443-466`). The OSCE
//! state of each channel lives in `SilkDecoderState`, as in libopus.
//!
//! `None` stands for a libopus `DecControl` without OSCE settings: method
//! NONE and no BWE. With the feature `osce` method NONE still clips
//! -32768 to -32767 in 20 ms SILK frames at 16 kHz, as every libopus
//! built with OSCE does. The public entry points of `SilkDecoder` pass
//! `None`.
//!
//! Without the feature `osce`, `OsceArgs` is a type without values, so
//! every argument of that type is `None` and SILK behaves as in a libopus
//! built without OSCE.
use crate;
use crateOsceExtMode;
/// The OSCE controls of one SILK frame and the models they use.
pub
/// A type without values: builds without the feature `osce` have no OSCE
/// controls to pass.
pub
/// Without the feature `osce`, `Option<&OsceArgs>` is always `None`.
pub type OsceArgs<'a> = NoOsce;
/// The models `silk_decode_frame` enhances with: `OsceModels` with the
/// feature `osce`, a type without values otherwise.
pub type OsceFrameModels<'a> = ;
/// Without the feature `osce`, `Option<&OsceFrameModels>` is always
/// `None`.
pub type OsceFrameModels<'a> = NoOsce;