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
use crate::{Error, SampleRate};

pub use self::{
    decoder::{size, Decoder},
    encoder::Encoder,
};

mod decoder;
mod encoder;

/// A set of methods that both `Encoder` and `Decoder` have implemented.
///
/// **Info**:
/// This does not include `set_sample_rate` as it returns unimplemented on
/// [`Decoder`].
///
/// [`Decoder`]: decoder/struct.Decoder.html
pub trait GenericCtl {
    fn final_range(&self) -> Result<u32, Error>;

    fn phase_inversion_disabled(&self) -> Result<bool, Error>;
    fn set_phase_inversion_disabled(&mut self, disabled: bool) -> Result<(), Error>;

    fn sample_rate(&self) -> Result<SampleRate, Error>;

    fn reset_state(&mut self) -> Result<(), Error>;
}