blob: 340ae200229d77d5e743c1570d2f79cc1c3feda1 [file] [log] [blame]
/*
* LongTermPostfilterCoefficients.cpp
*
* Copyright 2021 HIMSA II K/S - www.himsa.com. Represented by EHIMA -
* www.ehima.com
*
* 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.
*/
// LC3 Specification d09r01.pdf
// Section 5.7.5 Long Term Postfiltering
#include "LongTermPostfilterCoefficients.hpp"
// LC3 Specification d09r01.pdf; Page 110 of 177
double tab_resamp_filter[239] = {
-2.043055832879108e-05, -4.463458936757081e-05, -7.163663994481459e-05,
-1.001011132655914e-04, -1.283728480660395e-04, -1.545438297704662e-04,
-1.765445671257668e-04, -1.922569599584802e-04, -1.996438192500382e-04,
-1.968886856400547e-04, -1.825383318834690e-04, -1.556394266046803e-04,
-1.158603651792638e-04, -6.358930335348977e-05, +2.810064795067786e-19,
+7.292180213001337e-05, +1.523970757644272e-04, +2.349207769898906e-04,
+3.163786496265269e-04, +3.922117380894736e-04, +4.576238491064392e-04,
+5.078242936704864e-04, +5.382955231045915e-04, +5.450729176175875e-04,
+5.250221548270982e-04, +4.760984242947349e-04, +3.975713799264791e-04,
+2.902002172907180e-04, +1.563446669975615e-04, -5.818801416923580e-19,
-1.732527127898052e-04, -3.563859653300760e-04, -5.411552308801147e-04,
-7.184140229675020e-04, -8.785052315963854e-04, -1.011714513697282e-03,
-1.108767055632304e-03, -1.161345220483996e-03, -1.162601694464620e-03,
-1.107640974148221e-03, -9.939415631563015e-04, -8.216921898513225e-04,
// LC3 Specification d09r01.pdf; Page 111 of 177
-5.940177657925908e-04, -3.170746535382728e-04, +9.746950818779534e-19,
+3.452937604228947e-04, +7.044808705458705e-04, +1.061334465662964e-03,
+1.398374734488549e-03, +1.697630799350524e-03, +1.941486748731660e-03,
+2.113575906669355e-03, +2.199682452179964e-03, +2.188606246517629e-03,
+2.072945458973295e-03, +1.849752491313908e-03, +1.521021876908738e-03,
+1.093974255016849e-03, +5.811080624426164e-04, -1.422482656398999e-18,
-6.271537303228204e-04, -1.274251404913447e-03, -1.912238389850182e-03,
-2.510269249380764e-03, -3.037038298629825e-03, -3.462226871101535e-03,
-3.758006719596473e-03, -3.900532466948409e-03, -3.871352309895838e-03,
-3.658665583679722e-03, -3.258358512646846e-03, -2.674755551508349e-03,
-1.921033054368456e-03, -1.019254326838640e-03, +1.869623690895593e-18,
+1.098415446732263e-03, +2.231131973532823e-03, +3.348309272768835e-03,
+4.397022774386510e-03, +5.323426722644900e-03, +6.075105310368700e-03,
+6.603520247552113e-03, +6.866453987193027e-03, +6.830342695906946e-03,
+6.472392343549424e-03, +5.782375213956374e-03, +4.764012726389739e-03,
+3.435863514113467e-03, +1.831652835406657e-03, -2.251898372838663e-18,
-1.996476188279370e-03, -4.082668858919100e-03, -6.173080374929424e-03,
-8.174448945974208e-03, -9.988823864332691e-03, -1.151698705819990e-02,
-1.266210056063963e-02, -1.333344579518481e-02, -1.345011199343934e-02,
-1.294448809639154e-02, -1.176541543002924e-02, -9.880867320401294e-03,
-7.280036402392082e-03, -3.974730209151807e-03, +2.509617777250391e-18,
+4.586044219717467e-03, +9.703248998383679e-03, +1.525124770818010e-02,
+2.111205854013017e-02, +2.715337236094137e-02, +3.323242450843114e-02,
+3.920032029020130e-02, +4.490666443426786e-02, +5.020433088017846e-02,
+5.495420172681558e-02, +5.902970324375908e-02, +6.232097270672976e-02,
+6.473850225260731e-02, +6.621612450840858e-02, +6.671322871619612e-02,
+6.621612450840858e-02, +6.473850225260731e-02, +6.232097270672976e-02,
+5.902970324375908e-02, +5.495420172681558e-02, +5.020433088017846e-02,
+4.490666443426786e-02, +3.920032029020130e-02, +3.323242450843114e-02,
+2.715337236094137e-02, +2.111205854013017e-02, +1.525124770818010e-02,
+9.703248998383679e-03, +4.586044219717467e-03, +2.509617777250391e-18,
-3.974730209151807e-03, -7.280036402392082e-03, -9.880867320401294e-03,
-1.176541543002924e-02, -1.294448809639154e-02, -1.345011199343934e-02,
-1.333344579518481e-02, -1.266210056063963e-02, -1.151698705819990e-02,
-9.988823864332691e-03, -8.174448945974208e-03, -6.173080374929424e-03,
-4.082668858919100e-03, -1.996476188279370e-03, -2.251898372838663e-18,
+1.831652835406657e-03, +3.435863514113467e-03, +4.764012726389739e-03,
+5.782375213956374e-03, +6.472392343549424e-03, +6.830342695906946e-03,
+6.866453987193027e-03, +6.603520247552113e-03, +6.075105310368700e-03,
+5.323426722644900e-03, +4.397022774386510e-03, +3.348309272768835e-03,
+2.231131973532823e-03, +1.098415446732263e-03, +1.869623690895593e-18,
-1.019254326838640e-03, -1.921033054368456e-03, -2.674755551508349e-03,
-3.258358512646846e-03, -3.658665583679722e-03, -3.871352309895838e-03,
-3.900532466948409e-03, -3.758006719596473e-03, -3.462226871101535e-03,
-3.037038298629825e-03, -2.510269249380764e-03, -1.912238389850182e-03,
-1.274251404913447e-03, -6.271537303228204e-04, -1.422482656398999e-18,
+5.811080624426164e-04, +1.093974255016849e-03, +1.521021876908738e-03,
+1.849752491313908e-03, +2.072945458973295e-03, +2.188606246517629e-03,
+2.199682452179964e-03, +2.113575906669355e-03, +1.941486748731660e-03,
+1.697630799350524e-03, +1.398374734488549e-03, +1.061334465662964e-03,
+7.044808705458705e-04, +3.452937604228947e-04, +9.746950818779534e-19,
-3.170746535382728e-04, -5.940177657925908e-04, -8.216921898513225e-04,
-9.939415631563015e-04, -1.107640974148221e-03, -1.162601694464620e-03,
-1.161345220483996e-03, -1.108767055632304e-03, -1.011714513697282e-03,
-8.785052315963854e-04, -7.184140229675020e-04, -5.411552308801147e-04,
-3.563859653300760e-04, -1.732527127898052e-04, -5.818801416923580e-19,
// LC3 Specification d09r01.pdf; Page 112 of 177
+1.563446669975615e-04, +2.902002172907180e-04, +3.975713799264791e-04,
+4.760984242947349e-04, +5.250221548270982e-04, +5.450729176175875e-04,
+5.382955231045915e-04, +5.078242936704864e-04, +4.576238491064392e-04,
+3.922117380894736e-04, +3.163786496265269e-04, +2.349207769898906e-04,
+1.523970757644272e-04, +7.292180213001337e-05, +2.810064795067786e-19,
-6.358930335348977e-05, -1.158603651792638e-04, -1.556394266046803e-04,
-1.825383318834690e-04, -1.968886856400547e-04, -1.996438192500382e-04,
-1.922569599584802e-04, -1.765445671257668e-04, -1.545438297704662e-04,
-1.283728480660395e-04, -1.001011132655914e-04, -7.163663994481459e-05,
-4.463458936757081e-05, -2.043055832879108e-05};
double tab_ltpf_interp_R[31] = {
-2.874561161519444e-03, -3.001251025861499e-03, +2.745471654059321e-03,
+1.535727698935322e-02, +2.868234046665657e-02, +2.950385026557377e-02,
+4.598334491135473e-03, -4.729632459043440e-02, -1.058359163062837e-01,
-1.303050213607112e-01, -7.544046357555201e-02, +8.357885725250529e-02,
+3.301825710764459e-01, +6.032970076366158e-01, +8.174886856243178e-01,
+8.986382851273982e-01, +8.174886856243178e-01, +6.032970076366158e-01,
+3.301825710764459e-01, +8.357885725250529e-02, -7.544046357555201e-02,
-1.303050213607112e-01, -1.058359163062837e-01, -4.729632459043440e-02,
+4.598334491135473e-03, +2.950385026557377e-02, +2.868234046665657e-02,
+1.535727698935322e-02, +2.745471654059321e-03, -3.001251025861499e-03,
-2.874561161519444e-03};
double tab_ltpf_interp_x12k8[15] = {
+6.698858366939680e-03, +3.967114782344967e-02, +1.069991860896389e-01,
+2.098804630681809e-01, +3.356906254147840e-01, +4.592209296082350e-01,
+5.500750019177116e-01, +5.835275754221211e-01, +5.500750019177116e-01,
+4.592209296082350e-01, +3.356906254147840e-01, +2.098804630681809e-01,
+1.069991860896389e-01, +3.967114782344967e-02, +6.698858366939680e-03};
double tab_ltpf_num_8000[4][3] = {
{6.023618207009578e-01, 4.197609261363617e-01, -1.883424527883687e-02},
{5.994768582584314e-01, 4.197609261363620e-01, -1.594928283631041e-02},
{5.967764663733787e-01, 4.197609261363617e-01, -1.324889095125780e-02},
{5.942410120098895e-01, 4.197609261363618e-01, -1.071343658776831e-02}};
double tab_ltpf_num_16000[4][3] = {
{6.023618207009578e-01, 4.197609261363617e-01, -1.883424527883687e-02},
{5.994768582584314e-01, 4.197609261363620e-01, -1.594928283631041e-02},
{5.967764663733787e-01, 4.197609261363617e-01, -1.324889095125780e-02},
{5.942410120098895e-01, 4.197609261363618e-01, -1.071343658776831e-02}};
double tab_ltpf_num_24000[4][5] = {
{3.989695588963494e-01, 5.142508607708275e-01, 1.004382966157454e-01,
-1.278893956818042e-02, -1.572280075461383e-03},
{3.948634911286333e-01, 5.123819208048688e-01, 1.043194926386267e-01,
-1.091999960222166e-02, -1.347408330627317e-03},
{3.909844475885914e-01, 5.106053522688359e-01, 1.079832524685944e-01,
-9.143431066188848e-03, -1.132124620551895e-03},
{3.873093888199928e-01, 5.089122083363975e-01, 1.114517380217371e-01,
-7.450287133750717e-03, -9.255514050963111e-04}};
double tab_ltpf_num_32000[4][7] = {
// LC3 Specification d09r01.pdf; Page 113 of 177
{2.982379446702096e-01, 4.652809203721290e-01, 2.105997428614279e-01,
3.766780380806063e-02, -1.015696155796564e-02, -2.535880996101096e-03,
-3.182946168719958e-04},
{2.943834154510240e-01, 4.619294002718798e-01, 2.129465770091844e-01,
4.066175002688857e-02, -8.693272297010050e-03, -2.178307114679820e-03,
-2.742888063983188e-04},
{2.907439213122688e-01, 4.587461910960279e-01, 2.151456974108970e-01,
4.350104772529774e-02, -7.295495347716925e-03, -1.834395637237086e-03,
-2.316920186482416e-04},
{2.872975852589158e-01, 4.557148886861379e-01, 2.172126950911401e-01,
4.620088878229615e-02, -5.957463802125952e-03, -1.502934284345198e-03,
-1.903851911308866e-04}};
double tab_ltpf_num_48000[4][11] = {
{1.981363739883217e-01, 3.524494903964904e-01, 2.513695269649414e-01,
1.424146237314458e-01, 5.704731023952599e-02, 9.293366241586384e-03,
-7.226025368953745e-03, -3.172679890356356e-03, -1.121835963567014e-03,
-2.902957238400140e-04, -4.270815593769240e-05},
{1.950709426598375e-01, 3.484660408341632e-01, 2.509988459466574e-01,
1.441167412482088e-01, 5.928947317677285e-02, 1.108923827452231e-02,
-6.192908108653504e-03, -2.726705509251737e-03, -9.667125826217151e-04,
-2.508100923165204e-04, -3.699938766131869e-05},
{1.921810055196015e-01, 3.446945561091513e-01, 2.506220094626024e-01,
1.457102447664837e-01, 6.141132133664525e-02, 1.279941396562798e-02,
-5.203721087886321e-03, -2.297324511109085e-03, -8.165608133217555e-04,
-2.123855748277408e-04, -3.141271330981649e-05},
{1.894485314175868e-01, 3.411139251108252e-01, 2.502406876894361e-01,
1.472065631098081e-01, 6.342477229539051e-02, 1.443203434150312e-02,
-4.254449144657098e-03, -1.883081472613493e-03, -6.709619060722140e-04,
-1.749363341966872e-04, -2.593864735284285e-05}};
double tab_ltpf_den_8000[4][5] = {
{0.000000000000000e+00, 2.098804630681809e-01, 5.835275754221211e-01,
2.098804630681809e-01, 0.000000000000000e+00},
{0.000000000000000e+00, 1.069991860896389e-01, 5.500750019177116e-01,
3.356906254147840e-01, 6.698858366939680e-03},
{0.000000000000000e+00, 3.967114782344967e-02, 4.592209296082350e-01,
4.592209296082350e-01, 3.967114782344967e-02},
{0.000000000000000e+00, 6.698858366939680e-03, 3.356906254147840e-01,
5.500750019177116e-01, 1.069991860896389e-01}};
double tab_ltpf_den_16000[4][5] = {
{0.000000000000000e+00, 2.098804630681809e-01, 5.835275754221211e-01,
2.098804630681809e-01, 0.000000000000000e+00},
{0.000000000000000e+00, 1.069991860896389e-01, 5.500750019177116e-01,
3.356906254147840e-01, 6.698858366939680e-03},
{0.000000000000000e+00, 3.967114782344967e-02, 4.592209296082350e-01,
4.592209296082350e-01, 3.967114782344967e-02},
{0.000000000000000e+00, 6.698858366939680e-03, 3.356906254147840e-01,
5.500750019177116e-01, 1.069991860896389e-01}};
double tab_ltpf_den_24000[4][7] = {
{0.000000000000000e+00, 6.322231627323796e-02, 2.507309606013235e-01,
3.713909428901578e-01, 2.507309606013235e-01, 6.322231627323796e-02,
0.000000000000000e+00},
// LC3 Specification d09r01.pdf; Page 114 of 177
{0.000000000000000e+00, 3.459272174099855e-02, 1.986515602645028e-01,
3.626411726581452e-01, 2.986750548992179e-01, 1.013092873505928e-01,
4.263543712369752e-03},
{0.000000000000000e+00, 1.535746784963907e-02, 1.474344878058222e-01,
3.374259553990717e-01, 3.374259553990717e-01, 1.474344878058222e-01,
1.535746784963907e-02},
{0.000000000000000e+00, 4.263543712369752e-03, 1.013092873505928e-01,
2.986750548992179e-01, 3.626411726581452e-01, 1.986515602645028e-01,
3.459272174099855e-02}};
double tab_ltpf_den_32000[4][9] = {
{0.000000000000000e+00, 2.900401878228730e-02, 1.129857420560927e-01,
2.212024028097570e-01, 2.723909472446145e-01, 2.212024028097570e-01,
1.129857420560927e-01, 2.900401878228730e-02, 0.000000000000000e+00},
{0.000000000000000e+00, 1.703153418385261e-02, 8.722503785537784e-02,
1.961407762232199e-01, 2.689237982237257e-01, 2.424999102756389e-01,
1.405773364650031e-01, 4.474877169485788e-02, 3.127030243100724e-03},
{0.000000000000000e+00, 8.563673748488349e-03, 6.426222944493845e-02,
1.687676705918012e-01, 2.587445937795505e-01, 2.587445937795505e-01,
1.687676705918012e-01, 6.426222944493845e-02, 8.563673748488349e-03},
{0.000000000000000e+00, 3.127030243100724e-03, 4.474877169485788e-02,
1.405773364650031e-01, 2.424999102756389e-01, 2.689237982237257e-01,
1.961407762232199e-01, 8.722503785537784e-02, 1.703153418385261e-02}};
double tab_ltpf_den_48000[4][13] = {
{0.000000000000000e+00, 1.082359386659387e-02, 3.608969221303979e-02,
7.676401468099964e-02, 1.241530577501703e-01, 1.627596438300696e-01,
1.776771417779109e-01, 1.627596438300696e-01, 1.241530577501703e-01,
7.676401468099964e-02, 3.608969221303979e-02, 1.082359386659387e-02,
0.000000000000000e+00},
{0.000000000000000e+00, 7.041404930459358e-03, 2.819702319820420e-02,
6.547044935127551e-02, 1.124647986743299e-01, 1.548418956489015e-01,
1.767122381341857e-01, 1.691507213057663e-01, 1.352901577989766e-01,
8.851425011427483e-02, 4.499353848562444e-02, 1.557613714732002e-02,
2.039721956502016e-03},
{0.000000000000000e+00, 4.146998467444788e-03, 2.135757310741917e-02,
5.482735584552816e-02, 1.004971444643720e-01, 1.456060342830002e-01,
1.738439838565869e-01, 1.738439838565869e-01, 1.456060342830002e-01,
1.004971444643720e-01, 5.482735584552816e-02, 2.135757310741917e-02,
4.146998467444788e-03},
{0.000000000000000e+00, 2.039721956502016e-03, 1.557613714732002e-02,
4.499353848562444e-02, 8.851425011427483e-02, 1.352901577989766e-01,
1.691507213057663e-01, 1.767122381341857e-01, 1.548418956489015e-01,
1.124647986743299e-01, 6.547044935127551e-02, 2.819702319820420e-02,
7.041404930459358e-03}};