annotate src/flac-1.2.1/include/share/replaygain_synthesis.h @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 05aa0afa9217
children
rev   line source
Chris@1 1 /* replaygain_synthesis - Routines for applying ReplayGain to a signal
Chris@1 2 * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson
Chris@1 3 *
Chris@1 4 * This library is free software; you can redistribute it and/or
Chris@1 5 * modify it under the terms of the GNU Lesser General Public
Chris@1 6 * License as published by the Free Software Foundation; either
Chris@1 7 * version 2.1 of the License, or (at your option) any later version.
Chris@1 8 *
Chris@1 9 * This library is distributed in the hope that it will be useful,
Chris@1 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@1 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Chris@1 12 * Lesser General Public License for more details.
Chris@1 13 *
Chris@1 14 * You should have received a copy of the GNU Lesser General Public
Chris@1 15 * License along with this library; if not, write to the Free Software
Chris@1 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Chris@1 17 */
Chris@1 18
Chris@1 19 #ifndef FLAC__SHARE__REPLAYGAIN_SYNTHESIS_H
Chris@1 20 #define FLAC__SHARE__REPLAYGAIN_SYNTHESIS_H
Chris@1 21
Chris@1 22 #include <stdlib.h> /* for size_t */
Chris@1 23 #include "FLAC/ordinals.h"
Chris@1 24
Chris@1 25 #define FLAC_SHARE__MAX_SUPPORTED_CHANNELS 2
Chris@1 26
Chris@1 27 typedef enum {
Chris@1 28 NOISE_SHAPING_NONE = 0,
Chris@1 29 NOISE_SHAPING_LOW = 1,
Chris@1 30 NOISE_SHAPING_MEDIUM = 2,
Chris@1 31 NOISE_SHAPING_HIGH = 3
Chris@1 32 } NoiseShaping;
Chris@1 33
Chris@1 34 typedef struct {
Chris@1 35 const float* FilterCoeff;
Chris@1 36 FLAC__uint64 Mask;
Chris@1 37 double Add;
Chris@1 38 float Dither;
Chris@1 39 float ErrorHistory [FLAC_SHARE__MAX_SUPPORTED_CHANNELS] [16]; /* 16th order Noise shaping */
Chris@1 40 float DitherHistory [FLAC_SHARE__MAX_SUPPORTED_CHANNELS] [16];
Chris@1 41 int LastRandomNumber [FLAC_SHARE__MAX_SUPPORTED_CHANNELS];
Chris@1 42 unsigned LastHistoryIndex;
Chris@1 43 NoiseShaping ShapingType;
Chris@1 44 } DitherContext;
Chris@1 45
Chris@1 46 void FLAC__replaygain_synthesis__init_dither_context(DitherContext *dither, int bits, int shapingtype);
Chris@1 47
Chris@1 48 /* scale = (float) pow(10., (double)replaygain * 0.05); */
Chris@1 49 size_t FLAC__replaygain_synthesis__apply_gain(FLAC__byte *data_out, FLAC__bool little_endian_data_out, FLAC__bool unsigned_data_out, const FLAC__int32 * const input[], unsigned wide_samples, unsigned channels, const unsigned source_bps, const unsigned target_bps, const double scale, const FLAC__bool hard_limit, FLAC__bool do_dithering, DitherContext *dither_context);
Chris@1 50
Chris@1 51 #endif