/* libFLAC - Free Lossless Audio Codec library * Copyright (C) 2001-2009 Josh Coalson * Copyright (C) 2011-2016 Xiph.Org Foundation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of the Xiph.org Foundation nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef FLAC__PROTECTED__STREAM_ENCODER_H #define FLAC__PROTECTED__STREAM_ENCODER_H #include "FLAC/stream_encoder.h" #if FLAC__HAS_OGG #include "private/ogg_encoder_aspect.h" #endif #ifndef FLAC__INTEGER_ONLY_LIBRARY #include "private/float.h" #define FLAC__MAX_APODIZATION_FUNCTIONS 32 typedef enum { FLAC__APODIZATION_BARTLETT, FLAC__APODIZATION_BARTLETT_HANN, FLAC__APODIZATION_BLACKMAN, FLAC__APODIZATION_BLACKMAN_HARRIS_4TERM_92DB_SIDELOBE, FLAC__APODIZATION_CONNES, FLAC__APODIZATION_FLATTOP, FLAC__APODIZATION_GAUSS, FLAC__APODIZATION_HAMMING, FLAC__APODIZATION_HANN, FLAC__APODIZATION_KAISER_BESSEL, FLAC__APODIZATION_NUTTALL, FLAC__APODIZATION_RECTANGLE, FLAC__APODIZATION_TRIANGLE, FLAC__APODIZATION_TUKEY, FLAC__APODIZATION_PARTIAL_TUKEY, FLAC__APODIZATION_PUNCHOUT_TUKEY, FLAC__APODIZATION_WELCH } FLAC__ApodizationFunction; typedef struct { FLAC__ApodizationFunction type; union { struct { FLAC__real stddev; } gauss; struct { FLAC__real p; } tukey; struct { FLAC__real p; FLAC__real start; FLAC__real end; } multiple_tukey; } parameters; } FLAC__ApodizationSpecification; #endif // #ifndef FLAC__INTEGER_ONLY_LIBRARY typedef struct FLAC__StreamEncoderProtected { FLAC__StreamEncoderState state; FLAC__bool verify; FLAC__bool streamable_subset; FLAC__bool do_md5; FLAC__bool do_mid_side_stereo; FLAC__bool loose_mid_side_stereo; unsigned channels; unsigned bits_per_sample; unsigned sample_rate; unsigned blocksize; #ifndef FLAC__INTEGER_ONLY_LIBRARY unsigned num_apodizations; FLAC__ApodizationSpecification apodizations[FLAC__MAX_APODIZATION_FUNCTIONS]; #endif unsigned max_lpc_order; unsigned qlp_coeff_precision; FLAC__bool do_qlp_coeff_prec_search; FLAC__bool do_exhaustive_model_search; FLAC__bool do_escape_coding; unsigned min_residual_partition_order; unsigned max_residual_partition_order; unsigned rice_parameter_search_dist; FLAC__uint64 total_samples_estimate; FLAC__StreamMetadata **metadata; unsigned num_metadata_blocks; FLAC__uint64 streaminfo_offset, seektable_offset, audio_offset; #if FLAC__HAS_OGG FLAC__OggEncoderAspect ogg_encoder_aspect; #endif } FLAC__StreamEncoderProtected; #endif