xref: /aosp_15_r20/external/aac/libSBRdec/src/sbr_rom.cpp (revision e54365361535b070c2db7374cec45c159c7d0e7a)
1*e5436536SAndroid Build Coastguard Worker /* -----------------------------------------------------------------------------
2*e5436536SAndroid Build Coastguard Worker Software License for The Fraunhofer FDK AAC Codec Library for Android
3*e5436536SAndroid Build Coastguard Worker 
4*e5436536SAndroid Build Coastguard Worker © Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
5*e5436536SAndroid Build Coastguard Worker Forschung e.V. All rights reserved.
6*e5436536SAndroid Build Coastguard Worker 
7*e5436536SAndroid Build Coastguard Worker  1.    INTRODUCTION
8*e5436536SAndroid Build Coastguard Worker The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software
9*e5436536SAndroid Build Coastguard Worker that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
10*e5436536SAndroid Build Coastguard Worker scheme for digital audio. This FDK AAC Codec software is intended to be used on
11*e5436536SAndroid Build Coastguard Worker a wide variety of Android devices.
12*e5436536SAndroid Build Coastguard Worker 
13*e5436536SAndroid Build Coastguard Worker AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient
14*e5436536SAndroid Build Coastguard Worker general perceptual audio codecs. AAC-ELD is considered the best-performing
15*e5436536SAndroid Build Coastguard Worker full-bandwidth communications codec by independent studies and is widely
16*e5436536SAndroid Build Coastguard Worker deployed. AAC has been standardized by ISO and IEC as part of the MPEG
17*e5436536SAndroid Build Coastguard Worker specifications.
18*e5436536SAndroid Build Coastguard Worker 
19*e5436536SAndroid Build Coastguard Worker Patent licenses for necessary patent claims for the FDK AAC Codec (including
20*e5436536SAndroid Build Coastguard Worker those of Fraunhofer) may be obtained through Via Licensing
21*e5436536SAndroid Build Coastguard Worker (www.vialicensing.com) or through the respective patent owners individually for
22*e5436536SAndroid Build Coastguard Worker the purpose of encoding or decoding bit streams in products that are compliant
23*e5436536SAndroid Build Coastguard Worker with the ISO/IEC MPEG audio standards. Please note that most manufacturers of
24*e5436536SAndroid Build Coastguard Worker Android devices already license these patent claims through Via Licensing or
25*e5436536SAndroid Build Coastguard Worker directly from the patent owners, and therefore FDK AAC Codec software may
26*e5436536SAndroid Build Coastguard Worker already be covered under those patent licenses when it is used for those
27*e5436536SAndroid Build Coastguard Worker licensed purposes only.
28*e5436536SAndroid Build Coastguard Worker 
29*e5436536SAndroid Build Coastguard Worker Commercially-licensed AAC software libraries, including floating-point versions
30*e5436536SAndroid Build Coastguard Worker with enhanced sound quality, are also available from Fraunhofer. Users are
31*e5436536SAndroid Build Coastguard Worker encouraged to check the Fraunhofer website for additional applications
32*e5436536SAndroid Build Coastguard Worker information and documentation.
33*e5436536SAndroid Build Coastguard Worker 
34*e5436536SAndroid Build Coastguard Worker 2.    COPYRIGHT LICENSE
35*e5436536SAndroid Build Coastguard Worker 
36*e5436536SAndroid Build Coastguard Worker Redistribution and use in source and binary forms, with or without modification,
37*e5436536SAndroid Build Coastguard Worker are permitted without payment of copyright license fees provided that you
38*e5436536SAndroid Build Coastguard Worker satisfy the following conditions:
39*e5436536SAndroid Build Coastguard Worker 
40*e5436536SAndroid Build Coastguard Worker You must retain the complete text of this software license in redistributions of
41*e5436536SAndroid Build Coastguard Worker the FDK AAC Codec or your modifications thereto in source code form.
42*e5436536SAndroid Build Coastguard Worker 
43*e5436536SAndroid Build Coastguard Worker You must retain the complete text of this software license in the documentation
44*e5436536SAndroid Build Coastguard Worker and/or other materials provided with redistributions of the FDK AAC Codec or
45*e5436536SAndroid Build Coastguard Worker your modifications thereto in binary form. You must make available free of
46*e5436536SAndroid Build Coastguard Worker charge copies of the complete source code of the FDK AAC Codec and your
47*e5436536SAndroid Build Coastguard Worker modifications thereto to recipients of copies in binary form.
48*e5436536SAndroid Build Coastguard Worker 
49*e5436536SAndroid Build Coastguard Worker The name of Fraunhofer may not be used to endorse or promote products derived
50*e5436536SAndroid Build Coastguard Worker from this library without prior written permission.
51*e5436536SAndroid Build Coastguard Worker 
52*e5436536SAndroid Build Coastguard Worker You may not charge copyright license fees for anyone to use, copy or distribute
53*e5436536SAndroid Build Coastguard Worker the FDK AAC Codec software or your modifications thereto.
54*e5436536SAndroid Build Coastguard Worker 
55*e5436536SAndroid Build Coastguard Worker Your modified versions of the FDK AAC Codec must carry prominent notices stating
56*e5436536SAndroid Build Coastguard Worker that you changed the software and the date of any change. For modified versions
57*e5436536SAndroid Build Coastguard Worker of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"
58*e5436536SAndroid Build Coastguard Worker must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK
59*e5436536SAndroid Build Coastguard Worker AAC Codec Library for Android."
60*e5436536SAndroid Build Coastguard Worker 
61*e5436536SAndroid Build Coastguard Worker 3.    NO PATENT LICENSE
62*e5436536SAndroid Build Coastguard Worker 
63*e5436536SAndroid Build Coastguard Worker NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without
64*e5436536SAndroid Build Coastguard Worker limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.
65*e5436536SAndroid Build Coastguard Worker Fraunhofer provides no warranty of patent non-infringement with respect to this
66*e5436536SAndroid Build Coastguard Worker software.
67*e5436536SAndroid Build Coastguard Worker 
68*e5436536SAndroid Build Coastguard Worker You may use this FDK AAC Codec software or modifications thereto only for
69*e5436536SAndroid Build Coastguard Worker purposes that are authorized by appropriate patent licenses.
70*e5436536SAndroid Build Coastguard Worker 
71*e5436536SAndroid Build Coastguard Worker 4.    DISCLAIMER
72*e5436536SAndroid Build Coastguard Worker 
73*e5436536SAndroid Build Coastguard Worker This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright
74*e5436536SAndroid Build Coastguard Worker holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
75*e5436536SAndroid Build Coastguard Worker including but not limited to the implied warranties of merchantability and
76*e5436536SAndroid Build Coastguard Worker fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
77*e5436536SAndroid Build Coastguard Worker CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,
78*e5436536SAndroid Build Coastguard Worker or consequential damages, including but not limited to procurement of substitute
79*e5436536SAndroid Build Coastguard Worker goods or services; loss of use, data, or profits, or business interruption,
80*e5436536SAndroid Build Coastguard Worker however caused and on any theory of liability, whether in contract, strict
81*e5436536SAndroid Build Coastguard Worker liability, or tort (including negligence), arising in any way out of the use of
82*e5436536SAndroid Build Coastguard Worker this software, even if advised of the possibility of such damage.
83*e5436536SAndroid Build Coastguard Worker 
84*e5436536SAndroid Build Coastguard Worker 5.    CONTACT INFORMATION
85*e5436536SAndroid Build Coastguard Worker 
86*e5436536SAndroid Build Coastguard Worker Fraunhofer Institute for Integrated Circuits IIS
87*e5436536SAndroid Build Coastguard Worker Attention: Audio and Multimedia Departments - FDK AAC LL
88*e5436536SAndroid Build Coastguard Worker Am Wolfsmantel 33
89*e5436536SAndroid Build Coastguard Worker 91058 Erlangen, Germany
90*e5436536SAndroid Build Coastguard Worker 
91*e5436536SAndroid Build Coastguard Worker www.iis.fraunhofer.de/amm
92*e5436536SAndroid Build Coastguard Worker [email protected]
93*e5436536SAndroid Build Coastguard Worker ----------------------------------------------------------------------------- */
94*e5436536SAndroid Build Coastguard Worker 
95*e5436536SAndroid Build Coastguard Worker /**************************** SBR decoder library ******************************
96*e5436536SAndroid Build Coastguard Worker 
97*e5436536SAndroid Build Coastguard Worker    Author(s):
98*e5436536SAndroid Build Coastguard Worker 
99*e5436536SAndroid Build Coastguard Worker    Description:
100*e5436536SAndroid Build Coastguard Worker 
101*e5436536SAndroid Build Coastguard Worker *******************************************************************************/
102*e5436536SAndroid Build Coastguard Worker 
103*e5436536SAndroid Build Coastguard Worker /*!
104*e5436536SAndroid Build Coastguard Worker   \file
105*e5436536SAndroid Build Coastguard Worker   \brief  Definition of constant tables
106*e5436536SAndroid Build Coastguard Worker 
107*e5436536SAndroid Build Coastguard Worker   This module contains most of the constant data that can be stored in ROM.
108*e5436536SAndroid Build Coastguard Worker */
109*e5436536SAndroid Build Coastguard Worker 
110*e5436536SAndroid Build Coastguard Worker #include "sbr_rom.h"
111*e5436536SAndroid Build Coastguard Worker 
112*e5436536SAndroid Build Coastguard Worker /*!
113*e5436536SAndroid Build Coastguard Worker   \name   StartStopBands
114*e5436536SAndroid Build Coastguard Worker   \brief  Start and stop subbands of the highband.
115*e5436536SAndroid Build Coastguard Worker 
116*e5436536SAndroid Build Coastguard Worker   k_o = startMin + offset[bs_start_freq];
117*e5436536SAndroid Build Coastguard Worker   startMin = {3000,4000,5000} * (128/FS_sbr) / FS_sbr < 32Khz, 32Khz <= FS_sbr <
118*e5436536SAndroid Build Coastguard Worker   64KHz, 64KHz <= FS_sbr The stop subband can also be calculated to save memory
119*e5436536SAndroid Build Coastguard Worker   by defining #CALC_STOP_BAND.
120*e5436536SAndroid Build Coastguard Worker */
121*e5436536SAndroid Build Coastguard Worker //@{
122*e5436536SAndroid Build Coastguard Worker /* tables were created with ../addon/octave/sbr_start_freq_table.m */
123*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_16[][16] = {
124*e5436536SAndroid Build Coastguard Worker     {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31},
125*e5436536SAndroid Build Coastguard Worker     {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}};
126*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_22[][16] = {
127*e5436536SAndroid Build Coastguard Worker     {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 30},
128*e5436536SAndroid Build Coastguard Worker     {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22}};
129*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_24[][16] = {
130*e5436536SAndroid Build Coastguard Worker     {11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 32},
131*e5436536SAndroid Build Coastguard Worker     {3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24}};
132*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_32[][16] = {
133*e5436536SAndroid Build Coastguard Worker     {10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 32},
134*e5436536SAndroid Build Coastguard Worker     {2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24}};
135*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_40[][16] = {
136*e5436536SAndroid Build Coastguard Worker     {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 28, 30, 32},
137*e5436536SAndroid Build Coastguard Worker     {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 23, 25}};
138*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_44[][16] = {
139*e5436536SAndroid Build Coastguard Worker     {8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 28, 32},
140*e5436536SAndroid Build Coastguard Worker     {2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 19, 22, 26}};
141*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_48[][16] = {
142*e5436536SAndroid Build Coastguard Worker     {7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 27, 31},
143*e5436536SAndroid Build Coastguard Worker     {1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 25}};
144*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_64[][16] = {
145*e5436536SAndroid Build Coastguard Worker     {6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23, 26, 30},
146*e5436536SAndroid Build Coastguard Worker     {1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 25}};
147*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_88[][16] = {
148*e5436536SAndroid Build Coastguard Worker     {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 23, 27, 31},
149*e5436536SAndroid Build Coastguard Worker     {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 20, 24, 28}};
150*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_192[16] = {
151*e5436536SAndroid Build Coastguard Worker     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 19, 23, 27};
152*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_176[16] = {
153*e5436536SAndroid Build Coastguard Worker     2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 20, 24, 28};
154*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_start_freq_128[16] = {
155*e5436536SAndroid Build Coastguard Worker     1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 25};
156*e5436536SAndroid Build Coastguard Worker 
157*e5436536SAndroid Build Coastguard Worker //@}
158*e5436536SAndroid Build Coastguard Worker 
159*e5436536SAndroid Build Coastguard Worker /*!
160*e5436536SAndroid Build Coastguard Worker   \name   Whitening
161*e5436536SAndroid Build Coastguard Worker   \brief  Coefficients for spectral whitening in the transposer
162*e5436536SAndroid Build Coastguard Worker */
163*e5436536SAndroid Build Coastguard Worker //@{
164*e5436536SAndroid Build Coastguard Worker /*! Assignment of whitening tuning depending on the crossover frequency */
165*e5436536SAndroid Build Coastguard Worker const USHORT FDK_sbrDecoder_sbr_whFactorsIndex[NUM_WHFACTOR_TABLE_ENTRIES] = {
166*e5436536SAndroid Build Coastguard Worker     0, 5000, 6000, 6500, 7000, 7500, 8000, 9000, 10000};
167*e5436536SAndroid Build Coastguard Worker 
168*e5436536SAndroid Build Coastguard Worker /*!
169*e5436536SAndroid Build Coastguard Worker   \brief Whithening levels tuning table
170*e5436536SAndroid Build Coastguard Worker 
171*e5436536SAndroid Build Coastguard Worker   With the current tuning, there are some redundant entries:
172*e5436536SAndroid Build Coastguard Worker 
173*e5436536SAndroid Build Coastguard Worker   \li  NUM_WHFACTOR_TABLE_ENTRIES can be reduced by 3,
174*e5436536SAndroid Build Coastguard Worker   \li  the first coloumn can be eliminated.
175*e5436536SAndroid Build Coastguard Worker 
176*e5436536SAndroid Build Coastguard Worker */
177*e5436536SAndroid Build Coastguard Worker const FIXP_DBL
178*e5436536SAndroid Build Coastguard Worker     FDK_sbrDecoder_sbr_whFactorsTable[NUM_WHFACTOR_TABLE_ENTRIES][6] = {
179*e5436536SAndroid Build Coastguard Worker         /* OFF_LEVEL, TRANSITION_LEVEL, LOW_LEVEL, MID_LEVEL, HIGH_LEVEL */
180*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
181*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* < 5000 */
182*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
183*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 5000 < 6000 */
184*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
185*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 6000 < 6500 */
186*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
187*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 6500 < 7000 */
188*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
189*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 7000 < 7500 */
190*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
191*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 7500 < 8000 */
192*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
193*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 8000 < 9000 */
194*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
195*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 9000 < 10000 */
196*e5436536SAndroid Build Coastguard Worker         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
197*e5436536SAndroid Build Coastguard Worker          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* > 10000 */
198*e5436536SAndroid Build Coastguard Worker };
199*e5436536SAndroid Build Coastguard Worker 
200*e5436536SAndroid Build Coastguard Worker //@}
201*e5436536SAndroid Build Coastguard Worker 
202*e5436536SAndroid Build Coastguard Worker /*!
203*e5436536SAndroid Build Coastguard Worker   \name   EnvAdj
204*e5436536SAndroid Build Coastguard Worker   \brief  Constants and tables used for envelope adjustment
205*e5436536SAndroid Build Coastguard Worker */
206*e5436536SAndroid Build Coastguard Worker //@{
207*e5436536SAndroid Build Coastguard Worker 
208*e5436536SAndroid Build Coastguard Worker /*! Mantissas of gain limits */
209*e5436536SAndroid Build Coastguard Worker const FIXP_SGL FDK_sbrDecoder_sbr_limGains_m[4] = {
210*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(0.5011932025f), /*!< -3 dB. Gain limit when limiterGains in
211*e5436536SAndroid Build Coastguard Worker                                       frameData is 0 */
212*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(
213*e5436536SAndroid Build Coastguard Worker         0.5f), /*!< 0 dB.  Gain limit when limiterGains in frameData is 1 */
214*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(0.9976346258f), /*!< +3 dB. Gain limit when limiterGains in
215*e5436536SAndroid Build Coastguard Worker                                       frameData is 2 */
216*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(0.6776263578f)  /*!< Inf.   Gain limit when limiterGains in
217*e5436536SAndroid Build Coastguard Worker                                       frameData is 3 */
218*e5436536SAndroid Build Coastguard Worker };
219*e5436536SAndroid Build Coastguard Worker 
220*e5436536SAndroid Build Coastguard Worker /*! Exponents of gain limits */
221*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_sbr_limGains_e[4] = {0, 1, 1, 67};
222*e5436536SAndroid Build Coastguard Worker 
223*e5436536SAndroid Build Coastguard Worker /*! Constants for calculating the number of limiter bands */
224*e5436536SAndroid Build Coastguard Worker const FIXP_SGL FDK_sbrDecoder_sbr_limiterBandsPerOctaveDiv4[4] = {
225*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(1.0f / 4.0f), FL2FXCONST_SGL(1.2f / 4.0f),
226*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(2.0f / 4.0f), FL2FXCONST_SGL(3.0f / 4.0f)};
227*e5436536SAndroid Build Coastguard Worker 
228*e5436536SAndroid Build Coastguard Worker /*! Constants for calculating the number of limiter bands */
229*e5436536SAndroid Build Coastguard Worker const FIXP_DBL FDK_sbrDecoder_sbr_limiterBandsPerOctaveDiv4_DBL[4] = {
230*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_DBL(1.0f / 4.0f), FL2FXCONST_DBL(1.2f / 4.0f),
231*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_DBL(2.0f / 4.0f), FL2FXCONST_DBL(3.0f / 4.0f)};
232*e5436536SAndroid Build Coastguard Worker 
233*e5436536SAndroid Build Coastguard Worker /*! Ratio of old gains and noise levels for the first 4 timeslots of an envelope
234*e5436536SAndroid Build Coastguard Worker  */
235*e5436536SAndroid Build Coastguard Worker const FIXP_SGL FDK_sbrDecoder_sbr_smoothFilter[4] = {
236*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(0.66666666666666f), FL2FXCONST_SGL(0.36516383427084f),
237*e5436536SAndroid Build Coastguard Worker     FL2FXCONST_SGL(0.14699433520835f), FL2FXCONST_SGL(0.03183050093751f)};
238*e5436536SAndroid Build Coastguard Worker 
239*e5436536SAndroid Build Coastguard Worker /*! Real and imaginary part of random noise which will be modulated
240*e5436536SAndroid Build Coastguard Worker   to the desired level. An accuracy of 13 bits is sufficient for these
241*e5436536SAndroid Build Coastguard Worker   random numbers.
242*e5436536SAndroid Build Coastguard Worker */
243*e5436536SAndroid Build Coastguard Worker const FIXP_SGL FDK_sbrDecoder_sbr_randomPhase[SBR_NF_NO_RANDOM_VAL][2] = {
244*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99948153278296f), FL2FXCONST_SGL(-0.59483417516607f)},
245*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97113454393991f), FL2FXCONST_SGL(-0.67528515225647f)},
246*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.14130051758487f), FL2FXCONST_SGL(-0.95090983575689f)},
247*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.47005496701697f), FL2FXCONST_SGL(-0.37340549728647f)},
248*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.80705063769351f), FL2FXCONST_SGL(0.29653668284408f)},
249*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.38981478896926f), FL2FXCONST_SGL(0.89572605717087f)},
250*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.01053049862020f), FL2FXCONST_SGL(-0.66959058036166f)},
251*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.91266367957293f), FL2FXCONST_SGL(-0.11522938140034f)},
252*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.54840422910309f), FL2FXCONST_SGL(0.75221367176302f)},
253*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.40009252867955f), FL2FXCONST_SGL(-0.98929400334421f)},
254*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99867974711855f), FL2FXCONST_SGL(-0.88147068645358f)},
255*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95531076805040f), FL2FXCONST_SGL(0.90908757154593f)},
256*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.45725933317144f), FL2FXCONST_SGL(-0.56716323646760f)},
257*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.72929675029275f), FL2FXCONST_SGL(-0.98008272727324f)},
258*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.75622801399036f), FL2FXCONST_SGL(0.20950329995549f)},
259*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.07069442601050f), FL2FXCONST_SGL(-0.78247898470706f)},
260*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.74496252926055f), FL2FXCONST_SGL(-0.91169004445807f)},
261*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.96440182703856f), FL2FXCONST_SGL(-0.94739918296622f)},
262*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.30424629369539f), FL2FXCONST_SGL(-0.49438267012479f)},
263*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.66565033746925f), FL2FXCONST_SGL(0.64652935542491f)},
264*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91697008020594f), FL2FXCONST_SGL(0.17514097332009f)},
265*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70774918760427f), FL2FXCONST_SGL(0.52548653416543f)},
266*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70051415345560f), FL2FXCONST_SGL(-0.45340028808763f)},
267*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99496513054797f), FL2FXCONST_SGL(-0.90071908066973f)},
268*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98164490790123f), FL2FXCONST_SGL(-0.77463155528697f)},
269*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.54671580548181f), FL2FXCONST_SGL(-0.02570928536004f)},
270*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.01689629065389f), FL2FXCONST_SGL(0.00287506445732f)},
271*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.86110349531986f), FL2FXCONST_SGL(0.42548583726477f)},
272*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98892980586032f), FL2FXCONST_SGL(-0.87881132267556f)},
273*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.51756627678691f), FL2FXCONST_SGL(0.66926784710139f)},
274*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99635026409640f), FL2FXCONST_SGL(-0.58107730574765f)},
275*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99969370862163f), FL2FXCONST_SGL(0.98369989360250f)},
276*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.55266258627194f), FL2FXCONST_SGL(0.59449057465591f)},
277*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.34581177741673f), FL2FXCONST_SGL(0.94879421061866f)},
278*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.62664209577999f), FL2FXCONST_SGL(-0.74402970906471f)},
279*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.77149701404973f), FL2FXCONST_SGL(-0.33883658042801f)},
280*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.91592244254432f), FL2FXCONST_SGL(0.03687901376713f)},
281*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.76285492357887f), FL2FXCONST_SGL(-0.91371867919124f)},
282*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.79788337195331f), FL2FXCONST_SGL(-0.93180971199849f)},
283*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.54473080610200f), FL2FXCONST_SGL(-0.11919206037186f)},
284*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.85639281671058f), FL2FXCONST_SGL(0.42429854760451f)},
285*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.92882402971423f), FL2FXCONST_SGL(0.27871809078609f)},
286*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.11708371046774f), FL2FXCONST_SGL(-0.99800843444966f)},
287*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.21356749817493f), FL2FXCONST_SGL(-0.90716295627033f)},
288*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.76191692573909f), FL2FXCONST_SGL(0.99768118356265f)},
289*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98111043100884f), FL2FXCONST_SGL(-0.95854459734407f)},
290*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.85913269895572f), FL2FXCONST_SGL(0.95766566168880f)},
291*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.93307242253692f), FL2FXCONST_SGL(0.49431757696466f)},
292*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.30485754879632f), FL2FXCONST_SGL(-0.70540034357529f)},
293*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.85289650925190f), FL2FXCONST_SGL(0.46766131791044f)},
294*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91328082618125f), FL2FXCONST_SGL(-0.99839597361769f)},
295*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.05890199924154f), FL2FXCONST_SGL(0.70741827819497f)},
296*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.28398686150148f), FL2FXCONST_SGL(0.34633555702188f)},
297*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95258164539612f), FL2FXCONST_SGL(-0.54893416026939f)},
298*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.78566324168507f), FL2FXCONST_SGL(-0.75568541079691f)},
299*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95789495447877f), FL2FXCONST_SGL(-0.20423194696966f)},
300*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.82411158711197f), FL2FXCONST_SGL(0.96654618432562f)},
301*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.65185446735885f), FL2FXCONST_SGL(-0.88734990773289f)},
302*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.93643603134666f), FL2FXCONST_SGL(0.99870790442385f)},
303*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91427159529618f), FL2FXCONST_SGL(-0.98290505544444f)},
304*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70395684036886f), FL2FXCONST_SGL(0.58796798221039f)},
305*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.00563771969365f), FL2FXCONST_SGL(0.61768196727244f)},
306*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.89065051931895f), FL2FXCONST_SGL(0.52783352697585f)},
307*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.68683707712762f), FL2FXCONST_SGL(0.80806944710339f)},
308*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.72165342518718f), FL2FXCONST_SGL(-0.69259857349564f)},
309*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.62928247730667f), FL2FXCONST_SGL(0.13627037407335f)},
310*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.29938434065514f), FL2FXCONST_SGL(-0.46051329682246f)},
311*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.91781958879280f), FL2FXCONST_SGL(-0.74012716684186f)},
312*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99298717043688f), FL2FXCONST_SGL(0.40816610075661f)},
313*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.82368298622748f), FL2FXCONST_SGL(-0.74036047190173f)},
314*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98512833386833f), FL2FXCONST_SGL(-0.99972330709594f)},
315*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95915368242257f), FL2FXCONST_SGL(-0.99237800466040f)},
316*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.21411126572790f), FL2FXCONST_SGL(-0.93424819052545f)},
317*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.68821476106884f), FL2FXCONST_SGL(-0.26892306315457f)},
318*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91851997982317f), FL2FXCONST_SGL(0.09358228901785f)},
319*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.96062769559127f), FL2FXCONST_SGL(0.36099095133739f)},
320*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.51646184922287f), FL2FXCONST_SGL(-0.71373332873917f)},
321*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.61130721139669f), FL2FXCONST_SGL(0.46950141175917f)},
322*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.47336129371299f), FL2FXCONST_SGL(-0.27333178296162f)},
323*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.90998308703519f), FL2FXCONST_SGL(0.96715662938132f)},
324*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.44844799194357f), FL2FXCONST_SGL(0.99211574628306f)},
325*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.66614891079092f), FL2FXCONST_SGL(0.96590176169121f)},
326*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.74922239129237f), FL2FXCONST_SGL(-0.89879858826087f)},
327*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99571588506485f), FL2FXCONST_SGL(0.52785521494349f)},
328*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97401082477563f), FL2FXCONST_SGL(-0.16855870075190f)},
329*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.72683747733879f), FL2FXCONST_SGL(-0.48060774432251f)},
330*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95432193457128f), FL2FXCONST_SGL(0.68849603408441f)},
331*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.72962208425191f), FL2FXCONST_SGL(-0.76608443420917f)},
332*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.85359479233537f), FL2FXCONST_SGL(0.88738125901579f)},
333*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.81412430338535f), FL2FXCONST_SGL(-0.97480768049637f)},
334*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.87930772356786f), FL2FXCONST_SGL(0.74748307690436f)},
335*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.71573331064977f), FL2FXCONST_SGL(-0.98570608178923f)},
336*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.83524300028228f), FL2FXCONST_SGL(0.83702537075163f)},
337*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.48086065601423f), FL2FXCONST_SGL(-0.98848504923531f)},
338*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97139128574778f), FL2FXCONST_SGL(0.80093621198236f)},
339*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.51992825347895f), FL2FXCONST_SGL(0.80247631400510f)},
340*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.00848591195325f), FL2FXCONST_SGL(-0.76670128000486f)},
341*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70294374303036f), FL2FXCONST_SGL(0.55359910445577f)},
342*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95894428168140f), FL2FXCONST_SGL(-0.43265504344783f)},
343*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97079252950321f), FL2FXCONST_SGL(0.09325857238682f)},
344*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.92404293670797f), FL2FXCONST_SGL(0.85507704027855f)},
345*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.69506469500450f), FL2FXCONST_SGL(0.98633412625459f)},
346*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.26559203620024f), FL2FXCONST_SGL(0.73314307966524f)},
347*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.28038443336943f), FL2FXCONST_SGL(0.14537913654427f)},
348*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.74138124825523f), FL2FXCONST_SGL(0.99310339807762f)},
349*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.01752795995444f), FL2FXCONST_SGL(-0.82616635284178f)},
350*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.55126773094930f), FL2FXCONST_SGL(-0.98898543862153f)},
351*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97960898850996f), FL2FXCONST_SGL(-0.94021446752851f)},
352*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99196309146936f), FL2FXCONST_SGL(0.67019017358456f)},
353*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.67684928085260f), FL2FXCONST_SGL(0.12631491649378f)},
354*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.09140039465500f), FL2FXCONST_SGL(-0.20537731453108f)},
355*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.71658965751996f), FL2FXCONST_SGL(-0.97788200391224f)},
356*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.81014640078925f), FL2FXCONST_SGL(0.53722648362443f)},
357*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.40616991671205f), FL2FXCONST_SGL(-0.26469008598449f)},
358*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.67680188682972f), FL2FXCONST_SGL(0.94502052337695f)},
359*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.86849774348749f), FL2FXCONST_SGL(-0.18333598647899f)},
360*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99500381284851f), FL2FXCONST_SGL(-0.02634122068550f)},
361*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.84329189340667f), FL2FXCONST_SGL(0.10406957462213f)},
362*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.09215968531446f), FL2FXCONST_SGL(0.69540012101253f)},
363*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99956173327206f), FL2FXCONST_SGL(-0.12358542001404f)},
364*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.79732779473535f), FL2FXCONST_SGL(-0.91582524736159f)},
365*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.96349973642406f), FL2FXCONST_SGL(0.96640458041000f)},
366*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.79942778496547f), FL2FXCONST_SGL(0.64323902822857f)},
367*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.11566039853896f), FL2FXCONST_SGL(0.28587846253726f)},
368*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.39922954514662f), FL2FXCONST_SGL(0.94129601616966f)},
369*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99089197565987f), FL2FXCONST_SGL(-0.92062625581587f)},
370*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.28631285179909f), FL2FXCONST_SGL(-0.91035047143603f)},
371*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.83302725605608f), FL2FXCONST_SGL(-0.67330410892084f)},
372*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95404443402072f), FL2FXCONST_SGL(0.49162765398743f)},
373*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.06449863579434f), FL2FXCONST_SGL(0.03250560813135f)},
374*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99575054486311f), FL2FXCONST_SGL(0.42389784469507f)},
375*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.65501142790847f), FL2FXCONST_SGL(0.82546114655624f)},
376*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.81254441908887f), FL2FXCONST_SGL(-0.51627234660629f)},
377*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99646369485481f), FL2FXCONST_SGL(0.84490533520752f)},
378*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.00287840603348f), FL2FXCONST_SGL(0.64768261158166f)},
379*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.70176989408455f), FL2FXCONST_SGL(-0.20453028573322f)},
380*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.96361882270190f), FL2FXCONST_SGL(0.40706967140989f)},
381*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.68883758192426f), FL2FXCONST_SGL(0.91338958840772f)},
382*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.34875585502238f), FL2FXCONST_SGL(0.71472290693300f)},
383*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91980081243087f), FL2FXCONST_SGL(0.66507455644919f)},
384*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99009048343881f), FL2FXCONST_SGL(0.85868021604848f)},
385*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.68865791458395f), FL2FXCONST_SGL(0.55660316809678f)},
386*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99484402129368f), FL2FXCONST_SGL(-0.20052559254934f)},
387*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.94214511408023f), FL2FXCONST_SGL(-0.99696425367461f)},
388*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.67414626793544f), FL2FXCONST_SGL(0.49548221180078f)},
389*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.47339353684664f), FL2FXCONST_SGL(-0.85904328834047f)},
390*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.14323651387360f), FL2FXCONST_SGL(-0.94145598222488f)},
391*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.29268293575672f), FL2FXCONST_SGL(0.05759224927952f)},
392*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.43793861458754f), FL2FXCONST_SGL(-0.78904969892724f)},
393*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.36345126374441f), FL2FXCONST_SGL(0.64874435357162f)},
394*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.08750604656825f), FL2FXCONST_SGL(0.97686944362527f)},
395*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.96495267812511f), FL2FXCONST_SGL(-0.53960305946511f)},
396*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.55526940659947f), FL2FXCONST_SGL(0.78891523734774f)},
397*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.73538215752630f), FL2FXCONST_SGL(0.96452072373404f)},
398*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.30889773919437f), FL2FXCONST_SGL(-0.80664389776860f)},
399*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.03574995626194f), FL2FXCONST_SGL(-0.97325616900959f)},
400*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98720684660488f), FL2FXCONST_SGL(0.48409133691962f)},
401*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.81689296271203f), FL2FXCONST_SGL(-0.90827703628298f)},
402*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.67866860118215f), FL2FXCONST_SGL(0.81284503870856f)},
403*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.15808569732583f), FL2FXCONST_SGL(0.85279555024382f)},
404*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.80723395114371f), FL2FXCONST_SGL(-0.24717418514605f)},
405*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.47788757329038f), FL2FXCONST_SGL(-0.46333147839295f)},
406*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.96367554763201f), FL2FXCONST_SGL(0.38486749303242f)},
407*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99143875716818f), FL2FXCONST_SGL(-0.24945277239809f)},
408*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.83081876925833f), FL2FXCONST_SGL(-0.94780851414763f)},
409*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.58753191905341f), FL2FXCONST_SGL(0.01290772389163f)},
410*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95538108220960f), FL2FXCONST_SGL(-0.85557052096538f)},
411*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.96490920476211f), FL2FXCONST_SGL(-0.64020970923102f)},
412*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97327101028521f), FL2FXCONST_SGL(0.12378128133110f)},
413*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91400366022124f), FL2FXCONST_SGL(0.57972471346930f)},
414*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99925837363824f), FL2FXCONST_SGL(0.71084847864067f)},
415*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.86875903507313f), FL2FXCONST_SGL(-0.20291699203564f)},
416*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.26240034795124f), FL2FXCONST_SGL(-0.68264554369108f)},
417*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.24664412953388f), FL2FXCONST_SGL(-0.87642273115183f)},
418*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.02416275806869f), FL2FXCONST_SGL(0.27192914288905f)},
419*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.82068619590515f), FL2FXCONST_SGL(-0.85087787994476f)},
420*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.88547373760759f), FL2FXCONST_SGL(-0.89636802901469f)},
421*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.18173078152226f), FL2FXCONST_SGL(-0.26152145156800f)},
422*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.09355476558534f), FL2FXCONST_SGL(0.54845123045604f)},
423*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.54668414224090f), FL2FXCONST_SGL(0.95980774020221f)},
424*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.37050990604091f), FL2FXCONST_SGL(-0.59910140383171f)},
425*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70373594262891f), FL2FXCONST_SGL(0.91227665827081f)},
426*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.34600785879594f), FL2FXCONST_SGL(-0.99441426144200f)},
427*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.68774481731008f), FL2FXCONST_SGL(-0.30238837956299f)},
428*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.26843291251234f), FL2FXCONST_SGL(0.83115668004362f)},
429*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.49072334613242f), FL2FXCONST_SGL(-0.45359708737775f)},
430*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.38975993093975f), FL2FXCONST_SGL(0.95515358099121f)},
431*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97757125224150f), FL2FXCONST_SGL(0.05305894580606f)},
432*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.17325552859616f), FL2FXCONST_SGL(-0.92770672250494f)},
433*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99948035025744f), FL2FXCONST_SGL(0.58285545563426f)},
434*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.64946246527458f), FL2FXCONST_SGL(0.68645507104960f)},
435*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.12016920576437f), FL2FXCONST_SGL(-0.57147322153312f)},
436*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.58947456517751f), FL2FXCONST_SGL(-0.34847132454388f)},
437*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.41815140454465f), FL2FXCONST_SGL(0.16276422358861f)},
438*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99885650204884f), FL2FXCONST_SGL(0.11136095490444f)},
439*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.56649614128386f), FL2FXCONST_SGL(-0.90494866361587f)},
440*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.94138021032330f), FL2FXCONST_SGL(0.35281916733018f)},
441*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.75725076534641f), FL2FXCONST_SGL(0.53650549640587f)},
442*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.20541973692630f), FL2FXCONST_SGL(-0.94435144369918f)},
443*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99980371023351f), FL2FXCONST_SGL(0.79835913565599f)},
444*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.29078277605775f), FL2FXCONST_SGL(0.35393777921520f)},
445*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.62858772103030f), FL2FXCONST_SGL(0.38765693387102f)},
446*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.43440904467688f), FL2FXCONST_SGL(-0.98546330463232f)},
447*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98298583762390f), FL2FXCONST_SGL(0.21021524625209f)},
448*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.19513029146934f), FL2FXCONST_SGL(-0.94239832251867f)},
449*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95476662400101f), FL2FXCONST_SGL(0.98364554179143f)},
450*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.93379635304810f), FL2FXCONST_SGL(-0.70881994583682f)},
451*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.85235410573336f), FL2FXCONST_SGL(-0.08342347966410f)},
452*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.86425093011245f), FL2FXCONST_SGL(-0.45795025029466f)},
453*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.38879779059045f), FL2FXCONST_SGL(0.97274429344593f)},
454*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.92045124735495f), FL2FXCONST_SGL(-0.62433652524220f)},
455*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.89162532251878f), FL2FXCONST_SGL(0.54950955570563f)},
456*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.36834336949252f), FL2FXCONST_SGL(0.96458298020975f)},
457*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.93891760988045f), FL2FXCONST_SGL(-0.89968353740388f)},
458*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99267657565094f), FL2FXCONST_SGL(-0.03757034316958f)},
459*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.94063471614176f), FL2FXCONST_SGL(0.41332338538963f)},
460*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99740224117019f), FL2FXCONST_SGL(-0.16830494996370f)},
461*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.35899413170555f), FL2FXCONST_SGL(-0.46633226649613f)},
462*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.05237237274947f), FL2FXCONST_SGL(-0.25640361602661f)},
463*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.36703583957424f), FL2FXCONST_SGL(-0.38653265641875f)},
464*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91653180367913f), FL2FXCONST_SGL(-0.30587628726597f)},
465*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.69000803499316f), FL2FXCONST_SGL(0.90952171386132f)},
466*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.38658751133527f), FL2FXCONST_SGL(0.99501571208985f)},
467*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.29250814029851f), FL2FXCONST_SGL(0.37444994344615f)},
468*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.60182204677608f), FL2FXCONST_SGL(0.86779651036123f)},
469*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97418588163217f), FL2FXCONST_SGL(0.96468523666475f)},
470*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.88461574003963f), FL2FXCONST_SGL(0.57508405276414f)},
471*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.05198933055162f), FL2FXCONST_SGL(0.21269661669964f)},
472*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.53499621979720f), FL2FXCONST_SGL(0.97241553731237f)},
473*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.49429560226497f), FL2FXCONST_SGL(0.98183865291903f)},
474*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98935142339139f), FL2FXCONST_SGL(-0.40249159006933f)},
475*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98081380091130f), FL2FXCONST_SGL(-0.72856895534041f)},
476*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.27338148835532f), FL2FXCONST_SGL(0.99950922447209f)},
477*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.06310802338302f), FL2FXCONST_SGL(-0.54539587529618f)},
478*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.20461677199539f), FL2FXCONST_SGL(-0.14209977628489f)},
479*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.66223843141647f), FL2FXCONST_SGL(0.72528579940326f)},
480*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.84764345483665f), FL2FXCONST_SGL(0.02372316801261f)},
481*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.89039863483811f), FL2FXCONST_SGL(0.88866581484602f)},
482*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95903308477986f), FL2FXCONST_SGL(0.76744927173873f)},
483*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.73504123909879f), FL2FXCONST_SGL(-0.03747203173192f)},
484*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.31744434966056f), FL2FXCONST_SGL(-0.36834111883652f)},
485*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.34110827591623f), FL2FXCONST_SGL(0.40211222807691f)},
486*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.47803883714199f), FL2FXCONST_SGL(-0.39423219786288f)},
487*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98299195879514f), FL2FXCONST_SGL(0.01989791390047f)},
488*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.30963073129751f), FL2FXCONST_SGL(-0.18076720599336f)},
489*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99992588229018f), FL2FXCONST_SGL(-0.26281872094289f)},
490*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.93149731080767f), FL2FXCONST_SGL(-0.98313162570490f)},
491*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99923472302773f), FL2FXCONST_SGL(-0.80142993767554f)},
492*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.26024169633417f), FL2FXCONST_SGL(-0.75999759855752f)},
493*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.35712514743563f), FL2FXCONST_SGL(0.19298963768574f)},
494*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99899084509530f), FL2FXCONST_SGL(0.74645156992493f)},
495*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.86557171579452f), FL2FXCONST_SGL(0.55593866696299f)},
496*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.33408042438752f), FL2FXCONST_SGL(0.86185953874709f)},
497*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99010736374716f), FL2FXCONST_SGL(0.04602397576623f)},
498*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.66694269691195f), FL2FXCONST_SGL(-0.91643611810148f)},
499*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.64016792079480f), FL2FXCONST_SGL(0.15649530836856f)},
500*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99570534804836f), FL2FXCONST_SGL(0.45844586038111f)},
501*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.63431466947340f), FL2FXCONST_SGL(0.21079116459234f)},
502*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.07706847005931f), FL2FXCONST_SGL(-0.89581437101329f)},
503*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98590090577724f), FL2FXCONST_SGL(0.88241721133981f)},
504*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.80099335254678f), FL2FXCONST_SGL(-0.36851896710853f)},
505*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.78368131392666f), FL2FXCONST_SGL(0.45506999802597f)},
506*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.08707806671691f), FL2FXCONST_SGL(0.80938994918745f)},
507*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.86811883080712f), FL2FXCONST_SGL(0.39347308654705f)},
508*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.39466529740375f), FL2FXCONST_SGL(-0.66809432114456f)},
509*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97875325649683f), FL2FXCONST_SGL(-0.72467840967746f)},
510*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95038560288864f), FL2FXCONST_SGL(0.89563219587625f)},
511*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.17005239424212f), FL2FXCONST_SGL(0.54683053962658f)},
512*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.76910792026848f), FL2FXCONST_SGL(-0.96226617549298f)},
513*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99743281016846f), FL2FXCONST_SGL(0.42697157037567f)},
514*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95437383549973f), FL2FXCONST_SGL(0.97002324109952f)},
515*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99578905365569f), FL2FXCONST_SGL(-0.54106826257356f)},
516*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.28058259829990f), FL2FXCONST_SGL(-0.85361420634036f)},
517*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.85256524470573f), FL2FXCONST_SGL(-0.64567607735589f)},
518*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.50608540105128f), FL2FXCONST_SGL(-0.65846015480300f)},
519*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97210735183243f), FL2FXCONST_SGL(-0.23095213067791f)},
520*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95424048234441f), FL2FXCONST_SGL(-0.99240147091219f)},
521*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.96926570524023f), FL2FXCONST_SGL(0.73775654896574f)},
522*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.30872163214726f), FL2FXCONST_SGL(0.41514960556126f)},
523*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.24523839572639f), FL2FXCONST_SGL(0.63206633394807f)},
524*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.33813265086024f), FL2FXCONST_SGL(-0.38661779441897f)},
525*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.05826828420146f), FL2FXCONST_SGL(-0.06940774188029f)},
526*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.22898461455054f), FL2FXCONST_SGL(0.97054853316316f)},
527*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.18509915019881f), FL2FXCONST_SGL(0.47565762892084f)},
528*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.10488238045009f), FL2FXCONST_SGL(-0.87769947402394f)},
529*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.71886586182037f), FL2FXCONST_SGL(0.78030982480538f)},
530*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99793873738654f), FL2FXCONST_SGL(0.90041310491497f)},
531*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.57563307626120f), FL2FXCONST_SGL(-0.91034337352097f)},
532*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.28909646383717f), FL2FXCONST_SGL(0.96307783970534f)},
533*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.42188998312520f), FL2FXCONST_SGL(0.48148651230437f)},
534*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.93335049681047f), FL2FXCONST_SGL(-0.43537023883588f)},
535*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97087374418267f), FL2FXCONST_SGL(0.86636445711364f)},
536*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.36722871286923f), FL2FXCONST_SGL(0.65291654172961f)},
537*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.81093025665696f), FL2FXCONST_SGL(0.08778370229363f)},
538*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.26240603062237f), FL2FXCONST_SGL(-0.92774095379098f)},
539*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.83996497984604f), FL2FXCONST_SGL(0.55839849139647f)},
540*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99909615720225f), FL2FXCONST_SGL(-0.96024605713970f)},
541*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.74649464155061f), FL2FXCONST_SGL(0.12144893606462f)},
542*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.74774595569805f), FL2FXCONST_SGL(-0.26898062008959f)},
543*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95781667469567f), FL2FXCONST_SGL(-0.79047927052628f)},
544*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95472308713099f), FL2FXCONST_SGL(-0.08588776019550f)},
545*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.48708332746299f), MAXVAL_SGL},
546*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.46332038247497f), FL2FXCONST_SGL(0.10964126185063f)},
547*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.76497004940162f), FL2FXCONST_SGL(0.89210929242238f)},
548*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.57397389364339f), FL2FXCONST_SGL(0.35289703373760f)},
549*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.75374316974495f), FL2FXCONST_SGL(0.96705214651335f)},
550*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.59174397685714f), FL2FXCONST_SGL(-0.89405370422752f)},
551*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.75087906691890f), FL2FXCONST_SGL(-0.29612672982396f)},
552*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98607857336230f), FL2FXCONST_SGL(0.25034911730023f)},
553*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.40761056640505f), FL2FXCONST_SGL(-0.90045573444695f)},
554*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.66929266740477f), FL2FXCONST_SGL(0.98629493401748f)},
555*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97463695257310f), FL2FXCONST_SGL(-0.00190223301301f)},
556*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.90145509409859f), FL2FXCONST_SGL(0.99781390365446f)},
557*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.87259289048043f), FL2FXCONST_SGL(0.99233587353666f)},
558*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.91529461447692f), FL2FXCONST_SGL(-0.15698707534206f)},
559*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.03305738840705f), FL2FXCONST_SGL(-0.37205262859764f)},
560*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.07223051368337f), FL2FXCONST_SGL(-0.88805001733626f)},
561*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99498012188353f), FL2FXCONST_SGL(0.97094358113387f)},
562*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.74904939500519f), FL2FXCONST_SGL(0.99985483641521f)},
563*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.04585228574211f), FL2FXCONST_SGL(0.99812337444082f)},
564*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.89054954257993f), FL2FXCONST_SGL(-0.31791913188064f)},
565*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.83782144651251f), FL2FXCONST_SGL(0.97637632547466f)},
566*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.33454804933804f), FL2FXCONST_SGL(-0.86231516800408f)},
567*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99707579362824f), FL2FXCONST_SGL(0.93237990079441f)},
568*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.22827527843994f), FL2FXCONST_SGL(0.18874759397997f)},
569*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.67248046289143f), FL2FXCONST_SGL(-0.03646211390569f)},
570*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.05146538187944f), FL2FXCONST_SGL(-0.92599700120679f)},
571*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99947295749905f), FL2FXCONST_SGL(0.93625229707912f)},
572*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.66951124390363f), FL2FXCONST_SGL(0.98905825623893f)},
573*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99602956559179f), FL2FXCONST_SGL(-0.44654715757688f)},
574*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.82104905483590f), FL2FXCONST_SGL(0.99540741724928f)},
575*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99186510988782f), FL2FXCONST_SGL(0.72023001312947f)},
576*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.65284592392918f), FL2FXCONST_SGL(0.52186723253637f)},
577*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.93885443798188f), FL2FXCONST_SGL(-0.74895312615259f)},
578*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.96735248738388f), FL2FXCONST_SGL(0.90891816978629f)},
579*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.22225968841114f), FL2FXCONST_SGL(0.57124029781228f)},
580*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.44132783753414f), FL2FXCONST_SGL(-0.92688840659280f)},
581*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.85694974219574f), FL2FXCONST_SGL(0.88844532719844f)},
582*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91783042091762f), FL2FXCONST_SGL(-0.46356892383970f)},
583*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.72556974415690f), FL2FXCONST_SGL(-0.99899555770747f)},
584*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99711581834508f), FL2FXCONST_SGL(0.58211560180426f)},
585*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.77638976371966f), FL2FXCONST_SGL(0.94321834873819f)},
586*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.07717324253925f), FL2FXCONST_SGL(0.58638399856595f)},
587*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.56049829194163f), FL2FXCONST_SGL(0.82522301569036f)},
588*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98398893639988f), FL2FXCONST_SGL(0.39467440420569f)},
589*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.47546946844938f), FL2FXCONST_SGL(0.68613044836811f)},
590*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.65675089314631f), FL2FXCONST_SGL(0.18331637134880f)},
591*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.03273375457980f), FL2FXCONST_SGL(-0.74933109564108f)},
592*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.38684144784738f), FL2FXCONST_SGL(0.51337349030406f)},
593*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97346267944545f), FL2FXCONST_SGL(-0.96549364384098f)},
594*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.53282156061942f), FL2FXCONST_SGL(-0.91423265091354f)},
595*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99817310731176f), FL2FXCONST_SGL(0.61133572482148f)},
596*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.50254500772635f), FL2FXCONST_SGL(-0.88829338134294f)},
597*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.01995873238855f), FL2FXCONST_SGL(0.85223515096765f)},
598*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99930381973804f), FL2FXCONST_SGL(0.94578896296649f)},
599*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.82907767600783f), FL2FXCONST_SGL(-0.06323442598128f)},
600*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.58660709669728f), FL2FXCONST_SGL(0.96840773806582f)},
601*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.17573736667267f), FL2FXCONST_SGL(-0.48166920859485f)},
602*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.83434292401346f), FL2FXCONST_SGL(-0.13023450646997f)},
603*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.05946491307025f), FL2FXCONST_SGL(0.20511047074866f)},
604*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.81505484574602f), FL2FXCONST_SGL(-0.94685947861369f)},
605*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.44976380954860f), FL2FXCONST_SGL(0.40894572671545f)},
606*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.89746474625671f), FL2FXCONST_SGL(0.99846578838537f)},
607*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.39677256130792f), FL2FXCONST_SGL(-0.74854668609359f)},
608*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.07588948563079f), FL2FXCONST_SGL(0.74096214084170f)},
609*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.76343198951445f), FL2FXCONST_SGL(0.41746629422634f)},
610*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.74490104699626f), FL2FXCONST_SGL(0.94725911744610f)},
611*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.64880119792759f), FL2FXCONST_SGL(0.41336660830571f)},
612*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.62319537462542f), FL2FXCONST_SGL(-0.93098313552599f)},
613*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.42215817594807f), FL2FXCONST_SGL(-0.07712787385208f)},
614*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.02704554141885f), FL2FXCONST_SGL(-0.05417518053666f)},
615*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.80001773566818f), FL2FXCONST_SGL(0.91542195141039f)},
616*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.79351832348816f), FL2FXCONST_SGL(-0.36208897989136f)},
617*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.63872359151636f), FL2FXCONST_SGL(0.08128252493444f)},
618*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.52890520960295f), FL2FXCONST_SGL(0.60048872455592f)},
619*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.74238552914587f), FL2FXCONST_SGL(0.04491915291044f)},
620*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99096131449250f), FL2FXCONST_SGL(-0.19451182854402f)},
621*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.80412329643109f), FL2FXCONST_SGL(-0.88513818199457f)},
622*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.64612616129736f), FL2FXCONST_SGL(0.72198674804544f)},
623*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.11657770663191f), FL2FXCONST_SGL(-0.83662833815041f)},
624*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95053182488101f), FL2FXCONST_SGL(-0.96939905138082f)},
625*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.62228872928622f), FL2FXCONST_SGL(0.82767262846661f)},
626*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.03004475787316f), FL2FXCONST_SGL(-0.99738896333384f)},
627*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97987214341034f), FL2FXCONST_SGL(0.36526129686425f)},
628*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99986980746200f), FL2FXCONST_SGL(-0.36021610299715f)},
629*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.89110648599879f), FL2FXCONST_SGL(-0.97894250343044f)},
630*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.10407960510582f), FL2FXCONST_SGL(0.77357793811619f)},
631*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.95964737821728f), FL2FXCONST_SGL(-0.35435818285502f)},
632*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.50843233159162f), FL2FXCONST_SGL(0.96107691266205f)},
633*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.17006334670615f), FL2FXCONST_SGL(-0.76854025314829f)},
634*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.25872675063360f), FL2FXCONST_SGL(0.99893303933816f)},
635*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.01115998681937f), FL2FXCONST_SGL(0.98496019742444f)},
636*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.79598702973261f), FL2FXCONST_SGL(0.97138411318894f)},
637*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99264708948101f), FL2FXCONST_SGL(-0.99542822402536f)},
638*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99829663752818f), FL2FXCONST_SGL(0.01877138824311f)},
639*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70801016548184f), FL2FXCONST_SGL(0.33680685948117f)},
640*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70467057786826f), FL2FXCONST_SGL(0.93272777501857f)},
641*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99846021905254f), FL2FXCONST_SGL(-0.98725746254433f)},
642*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.63364968534650f), FL2FXCONST_SGL(-0.16473594423746f)},
643*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.16258217500792f), FL2FXCONST_SGL(-0.95939125400802f)},
644*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.43645594360633f), FL2FXCONST_SGL(-0.94805030113284f)},
645*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99848471702976f), FL2FXCONST_SGL(0.96245166923809f)},
646*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.16796458968998f), FL2FXCONST_SGL(-0.98987511890470f)},
647*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.87979225745213f), FL2FXCONST_SGL(-0.71725725041680f)},
648*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.44183099021786f), FL2FXCONST_SGL(-0.93568974498761f)},
649*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.93310180125532f), FL2FXCONST_SGL(-0.99913308068246f)},
650*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.93941931782002f), FL2FXCONST_SGL(-0.56409379640356f)},
651*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.88590003188677f), FL2FXCONST_SGL(0.47624600491382f)},
652*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99971463703691f), FL2FXCONST_SGL(-0.83889954253462f)},
653*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.75376385639978f), FL2FXCONST_SGL(0.00814643438625f)},
654*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.93887685615875f), FL2FXCONST_SGL(-0.11284528204636f)},
655*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.85126435782309f), FL2FXCONST_SGL(0.52349251543547f)},
656*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.39701421446381f), FL2FXCONST_SGL(0.81779634174316f)},
657*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.37024464187437f), FL2FXCONST_SGL(-0.87071656222959f)},
658*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.36024828242896f), FL2FXCONST_SGL(0.34655735648287f)},
659*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.93388812549209f), FL2FXCONST_SGL(-0.84476541096429f)},
660*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.65298804552119f), FL2FXCONST_SGL(-0.18439575450921f)},
661*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.11960319006843f), FL2FXCONST_SGL(0.99899346780168f)},
662*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.94292565553160f), FL2FXCONST_SGL(0.83163906518293f)},
663*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.75081145286948f), FL2FXCONST_SGL(-0.35533223142265f)},
664*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.56721979748394f), FL2FXCONST_SGL(-0.24076836414499f)},
665*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.46857766746029f), FL2FXCONST_SGL(-0.30140233457198f)},
666*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97312313923635f), FL2FXCONST_SGL(-0.99548191630031f)},
667*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.38299976567017f), FL2FXCONST_SGL(0.98516909715427f)},
668*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.41025800019463f), FL2FXCONST_SGL(0.02116736935734f)},
669*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.09638062008048f), FL2FXCONST_SGL(0.04411984381457f)},
670*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.85283249275397f), FL2FXCONST_SGL(0.91475563922421f)},
671*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.88866808958124f), FL2FXCONST_SGL(-0.99735267083226f)},
672*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.48202429536989f), FL2FXCONST_SGL(-0.96805608884164f)},
673*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.27572582416567f), FL2FXCONST_SGL(0.58634753335832f)},
674*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.65889129659168f), FL2FXCONST_SGL(0.58835634138583f)},
675*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98838086953732f), FL2FXCONST_SGL(0.99994349600236f)},
676*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.20651349620689f), FL2FXCONST_SGL(0.54593044066355f)},
677*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.62126416356920f), FL2FXCONST_SGL(-0.59893681700392f)},
678*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.20320105410437f), FL2FXCONST_SGL(-0.86879180355289f)},
679*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97790548600584f), FL2FXCONST_SGL(0.96290806999242f)},
680*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.11112534735126f), FL2FXCONST_SGL(0.21484763313301f)},
681*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.41368337314182f), FL2FXCONST_SGL(0.28216837680365f)},
682*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.24133038992960f), FL2FXCONST_SGL(0.51294362630238f)},
683*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.66393410674885f), FL2FXCONST_SGL(-0.08249679629081f)},
684*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.53697829178752f), FL2FXCONST_SGL(-0.97649903936228f)},
685*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.97224737889348f), FL2FXCONST_SGL(0.22081333579837f)},
686*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.87392477144549f), FL2FXCONST_SGL(-0.12796173740361f)},
687*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.19050361015753f), FL2FXCONST_SGL(0.01602615387195f)},
688*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.46353441212724f), FL2FXCONST_SGL(-0.95249041539006f)},
689*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.07064096339021f), FL2FXCONST_SGL(-0.94479803205886f)},
690*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.92444085484466f), FL2FXCONST_SGL(-0.10457590187436f)},
691*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.83822593578728f), FL2FXCONST_SGL(-0.01695043208885f)},
692*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.75214681811150f), FL2FXCONST_SGL(-0.99955681042665f)},
693*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.42102998829339f), FL2FXCONST_SGL(0.99720941999394f)},
694*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.72094786237696f), FL2FXCONST_SGL(-0.35008961934255f)},
695*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.78843311019251f), FL2FXCONST_SGL(0.52851398958271f)},
696*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97394027897442f), FL2FXCONST_SGL(-0.26695944086561f)},
697*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99206463477946f), FL2FXCONST_SGL(-0.57010120849429f)},
698*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.76789609461795f), FL2FXCONST_SGL(-0.76519356730966f)},
699*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.82002421836409f), FL2FXCONST_SGL(-0.73530179553767f)},
700*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.81924990025724f), FL2FXCONST_SGL(0.99698425250579f)},
701*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.26719850873357f), FL2FXCONST_SGL(0.68903369776193f)},
702*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.43311260380975f), FL2FXCONST_SGL(0.85321815947490f)},
703*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99194979673836f), FL2FXCONST_SGL(0.91876249766422f)},
704*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.80692001248487f), FL2FXCONST_SGL(-0.32627540663214f)},
705*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.43080003649976f), FL2FXCONST_SGL(-0.21919095636638f)},
706*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.67709491937357f), FL2FXCONST_SGL(-0.95478075822906f)},
707*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.56151770568316f), FL2FXCONST_SGL(-0.70693811747778f)},
708*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.10831862810749f), FL2FXCONST_SGL(-0.08628837174592f)},
709*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91229417540436f), FL2FXCONST_SGL(-0.65987351408410f)},
710*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.48972893932274f), FL2FXCONST_SGL(0.56289246362686f)},
711*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.89033658689697f), FL2FXCONST_SGL(-0.71656563987082f)},
712*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.65269447475094f), FL2FXCONST_SGL(0.65916004833932f)},
713*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.67439478141121f), FL2FXCONST_SGL(-0.81684380846796f)},
714*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.47770832416973f), FL2FXCONST_SGL(-0.16789556203025f)},
715*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.99715979260878f), FL2FXCONST_SGL(-0.93565784007648f)},
716*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.90889593602546f), FL2FXCONST_SGL(0.62034397054380f)},
717*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.06618622548177f), FL2FXCONST_SGL(-0.23812217221359f)},
718*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99430266919728f), FL2FXCONST_SGL(0.18812555317553f)},
719*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97686402381843f), FL2FXCONST_SGL(-0.28664534366620f)},
720*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.94813650221268f), FL2FXCONST_SGL(-0.97506640027128f)},
721*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.95434497492853f), FL2FXCONST_SGL(-0.79607978501983f)},
722*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.49104783137150f), FL2FXCONST_SGL(0.32895214359663f)},
723*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99881175120751f), FL2FXCONST_SGL(0.88993983831354f)},
724*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.50449166760303f), FL2FXCONST_SGL(-0.85995072408434f)},
725*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.47162891065108f), FL2FXCONST_SGL(-0.18680204049569f)},
726*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.62081581361840f), FL2FXCONST_SGL(0.75000676218956f)},
727*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.43867015250812f), FL2FXCONST_SGL(0.99998069244322f)},
728*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.98630563232075f), FL2FXCONST_SGL(-0.53578899600662f)},
729*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.61510362277374f), FL2FXCONST_SGL(-0.89515019899997f)},
730*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.03841517601843f), FL2FXCONST_SGL(-0.69888815681179f)},
731*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.30102157304644f), FL2FXCONST_SGL(-0.07667808922205f)},
732*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.41881284182683f), FL2FXCONST_SGL(0.02188098922282f)},
733*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.86135454941237f), FL2FXCONST_SGL(0.98947480909359f)},
734*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.67226861393788f), FL2FXCONST_SGL(-0.13494389011014f)},
735*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.70737398842068f), FL2FXCONST_SGL(-0.76547349325992f)},
736*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.94044946687963f), FL2FXCONST_SGL(0.09026201157416f)},
737*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.82386352534327f), FL2FXCONST_SGL(0.08924768823676f)},
738*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.32070666698656f), FL2FXCONST_SGL(0.50143421908753f)},
739*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.57593163224487f), FL2FXCONST_SGL(-0.98966422921509f)},
740*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.36326018419965f), FL2FXCONST_SGL(0.07440243123228f)},
741*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99979044674350f), FL2FXCONST_SGL(-0.14130287347405f)},
742*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.92366023326932f), FL2FXCONST_SGL(-0.97979298068180f)},
743*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.44607178518598f), FL2FXCONST_SGL(-0.54233252016394f)},
744*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.44226800932956f), FL2FXCONST_SGL(0.71326756742752f)},
745*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.03671907158312f), FL2FXCONST_SGL(0.63606389366675f)},
746*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.52175424682195f), FL2FXCONST_SGL(-0.85396826735705f)},
747*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.94701139690956f), FL2FXCONST_SGL(-0.01826348194255f)},
748*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.98759606946049f), FL2FXCONST_SGL(0.82288714303073f)},
749*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.87434794743625f), FL2FXCONST_SGL(0.89399495655433f)},
750*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.93412041758744f), FL2FXCONST_SGL(0.41374052024363f)},
751*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.96063943315511f), FL2FXCONST_SGL(0.93116709541280f)},
752*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.97534253457837f), FL2FXCONST_SGL(0.86150930812689f)},
753*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.99642466504163f), FL2FXCONST_SGL(0.70190043427512f)},
754*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(-0.94705089665984f), FL2FXCONST_SGL(-0.29580042814306f)},
755*e5436536SAndroid Build Coastguard Worker     {FL2FXCONST_SGL(0.91599807087376f), FL2FXCONST_SGL(-0.98147830385781f)}};
756*e5436536SAndroid Build Coastguard Worker //@}
757*e5436536SAndroid Build Coastguard Worker 
758*e5436536SAndroid Build Coastguard Worker /*
759*e5436536SAndroid Build Coastguard Worker static const FIXP_SGL harmonicPhase [2][4] = {
760*e5436536SAndroid Build Coastguard Worker   { 1.0, 0.0, -1.0,  0.0},
761*e5436536SAndroid Build Coastguard Worker   { 0.0, 1.0,  0.0, -1.0}
762*e5436536SAndroid Build Coastguard Worker };
763*e5436536SAndroid Build Coastguard Worker */
764*e5436536SAndroid Build Coastguard Worker 
765*e5436536SAndroid Build Coastguard Worker /* tables for SBR and AAC LD */
766*e5436536SAndroid Build Coastguard Worker /* table for 8 time slot index */
767*e5436536SAndroid Build Coastguard Worker const int FDK_sbrDecoder_envelopeTable_8[8][5] = {
768*e5436536SAndroid Build Coastguard Worker     /* transientIndex  nEnv, tranIdx, shortEnv, border1, border2, ... */
769*e5436536SAndroid Build Coastguard Worker     /* borders from left to right side; -1 = not in use */
770*e5436536SAndroid Build Coastguard Worker     /*[|T-|------]*/ {2, 0, 0, 1, -1},
771*e5436536SAndroid Build Coastguard Worker     /*[|-T-|-----]*/ {2, 0, 0, 2, -1},
772*e5436536SAndroid Build Coastguard Worker     /*[--|T-|----]*/ {3, 1, 1, 2, 4},
773*e5436536SAndroid Build Coastguard Worker     /*[---|T-|---]*/ {3, 1, 1, 3, 5},
774*e5436536SAndroid Build Coastguard Worker     /*[----|T-|--]*/ {3, 1, 1, 4, 6},
775*e5436536SAndroid Build Coastguard Worker     /*[-----|T--|]*/ {2, 1, 1, 5, -1},
776*e5436536SAndroid Build Coastguard Worker     /*[------|T-|]*/ {2, 1, 1, 6, -1},
777*e5436536SAndroid Build Coastguard Worker     /*[-------|T|]*/ {2, 1, 1, 7, -1},
778*e5436536SAndroid Build Coastguard Worker };
779*e5436536SAndroid Build Coastguard Worker 
780*e5436536SAndroid Build Coastguard Worker /* table for 15 time slot index */
781*e5436536SAndroid Build Coastguard Worker const int FDK_sbrDecoder_envelopeTable_15[15][6] = {
782*e5436536SAndroid Build Coastguard Worker     /* transientIndex  nEnv, tranIdx, shortEnv, border1, border2, ... */
783*e5436536SAndroid Build Coastguard Worker     /* length from left to right side; -1 = not in use */
784*e5436536SAndroid Build Coastguard Worker     /*[|T---|------------]*/ {2, 0, 0, 4, -1, -1},
785*e5436536SAndroid Build Coastguard Worker     /*[|-T---|-----------]*/ {2, 0, 0, 5, -1, -1},
786*e5436536SAndroid Build Coastguard Worker     /*[|--|T---|---------]*/ {3, 1, 1, 2, 6, -1},
787*e5436536SAndroid Build Coastguard Worker     /*[|---|T---|--------]*/ {3, 1, 1, 3, 7, -1},
788*e5436536SAndroid Build Coastguard Worker     /*[|----|T---|-------]*/ {3, 1, 1, 4, 8, -1},
789*e5436536SAndroid Build Coastguard Worker     /*[|-----|T---|------]*/ {3, 1, 1, 5, 9, -1},
790*e5436536SAndroid Build Coastguard Worker     /*[|------|T---|-----]*/ {3, 1, 1, 6, 10, -1},
791*e5436536SAndroid Build Coastguard Worker     /*[|-------|T---|----]*/ {3, 1, 1, 7, 11, -1},
792*e5436536SAndroid Build Coastguard Worker     /*[|--------|T---|---]*/ {3, 1, 1, 8, 12, -1},
793*e5436536SAndroid Build Coastguard Worker     /*[|---------|T---|--]*/ {3, 1, 1, 9, 13, -1},
794*e5436536SAndroid Build Coastguard Worker     /*[|----------|T----|]*/ {2, 1, 1, 10, -1, -1},
795*e5436536SAndroid Build Coastguard Worker     /*[|-----------|T---|]*/ {2, 1, 1, 11, -1, -1},
796*e5436536SAndroid Build Coastguard Worker     /*[|------------|T--|]*/ {2, 1, 1, 12, -1, -1},
797*e5436536SAndroid Build Coastguard Worker     /*[|-------------|T-|]*/ {2, 1, 1, 13, -1, -1},
798*e5436536SAndroid Build Coastguard Worker     /*[|--------------|T|]*/ {2, 1, 1, 14, -1, -1},
799*e5436536SAndroid Build Coastguard Worker };
800*e5436536SAndroid Build Coastguard Worker 
801*e5436536SAndroid Build Coastguard Worker /* table for 16 time slot index */
802*e5436536SAndroid Build Coastguard Worker const int FDK_sbrDecoder_envelopeTable_16[16][6] = {
803*e5436536SAndroid Build Coastguard Worker     /* transientIndex  nEnv, tranIdx, shortEnv, border1, border2, ... */
804*e5436536SAndroid Build Coastguard Worker     /* length from left to right side; -1 = not in use */
805*e5436536SAndroid Build Coastguard Worker     /*[|T---|------------|]*/ {2, 0, 0, 4, -1, -1},
806*e5436536SAndroid Build Coastguard Worker     /*[|-T---|-----------|]*/ {2, 0, 0, 5, -1, -1},
807*e5436536SAndroid Build Coastguard Worker     /*[|--|T---|----------]*/ {3, 1, 1, 2, 6, -1},
808*e5436536SAndroid Build Coastguard Worker     /*[|---|T---|---------]*/ {3, 1, 1, 3, 7, -1},
809*e5436536SAndroid Build Coastguard Worker     /*[|----|T---|--------]*/ {3, 1, 1, 4, 8, -1},
810*e5436536SAndroid Build Coastguard Worker     /*[|-----|T---|-------]*/ {3, 1, 1, 5, 9, -1},
811*e5436536SAndroid Build Coastguard Worker     /*[|------|T---|------]*/ {3, 1, 1, 6, 10, -1},
812*e5436536SAndroid Build Coastguard Worker     /*[|-------|T---|-----]*/ {3, 1, 1, 7, 11, -1},
813*e5436536SAndroid Build Coastguard Worker     /*[|--------|T---|----]*/ {3, 1, 1, 8, 12, -1},
814*e5436536SAndroid Build Coastguard Worker     /*[|---------|T---|---]*/ {3, 1, 1, 9, 13, -1},
815*e5436536SAndroid Build Coastguard Worker     /*[|----------|T---|--]*/ {3, 1, 1, 10, 14, -1},
816*e5436536SAndroid Build Coastguard Worker     /*[|-----------|T----|]*/ {2, 1, 1, 11, -1, -1},
817*e5436536SAndroid Build Coastguard Worker     /*[|------------|T---|]*/ {2, 1, 1, 12, -1, -1},
818*e5436536SAndroid Build Coastguard Worker     /*[|-------------|T--|]*/ {2, 1, 1, 13, -1, -1},
819*e5436536SAndroid Build Coastguard Worker     /*[|--------------|T-|]*/ {2, 1, 1, 14, -1, -1},
820*e5436536SAndroid Build Coastguard Worker     /*[|---------------|T|]*/ {2, 1, 1, 15, -1, -1},
821*e5436536SAndroid Build Coastguard Worker };
822*e5436536SAndroid Build Coastguard Worker 
823*e5436536SAndroid Build Coastguard Worker /*!
824*e5436536SAndroid Build Coastguard Worker   \name FrameInfoDefaults
825*e5436536SAndroid Build Coastguard Worker 
826*e5436536SAndroid Build Coastguard Worker   Predefined envelope positions for the FIX-FIX case (static framing)
827*e5436536SAndroid Build Coastguard Worker */
828*e5436536SAndroid Build Coastguard Worker //@{
829*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info1_15 = {
830*e5436536SAndroid Build Coastguard Worker     0, 1, {0, 15, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, -1, 1, {0, 15, 0}, {0, 0, 0},
831*e5436536SAndroid Build Coastguard Worker     0, 0};
832*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info2_15 = {
833*e5436536SAndroid Build Coastguard Worker     0, 2, {0, 8, 15, 0, 0, 0}, {1, 1, 0, 0, 0}, -1, 2, {0, 8, 15}, {0, 0, 0},
834*e5436536SAndroid Build Coastguard Worker     0, 0};
835*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info4_15 = {
836*e5436536SAndroid Build Coastguard Worker     0, 4, {0, 4, 8, 12, 15, 0}, {1, 1, 1, 1, 0}, -1, 2, {0, 8, 15}, {0, 0, 0},
837*e5436536SAndroid Build Coastguard Worker     0, 0};
838*e5436536SAndroid Build Coastguard Worker #if (MAX_ENVELOPES >= 8)
839*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info8_15 = {
840*e5436536SAndroid Build Coastguard Worker     0,
841*e5436536SAndroid Build Coastguard Worker     8,
842*e5436536SAndroid Build Coastguard Worker     {0, 2, 4, 6, 8, 10, 12, 14, 15},
843*e5436536SAndroid Build Coastguard Worker     {1, 1, 1, 1, 1, 1, 1, 1},
844*e5436536SAndroid Build Coastguard Worker     -1,
845*e5436536SAndroid Build Coastguard Worker     2,
846*e5436536SAndroid Build Coastguard Worker     {0, 8, 15},
847*e5436536SAndroid Build Coastguard Worker     {0, 0, 0},
848*e5436536SAndroid Build Coastguard Worker     0,
849*e5436536SAndroid Build Coastguard Worker     0};
850*e5436536SAndroid Build Coastguard Worker #endif
851*e5436536SAndroid Build Coastguard Worker 
852*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info1_16 = {
853*e5436536SAndroid Build Coastguard Worker     0, 1, {0, 16, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, -1, 1, {0, 16, 0}, {0, 0, 0},
854*e5436536SAndroid Build Coastguard Worker     0, 0};
855*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info2_16 = {
856*e5436536SAndroid Build Coastguard Worker     0, 2, {0, 8, 16, 0, 0, 0}, {1, 1, 0, 0, 0}, -1, 2, {0, 8, 16}, {0, 0, 0},
857*e5436536SAndroid Build Coastguard Worker     0, 0};
858*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info4_16 = {
859*e5436536SAndroid Build Coastguard Worker     0, 4, {0, 4, 8, 12, 16, 0}, {1, 1, 1, 1, 0}, -1, 2, {0, 8, 16}, {0, 0, 0},
860*e5436536SAndroid Build Coastguard Worker     0, 0};
861*e5436536SAndroid Build Coastguard Worker 
862*e5436536SAndroid Build Coastguard Worker #if (MAX_ENVELOPES >= 8)
863*e5436536SAndroid Build Coastguard Worker const FRAME_INFO FDK_sbrDecoder_sbr_frame_info8_16 = {
864*e5436536SAndroid Build Coastguard Worker     0,
865*e5436536SAndroid Build Coastguard Worker     8,
866*e5436536SAndroid Build Coastguard Worker     {0, 2, 4, 6, 8, 10, 12, 14, 16},
867*e5436536SAndroid Build Coastguard Worker     {1, 1, 1, 1, 1, 1, 1, 1},
868*e5436536SAndroid Build Coastguard Worker     -1,
869*e5436536SAndroid Build Coastguard Worker     2,
870*e5436536SAndroid Build Coastguard Worker     {0, 8, 16},
871*e5436536SAndroid Build Coastguard Worker     {0, 0, 0},
872*e5436536SAndroid Build Coastguard Worker     0,
873*e5436536SAndroid Build Coastguard Worker     0};
874*e5436536SAndroid Build Coastguard Worker #endif
875*e5436536SAndroid Build Coastguard Worker 
876*e5436536SAndroid Build Coastguard Worker //@}
877*e5436536SAndroid Build Coastguard Worker 
878*e5436536SAndroid Build Coastguard Worker /*!
879*e5436536SAndroid Build Coastguard Worker   \name SBR_HuffmanTables
880*e5436536SAndroid Build Coastguard Worker 
881*e5436536SAndroid Build Coastguard Worker   SBR Huffman Table Overview:        \n
882*e5436536SAndroid Build Coastguard Worker                                      \n
883*e5436536SAndroid Build Coastguard Worker  o envelope level,   1.5 dB:         \n
884*e5436536SAndroid Build Coastguard Worker     1)  sbr_huffBook_EnvLevel10T[120][2]   \n
885*e5436536SAndroid Build Coastguard Worker     2)  sbr_huffBook_EnvLevel10F[120][2]   \n
886*e5436536SAndroid Build Coastguard Worker                                      \n
887*e5436536SAndroid Build Coastguard Worker  o envelope balance, 1.5 dB:         \n
888*e5436536SAndroid Build Coastguard Worker     3)  sbr_huffBook_EnvBalance10T[48][2]  \n
889*e5436536SAndroid Build Coastguard Worker     4)  sbr_huffBook_EnvBalance10F[48][2]  \n
890*e5436536SAndroid Build Coastguard Worker                                      \n
891*e5436536SAndroid Build Coastguard Worker  o envelope level,   3.0 dB:         \n
892*e5436536SAndroid Build Coastguard Worker     5)  sbr_huffBook_EnvLevel11T[62][2]    \n
893*e5436536SAndroid Build Coastguard Worker     6)  sbr_huffBook_EnvLevel11F[62][2]    \n
894*e5436536SAndroid Build Coastguard Worker                                      \n
895*e5436536SAndroid Build Coastguard Worker  o envelope balance, 3.0 dB:         \n
896*e5436536SAndroid Build Coastguard Worker     7)  sbr_huffBook_EnvBalance11T[24][2]  \n
897*e5436536SAndroid Build Coastguard Worker     8)  sbr_huffBook_EnvBalance11F[24][2]  \n
898*e5436536SAndroid Build Coastguard Worker                                      \n
899*e5436536SAndroid Build Coastguard Worker  o noise level,      3.0 dB:         \n
900*e5436536SAndroid Build Coastguard Worker     9)  sbr_huffBook_NoiseLevel11T[62][2]  \n
901*e5436536SAndroid Build Coastguard Worker     -) (sbr_huffBook_EnvLevel11F[62][2] is used for freq dir)\n
902*e5436536SAndroid Build Coastguard Worker                                      \n
903*e5436536SAndroid Build Coastguard Worker  o noise balance,    3.0 dB:         \n
904*e5436536SAndroid Build Coastguard Worker    10)  sbr_huffBook_NoiseBalance11T[24][2]\n
905*e5436536SAndroid Build Coastguard Worker     -) (sbr_huffBook_EnvBalance11F[24][2] is used for freq dir)\n
906*e5436536SAndroid Build Coastguard Worker                                      \n
907*e5436536SAndroid Build Coastguard Worker   (1.5 dB is never used for noise)
908*e5436536SAndroid Build Coastguard Worker 
909*e5436536SAndroid Build Coastguard Worker */
910*e5436536SAndroid Build Coastguard Worker //@{
911*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel10T[120][2] = {
912*e5436536SAndroid Build Coastguard Worker     {1, 2},       {-64, -65},   {3, 4},       {-63, -66},   {5, 6},
913*e5436536SAndroid Build Coastguard Worker     {-62, -67},   {7, 8},       {-61, -68},   {9, 10},      {-60, -69},
914*e5436536SAndroid Build Coastguard Worker     {11, 12},     {-59, -70},   {13, 14},     {-58, -71},   {15, 16},
915*e5436536SAndroid Build Coastguard Worker     {-57, -72},   {17, 18},     {-73, -56},   {19, 21},     {-74, 20},
916*e5436536SAndroid Build Coastguard Worker     {-55, -75},   {22, 26},     {23, 24},     {-54, -76},   {-77, 25},
917*e5436536SAndroid Build Coastguard Worker     {-53, -78},   {27, 34},     {28, 29},     {-52, -79},   {30, 31},
918*e5436536SAndroid Build Coastguard Worker     {-80, -51},   {32, 33},     {-83, -82},   {-81, -50},   {35, 57},
919*e5436536SAndroid Build Coastguard Worker     {36, 40},     {37, 38},     {-88, -84},   {-48, 39},    {-90, -85},
920*e5436536SAndroid Build Coastguard Worker     {41, 46},     {42, 43},     {-49, -87},   {44, 45},     {-89, -86},
921*e5436536SAndroid Build Coastguard Worker     {-124, -123}, {47, 50},     {48, 49},     {-122, -121}, {-120, -119},
922*e5436536SAndroid Build Coastguard Worker     {51, 54},     {52, 53},     {-118, -117}, {-116, -115}, {55, 56},
923*e5436536SAndroid Build Coastguard Worker     {-114, -113}, {-112, -111}, {58, 89},     {59, 74},     {60, 67},
924*e5436536SAndroid Build Coastguard Worker     {61, 64},     {62, 63},     {-110, -109}, {-108, -107}, {65, 66},
925*e5436536SAndroid Build Coastguard Worker     {-106, -105}, {-104, -103}, {68, 71},     {69, 70},     {-102, -101},
926*e5436536SAndroid Build Coastguard Worker     {-100, -99},  {72, 73},     {-98, -97},   {-96, -95},   {75, 82},
927*e5436536SAndroid Build Coastguard Worker     {76, 79},     {77, 78},     {-94, -93},   {-92, -91},   {80, 81},
928*e5436536SAndroid Build Coastguard Worker     {-47, -46},   {-45, -44},   {83, 86},     {84, 85},     {-43, -42},
929*e5436536SAndroid Build Coastguard Worker     {-41, -40},   {87, 88},     {-39, -38},   {-37, -36},   {90, 105},
930*e5436536SAndroid Build Coastguard Worker     {91, 98},     {92, 95},     {93, 94},     {-35, -34},   {-33, -32},
931*e5436536SAndroid Build Coastguard Worker     {96, 97},     {-31, -30},   {-29, -28},   {99, 102},    {100, 101},
932*e5436536SAndroid Build Coastguard Worker     {-27, -26},   {-25, -24},   {103, 104},   {-23, -22},   {-21, -20},
933*e5436536SAndroid Build Coastguard Worker     {106, 113},   {107, 110},   {108, 109},   {-19, -18},   {-17, -16},
934*e5436536SAndroid Build Coastguard Worker     {111, 112},   {-15, -14},   {-13, -12},   {114, 117},   {115, 116},
935*e5436536SAndroid Build Coastguard Worker     {-11, -10},   {-9, -8},     {118, 119},   {-7, -6},     {-5, -4}};
936*e5436536SAndroid Build Coastguard Worker 
937*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel10F[120][2] = {
938*e5436536SAndroid Build Coastguard Worker     {1, 2},       {-64, -65},   {3, 4},       {-63, -66},   {5, 6},
939*e5436536SAndroid Build Coastguard Worker     {-67, -62},   {7, 8},       {-68, -61},   {9, 10},      {-69, -60},
940*e5436536SAndroid Build Coastguard Worker     {11, 13},     {-70, 12},    {-59, -71},   {14, 16},     {-58, 15},
941*e5436536SAndroid Build Coastguard Worker     {-72, -57},   {17, 19},     {-73, 18},    {-56, -74},   {20, 23},
942*e5436536SAndroid Build Coastguard Worker     {21, 22},     {-55, -75},   {-54, -53},   {24, 27},     {25, 26},
943*e5436536SAndroid Build Coastguard Worker     {-76, -52},   {-77, -51},   {28, 31},     {29, 30},     {-50, -78},
944*e5436536SAndroid Build Coastguard Worker     {-79, -49},   {32, 36},     {33, 34},     {-48, -47},   {-80, 35},
945*e5436536SAndroid Build Coastguard Worker     {-81, -82},   {37, 47},     {38, 41},     {39, 40},     {-83, -46},
946*e5436536SAndroid Build Coastguard Worker     {-45, -84},   {42, 44},     {-85, 43},    {-44, -43},   {45, 46},
947*e5436536SAndroid Build Coastguard Worker     {-88, -87},   {-86, -90},   {48, 66},     {49, 56},     {50, 53},
948*e5436536SAndroid Build Coastguard Worker     {51, 52},     {-92, -42},   {-41, -39},   {54, 55},     {-105, -89},
949*e5436536SAndroid Build Coastguard Worker     {-38, -37},   {57, 60},     {58, 59},     {-94, -91},   {-40, -36},
950*e5436536SAndroid Build Coastguard Worker     {61, 63},     {-20, 62},    {-115, -110}, {64, 65},     {-108, -107},
951*e5436536SAndroid Build Coastguard Worker     {-101, -97},  {67, 89},     {68, 75},     {69, 72},     {70, 71},
952*e5436536SAndroid Build Coastguard Worker     {-95, -93},   {-34, -27},   {73, 74},     {-22, -17},   {-16, -124},
953*e5436536SAndroid Build Coastguard Worker     {76, 82},     {77, 79},     {-123, 78},   {-122, -121}, {80, 81},
954*e5436536SAndroid Build Coastguard Worker     {-120, -119}, {-118, -117}, {83, 86},     {84, 85},     {-116, -114},
955*e5436536SAndroid Build Coastguard Worker     {-113, -112}, {87, 88},     {-111, -109}, {-106, -104}, {90, 105},
956*e5436536SAndroid Build Coastguard Worker     {91, 98},     {92, 95},     {93, 94},     {-103, -102}, {-100, -99},
957*e5436536SAndroid Build Coastguard Worker     {96, 97},     {-98, -96},   {-35, -33},   {99, 102},    {100, 101},
958*e5436536SAndroid Build Coastguard Worker     {-32, -31},   {-30, -29},   {103, 104},   {-28, -26},   {-25, -24},
959*e5436536SAndroid Build Coastguard Worker     {106, 113},   {107, 110},   {108, 109},   {-23, -21},   {-19, -18},
960*e5436536SAndroid Build Coastguard Worker     {111, 112},   {-15, -14},   {-13, -12},   {114, 117},   {115, 116},
961*e5436536SAndroid Build Coastguard Worker     {-11, -10},   {-9, -8},     {118, 119},   {-7, -6},     {-5, -4}};
962*e5436536SAndroid Build Coastguard Worker 
963*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance10T[48][2] = {
964*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-63, 2},   {-65, 3},   {-62, 4},   {-66, 5},   {-61, 6},
965*e5436536SAndroid Build Coastguard Worker     {-67, 7},   {-60, 8},   {-68, 9},   {10, 11},   {-69, -59}, {12, 13},
966*e5436536SAndroid Build Coastguard Worker     {-70, -58}, {14, 28},   {15, 21},   {16, 18},   {-57, 17},  {-71, -56},
967*e5436536SAndroid Build Coastguard Worker     {19, 20},   {-88, -87}, {-86, -85}, {22, 25},   {23, 24},   {-84, -83},
968*e5436536SAndroid Build Coastguard Worker     {-82, -81}, {26, 27},   {-80, -79}, {-78, -77}, {29, 36},   {30, 33},
969*e5436536SAndroid Build Coastguard Worker     {31, 32},   {-76, -75}, {-74, -73}, {34, 35},   {-72, -55}, {-54, -53},
970*e5436536SAndroid Build Coastguard Worker     {37, 41},   {38, 39},   {-52, -51}, {-50, 40},  {-49, -48}, {42, 45},
971*e5436536SAndroid Build Coastguard Worker     {43, 44},   {-47, -46}, {-45, -44}, {46, 47},   {-43, -42}, {-41, -40}};
972*e5436536SAndroid Build Coastguard Worker 
973*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance10F[48][2] = {
974*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-61, 6},
975*e5436536SAndroid Build Coastguard Worker     {-67, 7},   {-68, 8},   {-60, 9},   {10, 11},   {-69, -59}, {-70, 12},
976*e5436536SAndroid Build Coastguard Worker     {-58, 13},  {14, 17},   {-71, 15},  {-57, 16},  {-56, -73}, {18, 32},
977*e5436536SAndroid Build Coastguard Worker     {19, 25},   {20, 22},   {-72, 21},  {-88, -87}, {23, 24},   {-86, -85},
978*e5436536SAndroid Build Coastguard Worker     {-84, -83}, {26, 29},   {27, 28},   {-82, -81}, {-80, -79}, {30, 31},
979*e5436536SAndroid Build Coastguard Worker     {-78, -77}, {-76, -75}, {33, 40},   {34, 37},   {35, 36},   {-74, -55},
980*e5436536SAndroid Build Coastguard Worker     {-54, -53}, {38, 39},   {-52, -51}, {-50, -49}, {41, 44},   {42, 43},
981*e5436536SAndroid Build Coastguard Worker     {-48, -47}, {-46, -45}, {45, 46},   {-44, -43}, {-42, 47},  {-41, -40}};
982*e5436536SAndroid Build Coastguard Worker 
983*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel11T[62][2] = {
984*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-67, 6},
985*e5436536SAndroid Build Coastguard Worker     {-61, 7},   {-68, 8},   {-60, 9},   {10, 11},   {-69, -59}, {12, 14},
986*e5436536SAndroid Build Coastguard Worker     {-70, 13},  {-71, -58}, {15, 18},   {16, 17},   {-72, -57}, {-73, -74},
987*e5436536SAndroid Build Coastguard Worker     {19, 22},   {-56, 20},  {-55, 21},  {-54, -77}, {23, 31},   {24, 25},
988*e5436536SAndroid Build Coastguard Worker     {-75, -76}, {26, 27},   {-78, -53}, {28, 29},   {-52, -95}, {-94, 30},
989*e5436536SAndroid Build Coastguard Worker     {-93, -92}, {32, 47},   {33, 40},   {34, 37},   {35, 36},   {-91, -90},
990*e5436536SAndroid Build Coastguard Worker     {-89, -88}, {38, 39},   {-87, -86}, {-85, -84}, {41, 44},   {42, 43},
991*e5436536SAndroid Build Coastguard Worker     {-83, -82}, {-81, -80}, {45, 46},   {-79, -51}, {-50, -49}, {48, 55},
992*e5436536SAndroid Build Coastguard Worker     {49, 52},   {50, 51},   {-48, -47}, {-46, -45}, {53, 54},   {-44, -43},
993*e5436536SAndroid Build Coastguard Worker     {-42, -41}, {56, 59},   {57, 58},   {-40, -39}, {-38, -37}, {60, 61},
994*e5436536SAndroid Build Coastguard Worker     {-36, -35}, {-34, -33}};
995*e5436536SAndroid Build Coastguard Worker 
996*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel11F[62][2] = {
997*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-67, 6},
998*e5436536SAndroid Build Coastguard Worker     {7, 8},     {-61, -68}, {9, 10},    {-60, -69}, {11, 12},   {-59, -70},
999*e5436536SAndroid Build Coastguard Worker     {13, 14},   {-58, -71}, {15, 16},   {-57, -72}, {17, 19},   {-56, 18},
1000*e5436536SAndroid Build Coastguard Worker     {-55, -73}, {20, 24},   {21, 22},   {-74, -54}, {-53, 23},  {-75, -76},
1001*e5436536SAndroid Build Coastguard Worker     {25, 30},   {26, 27},   {-52, -51}, {28, 29},   {-77, -79}, {-50, -49},
1002*e5436536SAndroid Build Coastguard Worker     {31, 39},   {32, 35},   {33, 34},   {-78, -46}, {-82, -88}, {36, 37},
1003*e5436536SAndroid Build Coastguard Worker     {-83, -48}, {-47, 38},  {-86, -85}, {40, 47},   {41, 44},   {42, 43},
1004*e5436536SAndroid Build Coastguard Worker     {-80, -44}, {-43, -42}, {45, 46},   {-39, -87}, {-84, -40}, {48, 55},
1005*e5436536SAndroid Build Coastguard Worker     {49, 52},   {50, 51},   {-95, -94}, {-93, -92}, {53, 54},   {-91, -90},
1006*e5436536SAndroid Build Coastguard Worker     {-89, -81}, {56, 59},   {57, 58},   {-45, -41}, {-38, -37}, {60, 61},
1007*e5436536SAndroid Build Coastguard Worker     {-36, -35}, {-34, -33}};
1008*e5436536SAndroid Build Coastguard Worker 
1009*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance11T[24][2] = {
1010*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-63, 2},   {-65, 3},   {-66, 4},   {-62, 5},  {-61, 6},
1011*e5436536SAndroid Build Coastguard Worker     {-67, 7},   {-68, 8},   {-60, 9},   {10, 16},   {11, 13},  {-69, 12},
1012*e5436536SAndroid Build Coastguard Worker     {-76, -75}, {14, 15},   {-74, -73}, {-72, -71}, {17, 20},  {18, 19},
1013*e5436536SAndroid Build Coastguard Worker     {-70, -59}, {-58, -57}, {21, 22},   {-56, -55}, {-54, 23}, {-53, -52}};
1014*e5436536SAndroid Build Coastguard Worker 
1015*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance11F[24][2] = {
1016*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-61, 6},
1017*e5436536SAndroid Build Coastguard Worker     {-67, 7},   {-68, 8},   {-60, 9},   {10, 13},   {-69, 11},  {-59, 12},
1018*e5436536SAndroid Build Coastguard Worker     {-58, -76}, {14, 17},   {15, 16},   {-75, -74}, {-73, -72}, {18, 21},
1019*e5436536SAndroid Build Coastguard Worker     {19, 20},   {-71, -70}, {-57, -56}, {22, 23},   {-55, -54}, {-53, -52}};
1020*e5436536SAndroid Build Coastguard Worker 
1021*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_NoiseLevel11T[62][2] = {
1022*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-63, 2},   {-65, 3},   {-66, 4},   {-62, 5},   {-67, 6},
1023*e5436536SAndroid Build Coastguard Worker     {7, 8},     {-61, -68}, {9, 30},    {10, 15},   {-60, 11},  {-69, 12},
1024*e5436536SAndroid Build Coastguard Worker     {13, 14},   {-59, -53}, {-95, -94}, {16, 23},   {17, 20},   {18, 19},
1025*e5436536SAndroid Build Coastguard Worker     {-93, -92}, {-91, -90}, {21, 22},   {-89, -88}, {-87, -86}, {24, 27},
1026*e5436536SAndroid Build Coastguard Worker     {25, 26},   {-85, -84}, {-83, -82}, {28, 29},   {-81, -80}, {-79, -78},
1027*e5436536SAndroid Build Coastguard Worker     {31, 46},   {32, 39},   {33, 36},   {34, 35},   {-77, -76}, {-75, -74},
1028*e5436536SAndroid Build Coastguard Worker     {37, 38},   {-73, -72}, {-71, -70}, {40, 43},   {41, 42},   {-58, -57},
1029*e5436536SAndroid Build Coastguard Worker     {-56, -55}, {44, 45},   {-54, -52}, {-51, -50}, {47, 54},   {48, 51},
1030*e5436536SAndroid Build Coastguard Worker     {49, 50},   {-49, -48}, {-47, -46}, {52, 53},   {-45, -44}, {-43, -42},
1031*e5436536SAndroid Build Coastguard Worker     {55, 58},   {56, 57},   {-41, -40}, {-39, -38}, {59, 60},   {-37, -36},
1032*e5436536SAndroid Build Coastguard Worker     {-35, 61},  {-34, -33}};
1033*e5436536SAndroid Build Coastguard Worker 
1034*e5436536SAndroid Build Coastguard Worker const SCHAR FDK_sbrDecoder_sbr_huffBook_NoiseBalance11T[24][2] = {
1035*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-65, 2},   {-63, 3},   {4, 9},     {-66, 5},   {-62, 6},
1036*e5436536SAndroid Build Coastguard Worker     {7, 8},     {-76, -75}, {-74, -73}, {10, 17},   {11, 14},   {12, 13},
1037*e5436536SAndroid Build Coastguard Worker     {-72, -71}, {-70, -69}, {15, 16},   {-68, -67}, {-61, -60}, {18, 21},
1038*e5436536SAndroid Build Coastguard Worker     {19, 20},   {-59, -58}, {-57, -56}, {22, 23},   {-55, -54}, {-53, -52}};
1039*e5436536SAndroid Build Coastguard Worker //@}
1040*e5436536SAndroid Build Coastguard Worker 
1041*e5436536SAndroid Build Coastguard Worker /*!
1042*e5436536SAndroid Build Coastguard Worker   \name  parametric stereo
1043*e5436536SAndroid Build Coastguard Worker   \brief constants used by the parametric stereo part of the decoder
1044*e5436536SAndroid Build Coastguard Worker 
1045*e5436536SAndroid Build Coastguard Worker */
1046*e5436536SAndroid Build Coastguard Worker 
1047*e5436536SAndroid Build Coastguard Worker /* constants used in psbitdec.cpp */
1048*e5436536SAndroid Build Coastguard Worker 
1049*e5436536SAndroid Build Coastguard Worker /* FIX_BORDER can have 0, 1, 2, 4 envelopes */
1050*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_aFixNoEnvDecode[4] = {0, 1, 2, 4};
1051*e5436536SAndroid Build Coastguard Worker 
1052*e5436536SAndroid Build Coastguard Worker /* IID & ICC Huffman codebooks */
1053*e5436536SAndroid Build Coastguard Worker const SCHAR aBookPsIidTimeDecode[28][2] = {
1054*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},  {-62, 5},   {-67, 6},
1055*e5436536SAndroid Build Coastguard Worker     {-61, 7},   {-68, 8},   {-60, 9},   {-69, 10}, {-59, 11},  {-70, 12},
1056*e5436536SAndroid Build Coastguard Worker     {-58, 13},  {-57, 14},  {-71, 15},  {16, 17},  {-56, -72}, {18, 21},
1057*e5436536SAndroid Build Coastguard Worker     {19, 20},   {-55, -78}, {-77, -76}, {22, 25},  {23, 24},   {-75, -74},
1058*e5436536SAndroid Build Coastguard Worker     {-73, -54}, {26, 27},   {-53, -52}, {-51, -50}};
1059*e5436536SAndroid Build Coastguard Worker 
1060*e5436536SAndroid Build Coastguard Worker const SCHAR aBookPsIidFreqDecode[28][2] = {
1061*e5436536SAndroid Build Coastguard Worker     {-64, 1},   {2, 3},     {-63, -65}, {4, 5},    {-62, -66}, {6, 7},
1062*e5436536SAndroid Build Coastguard Worker     {-61, -67}, {8, 9},     {-68, -60}, {-59, 10}, {-69, 11},  {-58, 12},
1063*e5436536SAndroid Build Coastguard Worker     {-70, 13},  {-71, 14},  {-57, 15},  {16, 17},  {-56, -72}, {18, 19},
1064*e5436536SAndroid Build Coastguard Worker     {-55, -54}, {20, 21},   {-73, -53}, {22, 24},  {-74, 23},  {-75, -78},
1065*e5436536SAndroid Build Coastguard Worker     {25, 26},   {-77, -76}, {-52, 27},  {-51, -50}};
1066*e5436536SAndroid Build Coastguard Worker 
1067*e5436536SAndroid Build Coastguard Worker const SCHAR aBookPsIccTimeDecode[14][2] = {
1068*e5436536SAndroid Build Coastguard Worker     {-64, 1}, {-63, 2}, {-65, 3},  {-62, 4},  {-66, 5},  {-61, 6},  {-67, 7},
1069*e5436536SAndroid Build Coastguard Worker     {-60, 8}, {-68, 9}, {-59, 10}, {-69, 11}, {-58, 12}, {-70, 13}, {-71, -57}};
1070*e5436536SAndroid Build Coastguard Worker 
1071*e5436536SAndroid Build Coastguard Worker const SCHAR aBookPsIccFreqDecode[14][2] = {
1072*e5436536SAndroid Build Coastguard Worker     {-64, 1}, {-63, 2}, {-65, 3},  {-62, 4},  {-66, 5},  {-61, 6},  {-67, 7},
1073*e5436536SAndroid Build Coastguard Worker     {-60, 8}, {-59, 9}, {-68, 10}, {-58, 11}, {-69, 12}, {-57, 13}, {-70, -71}};
1074*e5436536SAndroid Build Coastguard Worker 
1075*e5436536SAndroid Build Coastguard Worker /* IID-fine Huffman codebooks */
1076*e5436536SAndroid Build Coastguard Worker 
1077*e5436536SAndroid Build Coastguard Worker const SCHAR aBookPsIidFineTimeDecode[60][2] = {
1078*e5436536SAndroid Build Coastguard Worker     {1, -64},   {-63, 2},   {3, -65},   {4, 59},    {5, 7},     {6, -67},
1079*e5436536SAndroid Build Coastguard Worker     {-68, -60}, {-61, 8},   {9, 11},    {-59, 10},  {-70, -58}, {12, 41},
1080*e5436536SAndroid Build Coastguard Worker     {13, 20},   {14, -71},  {-55, 15},  {-53, 16},  {17, -77},  {18, 19},
1081*e5436536SAndroid Build Coastguard Worker     {-85, -84}, {-46, -45}, {-57, 21},  {22, 40},   {23, 29},   {-51, 24},
1082*e5436536SAndroid Build Coastguard Worker     {25, 26},   {-83, -82}, {27, 28},   {-90, -38}, {-92, -91}, {30, 37},
1083*e5436536SAndroid Build Coastguard Worker     {31, 34},   {32, 33},   {-35, -34}, {-37, -36}, {35, 36},   {-94, -93},
1084*e5436536SAndroid Build Coastguard Worker     {-89, -39}, {38, -79},  {39, -81},  {-88, -40}, {-74, -54}, {42, -69},
1085*e5436536SAndroid Build Coastguard Worker     {43, 44},   {-72, -56}, {45, 52},   {46, 50},   {47, -76},  {-49, 48},
1086*e5436536SAndroid Build Coastguard Worker     {-47, 49},  {-87, -41}, {-52, 51},  {-78, -50}, {53, -73},  {54, -75},
1087*e5436536SAndroid Build Coastguard Worker     {55, 57},   {56, -80},  {-86, -42}, {-48, 58},  {-44, -43}, {-66, -62}};
1088*e5436536SAndroid Build Coastguard Worker 
1089*e5436536SAndroid Build Coastguard Worker const SCHAR aBookPsIidFineFreqDecode[60][2] = {
1090*e5436536SAndroid Build Coastguard Worker     {1, -64},   {2, 4},     {3, -65},   {-66, -62}, {-63, 5},   {6, 7},
1091*e5436536SAndroid Build Coastguard Worker     {-67, -61}, {8, 9},     {-68, -60}, {10, 11},   {-69, -59}, {12, 13},
1092*e5436536SAndroid Build Coastguard Worker     {-70, -58}, {14, 18},   {-57, 15},  {16, -72},  {-54, 17},  {-75, -53},
1093*e5436536SAndroid Build Coastguard Worker     {19, 37},   {-56, 20},  {21, -73},  {22, 29},   {23, -76},  {24, -78},
1094*e5436536SAndroid Build Coastguard Worker     {25, 28},   {26, 27},   {-85, -43}, {-83, -45}, {-81, -47}, {-52, 30},
1095*e5436536SAndroid Build Coastguard Worker     {-50, 31},  {32, -79},  {33, 34},   {-82, -46}, {35, 36},   {-90, -89},
1096*e5436536SAndroid Build Coastguard Worker     {-92, -91}, {38, -71},  {-55, 39},  {40, -74},  {41, 50},   {42, -77},
1097*e5436536SAndroid Build Coastguard Worker     {-49, 43},  {44, 47},   {45, 46},   {-86, -42}, {-88, -87}, {48, 49},
1098*e5436536SAndroid Build Coastguard Worker     {-39, -38}, {-41, -40}, {-51, 51},  {52, 59},   {53, 56},   {54, 55},
1099*e5436536SAndroid Build Coastguard Worker     {-35, -34}, {-37, -36}, {57, 58},   {-94, -93}, {-84, -44}, {-80, -48}};
1100*e5436536SAndroid Build Coastguard Worker 
1101*e5436536SAndroid Build Coastguard Worker /* constants used in psdec.cpp */
1102*e5436536SAndroid Build Coastguard Worker 
1103*e5436536SAndroid Build Coastguard Worker /* the values of the following 3 tables are shiftet right by 1 ! */
1104*e5436536SAndroid Build Coastguard Worker const FIXP_DBL ScaleFactors[NO_IID_LEVELS] = {
1105*e5436536SAndroid Build Coastguard Worker 
1106*e5436536SAndroid Build Coastguard Worker     0x5a5ded00, 0x59cd0400, 0x58c29680, 0x564c2e80, 0x52a3d480,
1107*e5436536SAndroid Build Coastguard Worker     0x4c8be080, 0x46df3080, 0x40000000, 0x384ba5c0, 0x304c2980,
1108*e5436536SAndroid Build Coastguard Worker     0x24e9f640, 0x1b4a2940, 0x11b5c0a0, 0x0b4e2540, 0x0514ea90};
1109*e5436536SAndroid Build Coastguard Worker 
1110*e5436536SAndroid Build Coastguard Worker const FIXP_DBL ScaleFactorsFine[NO_IID_LEVELS_FINE] = {
1111*e5436536SAndroid Build Coastguard Worker 
1112*e5436536SAndroid Build Coastguard Worker     0x5a825c00, 0x5a821c00, 0x5a815100, 0x5a7ed000, 0x5a76e600, 0x5a5ded00,
1113*e5436536SAndroid Build Coastguard Worker     0x5a39b880, 0x59f1fd00, 0x5964d680, 0x5852ca00, 0x564c2e80, 0x54174480,
1114*e5436536SAndroid Build Coastguard Worker     0x50ea7500, 0x4c8be080, 0x46df3080, 0x40000000, 0x384ba5c0, 0x304c2980,
1115*e5436536SAndroid Build Coastguard Worker     0x288dd240, 0x217a2900, 0x1b4a2940, 0x13c5ece0, 0x0e2b0090, 0x0a178ef0,
1116*e5436536SAndroid Build Coastguard Worker     0x072ab798, 0x0514ea90, 0x02dc5944, 0x019bf87c, 0x00e7b173, 0x00824b8b,
1117*e5436536SAndroid Build Coastguard Worker     0x00494568};
1118*e5436536SAndroid Build Coastguard Worker const FIXP_DBL Alphas[NO_ICC_LEVELS] = {
1119*e5436536SAndroid Build Coastguard Worker 
1120*e5436536SAndroid Build Coastguard Worker     0x00000000, 0x0b6b5be0, 0x12485f80, 0x1da2fa40,
1121*e5436536SAndroid Build Coastguard Worker     0x2637ebc0, 0x3243f6c0, 0x466b7480, 0x6487ed80};
1122*e5436536SAndroid Build Coastguard Worker 
1123*e5436536SAndroid Build Coastguard Worker const UCHAR bins2groupMap20[NO_IID_GROUPS] = {
1124*e5436536SAndroid Build Coastguard Worker     0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
1125*e5436536SAndroid Build Coastguard Worker 
1126*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_aNoIidBins[3] = {
1127*e5436536SAndroid Build Coastguard Worker     NO_LOW_RES_IID_BINS, NO_MID_RES_IID_BINS, NO_HI_RES_IID_BINS};
1128*e5436536SAndroid Build Coastguard Worker 
1129*e5436536SAndroid Build Coastguard Worker const UCHAR FDK_sbrDecoder_aNoIccBins[3] = {
1130*e5436536SAndroid Build Coastguard Worker     NO_LOW_RES_ICC_BINS, NO_MID_RES_ICC_BINS, NO_HI_RES_ICC_BINS};
1131*e5436536SAndroid Build Coastguard Worker 
1132*e5436536SAndroid Build Coastguard Worker /************************************************************************/
1133*e5436536SAndroid Build Coastguard Worker /*!
1134*e5436536SAndroid Build Coastguard Worker    \brief   Create lookup tables for some arithmetic functions
1135*e5436536SAndroid Build Coastguard Worker 
1136*e5436536SAndroid Build Coastguard Worker    The tables would normally be defined as const arrays,
1137*e5436536SAndroid Build Coastguard Worker    but initialization at run time allows to specify their accuracy.
1138*e5436536SAndroid Build Coastguard Worker */
1139*e5436536SAndroid Build Coastguard Worker /************************************************************************/
1140*e5436536SAndroid Build Coastguard Worker 
1141*e5436536SAndroid Build Coastguard Worker /*   1/x-table:  (example for INV_TABLE_BITS 8)
1142*e5436536SAndroid Build Coastguard Worker 
1143*e5436536SAndroid Build Coastguard Worker      The table covers an input range from 0.5 to 1.0 with a step size of 1/512,
1144*e5436536SAndroid Build Coastguard Worker      starting at 0.5 + 1/512.
1145*e5436536SAndroid Build Coastguard Worker      Each table entry corresponds to an input interval starting 1/1024 below the
1146*e5436536SAndroid Build Coastguard Worker      exact value and ending 1/1024 above it.
1147*e5436536SAndroid Build Coastguard Worker 
1148*e5436536SAndroid Build Coastguard Worker      The table is actually a 0.5/x-table, so that the output range is again
1149*e5436536SAndroid Build Coastguard Worker      0.5...1.0 and the exponent of the result must be increased by 1.
1150*e5436536SAndroid Build Coastguard Worker 
1151*e5436536SAndroid Build Coastguard Worker      Input range           Index in table      result
1152*e5436536SAndroid Build Coastguard Worker      -------------------------------------------------------------------
1153*e5436536SAndroid Build Coastguard Worker      0.500000...0.500976          -            0.5 / 0.500000 = 1.000000
1154*e5436536SAndroid Build Coastguard Worker      0.500976...0.502930          0            0.5 / 0.501953 = 0.996109
1155*e5436536SAndroid Build Coastguard Worker      0.502930...0.500488          1            0.5 / 0.503906 = 0.992248
1156*e5436536SAndroid Build Coastguard Worker              ...
1157*e5436536SAndroid Build Coastguard Worker      0.999023...1.000000         255           0.5 / 1.000000 = 0.500000
1158*e5436536SAndroid Build Coastguard Worker 
1159*e5436536SAndroid Build Coastguard Worker        for (i=0; i<INV_TABLE_SIZE; i++) {
1160*e5436536SAndroid Build Coastguard Worker          d = 0.5f / ( 0.5f+(double)(i+1)/(INV_TABLE_SIZE*2) ) ;
1161*e5436536SAndroid Build Coastguard Worker          invTable[i] = FL2FX_SGL(d);
1162*e5436536SAndroid Build Coastguard Worker        }
1163*e5436536SAndroid Build Coastguard Worker */
1164*e5436536SAndroid Build Coastguard Worker const FIXP_SGL FDK_sbrDecoder_invTable[INV_TABLE_SIZE] = {
1165*e5436536SAndroid Build Coastguard Worker     0x7f80, 0x7f01, 0x7e83, 0x7e07, 0x7d8b, 0x7d11, 0x7c97, 0x7c1e, 0x7ba6,
1166*e5436536SAndroid Build Coastguard Worker     0x7b2f, 0x7ab9, 0x7a44, 0x79cf, 0x795c, 0x78e9, 0x7878, 0x7807, 0x7796,
1167*e5436536SAndroid Build Coastguard Worker     0x7727, 0x76b9, 0x764b, 0x75de, 0x7572, 0x7506, 0x749c, 0x7432, 0x73c9,
1168*e5436536SAndroid Build Coastguard Worker     0x7360, 0x72f9, 0x7292, 0x722c, 0x71c6, 0x7161, 0x70fd, 0x709a, 0x7037,
1169*e5436536SAndroid Build Coastguard Worker     0x6fd5, 0x6f74, 0x6f13, 0x6eb3, 0x6e54, 0x6df5, 0x6d97, 0x6d39, 0x6cdc,
1170*e5436536SAndroid Build Coastguard Worker     0x6c80, 0x6c24, 0x6bc9, 0x6b6f, 0x6b15, 0x6abc, 0x6a63, 0x6a0b, 0x69b3,
1171*e5436536SAndroid Build Coastguard Worker     0x695c, 0x6906, 0x68b0, 0x685a, 0x6806, 0x67b1, 0x675e, 0x670a, 0x66b8,
1172*e5436536SAndroid Build Coastguard Worker     0x6666, 0x6614, 0x65c3, 0x6572, 0x6522, 0x64d2, 0x6483, 0x6434, 0x63e6,
1173*e5436536SAndroid Build Coastguard Worker     0x6399, 0x634b, 0x62fe, 0x62b2, 0x6266, 0x621b, 0x61d0, 0x6185, 0x613b,
1174*e5436536SAndroid Build Coastguard Worker     0x60f2, 0x60a8, 0x6060, 0x6017, 0x5fcf, 0x5f88, 0x5f41, 0x5efa, 0x5eb4,
1175*e5436536SAndroid Build Coastguard Worker     0x5e6e, 0x5e28, 0x5de3, 0x5d9f, 0x5d5a, 0x5d17, 0x5cd3, 0x5c90, 0x5c4d,
1176*e5436536SAndroid Build Coastguard Worker     0x5c0b, 0x5bc9, 0x5b87, 0x5b46, 0x5b05, 0x5ac4, 0x5a84, 0x5a44, 0x5a05,
1177*e5436536SAndroid Build Coastguard Worker     0x59c6, 0x5987, 0x5949, 0x590a, 0x58cd, 0x588f, 0x5852, 0x5815, 0x57d9,
1178*e5436536SAndroid Build Coastguard Worker     0x579d, 0x5761, 0x5725, 0x56ea, 0x56af, 0x5675, 0x563b, 0x5601, 0x55c7,
1179*e5436536SAndroid Build Coastguard Worker     0x558e, 0x5555, 0x551c, 0x54e3, 0x54ab, 0x5473, 0x543c, 0x5405, 0x53ce,
1180*e5436536SAndroid Build Coastguard Worker     0x5397, 0x5360, 0x532a, 0x52f4, 0x52bf, 0x5289, 0x5254, 0x521f, 0x51eb,
1181*e5436536SAndroid Build Coastguard Worker     0x51b7, 0x5183, 0x514f, 0x511b, 0x50e8, 0x50b5, 0x5082, 0x5050, 0x501d,
1182*e5436536SAndroid Build Coastguard Worker     0x4feb, 0x4fba, 0x4f88, 0x4f57, 0x4f26, 0x4ef5, 0x4ec4, 0x4e94, 0x4e64,
1183*e5436536SAndroid Build Coastguard Worker     0x4e34, 0x4e04, 0x4dd5, 0x4da6, 0x4d77, 0x4d48, 0x4d19, 0x4ceb, 0x4cbd,
1184*e5436536SAndroid Build Coastguard Worker     0x4c8f, 0x4c61, 0x4c34, 0x4c07, 0x4bd9, 0x4bad, 0x4b80, 0x4b54, 0x4b27,
1185*e5436536SAndroid Build Coastguard Worker     0x4afb, 0x4acf, 0x4aa4, 0x4a78, 0x4a4d, 0x4a22, 0x49f7, 0x49cd, 0x49a2,
1186*e5436536SAndroid Build Coastguard Worker     0x4978, 0x494e, 0x4924, 0x48fa, 0x48d1, 0x48a7, 0x487e, 0x4855, 0x482d,
1187*e5436536SAndroid Build Coastguard Worker     0x4804, 0x47dc, 0x47b3, 0x478b, 0x4763, 0x473c, 0x4714, 0x46ed, 0x46c5,
1188*e5436536SAndroid Build Coastguard Worker     0x469e, 0x4677, 0x4651, 0x462a, 0x4604, 0x45de, 0x45b8, 0x4592, 0x456c,
1189*e5436536SAndroid Build Coastguard Worker     0x4546, 0x4521, 0x44fc, 0x44d7, 0x44b2, 0x448d, 0x4468, 0x4444, 0x441f,
1190*e5436536SAndroid Build Coastguard Worker     0x43fb, 0x43d7, 0x43b3, 0x4390, 0x436c, 0x4349, 0x4325, 0x4302, 0x42df,
1191*e5436536SAndroid Build Coastguard Worker     0x42bc, 0x4299, 0x4277, 0x4254, 0x4232, 0x4210, 0x41ee, 0x41cc, 0x41aa,
1192*e5436536SAndroid Build Coastguard Worker     0x4189, 0x4167, 0x4146, 0x4125, 0x4104, 0x40e3, 0x40c2, 0x40a1, 0x4081,
1193*e5436536SAndroid Build Coastguard Worker     0x4060, 0x4040, 0x4020, 0x4000};
1194