1 /* ----------------------------------------------------------------------------- 2 Software License for The Fraunhofer FDK AAC Codec Library for Android 3 4 © Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten 5 Forschung e.V. All rights reserved. 6 7 1. INTRODUCTION 8 The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software 9 that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding 10 scheme for digital audio. This FDK AAC Codec software is intended to be used on 11 a wide variety of Android devices. 12 13 AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient 14 general perceptual audio codecs. AAC-ELD is considered the best-performing 15 full-bandwidth communications codec by independent studies and is widely 16 deployed. AAC has been standardized by ISO and IEC as part of the MPEG 17 specifications. 18 19 Patent licenses for necessary patent claims for the FDK AAC Codec (including 20 those of Fraunhofer) may be obtained through Via Licensing 21 (www.vialicensing.com) or through the respective patent owners individually for 22 the purpose of encoding or decoding bit streams in products that are compliant 23 with the ISO/IEC MPEG audio standards. Please note that most manufacturers of 24 Android devices already license these patent claims through Via Licensing or 25 directly from the patent owners, and therefore FDK AAC Codec software may 26 already be covered under those patent licenses when it is used for those 27 licensed purposes only. 28 29 Commercially-licensed AAC software libraries, including floating-point versions 30 with enhanced sound quality, are also available from Fraunhofer. Users are 31 encouraged to check the Fraunhofer website for additional applications 32 information and documentation. 33 34 2. COPYRIGHT LICENSE 35 36 Redistribution and use in source and binary forms, with or without modification, 37 are permitted without payment of copyright license fees provided that you 38 satisfy the following conditions: 39 40 You must retain the complete text of this software license in redistributions of 41 the FDK AAC Codec or your modifications thereto in source code form. 42 43 You must retain the complete text of this software license in the documentation 44 and/or other materials provided with redistributions of the FDK AAC Codec or 45 your modifications thereto in binary form. You must make available free of 46 charge copies of the complete source code of the FDK AAC Codec and your 47 modifications thereto to recipients of copies in binary form. 48 49 The name of Fraunhofer may not be used to endorse or promote products derived 50 from this library without prior written permission. 51 52 You may not charge copyright license fees for anyone to use, copy or distribute 53 the FDK AAC Codec software or your modifications thereto. 54 55 Your modified versions of the FDK AAC Codec must carry prominent notices stating 56 that you changed the software and the date of any change. For modified versions 57 of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android" 58 must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK 59 AAC Codec Library for Android." 60 61 3. NO PATENT LICENSE 62 63 NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without 64 limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE. 65 Fraunhofer provides no warranty of patent non-infringement with respect to this 66 software. 67 68 You may use this FDK AAC Codec software or modifications thereto only for 69 purposes that are authorized by appropriate patent licenses. 70 71 4. DISCLAIMER 72 73 This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright 74 holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, 75 including but not limited to the implied warranties of merchantability and 76 fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 77 CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, 78 or consequential damages, including but not limited to procurement of substitute 79 goods or services; loss of use, data, or profits, or business interruption, 80 however caused and on any theory of liability, whether in contract, strict 81 liability, or tort (including negligence), arising in any way out of the use of 82 this software, even if advised of the possibility of such damage. 83 84 5. CONTACT INFORMATION 85 86 Fraunhofer Institute for Integrated Circuits IIS 87 Attention: Audio and Multimedia Departments - FDK AAC LL 88 Am Wolfsmantel 33 89 91058 Erlangen, Germany 90 91 www.iis.fraunhofer.de/amm 92 amm-info@iis.fraunhofer.de 93 ----------------------------------------------------------------------------- */ 94 95 /**************************** SBR decoder library ****************************** 96 97 Author(s): 98 99 Description: 100 101 *******************************************************************************/ 102 103 /*! 104 \file 105 \brief Sbr decoder 106 */ 107 #ifndef SBR_DEC_H 108 #define SBR_DEC_H 109 110 #include "sbrdecoder.h" 111 112 #include "lpp_tran.h" 113 #include "qmf.h" 114 #include "env_calc.h" 115 #include "FDK_audio.h" 116 117 #include "sbrdec_drc.h" 118 119 #include "pvc_dec.h" 120 121 #include "hbe.h" 122 123 enum SBRDEC_QMF_SKIP { 124 qmfSkipNothing = 0, 125 qmfSkipAnalysis = 1 << 0, 126 qmfSkipSynthesis = 1 << 1 127 }; 128 129 typedef struct { 130 SBR_CALCULATE_ENVELOPE SbrCalculateEnvelope; 131 SBR_LPP_TRANS LppTrans; 132 PVC_STATIC_DATA PvcStaticData; 133 134 /* do scale handling in sbr an not in qmf */ 135 SHORT scale_ov; 136 SHORT scale_lb; 137 SHORT scale_hbe; 138 139 SHORT prev_frame_lSbr; 140 SHORT prev_frame_hbeSbr; 141 142 int codecFrameSize; 143 144 HANDLE_HBE_TRANSPOSER hHBE; 145 146 HANDLE_FDK_QMF_DOMAIN_IN qmfDomainInCh; 147 HANDLE_FDK_QMF_DOMAIN_OUT qmfDomainOutCh; 148 149 SBRDEC_DRC_CHANNEL sbrDrcChannel; 150 151 #if (SBRDEC_MAX_HB_FADE_FRAMES > 0) 152 INT highBandFadeCnt; /* counter for fading in high-band signal smoothly */ 153 154 #endif 155 FIXP_DBL **tmp_memory; /* shared memory between hbeLightTimeDelayBuffer and 156 hQmfHBESlotsReal */ 157 158 FIXP_DBL **hQmfHBESlotsReal; 159 FIXP_DBL **hQmfHBESlotsImag; 160 161 FIXP_DBL **codecQMFBufferReal; 162 FIXP_DBL **codecQMFBufferImag; 163 UCHAR savedStates; 164 int applySbrProc_old; 165 } SBR_DEC; 166 167 typedef SBR_DEC *HANDLE_SBR_DEC; 168 169 typedef struct { 170 SBR_FRAME_DATA frameData[(1) + 1]; 171 SBR_PREV_FRAME_DATA prevFrameData; 172 SBR_DEC SbrDec; 173 } SBR_CHANNEL; 174 175 typedef SBR_CHANNEL *HANDLE_SBR_CHANNEL; 176 177 void sbr_dec( 178 HANDLE_SBR_DEC hSbrDec, /*!< handle to Decoder channel */ 179 LONG *timeIn, /*!< pointer to input time signal */ 180 LONG *timeOut, /*!< pointer to output time signal */ 181 HANDLE_SBR_DEC hSbrDecRight, /*!< handle to Decoder channel right */ 182 LONG *timeOutRight, /*!< pointer to output time signal */ 183 INT strideOut, /*!< Time data traversal strideOut */ 184 HANDLE_SBR_HEADER_DATA hHeaderData, /*!< Static control data */ 185 HANDLE_SBR_FRAME_DATA hFrameData, /*!< Control data of current frame */ 186 HANDLE_SBR_PREV_FRAME_DATA 187 hPrevFrameData, /*!< Some control data of last frame */ 188 const int applyProcessing, /*!< Flag for SBR operation */ 189 HANDLE_PS_DEC h_ps_d, const UINT flags, const int codecFrameSize, 190 const INT sbrInDataHeadroom); 191 192 SBR_ERROR 193 createSbrDec(SBR_CHANNEL *hSbrChannel, HANDLE_SBR_HEADER_DATA hHeaderData, 194 TRANSPOSER_SETTINGS *pSettings, const int downsampleFac, 195 const UINT qmfFlags, const UINT flags, const int overlap, int chan, 196 int codecFrameSize); 197 198 int deleteSbrDec(SBR_CHANNEL *hSbrChannel); 199 200 SBR_ERROR 201 resetSbrDec(HANDLE_SBR_DEC hSbrDec, HANDLE_SBR_HEADER_DATA hHeaderData, 202 HANDLE_SBR_PREV_FRAME_DATA hPrevFrameData, const int downsampleFac, 203 const UINT flags, HANDLE_SBR_FRAME_DATA hFrameData); 204 205 #endif 206