#region CPL License /* Nuclex Framework Copyright (C) 2002-2009 Nuclex Development Labs This library is free software; you can redistribute it and/or modify it under the terms of the IBM Common Public License as published by the IBM Corporation; either version 1.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the IBM Common Public License for more details. You should have received a copy of the IBM Common Public License along with this library */ #endregion using System; using System.Collections.Generic; namespace Nuclex.Audio.Formats.Flac { #if ENABLE_PINVOKE_FLAC_DECODER /// CONSTANT subframe. public struct ConstantSubframe { /// The constant signal value. public Int32 Value; }; /// VERBATIM subframe. public struct VerbatimSubframe { /// A pointer to verbatim signal. public IntPtr Data; // int32 * } /// FIXED subframe. public struct FixedSubframe { /// Describes the entropy coding method used public EntropyCodingMethod EntropyCodingMethod; /// Polynomial order public int Order; /// /// Warmup samples to prime the predictor, length == /// public int[] Warmup; /// /// The residual signal, length == (blocksize minus order) samples. /// public int[] Residual; } /// LPC subframe. public struct LpcSubframe { /// The residual coding method. public EntropyCodingMethod EntropyCodingMethod; /// The FIR order. public int Order; /// Quantized FIR filter coefficient precision in bits. public int QlpCoefficientPrecision; /// The qlp coeff shift needed. public int QuantizationLevel; /// FIR filter coefficients. public int[] QlpCoefficients; /// Warmup samples to prime the predictor, length == order. public int[] Warmup; /// /// The residual signal, length == (blocksize minus order) samples. /// public int[] Residual; } /// FLAC subframe structure public struct Subframe { /// Type of the subframe for this channel public SubframeType Type; /// Constant data for the subframe public ConstantSubframe? Constant; /// Fixed data for the subframe public FixedSubframe? Fixed; /// LPC data for the subframe public LpcSubframe? Lpc; /// Verbatim data for the subframe public VerbatimSubframe? Verbatim; /// Unknown content public int WastedBits; } #endif // ENABLE_PINVOKE_FLAC_DECODER } // namespace Nuclex.Audio.Formats.Flac