/****************************************************************************** * * * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ***************************************************************************** * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore */ #include "ixheaac_type_def.h" #include "iusace_cnst.h" const UWORD8 iusace_acelp_ipos[36] = {0, 1, 2, 3, 1, 2, 3, 0, 2, 3, 0, 1, 3, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 0, 2, 3, 0, 1, 3, 0, 1, 2, 0, 1, 2, 3}; const FLOAT32 iusace_chebyshev_polyn_grid[101] = { 1.00000F, 0.999507F, 0.998027F, 0.995562F, 0.992115F, 0.987688F, 0.982287F, 0.975917F, 0.968583F, 0.960294F, 0.951057F, 0.940881F, 0.929776F, 0.917755F, 0.904827F, 0.891007F, 0.876307F, 0.860742F, 0.844328F, 0.827081F, 0.809017F, 0.790155F, 0.770513F, 0.750111F, 0.728969F, 0.707107F, 0.684547F, 0.661312F, 0.637424F, 0.612907F, 0.587785F, 0.562083F, 0.535827F, 0.509041F, 0.481754F, 0.453990F, 0.425779F, 0.397148F, 0.368124F, 0.338738F, 0.309017F, 0.278991F, 0.248690F, 0.218143F, 0.187381F, 0.156434F, 0.125333F, 0.0941082F, 0.0627904F, 0.0314107F, -8.09643e-008F, -0.0314108F, -0.0627906F, -0.0941084F, -0.125333F, -0.156435F, -0.187381F, -0.218143F, -0.248690F, -0.278991F, -0.309017F, -0.338738F, -0.368125F, -0.397148F, -0.425779F, -0.453991F, -0.481754F, -0.509041F, -0.535827F, -0.562083F, -0.587785F, -0.612907F, -0.637424F, -0.661312F, -0.684547F, -0.707107F, -0.728969F, -0.750111F, -0.770513F, -0.790155F, -0.809017F, -0.827081F, -0.844328F, -0.860742F, -0.876307F, -0.891007F, -0.904827F, -0.917755F, -0.929777F, -0.940881F, -0.951057F, -0.960294F, -0.968583F, -0.975917F, -0.982287F, -0.987688F, -0.992115F, -0.995562F, -0.998027F, -0.999507F, -1.00000F}; const FLOAT32 iusace_ol_corr_weight[518] = { 0.221587981217023f, 0.222261823815225f, 0.222935666413414f, 0.223609509011589f, 0.224283351609750f, 0.224957194207899f, 0.225631036806034f, 0.226304879404157f, 0.226978722002268f, 0.227652564600366f, 0.228326407198452f, 0.229000249796527f, 0.229674092394590f, 0.230347934992642f, 0.231021777590682f, 0.231695620188712f, 0.232369462786731f, 0.233043305384739f, 0.233717147982738f, 0.234390990580726f, 0.235064833178704f, 0.235738675776673f, 0.236412518374633f, 0.237086360972583f, 0.237760203570524f, 0.238434046168457f, 0.239107888766381f, 0.239781731364297f, 0.240455573962205f, 0.241129416560105f, 0.241803259157998f, 0.242477101755883f, 0.243150944353761f, 0.243824786951632f, 0.244498629549496f, 0.245172472147353f, 0.245846314745205f, 0.246520157343050f, 0.247193999940890f, 0.247867842538723f, 0.248541685136552f, 0.249215527734375f, 0.249889370332193f, 0.250563212930007f, 0.251237055527815f, 0.251910898125620f, 0.252584740723420f, 0.253258583321217f, 0.253932425919010f, 0.254606268516799f, 0.255280111114586f, 0.255953953712369f, 0.256627796310149f, 0.257301638907927f, 0.257975481505702f, 0.258649324103476f, 0.259323166701247f, 0.259997009299017f, 0.260670851896785f, 0.261344694494552f, 0.262018537092318f, 0.262692379690083f, 0.263366222287848f, 0.263366222287847f, 0.264040064885612f, 0.264713907483376f, 0.265387750081140f, 0.266061592678904f, 0.266735435276667f, 0.267409277874430f, 0.268083120472194f, 0.268756963069956f, 0.269430805667719f, 0.270104648265482f, 0.270778490863244f, 0.271452333461006f, 0.272126176058768f, 0.272800018656529f, 0.273473861254291f, 0.274147703852052f, 0.274821546449814f, 0.275495389047575f, 0.276169231645336f, 0.276843074243096f, 0.277516916840857f, 0.278190759438618f, 0.278864602036378f, 0.279538444634139f, 0.280212287231899f, 0.280886129829659f, 0.281559972427420f, 0.282233815025180f, 0.282907657622940f, 0.283581500220700f, 0.284255342818460f, 0.284929185416220f, 0.285603028013980f, 0.286276870611740f, 0.286950713209500f, 0.287624555807260f, 0.288298398405020f, 0.288972241002780f, 0.289646083600540f, 0.290319926198300f, 0.290993768796060f, 0.291667611393820f, 0.292341453991580f, 0.293015296589340f, 0.293689139187100f, 0.294362981784860f, 0.295036824382620f, 0.295710666980380f, 0.296384509578140f, 0.297058352175900f, 0.297732194773660f, 0.298406037371420f, 0.299079879969180f, 0.299753722566940f, 0.300427565164700f, 0.301101407762460f, 0.301775250360220f, 0.302449092957980f, 0.303122935555740f, 0.303796778153500f, 0.304470620751260f, 0.305144463349020f, 0.305818305946780f, 0.306492148544540f, 0.307165991142300f, 0.307839833740060f, 0.308513676337820f, 0.309187518935580f, 0.309861361533340f, 0.310535204131100f, 0.311209046728860f, 0.311882889326620f, 0.312556731924380f, 0.313230574522140f, 0.313904417119900f, 0.314578259717660f, 0.315252102315420f, 0.315925944913180f, 0.316599787510940f, 0.317273630108700f, 0.317947472706460f, 0.318621315304220f, 0.319295157901980f, 0.319969000499740f, 0.320642843097500f, 0.321316685695260f, 0.321990528293020f, 0.322664370890780f, 0.323338213488540f, 0.324012056086300f, 0.324685898684060f, 0.325359741281820f, 0.326033583879580f, 0.326707426477340f, 0.327381269075100f, 0.328055111672860f, 0.328728954270620f, 0.329402796868380f, 0.330083976070000f, 0.330772637748820f, 0.331468932014340f, 0.332173013374690f, 0.332885040906940f, 0.333605178435610f, 0.334333594719850f, 0.335070463649910f, 0.335815964453310f, 0.336570281911320f, 0.337333606586500f, 0.338106135061810f, 0.338888070192030f, 0.339679621368370f, 0.340481004796980f, 0.341292443792250f, 0.342114169085970f, 0.342946419153120f, 0.343789440555740f, 0.344643488305690f, 0.345508826247860f, 0.346385727465050f, 0.347274474706060f, 0.348175360838540f, 0.349088689328410f, 0.350014774747620f, 0.350953943312400f, 0.351906533454040f, 0.352872896424760f, 0.353853396941050f, 0.354848413867530f, 0.355858340944150f, 0.356883587560250f, 0.357924579578940f, 0.358981760215980f, 0.360055590977160f, 0.361146552659300f, 0.362255146419720f, 0.363381894919980f, 0.364527343550210f, 0.365692061740660f, 0.366876644368180f, 0.368081713265840f, 0.369307918844770f, 0.370555941838460f, 0.371826495180490f, 0.373120326028240f, 0.374438217946110f, 0.375780993263580f, 0.377149515625000f, 0.378544692749950f, 0.379967479425290f, 0.381418880752330f, 0.382899955675540f, 0.384411820822400f, 0.385955654687440f, 0.387532702198100f, 0.389144279704500f, 0.390791780440810f, 0.392476680512480f, 0.394200545470490f, 0.395965037542720f, 0.397771923602130f, 0.399623083962790f, 0.401520522108530f, 0.403466375474260f, 0.405462927418450f, 0.407512620547120f, 0.409618071574760f, 0.411782087938380f, 0.414007686416520f, 0.416298114048290f, 0.418656871699000f, 0.421087740681110f, 0.423594812914300f, 0.426182525199670f, 0.428855698294360f, 0.431619581609630f, 0.434479904523260f, 0.437442935506450f, 0.440515550524830f, 0.443705312500000f, 0.447020564029760f, 0.450470536088870f, 0.454065476102870f, 0.457816799652350f, 0.461737271191160f, 0.465841220638500f, 0.470144804662100f, 0.474666324087360f, 0.479426612408380f, 0.484449515221620f, 0.490000000000000f, 0.500000000000000f, 0.500000000000000f, 0.500000000000000f, 0.500000000000000f, 0.500000000000000f, 0.500000000000000f, 0.500000000000000f, 0.490000000000000f, 0.484449515221620f, 0.479426612408380f, 0.474666324087360f, 0.470144804662100f, 0.465841220638500f, 0.461737271191160f, 0.457816799652350f, 0.454065476102870f, 0.450470536088870f, 0.447020564029760f, 0.443705312500000f, 0.440515550524830f, 0.437442935506450f, 0.434479904523260f, 0.431619581609630f, 0.428855698294360f, 0.426182525199670f, 0.423594812914300f, 0.421087740681110f, 0.418656871699000f, 0.416298114048290f, 0.414007686416520f, 0.411782087938380f, 0.409618071574760f, 0.407512620547120f, 0.405462927418450f, 0.403466375474260f, 0.401520522108530f, 0.399623083962790f, 0.397771923602130f, 0.395965037542720f, 0.394200545470490f, 0.392476680512480f, 0.390791780440810f, 0.389144279704500f, 0.387532702198100f, 0.385955654687440f, 0.384411820822400f, 0.382899955675540f, 0.381418880752330f, 0.379967479425290f, 0.378544692749950f, 0.377149515625000f, 0.375780993263580f, 0.374438217946110f, 0.373120326028240f, 0.371826495180490f, 0.370555941838460f, 0.369307918844770f, 0.368081713265840f, 0.366876644368180f, 0.365692061740660f, 0.364527343550210f, 0.363381894919980f, 0.362255146419720f, 0.361146552659300f, 0.360055590977160f, 0.358981760215980f, 0.357924579578940f, 0.356883587560250f, 0.355858340944150f, 0.354848413867530f, 0.353853396941050f, 0.352872896424760f, 0.351906533454040f, 0.350953943312400f, 0.350014774747620f, 0.349088689328410f, 0.348175360838540f, 0.347274474706060f, 0.346385727465050f, 0.345508826247860f, 0.344643488305690f, 0.343789440555740f, 0.342946419153120f, 0.342114169085970f, 0.341292443792250f, 0.340481004796980f, 0.339679621368370f, 0.338888070192030f, 0.338106135061810f, 0.337333606586500f, 0.336570281911320f, 0.335815964453310f, 0.335070463649910f, 0.334333594719850f, 0.333605178435610f, 0.332885040906940f, 0.332173013374690f, 0.331468932014340f, 0.330772637748820f, 0.330083976070000f, 0.329402796868380f, 0.328728954270620f, 0.328062306484320f, 0.327402715649920f, 0.328055111672860f, 0.327381269075100f, 0.326707426477340f, 0.326033583879580f, 0.325359741281820f, 0.324685898684060f, 0.324012056086300f, 0.323338213488540f, 0.322664370890780f, 0.321990528293020f, 0.321316685695260f, 0.320642843097500f, 0.319969000499740f, 0.319295157901980f, 0.318621315304220f, 0.317947472706460f, 0.317273630108700f, 0.316599787510940f, 0.315925944913180f, 0.315252102315420f, 0.314578259717660f, 0.313904417119900f, 0.313230574522140f, 0.312556731924380f, 0.311882889326620f, 0.311209046728860f, 0.310535204131100f, 0.309861361533340f, 0.309187518935580f, 0.308513676337820f, 0.307839833740060f, 0.307165991142300f, 0.306492148544540f, 0.305818305946780f, 0.305144463349020f, 0.304470620751260f, 0.303796778153500f, 0.303122935555740f, 0.302449092957980f, 0.301775250360220f, 0.301101407762460f, 0.300427565164700f, 0.299753722566940f, 0.299079879969180f, 0.298406037371420f, 0.297732194773660f, 0.297058352175900f, 0.296384509578140f, 0.295710666980380f, 0.295036824382620f, 0.294362981784860f, 0.293689139187100f, 0.293015296589340f, 0.292341453991580f, 0.291667611393820f, 0.290993768796060f, 0.290319926198300f, 0.289646083600540f, 0.288972241002780f, 0.288298398405020f, 0.287624555807260f, 0.286950713209500f, 0.286276870611740f, 0.285603028013980f, 0.284929185416220f, 0.284255342818460f, 0.283581500220700f, 0.282907657622940f, 0.282233815025180f, 0.281559972427420f, 0.280886129829659f, 0.280212287231899f, 0.279538444634139f, 0.278864602036378f, 0.278190759438618f, 0.277516916840857f, 0.276843074243096f, 0.276169231645336f, 0.275495389047575f, 0.274821546449814f, 0.274147703852052f, 0.273473861254291f, 0.272800018656529f, 0.272126176058768f, 0.271452333461006f, 0.270778490863244f, 0.270104648265482f, 0.269430805667719f, 0.268756963069956f, 0.268083120472194f, 0.267409277874430f, 0.266735435276667f, 0.266061592678904f, 0.265387750081140f, 0.264713907483376f, 0.264040064885612f, 0.263366222287848f, 0.262692379690083f, 0.262018537092318f, 0.261344694494552f, 0.260670851896785f, 0.259997009299017f, 0.259323166701247f, 0.258649324103476f, 0.257975481505702f, 0.257301638907927f, 0.256627796310149f, 0.255953953712369f, 0.255280111114586f, 0.254606268516799f, 0.253932425919010f, 0.253258583321217f, 0.252584740723420f, 0.251910898125620f, 0.251237055527815f, 0.250563212930007f, 0.249889370332193f, 0.249215527734375f, 0.248541685136552f, 0.247867842538723f, 0.247193999940890f, 0.246520157343050f, 0.245846314745205f, 0.245172472147353f, 0.244498629549496f, 0.243824786951632f, 0.243150944353761f, 0.242477101755883f, 0.241803259157998f, 0.241129416560105f, 0.240455573962205f, 0.239781731364297f, 0.239107888766381f, 0.238434046168457f, 0.237760203570524f, 0.237086360972583f, 0.236412518374633f, 0.235738675776673f, 0.235064833178704f, 0.234390990580726f, 0.233717147982738f, 0.233043305384739f, 0.232369462786731f, 0.231695620188712f, 0.231021777590682f, 0.230347934992642f, 0.229674092394590f, 0.229000249796527f, 0.228326407198452f, 0.227652564600366f, 0.226978722002268f, 0.226304879404157f, 0.225631036806034f, 0.224957194207899f, 0.224283351609750f, 0.223609509011589f, 0.222935666413414f, 0.222261823815225f, 0.221587981217023f}; const FLOAT32 iusace_acelp_quant_gain_table[NUM_QUANTIZATION_LEVEL * 2] = { 0.012445F, 0.215546F, 0.028326F, 0.965442F, 0.053042F, 0.525819F, 0.065409F, 1.495322F, 0.078212F, 2.323725F, 0.100504F, 0.751276F, 0.112617F, 3.427530F, 0.113124F, 0.309583F, 0.121763F, 1.140685F, 0.143515F, 7.519609F, 0.162430F, 0.568752F, 0.164940F, 1.904113F, 0.165429F, 4.947562F, 0.194985F, 0.855463F, 0.213527F, 1.281019F, 0.223544F, 0.414672F, 0.243135F, 2.781766F, 0.257180F, 1.659565F, 0.269488F, 0.636749F, 0.286539F, 1.003938F, 0.328124F, 2.225436F, 0.328761F, 0.330278F, 0.336807F, 11.500983F, 0.339794F, 3.805726F, 0.344454F, 1.494626F, 0.346165F, 0.738748F, 0.363605F, 1.141454F, 0.398729F, 0.517614F, 0.415276F, 2.928666F, 0.416282F, 0.862935F, 0.423421F, 1.873310F, 0.444151F, 0.202244F, 0.445842F, 1.301113F, 0.455671F, 5.519512F, 0.484764F, 0.387607F, 0.488696F, 0.967884F, 0.488730F, 0.666771F, 0.508189F, 1.516224F, 0.508792F, 2.348662F, 0.531504F, 3.883870F, 0.548649F, 1.112861F, 0.551182F, 0.514986F, 0.564397F, 1.742030F, 0.566598F, 0.796454F, 0.589255F, 3.081743F, 0.598816F, 1.271936F, 0.617654F, 0.333501F, 0.619073F, 2.040522F, 0.625282F, 0.950244F, 0.630798F, 0.594883F, 0.638918F, 4.863197F, 0.650102F, 1.464846F, 0.668412F, 0.747138F, 0.669490F, 2.583027F, 0.683757F, 1.125479F, 0.691216F, 1.739274F, 0.718441F, 3.297789F, 0.722608F, 0.902743F, 0.728827F, 2.194941F, 0.729586F, 0.633849F, 0.730907F, 7.432957F, 0.731017F, 0.431076F, 0.731543F, 1.387847F, 0.759183F, 1.045210F, 0.768606F, 1.789648F, 0.771245F, 4.085637F, 0.772613F, 0.778145F, 0.786483F, 1.283204F, 0.792467F, 2.412891F, 0.802393F, 0.544588F, 0.807156F, 0.255978F, 0.814280F, 1.544409F, 0.817839F, 0.938798F, 0.826959F, 2.910633F, 0.830453F, 0.684066F, 0.833431F, 1.171532F, 0.841208F, 1.908628F, 0.846440F, 5.333522F, 0.868280F, 0.841519F, 0.868662F, 1.435230F, 0.871449F, 3.675784F, 0.881317F, 2.245058F, 0.882020F, 0.480249F, 0.882476F, 1.105804F, 0.902856F, 0.684850F, 0.904419F, 1.682113F, 0.909384F, 2.787801F, 0.916558F, 7.500981F, 0.918444F, 0.950341F, 0.919721F, 1.296319F, 0.940272F, 4.682978F, 0.940273F, 1.991736F, 0.950291F, 3.507281F, 0.957455F, 1.116284F, 0.957723F, 0.793034F, 0.958217F, 1.497824F, 0.962628F, 2.514156F, 0.968507F, 0.588605F, 0.974739F, 0.339933F, 0.991738F, 1.750201F, 0.997210F, 0.936131F, 1.002422F, 1.250008F, 1.006040F, 2.167232F, 1.008848F, 3.129940F, 1.014404F, 5.842819F, 1.027798F, 4.287319F, 1.039404F, 1.489295F, 1.039628F, 8.947958F, 1.043214F, 0.765733F, 1.045089F, 2.537806F, 1.058994F, 1.031496F, 1.060415F, 0.478612F, 1.072132F, 12.8F, 1.074778F, 1.910049F, 1.076570F, 15.9999F, 1.107853F, 3.843067F, 1.110673F, 1.228576F, 1.110969F, 2.758471F, 1.140058F, 1.603077F, 1.155384F, 0.668935F, 1.176229F, 6.717108F, 1.179008F, 2.011940F, 1.187735F, 0.963552F, 1.199569F, 4.891432F, 1.206311F, 3.316329F, 1.215323F, 2.507536F, 1.223150F, 1.387102F, 1.296012F, 9.684225F}; const FLOAT32 iusace_interp4_1[17] = {0.900000F, 0.818959F, 0.604850F, 0.331379F, 0.083958F, -0.075795F, -0.130717F, -0.105685F, -0.046774F, 0.004467F, 0.027789F, 0.025642F, 0.012571F, 0.001927F, -0.001571F, -0.000753F, 0.000000f};