1 /****************************************************************************** 2 * * 3 * Copyright (C) 2023 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ***************************************************************************** 18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 */ 20 21 #include "ixheaac_type_def.h" 22 #include "iusace_cnst.h" 23 24 const WORD32 iusace_acelp_core_numbits_1024[NUM_ACELP_CORE_MODES] = { 25 (WORD32)(9.6 * 80), (WORD32)(11.2 * 80), (WORD32)(12.8 * 80), 26 (WORD32)(14.4 * 80), (WORD32)(16.0 * 80), (WORD32)(18.4 * 80)}; 27 28 const FLOAT32 iusace_sin_window_96[96] = { 29 0.008181F, 0.024541F, 0.040895F, 0.057237F, 0.073565F, 0.089872F, 0.106156F, 0.122411F, 30 0.138633F, 0.154818F, 0.170962F, 0.187060F, 0.203108F, 0.219101F, 0.235036F, 0.250908F, 31 0.266713F, 0.282446F, 0.298104F, 0.313682F, 0.329176F, 0.344581F, 0.359895F, 0.375112F, 32 0.390229F, 0.405241F, 0.420145F, 0.434936F, 0.449611F, 0.464166F, 0.478596F, 0.492898F, 33 0.507068F, 0.521103F, 0.534998F, 0.548749F, 0.562354F, 0.575808F, 0.589108F, 0.602251F, 34 0.615232F, 0.628048F, 0.640696F, 0.653173F, 0.665475F, 0.677598F, 0.689541F, 0.701298F, 35 0.712868F, 0.724247F, 0.735432F, 0.746420F, 0.757209F, 0.767795F, 0.778175F, 0.788346F, 36 0.798307F, 0.808054F, 0.817585F, 0.826897F, 0.835987F, 0.844854F, 0.853494F, 0.861906F, 37 0.870087F, 0.878035F, 0.885748F, 0.893224F, 0.900461F, 0.907457F, 0.914210F, 0.920718F, 38 0.926979F, 0.932993F, 0.938756F, 0.944269F, 0.949528F, 0.954533F, 0.959283F, 0.963776F, 39 0.968011F, 0.971987F, 0.975702F, 0.979156F, 0.982349F, 0.985278F, 0.987943F, 0.990344F, 40 0.992480F, 0.994350F, 0.995953F, 0.997290F, 0.998361F, 0.999163F, 0.999699F, 0.999967F}; 41 42 const FLOAT32 iusace_sin_window_128[128] = { 43 0.006136F, 0.018407F, 0.030675F, 0.042938F, 0.055195F, 0.067444F, 0.079682F, 0.091909F, 44 0.104122F, 0.116319F, 0.128498F, 0.140658F, 0.152797F, 0.164913F, 0.177004F, 0.189069F, 45 0.201105F, 0.213110F, 0.225084F, 0.237024F, 0.248928F, 0.260794F, 0.272621F, 0.284408F, 46 0.296151F, 0.307850F, 0.319502F, 0.331106F, 0.342661F, 0.354164F, 0.365613F, 0.377007F, 47 0.388345F, 0.399624F, 0.410843F, 0.422000F, 0.433094F, 0.444122F, 0.455084F, 0.465977F, 48 0.476799F, 0.487550F, 0.498228F, 0.508830F, 0.519356F, 0.529804F, 0.540172F, 0.550458F, 49 0.560662F, 0.570781F, 0.580814F, 0.590760F, 0.600617F, 0.610383F, 0.620057F, 0.629638F, 50 0.639124F, 0.648514F, 0.657807F, 0.667000F, 0.676093F, 0.685084F, 0.693971F, 0.702755F, 51 0.711432F, 0.720003F, 0.728464F, 0.736817F, 0.745058F, 0.753187F, 0.761202F, 0.769103F, 52 0.776888F, 0.784557F, 0.792107F, 0.799537F, 0.806848F, 0.814036F, 0.821103F, 0.828045F, 53 0.834863F, 0.841555F, 0.848120F, 0.854558F, 0.860867F, 0.867046F, 0.873095F, 0.879012F, 54 0.884797F, 0.890449F, 0.895966F, 0.901349F, 0.906596F, 0.911706F, 0.916679F, 0.921514F, 55 0.926210F, 0.930767F, 0.935184F, 0.939459F, 0.943593F, 0.947586F, 0.951435F, 0.955141F, 56 0.958703F, 0.962121F, 0.965394F, 0.968522F, 0.971504F, 0.974339F, 0.977028F, 0.979570F, 57 0.981964F, 0.984210F, 0.986308F, 0.988258F, 0.990058F, 0.991710F, 0.993212F, 0.994565F, 58 0.995767F, 0.996820F, 0.997723F, 0.998476F, 0.999078F, 0.999529F, 0.999831F, 0.999981F}; 59 60 const FLOAT32 iusace_sin_window_192[192] = { 61 0.004091F, 0.012272F, 0.020452F, 0.028630F, 0.036807F, 0.044982F, 0.053153F, 0.061321F, 62 0.069484F, 0.077643F, 0.085797F, 0.093945F, 0.102087F, 0.110222F, 0.118350F, 0.126469F, 63 0.134581F, 0.142683F, 0.150776F, 0.158858F, 0.166930F, 0.174991F, 0.183040F, 0.191077F, 64 0.199101F, 0.207111F, 0.215108F, 0.223091F, 0.231058F, 0.239010F, 0.246946F, 0.254866F, 65 0.262768F, 0.270653F, 0.278520F, 0.286368F, 0.294197F, 0.302006F, 0.309795F, 0.317563F, 66 0.325310F, 0.333036F, 0.340739F, 0.348419F, 0.356076F, 0.363709F, 0.371317F, 0.378901F, 67 0.386459F, 0.393992F, 0.401498F, 0.408978F, 0.416430F, 0.423854F, 0.431249F, 0.438616F, 68 0.445954F, 0.453261F, 0.460539F, 0.467785F, 0.475000F, 0.482184F, 0.489335F, 0.496453F, 69 0.503538F, 0.510590F, 0.517607F, 0.524590F, 0.531537F, 0.538449F, 0.545325F, 0.552164F, 70 0.558967F, 0.565732F, 0.572459F, 0.579148F, 0.585798F, 0.592409F, 0.598980F, 0.605511F, 71 0.612002F, 0.618451F, 0.624859F, 0.631226F, 0.637550F, 0.643832F, 0.650070F, 0.656265F, 72 0.662416F, 0.668522F, 0.674584F, 0.680601F, 0.686572F, 0.692497F, 0.698376F, 0.704208F, 73 0.709993F, 0.715731F, 0.721420F, 0.727062F, 0.732654F, 0.738198F, 0.743692F, 0.749136F, 74 0.754531F, 0.759874F, 0.765167F, 0.770409F, 0.775599F, 0.780737F, 0.785823F, 0.790857F, 75 0.795837F, 0.800764F, 0.805638F, 0.810457F, 0.815223F, 0.819933F, 0.824589F, 0.829190F, 76 0.833735F, 0.838225F, 0.842658F, 0.847035F, 0.851355F, 0.855618F, 0.859824F, 0.863973F, 77 0.868063F, 0.872096F, 0.876070F, 0.879986F, 0.883842F, 0.887640F, 0.891378F, 0.895056F, 78 0.898674F, 0.902233F, 0.905731F, 0.909168F, 0.912544F, 0.915860F, 0.919114F, 0.922306F, 79 0.925437F, 0.928506F, 0.931513F, 0.934457F, 0.937339F, 0.940158F, 0.942914F, 0.945607F, 80 0.948237F, 0.950803F, 0.953306F, 0.955745F, 0.958120F, 0.960431F, 0.962677F, 0.964859F, 81 0.966976F, 0.969029F, 0.971017F, 0.972940F, 0.974798F, 0.976590F, 0.978317F, 0.979979F, 82 0.981575F, 0.983105F, 0.984570F, 0.985969F, 0.987301F, 0.988568F, 0.989768F, 0.990903F, 83 0.991970F, 0.992972F, 0.993907F, 0.994775F, 0.995577F, 0.996313F, 0.996981F, 0.997583F, 84 0.998118F, 0.998586F, 0.998988F, 0.999322F, 0.999590F, 0.999791F, 0.999925F, 0.999992F}; 85 86 const FLOAT32 iusace_sin_window_256[256] = { 87 0.00306796F, 0.00920375F, 0.01533921F, 0.02147408F, 0.02760815F, 0.03374117F, 0.03987293F, 88 0.04600318F, 0.05213170F, 0.05825826F, 0.06438263F, 0.07050457F, 0.07662386F, 0.08274026F, 89 0.08885355F, 0.09496350F, 0.10106986F, 0.10717242F, 0.11327095F, 0.11936521F, 0.12545498F, 90 0.13154003F, 0.13762012F, 0.14369503F, 0.14976453F, 0.15582840F, 0.16188639F, 0.16793829F, 91 0.17398387F, 0.18002290F, 0.18605515F, 0.19208040F, 0.19809841F, 0.20410897F, 0.21011184F, 92 0.21610680F, 0.22209362F, 0.22807208F, 0.23404196F, 0.24000302F, 0.24595505F, 0.25189782F, 93 0.25783110F, 0.26375468F, 0.26966833F, 0.27557182F, 0.28146494F, 0.28734746F, 0.29321916F, 94 0.29907983F, 0.30492923F, 0.31076715F, 0.31659338F, 0.32240768F, 0.32820984F, 0.33399965F, 95 0.33977688F, 0.34554132F, 0.35129276F, 0.35703096F, 0.36275572F, 0.36846683F, 0.37416406F, 96 0.37984721F, 0.38551605F, 0.39117038F, 0.39680999F, 0.40243465F, 0.40804416F, 0.41363831F, 97 0.41921689F, 0.42477968F, 0.43032648F, 0.43585708F, 0.44137127F, 0.44686884F, 0.45234959F, 98 0.45781330F, 0.46325978F, 0.46868882F, 0.47410021F, 0.47949376F, 0.48486925F, 0.49022648F, 99 0.49556526F, 0.50088538F, 0.50618665F, 0.51146885F, 0.51673180F, 0.52197529F, 0.52719913F, 100 0.53240313F, 0.53758708F, 0.54275078F, 0.54789406F, 0.55301671F, 0.55811853F, 0.56319934F, 101 0.56825895F, 0.57329717F, 0.57831380F, 0.58330865F, 0.58828155F, 0.59323230F, 0.59816071F, 102 0.60306660F, 0.60794978F, 0.61281008F, 0.61764731F, 0.62246128F, 0.62725182F, 0.63201874F, 103 0.63676186F, 0.64148101F, 0.64617601F, 0.65084668F, 0.65549285F, 0.66011434F, 0.66471098F, 104 0.66928259F, 0.67382900F, 0.67835004F, 0.68284555F, 0.68731534F, 0.69175926F, 0.69617713F, 105 0.70056879F, 0.70493408F, 0.70927283F, 0.71358487F, 0.71787005F, 0.72212819F, 0.72635916F, 106 0.73056277F, 0.73473888F, 0.73888732F, 0.74300795F, 0.74710061F, 0.75116513F, 0.75520138F, 107 0.75920919F, 0.76318842F, 0.76713891F, 0.77106052F, 0.77495311F, 0.77881651F, 0.78265060F, 108 0.78645521F, 0.79023022F, 0.79397548F, 0.79769084F, 0.80137617F, 0.80503133F, 0.80865618F, 109 0.81225059F, 0.81581441F, 0.81934752F, 0.82284978F, 0.82632106F, 0.82976123F, 0.83317016F, 110 0.83654773F, 0.83989379F, 0.84320824F, 0.84649094F, 0.84974177F, 0.85296060F, 0.85614733F, 111 0.85930182F, 0.86242396F, 0.86551362F, 0.86857071F, 0.87159509F, 0.87458665F, 0.87754529F, 112 0.88047089F, 0.88336334F, 0.88622253F, 0.88904836F, 0.89184071F, 0.89459949F, 0.89732458F, 113 0.90001589F, 0.90267332F, 0.90529676F, 0.90788612F, 0.91044129F, 0.91296219F, 0.91544872F, 114 0.91790078F, 0.92031828F, 0.92270113F, 0.92504924F, 0.92736253F, 0.92964090F, 0.93188427F, 115 0.93409255F, 0.93626567F, 0.93840353F, 0.94050607F, 0.94257320F, 0.94460484F, 0.94660091F, 116 0.94856135F, 0.95048607F, 0.95237501F, 0.95422810F, 0.95604525F, 0.95782641F, 0.95957151F, 117 0.96128049F, 0.96295327F, 0.96458979F, 0.96619000F, 0.96775384F, 0.96928124F, 0.97077214F, 118 0.97222650F, 0.97364425F, 0.97502535F, 0.97636973F, 0.97767736F, 0.97894818F, 0.98018214F, 119 0.98137919F, 0.98253930F, 0.98366242F, 0.98474850F, 0.98579751F, 0.98680940F, 0.98778414F, 120 0.98872169F, 0.98962202F, 0.99048508F, 0.99131086F, 0.99209931F, 0.99285041F, 0.99356414F, 121 0.99424045F, 0.99487933F, 0.99548076F, 0.99604470F, 0.99657115F, 0.99706007F, 0.99751146F, 122 0.99792529F, 0.99830154F, 0.99864022F, 0.99894129F, 0.99920476F, 0.99943060F, 0.99961882F, 123 0.99976941F, 0.99988235F, 0.99995764F, 0.99999529F}; 124 125 const FLOAT32 iusace_lsf_init[ORDER] = {375.0, 750.0, 1125.0, 1500.0, 1875.0, 2250.0, 126 2625.0, 3000.0, 3375.0, 3750.0, 4125.0, 4500.0, 127 4875.0, 5250.0, 5625.0, 6000.0}; 128 129 const FLOAT32 iusace_ispold_init[ORDER] = {0.982973f, 0.932472f, 0.850217f, 0.739009f, 130 0.602635f, 0.445738f, 0.273663f, 0.092268f, 131 -0.092268f, -0.273663f, -0.445738f, -0.602635f, 132 -0.739009f, -0.850217f, -0.932472f, -0.982973f}; 133 134 const FLOAT32 iusace_cos_window_512[512] = { 135 0.003067957f, 0.009203754f, 0.015339206f, 0.021474080f, 0.027608145f, 0.033741172f, 136 0.039872929f, 0.046003181f, 0.052131705f, 0.058258265f, 0.064382628f, 0.070504576f, 137 0.076623864f, 0.082740262f, 0.088853553f, 0.094963498f, 0.101069860f, 0.107172422f, 138 0.113270953f, 0.119365215f, 0.125454977f, 0.131540030f, 0.137620121f, 0.143695027f, 139 0.149764538f, 0.155828401f, 0.161886394f, 0.167938292f, 0.173983872f, 0.180022895f, 140 0.186055154f, 0.192080393f, 0.198098406f, 0.204108968f, 0.210111842f, 0.216106802f, 141 0.222093627f, 0.228072077f, 0.234041959f, 0.240003020f, 0.245955050f, 0.251897812f, 142 0.257831097f, 0.263754666f, 0.269668311f, 0.275571823f, 0.281464934f, 0.287347466f, 143 0.293219149f, 0.299079835f, 0.304929227f, 0.310767144f, 0.316593379f, 0.322407693f, 144 0.328209847f, 0.333999664f, 0.339776874f, 0.345541328f, 0.351292759f, 0.357030958f, 145 0.362755716f, 0.368466824f, 0.374164075f, 0.379847199f, 0.385516047f, 0.391170382f, 146 0.396809995f, 0.402434647f, 0.408044159f, 0.413638324f, 0.419216901f, 0.424779683f, 147 0.430326492f, 0.435857087f, 0.441371262f, 0.446868837f, 0.452349573f, 0.457813293f, 148 0.463259786f, 0.468688816f, 0.474100202f, 0.479493767f, 0.484869242f, 0.490226477f, 149 0.495565265f, 0.500885367f, 0.506186664f, 0.511468828f, 0.516731799f, 0.521975279f, 150 0.527199149f, 0.532403111f, 0.537587047f, 0.542750776f, 0.547894061f, 0.553016722f, 151 0.558118522f, 0.563199341f, 0.568258941f, 0.573297143f, 0.578313768f, 0.583308637f, 152 0.588281572f, 0.593232274f, 0.598160684f, 0.603066623f, 0.607949793f, 0.612810075f, 153 0.617647290f, 0.622461259f, 0.627251804f, 0.632018745f, 0.636761844f, 0.641481042f, 154 0.646176040f, 0.650846660f, 0.655492842f, 0.660114348f, 0.664710999f, 0.669282615f, 155 0.673829019f, 0.678350031f, 0.682845533f, 0.687315345f, 0.691759229f, 0.696177125f, 156 0.700568795f, 0.704934061f, 0.709272802f, 0.713584840f, 0.717870057f, 0.722128212f, 157 0.726359129f, 0.730562747f, 0.734738886f, 0.738887310f, 0.743007958f, 0.747100592f, 158 0.751165152f, 0.755201399f, 0.759209216f, 0.763188422f, 0.767138898f, 0.771060526f, 159 0.774953127f, 0.778816521f, 0.782650590f, 0.786455214f, 0.790230215f, 0.793975472f, 160 0.797690868f, 0.801376164f, 0.805031359f, 0.808656156f, 0.812250614f, 0.815814435f, 161 0.819347501f, 0.822849810f, 0.826321065f, 0.829761207f, 0.833170176f, 0.836547732f, 162 0.839893818f, 0.843208253f, 0.846490920f, 0.849741757f, 0.852960587f, 0.856147349f, 163 0.859301805f, 0.862423956f, 0.865513623f, 0.868570685f, 0.871595085f, 0.874586642f, 164 0.877545297f, 0.880470872f, 0.883363366f, 0.886222541f, 0.889048338f, 0.891840696f, 165 0.894599497f, 0.897324562f, 0.900015891f, 0.902673304f, 0.905296743f, 0.907886088f, 166 0.910441279f, 0.912962198f, 0.915448725f, 0.917900801f, 0.920318305f, 0.922701120f, 167 0.925049245f, 0.927362502f, 0.929640889f, 0.931884289f, 0.934092522f, 0.936265647f, 168 0.938403547f, 0.940506041f, 0.942573190f, 0.944604814f, 0.946600914f, 0.948561370f, 169 0.950486064f, 0.952374995f, 0.954228103f, 0.956045270f, 0.957826436f, 0.959571540f, 170 0.961280465f, 0.962953269f, 0.964589775f, 0.966189981f, 0.967753828f, 0.969281256f, 171 0.970772147f, 0.972226501f, 0.973644257f, 0.975025356f, 0.976369739f, 0.977677345f, 172 0.978948176f, 0.980182111f, 0.981379211f, 0.982539296f, 0.983662426f, 0.984748483f, 173 0.985797524f, 0.986809373f, 0.987784147f, 0.988721669f, 0.989621997f, 0.990485072f, 174 0.991310835f, 0.992099285f, 0.992850423f, 0.993564129f, 0.994240463f, 0.994879305f, 175 0.995480776f, 0.996044695f, 0.996571124f, 0.997060061f, 0.997511446f, 0.997925282f, 176 0.998301566f, 0.998640239f, 0.998941302f, 0.999204755f, 0.999430597f, 0.999618828f, 177 0.999769390f, 0.999882340f, 0.999957621f, 0.999995291f, 0.999995291f, 0.999957621f, 178 0.999882340f, 0.999769390f, 0.999618828f, 0.999430597f, 0.999204755f, 0.998941302f, 179 0.998640239f, 0.998301566f, 0.997925282f, 0.997511446f, 0.997060061f, 0.996571124f, 180 0.996044695f, 0.995480776f, 0.994879305f, 0.994240463f, 0.993564129f, 0.992850423f, 181 0.992099285f, 0.991310835f, 0.990485072f, 0.989621997f, 0.988721669f, 0.987784147f, 182 0.986809373f, 0.985797524f, 0.984748483f, 0.983662426f, 0.982539296f, 0.981379211f, 183 0.980182111f, 0.978948176f, 0.977677345f, 0.976369739f, 0.975025356f, 0.973644257f, 184 0.972226501f, 0.970772147f, 0.969281256f, 0.967753828f, 0.966189981f, 0.964589775f, 185 0.962953269f, 0.961280465f, 0.959571540f, 0.957826436f, 0.956045270f, 0.954228103f, 186 0.952374995f, 0.950486064f, 0.948561370f, 0.946600914f, 0.944604814f, 0.942573190f, 187 0.940506041f, 0.938403547f, 0.936265647f, 0.934092522f, 0.931884289f, 0.929640889f, 188 0.927362502f, 0.925049245f, 0.922701120f, 0.920318305f, 0.917900801f, 0.915448725f, 189 0.912962198f, 0.910441279f, 0.907886088f, 0.905296743f, 0.902673304f, 0.900015891f, 190 0.897324562f, 0.894599497f, 0.891840696f, 0.889048338f, 0.886222541f, 0.883363366f, 191 0.880470872f, 0.877545297f, 0.874586642f, 0.871595085f, 0.868570685f, 0.865513623f, 192 0.862423956f, 0.859301805f, 0.856147349f, 0.852960587f, 0.849741757f, 0.846490920f, 193 0.843208253f, 0.839893818f, 0.836547732f, 0.833170176f, 0.829761207f, 0.826321065f, 194 0.822849810f, 0.819347501f, 0.815814435f, 0.812250614f, 0.808656156f, 0.805031359f, 195 0.801376164f, 0.797690868f, 0.793975472f, 0.790230215f, 0.786455214f, 0.782650590f, 196 0.778816521f, 0.774953127f, 0.771060526f, 0.767138898f, 0.763188422f, 0.759209216f, 197 0.755201399f, 0.751165152f, 0.747100592f, 0.743007958f, 0.738887310f, 0.734738886f, 198 0.730562747f, 0.726359129f, 0.722128212f, 0.717870057f, 0.713584840f, 0.709272802f, 199 0.704934061f, 0.700568795f, 0.696177125f, 0.691759229f, 0.687315345f, 0.682845533f, 200 0.678350031f, 0.673829019f, 0.669282615f, 0.664710999f, 0.660114348f, 0.655492842f, 201 0.650846660f, 0.646176040f, 0.641481042f, 0.636761844f, 0.632018745f, 0.627251804f, 202 0.622461259f, 0.617647290f, 0.612810075f, 0.607949793f, 0.603066623f, 0.598160684f, 203 0.593232274f, 0.588281572f, 0.583308637f, 0.578313768f, 0.573297143f, 0.568258941f, 204 0.563199341f, 0.558118522f, 0.553016722f, 0.547894061f, 0.542750776f, 0.537587047f, 205 0.532403111f, 0.527199149f, 0.521975279f, 0.516731799f, 0.511468828f, 0.506186664f, 206 0.500885367f, 0.495565265f, 0.490226477f, 0.484869242f, 0.479493767f, 0.474100202f, 207 0.468688816f, 0.463259786f, 0.457813293f, 0.452349573f, 0.446868837f, 0.441371262f, 208 0.435857087f, 0.430326492f, 0.424779683f, 0.419216901f, 0.413638324f, 0.408044159f, 209 0.402434647f, 0.396809995f, 0.391170382f, 0.385516047f, 0.379847199f, 0.374164075f, 210 0.368466824f, 0.362755716f, 0.357030958f, 0.351292759f, 0.345541328f, 0.339776874f, 211 0.333999664f, 0.328209847f, 0.322407693f, 0.316593379f, 0.310767144f, 0.304929227f, 212 0.299079835f, 0.293219149f, 0.287347466f, 0.281464934f, 0.275571823f, 0.269668311f, 213 0.263754666f, 0.257831097f, 0.251897812f, 0.245955050f, 0.240003020f, 0.234041959f, 214 0.228072077f, 0.222093627f, 0.216106802f, 0.210111842f, 0.204108968f, 0.198098406f, 215 0.192080393f, 0.186055154f, 0.180022895f, 0.173983872f, 0.167938292f, 0.161886394f, 216 0.155828401f, 0.149764538f, 0.143695027f, 0.137620121f, 0.131540030f, 0.125454977f, 217 0.119365215f, 0.113270953f, 0.107172422f, 0.101069860f, 0.094963498f, 0.088853553f, 218 0.082740262f, 0.076623864f, 0.070504576f, 0.064382628f, 0.058258265f, 0.052131705f, 219 0.046003181f, 0.039872929f, 0.033741172f, 0.027608145f, 0.021474080f, 0.015339206f, 220 0.009203754f, 0.003067957f}; 221 222 const FLOAT32 iusace_cos_window_448[448] = { 223 0.003506235f, 0.010518531f, 0.017530311f, 0.024541229f, 0.031550940f, 0.038559098f, 224 0.045565363f, 0.052569386f, 0.059570823f, 0.066569328f, 0.073564567f, 0.080556184f, 225 0.087543838f, 0.094527185f, 0.101505890f, 0.108479597f, 0.115447976f, 0.122410677f, 226 0.129367352f, 0.136317670f, 0.143261284f, 0.150197864f, 0.157127038f, 0.164048493f, 227 0.170961887f, 0.177866876f, 0.184763104f, 0.191650257f, 0.198527992f, 0.205395952f, 228 0.212253809f, 0.219101235f, 0.225937888f, 0.232763439f, 0.239577532f, 0.246379837f, 229 0.253170043f, 0.259947777f, 0.266712755f, 0.273464620f, 0.280203015f, 0.286927640f, 230 0.293638140f, 0.300334215f, 0.307015538f, 0.313681751f, 0.320332527f, 0.326967567f, 231 0.333586514f, 0.340189070f, 0.346774876f, 0.353343636f, 0.359895051f, 0.366428733f, 232 0.372944415f, 0.379441738f, 0.385920405f, 0.392380118f, 0.398820519f, 0.405241311f, 233 0.411642164f, 0.418022811f, 0.424382865f, 0.430722058f, 0.437040091f, 0.443336606f, 234 0.449611336f, 0.455863953f, 0.462094128f, 0.468301624f, 0.474486053f, 0.480647177f, 235 0.486784667f, 0.492898196f, 0.498987496f, 0.505052269f, 0.511092186f, 0.517107010f, 236 0.523096323f, 0.529060006f, 0.534997642f, 0.540908933f, 0.546793640f, 0.552651465f, 237 0.558482170f, 0.564285338f, 0.570060790f, 0.575808167f, 0.581527293f, 0.587217808f, 238 0.592879415f, 0.598511875f, 0.604114890f, 0.609688222f, 0.615231574f, 0.620744705f, 239 0.626227260f, 0.631679058f, 0.637099743f, 0.642489135f, 0.647846937f, 0.653172851f, 240 0.658466637f, 0.663728058f, 0.668956876f, 0.674152792f, 0.679315507f, 0.684444845f, 241 0.689540565f, 0.694602311f, 0.699629962f, 0.704623163f, 0.709581733f, 0.714505374f, 242 0.719393909f, 0.724247098f, 0.729064643f, 0.733846307f, 0.738591909f, 0.743301213f, 243 0.747973979f, 0.752609909f, 0.757208824f, 0.761770546f, 0.766294777f, 0.770781398f, 244 0.775230050f, 0.779640555f, 0.784012794f, 0.788346410f, 0.792641282f, 0.796897233f, 245 0.801113904f, 0.805291235f, 0.809428990f, 0.813526869f, 0.817584813f, 0.821602523f, 246 0.825579822f, 0.829516530f, 0.833412468f, 0.837267399f, 0.841081142f, 0.844853580f, 247 0.848584414f, 0.852273524f, 0.855920792f, 0.859525919f, 0.863088787f, 0.866609156f, 248 0.870086968f, 0.873521984f, 0.876914084f, 0.880263031f, 0.883568645f, 0.886830866f, 249 0.890049458f, 0.893224299f, 0.896355212f, 0.899442017f, 0.902484655f, 0.905482829f, 250 0.908436537f, 0.911345541f, 0.914209783f, 0.917029023f, 0.919803143f, 0.922532082f, 251 0.925215602f, 0.927853703f, 0.930446148f, 0.932992816f, 0.935493588f, 0.937948406f, 252 0.940357089f, 0.942719519f, 0.945035577f, 0.947305143f, 0.949528158f, 0.951704502f, 253 0.953834057f, 0.955916643f, 0.957952261f, 0.959940791f, 0.961882055f, 0.963776052f, 254 0.965622663f, 0.967421770f, 0.969173372f, 0.970877230f, 0.972533405f, 0.974141717f, 255 0.975702107f, 0.977214575f, 0.978678942f, 0.980095208f, 0.981463313f, 0.982783079f, 256 0.984054565f, 0.985277653f, 0.986452281f, 0.987578392f, 0.988655984f, 0.989684880f, 257 0.990665197f, 0.991596758f, 0.992479563f, 0.993313551f, 0.994098663f, 0.994834960f, 258 0.995522261f, 0.996160686f, 0.996750057f, 0.997290432f, 0.997781813f, 0.998224080f, 259 0.998617291f, 0.998961389f, 0.999256313f, 0.999502122f, 0.999698818f, 0.999846339f, 260 0.999944687f, 0.999993861f, 0.999993861f, 0.999944687f, 0.999846339f, 0.999698818f, 261 0.999502122f, 0.999256313f, 0.998961389f, 0.998617291f, 0.998224080f, 0.997781813f, 262 0.997290432f, 0.996750057f, 0.996160686f, 0.995522261f, 0.994834960f, 0.994098663f, 263 0.993313551f, 0.992479563f, 0.991596758f, 0.990665197f, 0.989684880f, 0.988655984f, 264 0.987578392f, 0.986452281f, 0.985277653f, 0.984054565f, 0.982783079f, 0.981463313f, 265 0.980095208f, 0.978678942f, 0.977214575f, 0.975702107f, 0.974141717f, 0.972533405f, 266 0.970877230f, 0.969173372f, 0.967421770f, 0.965622663f, 0.963776052f, 0.961882055f, 267 0.959940791f, 0.957952261f, 0.955916643f, 0.953834057f, 0.951704502f, 0.949528158f, 268 0.947305143f, 0.945035577f, 0.942719519f, 0.940357089f, 0.937948406f, 0.935493588f, 269 0.932992816f, 0.930446148f, 0.927853703f, 0.925215602f, 0.922532082f, 0.919803143f, 270 0.917029023f, 0.914209783f, 0.911345541f, 0.908436537f, 0.905482829f, 0.902484655f, 271 0.899442017f, 0.896355212f, 0.893224299f, 0.890049458f, 0.886830866f, 0.883568645f, 272 0.880263031f, 0.876914084f, 0.873521984f, 0.870086968f, 0.866609156f, 0.863088787f, 273 0.859525919f, 0.855920792f, 0.852273524f, 0.848584414f, 0.844853580f, 0.841081142f, 274 0.837267399f, 0.833412468f, 0.829516530f, 0.825579822f, 0.821602523f, 0.817584813f, 275 0.813526869f, 0.809428990f, 0.805291235f, 0.801113904f, 0.796897233f, 0.792641282f, 276 0.788346410f, 0.784012794f, 0.779640555f, 0.775230050f, 0.770781398f, 0.766294777f, 277 0.761770546f, 0.757208824f, 0.752609909f, 0.747973979f, 0.743301213f, 0.738591909f, 278 0.733846307f, 0.729064643f, 0.724247098f, 0.719393909f, 0.714505374f, 0.709581733f, 279 0.704623163f, 0.699629962f, 0.694602311f, 0.689540565f, 0.684444845f, 0.679315507f, 280 0.674152792f, 0.668956876f, 0.663728058f, 0.658466637f, 0.653172851f, 0.647846937f, 281 0.642489135f, 0.637099743f, 0.631679058f, 0.626227260f, 0.620744705f, 0.615231574f, 282 0.609688222f, 0.604114890f, 0.598511875f, 0.592879415f, 0.587217808f, 0.581527293f, 283 0.575808167f, 0.570060790f, 0.564285338f, 0.558482170f, 0.552651465f, 0.546793640f, 284 0.540908933f, 0.534997642f, 0.529060006f, 0.523096323f, 0.517107010f, 0.511092186f, 285 0.505052269f, 0.498987496f, 0.492898196f, 0.486784667f, 0.480647177f, 0.474486053f, 286 0.468301624f, 0.462094128f, 0.455863953f, 0.449611336f, 0.443336606f, 0.437040091f, 287 0.430722058f, 0.424382865f, 0.418022811f, 0.411642164f, 0.405241311f, 0.398820519f, 288 0.392380118f, 0.385920405f, 0.379441738f, 0.372944415f, 0.366428733f, 0.359895051f, 289 0.353343636f, 0.346774876f, 0.340189070f, 0.333586514f, 0.326967567f, 0.320332527f, 290 0.313681751f, 0.307015538f, 0.300334215f, 0.293638140f, 0.286927640f, 0.280203015f, 291 0.273464620f, 0.266712755f, 0.259947777f, 0.253170043f, 0.246379837f, 0.239577532f, 292 0.232763439f, 0.225937888f, 0.219101235f, 0.212253809f, 0.205395952f, 0.198527992f, 293 0.191650257f, 0.184763104f, 0.177866876f, 0.170961887f, 0.164048493f, 0.157127038f, 294 0.150197864f, 0.143261284f, 0.136317670f, 0.129367352f, 0.122410677f, 0.115447976f, 295 0.108479597f, 0.101505890f, 0.094527185f, 0.087543838f, 0.080556184f, 0.073564567f, 296 0.066569328f, 0.059570823f, 0.052569386f, 0.045565363f, 0.038559098f, 0.031550940f, 297 0.024541229f, 0.017530311f, 0.010518531f, 0.003506235f}; 298 299 const FLOAT32 iusace_lag_window[17] = { 300 1.0001f, 0.999566371183f, 0.998266612613f, 0.996104103033f, 0.993084457421f, 301 0.989215493202f, 0.984507262707f, 0.978971838951f, 0.972623467445f, 0.965478420258f, 302 0.957554817200f, 0.948872864246f, 0.939454317093f, 0.929322779179f, 0.918503403664f, 303 0.907022833824f, 0.894909143448f, 304 }; 305 306 const FLOAT32 iusace_res_interp_filter1_4[INTER_LP_FIL_LEN + 4] = { 307 0.940000f, 0.856390f, 0.632268f, 0.337560f, 0.059072f, -0.131059f, -0.199393f, -0.158569f, 308 -0.056359f, 0.047606f, 0.106749f, 0.103705f, 0.052062f, -0.015182f, -0.063705f, -0.073660f, 309 -0.046497f, -0.000983f, 0.038227f, 0.053143f, 0.040059f, 0.009308f, -0.021674f, -0.037767f, 310 -0.033186f, -0.013028f, 0.010702f, 0.025901f, 0.026318f, 0.013821f, -0.003645f, -0.016813f, 311 -0.019855f, -0.012766f, -0.000530f, 0.010080f, 0.014122f, 0.010657f, 0.002594f, -0.005363f, 312 -0.009344f, -0.008101f, -0.003182f, 0.002330f, 0.005635f, 0.005562f, 0.002844f, -0.000627f, 313 -0.002993f, -0.003362f, -0.002044f, -0.000116f, 0.001315f, 0.001692f, 0.001151f, 0.000259f, 314 -0.000417f, -0.000618f, -0.000434f, -0.000133f, 0.000063f, 0.000098f, 0.000048f, 0.000007f, 315 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f}; 316 317 /* [b,a] = butter(2, 20.0/(sampling_freq/2), 'high') --> {a1, a2, b1, b2}. 318 Coeffs a1 and a2 are sign inversed in the table. 319 */ 320 const FLOAT32 iusace_hp20_filter_coeffs[12][4] = { 321 /* 8000Hz */ 322 {1.977786483776763f, -0.978030508491796f, -1.977908496134280f, 0.988954248067140f}, 323 324 /* 11025Hz */ 325 {1.983881041660839f, -0.984009917549517f, -1.983945479605178f, 0.991972739802589f}, 326 327 /* 12000Hz */ 328 {1.985190657896261f, -0.985299513128215f, -1.985245085512239f, 0.992622542756119f}, 329 330 {1.994446410541927f, -0.994461789075954f, -1.994454099808941f, 0.997227049904470f}, 331 {1.995970179642829f, -0.995978283057647f, -1.995974231350238f, 0.997987115675119f}, 332 {1.996297601769122f, -0.996304442992686f, -1.996301022380904f, 0.998150511190452f}, 333 {1.997223199944181f, -0.997227049911866f, -1.997225124928023f, 0.998612562464012f}, 334 335 /* 44100Hz */ 336 {1.995970179642829f, -0.995978283057647f, -1.995974231350238f, 0.997987115675119f}, 337 338 /* 48000Hz */ 339 {1.996297601769122f, -0.996304442992686f, -1.996301022380904f, 0.998150511190452f}, 340 341 /* 64000Hz */ 342 {1.997223199944181f, -0.997227049911866f, -1.997225124928023f, 0.998612562464012f}, 343 344 /* 88200Hz */ 345 {1.997985087783538f, -0.997987115677172f, -1.997986101730355f, 0.998993050865178f}, 346 347 /* 96000Hz */ 348 {1.998148799303698f, -0.998150511191915f, -1.998149655247807f, 0.999074827623903f}, 349 350 }; 351 352 const FLOAT32 iexheaac_cos_window_384[384] = { 353 0.0081811396f, 0.0163617316f, 0.0245412285f, 0.0327190828f, 0.0408947472f, 0.0490676743f, 354 0.0572373173f, 0.0654031292f, 0.0735645636f, 0.0817210741f, 0.0898721149f, 0.0980171403f, 355 0.1061556053f, 0.1142869650f, 0.1224106752f, 0.1305261922f, 0.1386329728f, 0.1467304745f, 356 0.1548181551f, 0.1628954734f, 0.1709618888f, 0.1790168613f, 0.1870598518f, 0.1950903220f, 357 0.2031077344f, 0.2111115524f, 0.2191012402f, 0.2270762630f, 0.2350360872f, 0.2429801799f, 358 0.2509080094f, 0.2588190451f, 0.2667127575f, 0.2745886182f, 0.2824461001f, 0.2902846773f, 359 0.2981038250f, 0.3059030201f, 0.3136817404f, 0.3214394653f, 0.3291756756f, 0.3368898534f, 360 0.3445814824f, 0.3522500479f, 0.3598950365f, 0.3675159366f, 0.3751122380f, 0.3826834324f, 361 0.3902290129f, 0.3977484745f, 0.4052413140f, 0.4127070298f, 0.4201451222f, 0.4275550934f, 362 0.4349364474f, 0.4422886902f, 0.4496113297f, 0.4569038756f, 0.4641658400f, 0.4713967368f, 363 0.4785960820f, 0.4857633937f, 0.4928981922f, 0.5000000000f, 0.5070683417f, 0.5141027442f, 364 0.5211027367f, 0.5280678507f, 0.5349976199f, 0.5418915806f, 0.5487492713f, 0.5555702330f, 365 0.5623540092f, 0.5691001459f, 0.5758081914f, 0.5824776969f, 0.5891082158f, 0.5956993045f, 366 0.6022505217f, 0.6087614290f, 0.6152315906f, 0.6216605734f, 0.6280479471f, 0.6343932842f, 367 0.6406961599f, 0.6469561525f, 0.6531728430f, 0.6593458151f, 0.6654746558f, 0.6715589548f, 368 0.6775983050f, 0.6835923020f, 0.6895405447f, 0.6954426350f, 0.7012981778f, 0.7071067812f, 369 0.7128680564f, 0.7185816178f, 0.7242470830f, 0.7298640727f, 0.7354322111f, 0.7409511254f, 370 0.7464204462f, 0.7518398075f, 0.7572088465f, 0.7625272039f, 0.7677945237f, 0.7730104534f, 371 0.7781746438f, 0.7832867492f, 0.7883464276f, 0.7933533403f, 0.7983071521f, 0.8032075315f, 372 0.8080541504f, 0.8128466846f, 0.8175848132f, 0.8222682190f, 0.8268965886f, 0.8314696123f, 373 0.8359869839f, 0.8404484011f, 0.8448535652f, 0.8492021815f, 0.8534939589f, 0.8577286100f, 374 0.8619058515f, 0.8660254038f, 0.8700869911f, 0.8740903416f, 0.8780351874f, 0.8819212643f, 375 0.8857483124f, 0.8895160754f, 0.8932243012f, 0.8968727415f, 0.9004611522f, 0.9039892931f, 376 0.9074569281f, 0.9108638249f, 0.9142097557f, 0.9174944964f, 0.9207178273f, 0.9238795325f, 377 0.9269794005f, 0.9300172237f, 0.9329927988f, 0.9359059268f, 0.9387564125f, 0.9415440652f, 378 0.9442686983f, 0.9469301295f, 0.9495281806f, 0.9520626777f, 0.9545334512f, 0.9569403357f, 379 0.9592831702f, 0.9615617977f, 0.9637760658f, 0.9659258263f, 0.9680109353f, 0.9700312532f, 380 0.9719866448f, 0.9738769793f, 0.9757021300f, 0.9774619749f, 0.9791563962f, 0.9807852804f, 381 0.9823485185f, 0.9838460059f, 0.9852776424f, 0.9866433321f, 0.9879429836f, 0.9891765100f, 382 0.9903438286f, 0.9914448614f, 0.9924795346f, 0.9934477790f, 0.9943495298f, 0.9951847267f, 383 0.9959533136f, 0.9966552393f, 0.9972904567f, 0.9978589232f, 0.9983606009f, 0.9987954562f, 384 0.9991634599f, 0.9994645875f, 0.9996988187f, 0.9998661379f, 0.9999665339f, 1.0000000000f, 385 0.9999665339f, 0.9998661379f, 0.9996988187f, 0.9994645875f, 0.9991634599f, 0.9987954562f, 386 0.9983606009f, 0.9978589232f, 0.9972904567f, 0.9966552393f, 0.9959533136f, 0.9951847267f, 387 0.9943495298f, 0.9934477790f, 0.9924795346f, 0.9914448614f, 0.9903438286f, 0.9891765100f, 388 0.9879429836f, 0.9866433321f, 0.9852776424f, 0.9838460059f, 0.9823485185f, 0.9807852804f, 389 0.9791563962f, 0.9774619749f, 0.9757021300f, 0.9738769793f, 0.9719866448f, 0.9700312532f, 390 0.9680109353f, 0.9659258263f, 0.9637760658f, 0.9615617977f, 0.9592831702f, 0.9569403357f, 391 0.9545334512f, 0.9520626777f, 0.9495281806f, 0.9469301295f, 0.9442686983f, 0.9415440652f, 392 0.9387564125f, 0.9359059268f, 0.9329927988f, 0.9300172237f, 0.9269794005f, 0.9238795325f, 393 0.9207178273f, 0.9174944964f, 0.9142097557f, 0.9108638249f, 0.9074569281f, 0.9039892931f, 394 0.9004611522f, 0.8968727415f, 0.8932243012f, 0.8895160754f, 0.8857483124f, 0.8819212643f, 395 0.8780351874f, 0.8740903416f, 0.8700869911f, 0.8660254038f, 0.8619058515f, 0.8577286100f, 396 0.8534939589f, 0.8492021815f, 0.8448535652f, 0.8404484011f, 0.8359869839f, 0.8314696123f, 397 0.8268965886f, 0.8222682190f, 0.8175848132f, 0.8128466846f, 0.8080541504f, 0.8032075315f, 398 0.7983071521f, 0.7933533403f, 0.7883464276f, 0.7832867492f, 0.7781746438f, 0.7730104534f, 399 0.7677945237f, 0.7625272039f, 0.7572088465f, 0.7518398075f, 0.7464204462f, 0.7409511254f, 400 0.7354322111f, 0.7298640727f, 0.7242470830f, 0.7185816178f, 0.7128680564f, 0.7071067812f, 401 0.7012981778f, 0.6954426350f, 0.6895405447f, 0.6835923020f, 0.6775983050f, 0.6715589548f, 402 0.6654746558f, 0.6593458151f, 0.6531728430f, 0.6469561525f, 0.6406961599f, 0.6343932842f, 403 0.6280479471f, 0.6216605734f, 0.6152315906f, 0.6087614290f, 0.6022505217f, 0.5956993045f, 404 0.5891082158f, 0.5824776969f, 0.5758081914f, 0.5691001459f, 0.5623540092f, 0.5555702330f, 405 0.5487492713f, 0.5418915806f, 0.5349976199f, 0.5280678507f, 0.5211027367f, 0.5141027442f, 406 0.5070683417f, 0.5000000000f, 0.4928981922f, 0.4857633937f, 0.4785960820f, 0.4713967368f, 407 0.4641658400f, 0.4569038756f, 0.4496113297f, 0.4422886902f, 0.4349364474f, 0.4275550934f, 408 0.4201451222f, 0.4127070298f, 0.4052413140f, 0.3977484745f, 0.3902290129f, 0.3826834324f, 409 0.3751122380f, 0.3675159366f, 0.3598950365f, 0.3522500479f, 0.3445814824f, 0.3368898534f, 410 0.3291756756f, 0.3214394653f, 0.3136817404f, 0.3059030201f, 0.2981038250f, 0.2902846773f, 411 0.2824461001f, 0.2745886182f, 0.2667127575f, 0.2588190451f, 0.2509080094f, 0.2429801799f, 412 0.2350360872f, 0.2270762630f, 0.2191012402f, 0.2111115524f, 0.2031077344f, 0.1950903220f, 413 0.1870598518f, 0.1790168613f, 0.1709618888f, 0.1628954734f, 0.1548181551f, 0.1467304745f, 414 0.1386329728f, 0.1305261922f, 0.1224106752f, 0.1142869650f, 0.1061556053f, 0.0980171403f, 415 0.0898721149f, 0.0817210741f, 0.0735645636f, 0.0654031292f, 0.0572373173f, 0.0490676743f, 416 0.0408947472f, 0.0327190828f, 0.0245412285f, 0.0163617316f, 0.0081811396f, 0.0000000000f, 417 }; 418