#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