1603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 2603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/* ----------------------------------------------------------------------------------------------------------- 3603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviSoftware License for The Fraunhofer FDK AAC Codec Library for Android 4603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 5603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi� Copyright 1995 - 2013 Fraunhofer-Gesellschaft zur F�rderung der angewandten Forschung e.V. 6603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi All rights reserved. 7603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 8603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 1. INTRODUCTION 9603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviThe Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software that implements 10603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivithe MPEG Advanced Audio Coding ("AAC") encoding and decoding scheme for digital audio. 11603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviThis FDK AAC Codec software is intended to be used on a wide variety of Android devices. 12603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 13603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviAAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient general perceptual 14603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviaudio codecs. AAC-ELD is considered the best-performing full-bandwidth communications codec by 15603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviindependent studies and is widely deployed. AAC has been standardized by ISO and IEC as part 16603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviof the MPEG specifications. 17603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 18603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviPatent licenses for necessary patent claims for the FDK AAC Codec (including those of Fraunhofer) 19603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivimay be obtained through Via Licensing (www.vialicensing.com) or through the respective patent owners 20603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviindividually for the purpose of encoding or decoding bit streams in products that are compliant with 21603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivithe ISO/IEC MPEG audio standards. Please note that most manufacturers of Android devices already license 22603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivithese patent claims through Via Licensing or directly from the patent owners, and therefore FDK AAC Codec 23603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivisoftware may already be covered under those patent licenses when it is used for those licensed purposes only. 24603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 25603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviCommercially-licensed AAC software libraries, including floating-point versions with enhanced sound quality, 26603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviare also available from Fraunhofer. Users are encouraged to check the Fraunhofer website for additional 27603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviapplications information and documentation. 28603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 29603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi2. COPYRIGHT LICENSE 30603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 31603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviRedistribution and use in source and binary forms, with or without modification, are permitted without 32603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivipayment of copyright license fees provided that you satisfy the following conditions: 33603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 34603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviYou must retain the complete text of this software license in redistributions of the FDK AAC Codec or 35603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviyour modifications thereto in source code form. 36603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 37603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviYou must retain the complete text of this software license in the documentation and/or other materials 38603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviprovided with redistributions of the FDK AAC Codec or your modifications thereto in binary form. 39603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviYou must make available free of charge copies of the complete source code of the FDK AAC Codec and your 40603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivimodifications thereto to recipients of copies in binary form. 41603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 42603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviThe name of Fraunhofer may not be used to endorse or promote products derived from this library without 43603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviprior written permission. 44603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 45603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviYou may not charge copyright license fees for anyone to use, copy or distribute the FDK AAC Codec 46603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivisoftware or your modifications thereto. 47603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 48603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviYour modified versions of the FDK AAC Codec must carry prominent notices stating that you changed the software 49603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviand the date of any change. For modified versions of the FDK AAC Codec, the term 50603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi"Fraunhofer FDK AAC Codec Library for Android" must be replaced by the term 51603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi"Third-Party Modified Version of the Fraunhofer FDK AAC Codec Library for Android." 52603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 53603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi3. NO PATENT LICENSE 54603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 55603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviNO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without limitation the patents of Fraunhofer, 56603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviARE GRANTED BY THIS SOFTWARE LICENSE. Fraunhofer provides no warranty of patent non-infringement with 57603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivirespect to this software. 58603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 59603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviYou may use this FDK AAC Codec software or modifications thereto only for purposes that are authorized 60603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviby appropriate patent licenses. 61603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 62603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi4. DISCLAIMER 63603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 64603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviThis FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright holders and contributors 65603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi"AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, including but not limited to the implied warranties 66603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviof merchantability and fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 67603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviCONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, or consequential damages, 68603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviincluding but not limited to procurement of substitute goods or services; loss of use, data, or profits, 69603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivior business interruption, however caused and on any theory of liability, whether in contract, strict 70603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviliability, or tort (including negligence), arising in any way out of the use of this software, even if 71603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviadvised of the possibility of such damage. 72603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 73603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi5. CONTACT INFORMATION 74603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 75603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviFraunhofer Institute for Integrated Circuits IIS 76603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviAttention: Audio and Multimedia Departments - FDK AAC LL 77603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviAm Wolfsmantel 33 78603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi91058 Erlangen, Germany 79603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 80603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviwww.iis.fraunhofer.de/amm 81603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviamm-info@iis.fraunhofer.de 82603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi----------------------------------------------------------------------------------------------------------- */ 83603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 84603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/************************ FDK PCM postprocessor module ********************* 85603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 86603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi Author(s): Matthias Neusinger 87603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi Description: Hard limiter for clipping prevention 88603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 89603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi*******************************************************************************/ 90603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 91603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#ifndef _LIMITER_H_ 92603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#define _LIMITER_H_ 93603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 94603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 95603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#include "common_fix.h" 96603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 97603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#define TDL_ATTACK_DEFAULT_MS (15) /* default attack time in ms */ 98603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#define TDL_RELEASE_DEFAULT_MS (50) /* default release time in ms */ 99603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 100603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#define TDL_GAIN_SCALING (15) /* scaling of gain value. */ 101603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 102603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 103603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#ifdef __cplusplus 104603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviextern "C" { 105603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#endif 106603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 107603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 108603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivitypedef enum { 109603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi TDLIMIT_OK = 0, 110603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 111603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi __error_codes_start = -100, 112603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 113603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi TDLIMIT_INVALID_HANDLE, 114603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi TDLIMIT_INVALID_PARAMETER, 115603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 116603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi __error_codes_end 117603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi} TDLIMITER_ERROR; 118603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 119603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivistruct TDLimiter; 120603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivitypedef struct TDLimiter* TDLimiterPtr; 121603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 122603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 123603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* createLimiter * 124603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* maxAttackMs: maximum and initial attack/lookahead time in milliseconds * 125603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* releaseMs: release time in milliseconds (90% time constant) * 126603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* threshold: limiting threshold * 127603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* maxChannels: maximum and initial number of channels * 128603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* maxSampleRate: maximum and initial sampling rate in Hz * 129603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: limiter handle * 130603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 131603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLimiterPtr createLimiter(unsigned int maxAttackMs, 132603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi unsigned int releaseMs, 133603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi INT_PCM threshold, 134603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi unsigned int maxChannels, 135603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi unsigned int maxSampleRate); 136603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 137603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 138603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 139603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* resetLimiter * 140603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 141603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 142603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 143603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR resetLimiter(TDLimiterPtr limiter); 144603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 145603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 146603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 147603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* destroyLimiter * 148603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 149603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 150603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 151603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR destroyLimiter(TDLimiterPtr limiter); 152603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 153603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 154603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* applyLimiter * 155603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 156603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* pGain : pointer to gains to be applied to the signal before limiting, * 157603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* which are downscaled by TDL_GAIN_SCALING bit. * 158603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* These gains are delayed by gain_delay, and smoothed. * 159603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* Smoothing is done by a butterworth lowpass filter with a cutoff * 160603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* frequency which is fixed with respect to the sampling rate. * 161603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* It is a substitute for the smoothing due to windowing and * 162603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* overlap/add, if a gain is applied in frequency domain. * 163603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* gain_scale: pointer to scaling exponents to be applied to the signal before * 164603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiting, without delay and without smoothing * 165603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* gain_size: number of elements in pGain, currently restricted to 1 * 166603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* gain_delay: delay [samples] with which the gains in pGain shall be applied * 167603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* gain_delay <= nSamples * 168603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* samples: input/output buffer containing interleaved samples * 169603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* precision of output will be DFRACT_BITS-TDL_GAIN_SCALING bits * 170603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* nSamples: number of samples per channel * 171603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 172603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 173603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR applyLimiter(TDLimiterPtr limiter, 174603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi INT_PCM* samples, 175603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi FIXP_DBL* pGain, 176603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi const INT* gain_scale, 177603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi const UINT gain_size, 178603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi const UINT gain_delay, 179603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi const UINT nSamples); 180603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 181603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 182603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* getLimiterDelay * 183603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 184603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: exact delay caused by the limiter in samples * 185603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 186603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Triviunsigned int getLimiterDelay(TDLimiterPtr limiter); 187603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 188603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 189603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* setLimiterNChannels * 190603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 191603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* nChannels: number of channels ( <= maxChannels specified on create) * 192603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 193603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 194603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR setLimiterNChannels(TDLimiterPtr limiter, unsigned int nChannels); 195603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 196603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 197603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* setLimiterSampleRate * 198603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 199603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* sampleRate: sampling rate in Hz ( <= maxSampleRate specified on create) * 200603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 201603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 202603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR setLimiterSampleRate(TDLimiterPtr limiter, unsigned int sampleRate); 203603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 204603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 205603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* setLimiterAttack * 206603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 207603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* attackMs: attack time in ms ( <= maxAttackMs specified on create) * 208603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 209603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 210603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR setLimiterAttack(TDLimiterPtr limiter, unsigned int attackMs); 211603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 212603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 213603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* setLimiterRelease * 214603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 215603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* releaseMs: release time in ms * 216603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 217603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 218603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR setLimiterRelease(TDLimiterPtr limiter, unsigned int releaseMs); 219603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 220603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi/****************************************************************************** 221603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* setLimiterThreshold * 222603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* limiter: limiter handle * 223603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* threshold: limiter threshold * 224603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi* returns: error code * 225603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi******************************************************************************/ 226603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel TriviTDLIMITER_ERROR setLimiterThreshold(TDLimiterPtr limiter, INT_PCM threshold); 227603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 228603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#ifdef __cplusplus 229603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi} 230603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#endif 231603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 232603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi 233603f48ab99ce76f552f4f6f85d06b8c5b94c698eJean-Michel Trivi#endif //#ifndef _LIMITER_H_ 234