| 1 | use ffi::SwrDitherType::*; |
| 2 | use ffi::*; |
| 3 | |
| 4 | #[derive (Eq, PartialEq, Copy, Clone, Debug)] |
| 5 | pub enum Dither { |
| 6 | None, |
| 7 | Rectangular, |
| 8 | Triangular, |
| 9 | TriangularHighPass, |
| 10 | |
| 11 | NoiseShapingLipshitz, |
| 12 | NoiseShapingFWeighted, |
| 13 | NoiseShapingModifiedEWeighted, |
| 14 | NoiseShapingImprovedEWeighted, |
| 15 | NoiseShapingShibata, |
| 16 | NoiseShapingLowShibata, |
| 17 | NoiseShapingHighShibata, |
| 18 | } |
| 19 | |
| 20 | impl From<SwrDitherType> for Dither { |
| 21 | fn from(value: SwrDitherType) -> Dither { |
| 22 | match value { |
| 23 | SWR_DITHER_NONE => Dither::None, |
| 24 | SWR_DITHER_RECTANGULAR => Dither::Rectangular, |
| 25 | SWR_DITHER_TRIANGULAR => Dither::Triangular, |
| 26 | SWR_DITHER_TRIANGULAR_HIGHPASS => Dither::TriangularHighPass, |
| 27 | |
| 28 | SWR_DITHER_NS => Dither::None, |
| 29 | SWR_DITHER_NS_LIPSHITZ => Dither::NoiseShapingLipshitz, |
| 30 | SWR_DITHER_NS_F_WEIGHTED => Dither::NoiseShapingFWeighted, |
| 31 | SWR_DITHER_NS_MODIFIED_E_WEIGHTED => Dither::NoiseShapingModifiedEWeighted, |
| 32 | SWR_DITHER_NS_IMPROVED_E_WEIGHTED => Dither::NoiseShapingImprovedEWeighted, |
| 33 | SWR_DITHER_NS_SHIBATA => Dither::NoiseShapingShibata, |
| 34 | SWR_DITHER_NS_LOW_SHIBATA => Dither::NoiseShapingLowShibata, |
| 35 | SWR_DITHER_NS_HIGH_SHIBATA => Dither::NoiseShapingHighShibata, |
| 36 | SWR_DITHER_NB => Dither::None, |
| 37 | } |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | impl From<Dither> for SwrDitherType { |
| 42 | fn from(value: Dither) -> SwrDitherType { |
| 43 | match value { |
| 44 | Dither::None => SWR_DITHER_NONE, |
| 45 | Dither::Rectangular => SWR_DITHER_RECTANGULAR, |
| 46 | Dither::Triangular => SWR_DITHER_TRIANGULAR, |
| 47 | Dither::TriangularHighPass => SWR_DITHER_TRIANGULAR_HIGHPASS, |
| 48 | |
| 49 | Dither::NoiseShapingLipshitz => SWR_DITHER_NS_LIPSHITZ, |
| 50 | Dither::NoiseShapingFWeighted => SWR_DITHER_NS_F_WEIGHTED, |
| 51 | Dither::NoiseShapingModifiedEWeighted => SWR_DITHER_NS_MODIFIED_E_WEIGHTED, |
| 52 | Dither::NoiseShapingImprovedEWeighted => SWR_DITHER_NS_IMPROVED_E_WEIGHTED, |
| 53 | Dither::NoiseShapingShibata => SWR_DITHER_NS_SHIBATA, |
| 54 | Dither::NoiseShapingLowShibata => SWR_DITHER_NS_LOW_SHIBATA, |
| 55 | Dither::NoiseShapingHighShibata => SWR_DITHER_NS_HIGH_SHIBATA, |
| 56 | } |
| 57 | } |
| 58 | } |
| 59 | |