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