16cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK/* -----------------------------------------------------------------------------
22228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectSoftware License for The Fraunhofer FDK AAC Codec Library for Android
32228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
46cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
56cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKForschung e.V. All rights reserved.
62228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
72228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1.    INTRODUCTION
86cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKThe Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software
96cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthat implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
106cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKscheme for digital audio. This FDK AAC Codec software is intended to be used on
116cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKa wide variety of Android devices.
126cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK
136cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKAAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient
146cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKgeneral perceptual audio codecs. AAC-ELD is considered the best-performing
156cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKfull-bandwidth communications codec by independent studies and is widely
166cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKdeployed. AAC has been standardized by ISO and IEC as part of the MPEG
176cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKspecifications.
186cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK
196cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKPatent licenses for necessary patent claims for the FDK AAC Codec (including
206cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthose of Fraunhofer) may be obtained through Via Licensing
216cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK(www.vialicensing.com) or through the respective patent owners individually for
226cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthe purpose of encoding or decoding bit streams in products that are compliant
236cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKwith the ISO/IEC MPEG audio standards. Please note that most manufacturers of
246cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKAndroid devices already license these patent claims through Via Licensing or
256cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKdirectly from the patent owners, and therefore FDK AAC Codec software may
266cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKalready be covered under those patent licenses when it is used for those
276cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKlicensed purposes only.
286cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK
296cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKCommercially-licensed AAC software libraries, including floating-point versions
306cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKwith enhanced sound quality, are also available from Fraunhofer. Users are
316cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKencouraged to check the Fraunhofer website for additional applications
326cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKinformation and documentation.
332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project2.    COPYRIGHT LICENSE
352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
366cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKRedistribution and use in source and binary forms, with or without modification,
376cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKare permitted without payment of copyright license fees provided that you
386cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKsatisfy the following conditions:
392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
406cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKYou must retain the complete text of this software license in redistributions of
416cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthe FDK AAC Codec or your modifications thereto in source code form.
422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
436cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKYou must retain the complete text of this software license in the documentation
446cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKand/or other materials provided with redistributions of the FDK AAC Codec or
456cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKyour modifications thereto in binary form. You must make available free of
466cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKcharge copies of the complete source code of the FDK AAC Codec and your
472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectmodifications thereto to recipients of copies in binary form.
482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
496cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKThe name of Fraunhofer may not be used to endorse or promote products derived
506cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKfrom this library without prior written permission.
512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
526cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKYou may not charge copyright license fees for anyone to use, copy or distribute
536cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthe FDK AAC Codec software or your modifications thereto.
542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
556cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKYour modified versions of the FDK AAC Codec must carry prominent notices stating
566cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthat you changed the software and the date of any change. For modified versions
576cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKof the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"
586cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKmust be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK
596cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKAAC Codec Library for Android."
602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project3.    NO PATENT LICENSE
622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
636cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKNO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without
646cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKlimitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.
656cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKFraunhofer provides no warranty of patent non-infringement with respect to this
666cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKsoftware.
672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
686cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKYou may use this FDK AAC Codec software or modifications thereto only for
696cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKpurposes that are authorized by appropriate patent licenses.
702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project4.    DISCLAIMER
722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
736cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKThis FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright
746cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKholders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
756cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKincluding but not limited to the implied warranties of merchantability and
766cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKfitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
776cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKCONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,
786cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKor consequential damages, including but not limited to procurement of substitute
796cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKgoods or services; loss of use, data, or profits, or business interruption,
806cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKhowever caused and on any theory of liability, whether in contract, strict
816cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKliability, or tort (including negligence), arising in any way out of the use of
826cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKthis software, even if advised of the possibility of such damage.
832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project5.    CONTACT INFORMATION
852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
862228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectFraunhofer Institute for Integrated Circuits IIS
872228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectAttention: Audio and Multimedia Departments - FDK AAC LL
882228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectAm Wolfsmantel 33
892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project91058 Erlangen, Germany
902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectwww.iis.fraunhofer.de/amm
922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectamm-info@iis.fraunhofer.de
936cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK----------------------------------------------------------------------------- */
942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
956cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK/**************************** AAC encoder library ******************************
962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
976cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK   Author(s):   M. Werner
982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
996cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK   Description: Quantizing & coding data
1002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1016cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK*******************************************************************************/
1022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1036cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK#ifndef QC_DATA_H
1046cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK#define QC_DATA_H
1052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1066cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK#include "aacenc.h"
1072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "psy_const.h"
1082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "dyn_bits.h"
1092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "adj_thr_data.h"
1102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "line_pe.h"
1112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "FDK_audio.h"
1122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "interface.h"
1132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projecttypedef enum {
1152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  QCDATA_BR_MODE_INVALID = -1,
1166cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_CBR = 0,   /* Constant bit rate, given average bitrate */
1176cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_VBR_1 = 1, /* Variable bit rate, very low */
1186cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_VBR_2 = 2, /* Variable bit rate, low */
1196cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_VBR_3 = 3, /* Variable bit rate, medium */
1206cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_VBR_4 = 4, /* Variable bit rate, high */
1216cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_VBR_5 = 5, /* Variable bit rate, very high */
1226cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_FF = 6,    /* Fixed frame mode. */
1236cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QCDATA_BR_MODE_SFR = 7    /* Superframe mode. */
1242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} QCDATA_BR_MODE;
1262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projecttypedef struct {
1282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  MP4_ELEMENT_ID elType;
1292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT instanceTag;
1302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT nChannelsInEl;
1312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT ChannelIndex[2];
1322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  FIXP_DBL relativeBits;
1332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} ELEMENT_INFO;
1342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projecttypedef struct {
1362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  CHANNEL_MODE encMode;
1372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT nChannels;
1382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT nChannelsEff;
1392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT nElements;
1406cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  ELEMENT_INFO elInfo[((8))];
1412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} CHANNEL_MAPPING;
1422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projecttypedef struct {
1442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT paddingRest;
1452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} PADDING;
1462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* Quantizing & coding stage */
1482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1496cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKstruct QC_INIT {
1506cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  CHANNEL_MAPPING *channelMapping;
1512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT sceCpe;      /* not used yet                         */
1522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT maxBits;     /* maximum number of bits in reservoir  */
1532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT averageBits; /* average number of bits we should use */
1542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT bitRes;
1556cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT sampleRate; /* output sample rate                   */
1566cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT isLowDelay; /* if set, calc bits2PE factor depending on samplerate */
1576cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT staticBits; /* Bits per frame consumed by transport layers. */
1582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  QCDATA_BR_MODE bitrateMode;
1592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT meanPe;
1606cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT chBitrate; /* Bitrate/channel */
1612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT invQuant;
1626cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT maxIterations; /* Maximum number of allowed iterations before
1636cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                        FDKaacEnc_crashRecovery() is applied. */
1642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  FIXP_DBL maxBitFac;
1652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT bitrate;
1666cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT nSubFrames;                /* helper variable */
1676cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT minBits;                   /* minimal number of bits in one frame*/
1686cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  AACENC_BITRES_MODE bitResMode; /* 0: full bitreservoir, 1: reduced
1696cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                                    bitreservoir, 2: disabled bitreservoir */
1706cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT bitDistributionMode; /* Configure element-wise execution or execution over
1716cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                              all elements for the pe-dependent
1726cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                              threshold-adaption */
1732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  PADDING padding;
1752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project};
1762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1776cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKtypedef struct {
1786cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL mdctSpectrum[(1024)];
1792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1806cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  SHORT quantSpec[(1024)];
1812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1826cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  UINT maxValueInSfb[MAX_GROUPED_SFB];
1836cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT scf[MAX_GROUPED_SFB];
1846cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT globalGain;
1856cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  SECTION_DATA sectionData;
1862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1876cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbFormFactorLdData[MAX_GROUPED_SFB];
1882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1896cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbThresholdLdData[MAX_GROUPED_SFB];
1906cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbMinSnrLdData[MAX_GROUPED_SFB];
1916cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbEnergyLdData[MAX_GROUPED_SFB];
1926cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbEnergy[MAX_GROUPED_SFB];
1936cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbWeightedEnergyLdData[MAX_GROUPED_SFB];
1942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1956cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbEnFacLd[MAX_GROUPED_SFB];
1962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1976cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL sfbSpreadEnergy[MAX_GROUPED_SFB];
1982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
1992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} QC_OUT_CHANNEL;
2002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2016cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKtypedef struct {
2026cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  EXT_PAYLOAD_TYPE type; /* type of the extension payload */
2036cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT nPayloadBits;      /* size of the payload */
2046cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  UCHAR *pPayload;       /* pointer to payload */
2052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} QC_OUT_EXTENSION;
2072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2086cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKtypedef struct {
2096cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT staticBitsUsed; /* for verification purposes */
2106cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT dynBitsUsed;    /* for verification purposes */
2112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2126cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT extBitsUsed; /* bit consumption of extended fill elements */
2136cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT nExtensions; /* number of extension payloads for this element */
2146cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QC_OUT_EXTENSION extension[(1)]; /* reffering extension payload */
2152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2166cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT grantedDynBits;
2172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2186cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT grantedPe;
2196cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT grantedPeCorr;
2202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2216cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  PE_DATA peData;
2222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  QC_OUT_CHANNEL *qcOutChannel[(2)];
2242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2256cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  UCHAR
2266cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  *dynMem_Ah_Flag; /* pointer to dynamic buffer used by AhFlag in function
2276cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                      FDKaacEnc_adaptThresholdsToPe() */
2286cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  UCHAR
2296cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  *dynMem_Thr_Exp; /* pointer to dynamic buffer used by ThrExp in function
2306cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                      FDKaacEnc_adaptThresholdsToPe() */
2316cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  UCHAR *dynMem_SfbNActiveLinesLdData; /* pointer to dynamic buffer used by
2326cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                                          sfbNActiveLinesLdData in function
2336cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                                          FDKaacEnc_correctThresh() */
2342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} QC_OUT_ELEMENT;
2362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2376cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKtypedef struct {
2386cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QC_OUT_ELEMENT *qcElement[((8))];
2396cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QC_OUT_CHANNEL *pQcOutChannels[(8)];
2406cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  QC_OUT_EXTENSION extension[(2 + 2)]; /* global extension payload */
2416cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT nExtensions;    /* number of extension payloads for this AU */
2426cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT maxDynBits;     /* maximal allowed dynamic bits in frame */
2436cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT grantedDynBits; /* granted dynamic bits in frame */
2446cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT totFillBits;    /* fill bits */
2456cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT elementExtBits; /* element associated extension payload bits, e.g. sbr,
2466cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                         drc ... */
2476cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT globalExtBits;  /* frame/au associated extension payload bits (anc data
2486cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                         ...) */
2496cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT staticBits;     /* aac side info bits */
2506cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK
2516cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT totalNoRedPe;
2526cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT totalGrantedPeCorr;
2536cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK
2546cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT usedDynBits; /* number of dynamic bits in use */
2556cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT alignBits;   /* AU alignment bits */
2566cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT totalBits;   /* sum of static, dyn, sbr, fill, align and dse bits */
2572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} QC_OUT;
2592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projecttypedef struct {
2616cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT chBitrateEl;         /* channel bitrate in element
2626cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                              (totalbitrate*el_relativeBits/el_channels) */
2636cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT maxBitsEl;           /* used in crash recovery */
2646cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT bitResLevelEl;       /* update bitreservoir level in each call of
2656cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                              FDKaacEnc_QCMain */
2666cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT maxBitResBitsEl;     /* nEffChannels*6144 - averageBitsInFrame */
2676cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  FIXP_DBL relativeBitsEl; /* Bits relative to total Bits*/
2682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} ELEMENT_BITS;
2692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2706cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDKtypedef struct {
2712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  /* this is basically struct QC_INIT */
2722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT globHdrBits;
2746cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT maxBitsPerFrame; /* maximal allowed bits per frame, 6144*nChannelsEff */
2756cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT minBitsPerFrame; /* minimal allowd bits per fram, superframing - DRM */
2762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT nElements;
2772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  QCDATA_BR_MODE bitrateMode;
2786cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  AACENC_BITRES_MODE bitResMode; /* 0: full bitreservoir, 1: reduced
2796cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                                    bitreservoir, 2: disabled bitreservoir */
2802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT bitResTot;
2812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT bitResTotMax;
2826cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT maxIterations; /* Maximum number of allowed iterations before
2836cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK                        FDKaacEnc_crashRecovery() is applied. */
2842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  INT invQuant;
2852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  FIXP_DBL vbrQualFactor;
2872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  FIXP_DBL maxBitFac;
2882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  PADDING padding;
2902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2916cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  ELEMENT_BITS *elementBits[((8))];
2922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  BITCNTR_STATE *hBitCounter;
2932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project  ADJ_THR_STATE *hAdjThr;
2942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2956cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK  INT dZoneQuantEnable; /* enable dead zone quantizer */
29646ba3676b854acbc69a4c7845f578d4c2886377bJean-Michel Trivi
2972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} QC_STATE;
2982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project
2996cfabd35363c3ef5e3b209b867169a500b3ccc3cFraunhofer IIS FDK#endif /* QC_DATA_H */
300