1 /* libFLAC - Free Lossless Audio Codec library 2 * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * - Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * - Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * - Neither the name of the Xiph.org Foundation nor the names of its 16 * contributors may be used to endorse or promote products derived from 17 * this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #ifndef FLAC__PROTECTED__STREAM_ENCODER_H 33 #define FLAC__PROTECTED__STREAM_ENCODER_H 34 35 #include "FLAC/stream_encoder.h" 36 #if FLAC__HAS_OGG 37 #include "private/ogg_encoder_aspect.h" 38 #endif 39 40 #ifndef FLAC__INTEGER_ONLY_LIBRARY 41 42 #include "private/float.h" 43 44 #define FLAC__MAX_APODIZATION_FUNCTIONS 32 45 46 typedef enum { 47 FLAC__APODIZATION_BARTLETT, 48 FLAC__APODIZATION_BARTLETT_HANN, 49 FLAC__APODIZATION_BLACKMAN, 50 FLAC__APODIZATION_BLACKMAN_HARRIS_4TERM_92DB_SIDELOBE, 51 FLAC__APODIZATION_CONNES, 52 FLAC__APODIZATION_FLATTOP, 53 FLAC__APODIZATION_GAUSS, 54 FLAC__APODIZATION_HAMMING, 55 FLAC__APODIZATION_HANN, 56 FLAC__APODIZATION_KAISER_BESSEL, 57 FLAC__APODIZATION_NUTTALL, 58 FLAC__APODIZATION_RECTANGLE, 59 FLAC__APODIZATION_TRIANGLE, 60 FLAC__APODIZATION_TUKEY, 61 FLAC__APODIZATION_WELCH 62 } FLAC__ApodizationFunction; 63 64 typedef struct { 65 FLAC__ApodizationFunction type; 66 union { 67 struct { 68 FLAC__real stddev; 69 } gauss; 70 struct { 71 FLAC__real p; 72 } tukey; 73 } parameters; 74 } FLAC__ApodizationSpecification; 75 76 #endif // #ifndef FLAC__INTEGER_ONLY_LIBRARY 77 78 typedef struct FLAC__StreamEncoderProtected { 79 FLAC__StreamEncoderState state; 80 FLAC__bool verify; 81 FLAC__bool streamable_subset; 82 FLAC__bool do_md5; 83 FLAC__bool do_mid_side_stereo; 84 FLAC__bool loose_mid_side_stereo; 85 unsigned channels; 86 unsigned bits_per_sample; 87 unsigned sample_rate; 88 unsigned blocksize; 89 #ifndef FLAC__INTEGER_ONLY_LIBRARY 90 unsigned num_apodizations; 91 FLAC__ApodizationSpecification apodizations[FLAC__MAX_APODIZATION_FUNCTIONS]; 92 #endif 93 unsigned max_lpc_order; 94 unsigned qlp_coeff_precision; 95 FLAC__bool do_qlp_coeff_prec_search; 96 FLAC__bool do_exhaustive_model_search; 97 FLAC__bool do_escape_coding; 98 unsigned min_residual_partition_order; 99 unsigned max_residual_partition_order; 100 unsigned rice_parameter_search_dist; 101 FLAC__uint64 total_samples_estimate; 102 FLAC__StreamMetadata **metadata; 103 unsigned num_metadata_blocks; 104 FLAC__uint64 streaminfo_offset, seektable_offset, audio_offset; 105 #if FLAC__HAS_OGG 106 FLAC__OggEncoderAspect ogg_encoder_aspect; 107 #endif 108 } FLAC__StreamEncoderProtected; 109 110 #endif 111