• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* -----------------------------------------------------------------------------
2  Software License for The Fraunhofer FDK AAC Codec Library for Android
3  
4  © Copyright  1995 - 2018 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  /******************* Library for basic calculation routines ********************
96  
97     Author(s):   Marc Gayer
98  
99     Description: fixed point intrinsics
100  
101  *******************************************************************************/
102  
103  #if !defined(CLZ_H)
104  #define CLZ_H
105  
106  #include "FDK_archdef.h"
107  #include "machine_type.h"
108  
109  #if defined(__arm__)
110  #include "arm/clz_arm.h"
111  
112  #elif defined(__mips__)
113  #include "mips/clz_mips.h"
114  
115  #elif defined(__x86__)
116  #include "x86/clz_x86.h"
117  
118  #endif /* all cores */
119  
120  /*************************************************************************
121   *************************************************************************
122      Software fallbacks for missing functions.
123  **************************************************************************
124  **************************************************************************/
125  
126  #if !defined(FUNCTION_fixnormz_S)
127  #ifdef FUNCTION_fixnormz_D
fixnormz_S(SHORT a)128  inline INT fixnormz_S(SHORT a) {
129    if (a < 0) {
130      return 0;
131    }
132    return fixnormz_D((INT)(a)) - 16;
133  }
134  #else
fixnormz_S(SHORT a)135  inline INT fixnormz_S(SHORT a) {
136    int leadingBits = 0;
137    a = ~a;
138    while (a & 0x8000) {
139      leadingBits++;
140      a <<= 1;
141    }
142  
143    return (leadingBits);
144  }
145  #endif
146  #endif
147  
148  #if !defined(FUNCTION_fixnormz_D)
fixnormz_D(LONG a)149  inline INT fixnormz_D(LONG a) {
150    INT leadingBits = 0;
151    a = ~a;
152    while (a & 0x80000000) {
153      leadingBits++;
154      a <<= 1;
155    }
156  
157    return (leadingBits);
158  }
159  #endif
160  
161  /*****************************************************************************
162  
163      functionname: fixnorm_D
164      description:  Count leading ones or zeros of operand val for dfract/LONG INT
165  values. Return this value minus 1. Return 0 if operand==0.
166  *****************************************************************************/
167  #if !defined(FUNCTION_fixnorm_S)
168  #ifdef FUNCTION_fixnorm_D
fixnorm_S(FIXP_SGL val)169  inline INT fixnorm_S(FIXP_SGL val) {
170    if (val == (FIXP_SGL)0) {
171      return 0;
172    }
173    return fixnorm_D((INT)(val)) - 16;
174  }
175  #else
fixnorm_S(FIXP_SGL val)176  inline INT fixnorm_S(FIXP_SGL val) {
177    INT leadingBits = 0;
178    if (val != (FIXP_SGL)0) {
179      if (val < (FIXP_SGL)0) {
180        val = ~val;
181      }
182      leadingBits = fixnormz_S(val) - 1;
183    }
184    return (leadingBits);
185  }
186  #endif
187  #endif
188  
189  #if !defined(FUNCTION_fixnorm_D)
fixnorm_D(FIXP_DBL val)190  inline INT fixnorm_D(FIXP_DBL val) {
191    INT leadingBits = 0;
192    if (val != (FIXP_DBL)0) {
193      if (val < (FIXP_DBL)0) {
194        val = ~val;
195      }
196      leadingBits = fixnormz_D(val) - 1;
197    }
198    return (leadingBits);
199  }
200  #endif
201  
202  #endif /* CLZ_H */
203