1 /* ----------------------------------------------------------------------------- 2 Software License for The Fraunhofer FDK AAC Codec Library for Android 3 4 © Copyright 1995 - 2021 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 /******************* MPEG transport format decoder library ********************* 96 97 Author(s): Daniel Homm 98 99 Description: 100 101 *******************************************************************************/ 102 103 #ifndef TPDEC_LATM_H 104 #define TPDEC_LATM_H 105 106 #include "tpdec_lib.h" 107 108 #include "FDK_bitstream.h" 109 110 #define MIN_LATM_HEADERLENGTH 9 111 #define MIN_LOAS_HEADERLENGTH MIN_LATM_HEADERLENGTH + 24 /* both in bits */ 112 #define MIN_TP_BUF_SIZE_LOAS (8194) 113 114 enum { 115 LATM_MAX_PROG = 1, 116 LATM_MAX_LAYER = 1, 117 LATM_MAX_VAR_CHUNKS = 16, 118 LATM_MAX_ID = 16 119 }; 120 121 typedef struct { 122 UINT m_frameLengthType; 123 UINT m_bufferFullness; 124 UINT m_streamID; 125 UINT m_frameLengthInBits; 126 } LATM_LAYER_INFO; 127 128 typedef struct { 129 LATM_LAYER_INFO m_linfo[LATM_MAX_PROG][LATM_MAX_LAYER]; 130 UINT m_taraBufferFullness; 131 UINT m_otherDataLength; 132 UINT m_audioMuxLengthBytes; /* Length of LOAS payload */ 133 134 UCHAR m_useSameStreamMux; 135 UCHAR m_AudioMuxVersion; 136 UCHAR m_AudioMuxVersionA; 137 UCHAR m_allStreamsSameTimeFraming; 138 UCHAR m_noSubFrames; 139 UCHAR m_numProgram; 140 UCHAR m_numLayer[LATM_MAX_PROG]; 141 142 UCHAR m_otherDataPresent; 143 UCHAR m_crcCheckPresent; 144 145 SCHAR BufferFullnessAchieved; 146 UCHAR 147 usacExplicitCfgChanged; /* explicit config in case of USAC and LOAS/LATM 148 must be compared to IPF cfg */ 149 UCHAR applyAsc; /* apply ASC immediate without flushing */ 150 UCHAR newCfgHasAudioPreRoll; /* the new (dummy parsed) config has an 151 AudioPreRoll */ 152 } CLatmDemux; 153 154 TRANSPORTDEC_ERROR CLatmDemux_Read(HANDLE_FDK_BITSTREAM bs, 155 CLatmDemux *pLatmDemux, TRANSPORT_TYPE tt, 156 CSTpCallBacks *pTpDecCallbacks, 157 CSAudioSpecificConfig *pAsc, 158 int *pfConfigFound, 159 const INT ignoreBufferFullness); 160 161 /** 162 * \brief Read StreamMuxConfig 163 * \param bs bit stream handle as data source 164 * \param pLatmDemux pointer to CLatmDemux struct of current LATM context 165 * \param pTpDecCallbacks Call back structure for configuration callbacks 166 * \param pAsc pointer to a ASC for configuration storage 167 * \param pfConfigFound pointer to a flag which is set to 1 if a configuration 168 * was found and processed successfully 169 * \param configMode Config modes: memory allocation mode or config change 170 * detection mode 171 * \param configChanged Indicates a config change 172 * \return error code 173 */ 174 TRANSPORTDEC_ERROR CLatmDemux_ReadStreamMuxConfig( 175 HANDLE_FDK_BITSTREAM bs, CLatmDemux *pLatmDemux, 176 CSTpCallBacks *pTpDecCallbacks, CSAudioSpecificConfig *pAsc, 177 int *pfConfigFound, UCHAR configMode, UCHAR configChanged); 178 179 TRANSPORTDEC_ERROR CLatmDemux_ReadPayloadLengthInfo(HANDLE_FDK_BITSTREAM bs, 180 CLatmDemux *pLatmDemux); 181 182 UINT CLatmDemux_GetFrameLengthInBits(CLatmDemux *pLatmDemux, const UINT prog, 183 const UINT layer); 184 UINT CLatmDemux_GetOtherDataPresentFlag(CLatmDemux *pLatmDemux); 185 UINT CLatmDemux_GetOtherDataLength(CLatmDemux *pLatmDemux); 186 UINT CLatmDemux_GetNrOfSubFrames(CLatmDemux *pLatmDemux); 187 UINT CLatmDemux_GetNrOfLayers(CLatmDemux *pLatmDemux, const UINT program); 188 189 #endif /* TPDEC_LATM_H */ 190