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