diff --git a/libavcodec/dca.c b/libavcodec/dca.c index 7a6841d49c..79ea37316c 100644 --- a/libavcodec/dca.c +++ b/libavcodec/dca.c @@ -802,28 +802,37 @@ static void lfe_interpolation_fir(int decimation_select, int decifactor, k, j; const float *prCoeff; - - int interp_index = 0; /* Index to the interpolated samples */ int deciindex; /* Select decimation filter */ if (decimation_select == 1) { - decifactor = 128; + decifactor = 64; prCoeff = lfe_fir_128; } else { - decifactor = 64; + decifactor = 32; prCoeff = lfe_fir_64; } /* Interpolation */ for (deciindex = 0; deciindex < num_deci_sample; deciindex++) { - /* One decimated sample generates decifactor interpolated ones */ + float *samples_out2 = samples_out + decifactor; + const float *cf0 = prCoeff; + const float *cf1 = prCoeff + 256; + + /* One decimated sample generates 2*decifactor interpolated ones */ for (k = 0; k < decifactor; k++) { - float rTmp = 0.0; - //FIXME the coeffs are symetric, fix that - for (j = 0; j < 512 / decifactor; j++) - rTmp += samples_in[deciindex - j] * prCoeff[k + j * decifactor]; - samples_out[interp_index++] = (rTmp * scale) + bias; + float v0 = 0.0; + float v1 = 0.0; + for (j = 0; j < 256 / decifactor; j++) { + float s = samples_in[-j]; + v0 += s * *cf0++; + v1 += s * *--cf1; + } + *samples_out++ = (v0 * scale) + bias; + *samples_out2++ = (v1 * scale) + bias; } + + samples_in++; + samples_out += decifactor; } } diff --git a/libavcodec/dcadata.h b/libavcodec/dcadata.h index c7266aa4ba..657f3c8d06 100644 --- a/libavcodec/dcadata.h +++ b/libavcodec/dcadata.h @@ -7315,1039 +7315,204 @@ DECLARE_ALIGNED(16, static const float, fir_32bands_nonperfect)[] = +1.390191784E-007 }; -//FIXME the coeffs are symmetric static const float lfe_fir_64[] = { -2.6584343868307770E-004, -8.1793652498163280E-005, -9.4393239123746760E-005, -1.0821702744578940E-004, -1.2333714403212070E-004, -1.3974857574794440E-004, -1.5759580128360540E-004, -1.7699223826639360E-004, -1.9817386055365200E-004, -2.2118473134469240E-004, -2.4602311896160240E-004, -2.7261159266345200E-004, -3.0138631700538100E-004, -3.3283955417573450E-004, -3.6589911906048660E-004, -4.0182814700528980E-004, -4.4018754852004350E-004, -4.8127761692740020E-004, -5.2524596685543660E-004, -5.7215924607589840E-004, -6.2221300322562460E-004, -6.7555153509601950E-004, -7.3241489008069040E-004, -7.9285167157649990E-004, -8.5701106581836940E-004, -9.2511920956894760E-004, -9.9747709464281800E-004, -1.0739302961155770E-003, -1.1550235794857140E-003, -1.2406768510118130E-003, -1.3312589144334200E-003, -1.4268938684836030E-003, -1.5278297942131760E-003, -1.6342115122824910E-003, -1.7463274998590350E-003, -1.8643775256350640E-003, -1.9886041991412640E-003, -2.1191518753767010E-003, -2.2563596721738580E-003, -2.4004334118217230E-003, -2.5515670422464610E-003, -2.7100932784378530E-003, -2.8761904686689380E-003, -3.0501529108732940E-003, -3.2322725746780640E-003, -3.4227769356220960E-003, -3.6219672765582800E-003, -3.8300913292914630E-003, -4.0474990382790560E-003, -4.2744171805679800E-003, -4.5111598446965220E-003, -4.7580120153725150E-003, -5.0153112970292570E-003, -5.2832840010523800E-003, -5.5623454973101620E-003, -5.8526843786239620E-003, -6.1547122895717620E-003, -6.4686913974583150E-003, -6.7949919030070300E-003, -7.1338820271193980E-003, -7.4857366271317010E-003, -7.8508658334612850E-003, -8.2296309992671010E-003, -8.6223213002085690E-003, -9.0293306857347480E-003, -9.4509534537792200E-003, -9.8875602707266800E-003, -1.0339494794607160E-002, -1.0807084850966930E-002, -1.1290682479739190E-002, -1.1790650896728040E-002, -1.2307321652770040E-002, -1.2841059826314450E-002, -1.3392185792326930E-002, -1.3961089774966240E-002, -1.4548087492585180E-002, -1.5153550542891020E-002, -1.5777811408042910E-002, -1.6421230509877200E-002, -1.7084129154682160E-002, -1.7766902223229410E-002, -1.8469827249646190E-002, -1.9193304702639580E-002, -1.9937623292207720E-002, -2.0703161135315900E-002, -2.1490212529897690E-002, -2.2299138829112050E-002, -2.3130238056182860E-002, -2.3983856663107870E-002, -2.4860285222530360E-002, -2.5759860873222350E-002, -2.6682861149311060E-002, -2.7629608288407320E-002, -2.8600392863154410E-002, -2.9595496132969860E-002, -3.0615204945206640E-002, -3.1659796833992000E-002, -3.2729536294937140E-002, -3.3824689686298370E-002, -3.4945506602525710E-002, -3.6092240363359450E-002, -3.7265110760927200E-002, -3.8464374840259550E-002, -3.9690230041742320E-002, -4.0942888706922530E-002, -4.2222552001476290E-002, -4.3529424816370010E-002, -4.4863656163215640E-002, -4.6225443482398990E-002, -4.7614917159080510E-002, -4.9032241106033330E-002, -5.0477534532547000E-002, -5.1950931549072270E-002, -5.3452525287866590E-002, -5.4982420057058330E-002, -5.6540694087743760E-002, -5.8127421885728840E-002, -5.9742655605077740E-002, -6.1386436223983760E-002, -6.3058786094188690E-002, -6.4759708940982820E-002, -6.6489234566688540E-002, -6.8247318267822270E-002, -7.0033922791481020E-002, -7.1849010884761810E-002, -7.3692522943019870E-002, -7.5564362108707430E-002, -7.7464438974857330E-002, -7.9392634332180020E-002, -8.1348828971385960E-002, -8.3332858979702000E-002, -8.5344567894935610E-002, -8.7383769452571870E-002, -8.9450262486934660E-002, -9.1543838381767280E-002, -9.3664251267910000E-002, -9.5811240375041960E-002, -9.7984537482261660E-002, -1.0018386691808700E-001, -1.0240890830755230E-001, -1.0465932637453080E-001, -1.0693479329347610E-001, -1.0923493653535840E-001, -1.1155936866998670E-001, -1.1390769481658940E-001, -1.1627949774265290E-001, -1.1867434531450270E-001, -1.2109176814556120E-001, -1.2353130429983140E-001, -1.2599244713783260E-001, -1.2847468256950380E-001, -1.3097748160362240E-001, -1.3350030779838560E-001, -1.3604259490966800E-001, -1.3860376179218290E-001, -1.4118319749832150E-001, -1.4378026127815250E-001, -1.4639437198638920E-001, -1.4902481436729430E-001, -1.5167096257209780E-001, -1.5433208644390100E-001, -1.5700751543045040E-001, -1.5969651937484740E-001, -1.6239835321903230E-001, -1.6511227190494540E-001, -1.6783750057220460E-001, -1.7057323455810550E-001, -1.7331869900226590E-001, -1.7607308924198150E-001, -1.7883554100990300E-001, -1.8160524964332580E-001, -1.8438133597373960E-001, -1.8716295063495640E-001, -1.8994916975498200E-001, -1.9273911416530610E-001, -1.9553191959857940E-001, -1.9832661747932440E-001, -2.0112232863903040E-001, -2.0391805469989780E-001, -2.0671287178993220E-001, -2.0950584113597870E-001, -2.1229594945907590E-001, -2.1508227288722990E-001, -2.1786379814147950E-001, -2.2063951194286350E-001, -2.2340846061706540E-001, -2.2616961598396300E-001, -2.2892196476459500E-001, -2.3166447877883910E-001, -2.3439615964889520E-001, -2.3711597919464110E-001, -2.3982289433479310E-001, -2.4251587688922880E-001, -2.4519388377666480E-001, -2.4785590171813960E-001, -2.5050088763237000E-001, -2.5312781333923340E-001, -2.5573557615280150E-001, -2.5832322239875800E-001, -2.6088967919349670E-001, -2.6343390345573420E-001, -2.6595494151115420E-001, -2.6845166087150580E-001, -2.7092313766479490E-001, -2.7336826920509340E-001, -2.7578607201576240E-001, -2.7817553281784060E-001, -2.8053569793701170E-001, -2.8286558389663700E-001, -2.8516408801078800E-001, -2.8743034601211550E-001, -2.8966337442398070E-001, -2.9186218976974480E-001, -2.9402589797973640E-001, -2.9615348577499390E-001, -2.9824411869049070E-001, -3.0029675364494320E-001, -3.0231067538261420E-001, -3.0428490042686460E-001, -3.0621853470802300E-001, -3.0811080336570740E-001, -3.0996081233024600E-001, -3.1176769733428960E-001, -3.1353080272674560E-001, -3.1524917483329780E-001, -3.1692212820053100E-001, -3.1854888796806340E-001, -3.2012873888015740E-001, -3.2166096568107600E-001, -3.2314485311508180E-001, -3.2457971572875980E-001, -3.2596495747566220E-001, -3.2729989290237420E-001, -3.2858389616012580E-001, -3.2981643080711360E-001, -3.3099696040153500E-001, -3.3212485909461980E-001, -3.3319962024688720E-001, -3.3422079682350160E-001, -3.3518791198730470E-001, -3.3610042929649360E-001, -3.3695802092552180E-001, -3.3776029944419860E-001, -3.3850681781768800E-001, -3.3919724822044380E-001, -3.3983129262924200E-001, -3.4040865302085880E-001, -3.4092903137207030E-001, -3.4139221906661980E-001, -3.4179797768592840E-001, -3.4214612841606140E-001, -3.4243649244308470E-001, -3.4266895055770880E-001, -3.4284341335296630E-001, -3.4295973181724550E-001, -3.4301793575286860E-001, -3.4301793575286860E-001, -3.4295973181724550E-001, -3.4284341335296630E-001, -3.4266895055770880E-001, -3.4243649244308470E-001, -3.4214612841606140E-001, -3.4179797768592840E-001, -3.4139221906661980E-001, -3.4092903137207030E-001, -3.4040865302085880E-001, -3.3983129262924200E-001, -3.3919724822044380E-001, -3.3850681781768800E-001, -3.3776029944419860E-001, -3.3695802092552180E-001, -3.3610042929649360E-001, -3.3518791198730470E-001, -3.3422079682350160E-001, -3.3319962024688720E-001, -3.3212485909461980E-001, -3.3099696040153500E-001, -3.2981643080711360E-001, -3.2858389616012580E-001, -3.2729989290237420E-001, -3.2596495747566220E-001, -3.2457971572875980E-001, -3.2314485311508180E-001, -3.2166096568107600E-001, -3.2012873888015740E-001, -3.1854888796806340E-001, -3.1692212820053100E-001, -3.1524917483329780E-001, -3.1353080272674560E-001, -3.1176769733428960E-001, -3.0996081233024600E-001, -3.0811080336570740E-001, -3.0621853470802300E-001, -3.0428490042686460E-001, -3.0231067538261420E-001, -3.0029675364494320E-001, -2.9824411869049070E-001, -2.9615348577499390E-001, -2.9402589797973640E-001, -2.9186218976974480E-001, -2.8966337442398070E-001, -2.8743034601211550E-001, -2.8516408801078800E-001, -2.8286558389663700E-001, -2.8053569793701170E-001, -2.7817553281784060E-001, -2.7578607201576240E-001, -2.7336826920509340E-001, -2.7092313766479490E-001, -2.6845166087150580E-001, -2.6595494151115420E-001, -2.6343390345573420E-001, -2.6088967919349670E-001, -2.5832322239875800E-001, -2.5573557615280150E-001, -2.5312781333923340E-001, -2.5050088763237000E-001, -2.4785590171813960E-001, -2.4519388377666480E-001, -2.4251587688922880E-001, -2.3982289433479310E-001, -2.3711597919464110E-001, -2.3439615964889520E-001, -2.3166447877883910E-001, -2.2892196476459500E-001, -2.2616961598396300E-001, -2.2340846061706540E-001, -2.2063951194286350E-001, -2.1786379814147950E-001, -2.1508227288722990E-001, -2.1229594945907590E-001, -2.0950584113597870E-001, -2.0671287178993220E-001, -2.0391805469989780E-001, -2.0112232863903040E-001, -1.9832661747932440E-001, -1.9553191959857940E-001, -1.9273911416530610E-001, -1.8994916975498200E-001, -1.8716295063495640E-001, -1.8438133597373960E-001, -1.8160524964332580E-001, -1.7883554100990300E-001, -1.7607308924198150E-001, -1.7331869900226590E-001, -1.7057323455810550E-001, -1.6783750057220460E-001, -1.6511227190494540E-001, -1.6239835321903230E-001, -1.5969651937484740E-001, -1.5700751543045040E-001, -1.5433208644390100E-001, -1.5167096257209780E-001, -1.4902481436729430E-001, -1.4639437198638920E-001, -1.4378026127815250E-001, -1.4118319749832150E-001, -1.3860376179218290E-001, -1.3604259490966800E-001, -1.3350030779838560E-001, -1.3097748160362240E-001, -1.2847468256950380E-001, -1.2599244713783260E-001, -1.2353130429983140E-001, -1.2109176814556120E-001, -1.1867434531450270E-001, -1.1627949774265290E-001, -1.1390769481658940E-001, -1.1155936866998670E-001, -1.0923493653535840E-001, -1.0693479329347610E-001, -1.0465932637453080E-001, -1.0240890830755230E-001, -1.0018386691808700E-001, -9.7984537482261660E-002, -9.5811240375041960E-002, -9.3664251267910000E-002, -9.1543838381767280E-002, -8.9450262486934660E-002, -8.7383769452571870E-002, -8.5344567894935610E-002, -8.3332858979702000E-002, -8.1348828971385960E-002, -7.9392634332180020E-002, -7.7464438974857330E-002, -7.5564362108707430E-002, -7.3692522943019870E-002, -7.1849010884761810E-002, -7.0033922791481020E-002, -6.8247318267822270E-002, -6.6489234566688540E-002, -6.4759708940982820E-002, -6.3058786094188690E-002, -6.1386436223983760E-002, -5.9742655605077740E-002, -5.8127421885728840E-002, -5.6540694087743760E-002, -5.4982420057058330E-002, -5.3452525287866590E-002, -5.1950931549072270E-002, -5.0477534532547000E-002, -4.9032241106033330E-002, -4.7614917159080510E-002, -4.6225443482398990E-002, -4.4863656163215640E-002, -4.3529424816370010E-002, -4.2222552001476290E-002, -4.0942888706922530E-002, -3.9690230041742320E-002, -3.8464374840259550E-002, -3.7265110760927200E-002, -3.6092240363359450E-002, -3.4945506602525710E-002, -3.3824689686298370E-002, -3.2729536294937140E-002, -3.1659796833992000E-002, -3.0615204945206640E-002, -2.9595496132969860E-002, -2.8600392863154410E-002, -2.7629608288407320E-002, -2.6682861149311060E-002, -2.5759860873222350E-002, -2.4860285222530360E-002, -2.3983856663107870E-002, -2.3130238056182860E-002, -2.2299138829112050E-002, -2.1490212529897690E-002, -2.0703161135315900E-002, -1.9937623292207720E-002, -1.9193304702639580E-002, -1.8469827249646190E-002, -1.7766902223229410E-002, -1.7084129154682160E-002, -1.6421230509877200E-002, -1.5777811408042910E-002, -1.5153550542891020E-002, -1.4548087492585180E-002, -1.3961089774966240E-002, -1.3392185792326930E-002, -1.2841059826314450E-002, -1.2307321652770040E-002, -1.1790650896728040E-002, -1.1290682479739190E-002, -1.0807084850966930E-002, -1.0339494794607160E-002, -9.8875602707266800E-003, -9.4509534537792200E-003, -9.0293306857347480E-003, -8.6223213002085690E-003, -8.2296309992671010E-003, -7.8508658334612850E-003, -7.4857366271317010E-003, -7.1338820271193980E-003, -6.7949919030070300E-003, -6.4686913974583150E-003, -6.1547122895717620E-003, -5.8526843786239620E-003, -5.5623454973101620E-003, -5.2832840010523800E-003, -5.0153112970292570E-003, -4.7580120153725150E-003, -4.5111598446965220E-003, -4.2744171805679800E-003, -4.0474990382790560E-003, -3.8300913292914630E-003, -3.6219672765582800E-003, -3.4227769356220960E-003, -3.2322725746780640E-003, -3.0501529108732940E-003, -2.8761904686689380E-003, -2.7100932784378530E-003, -2.5515670422464610E-003, -2.4004334118217230E-003, -2.2563596721738580E-003, -2.1191518753767010E-003, -1.9886041991412640E-003, -1.8643775256350640E-003, -1.7463274998590350E-003, -1.6342115122824910E-003, -1.5278297942131760E-003, -1.4268938684836030E-003, -1.3312589144334200E-003, -1.2406768510118130E-003, -1.1550235794857140E-003, -1.0739302961155770E-003, -9.9747709464281800E-004, -9.2511920956894760E-004, -8.5701106581836940E-004, -7.9285167157649990E-004, -7.3241489008069040E-004, -6.7555153509601950E-004, -6.2221300322562460E-004, -5.7215924607589840E-004, -5.2524596685543660E-004, -4.8127761692740020E-004, -4.4018754852004350E-004, -4.0182814700528980E-004, -3.6589911906048660E-004, -3.3283955417573450E-004, -3.0138631700538100E-004, -2.7261159266345200E-004, -2.4602311896160240E-004, -2.2118473134469240E-004, -1.9817386055365200E-004, -1.7699223826639360E-004, -1.5759580128360540E-004, -1.3974857574794440E-004, -1.2333714403212070E-004, -1.0821702744578940E-004, -9.4393239123746760E-005, -8.1793652498163280E-005, -2.6584343868307770E-004 + 2.658434386830777e-4, 9.029330685734748e-3, + 7.939263433218002e-2, 2.425158768892288e-1, + 3.430179357528686e-1, 2.398228943347931e-1, + 7.746443897485733e-2, 8.622321300208569e-3, + 8.179365249816328e-5, 9.450953453779220e-3, + 8.134882897138596e-2, 2.451938837766648e-1, + 3.429597318172455e-1, 2.371159791946411e-1, + 7.556436210870743e-2, 8.229630999267101e-3, + 9.439323912374676e-5, 9.887560270726680e-3, + 8.333285897970200e-2, 2.478559017181396e-1, + 3.428434133529663e-1, 2.343961596488952e-1, + 7.369252294301987e-2, 7.850865833461285e-3, + 1.082170274457894e-4, 1.033949479460716e-2, + 8.534456789493561e-2, 2.505008876323700e-1, + 3.426689505577088e-1, 2.316644787788391e-1, + 7.184901088476181e-2, 7.485736627131701e-3, + 1.233371440321207e-4, 1.080708485096693e-2, + 8.738376945257187e-2, 2.531278133392334e-1, + 3.424364924430847e-1, 2.289219647645950e-1, + 7.003392279148102e-2, 7.133882027119398e-3, + 1.397485757479444e-4, 1.129068247973919e-2, + 8.945026248693466e-2, 2.557355761528015e-1, + 3.421461284160614e-1, 2.261696159839630e-1, + 6.824731826782227e-2, 6.794991903007030e-3, + 1.575958012836054e-4, 1.179065089672804e-2, + 9.154383838176728e-2, 2.583232223987580e-1, + 3.417979776859284e-1, 2.234084606170654e-1, + 6.648923456668854e-2, 6.468691397458315e-3, + 1.769922382663936e-4, 1.230732165277004e-2, + 9.366425126791000e-2, 2.608896791934967e-1, + 3.413922190666198e-1, 2.206395119428635e-1, + 6.475970894098282e-2, 6.154712289571762e-3, + 1.981738605536520e-4, 1.284105982631445e-2, + 9.581124037504196e-2, 2.634339034557342e-1, + 3.409290313720703e-1, 2.178637981414795e-1, + 6.305878609418869e-2, 5.852684378623962e-3, + 2.211847313446924e-4, 1.339218579232693e-2, + 9.798453748226166e-2, 2.659549415111542e-1, + 3.404086530208588e-1, 2.150822728872299e-1, + 6.138643622398376e-2, 5.562345497310162e-3, + 2.460231189616024e-4, 1.396108977496624e-2, + 1.001838669180870e-1, 2.684516608715058e-1, + 3.398312926292420e-1, 2.122959494590759e-1, + 5.974265560507774e-2, 5.283284001052380e-3, + 2.726115926634520e-4, 1.454808749258518e-2, + 1.024089083075523e-1, 2.709231376647949e-1, + 3.391972482204438e-1, 2.095058411359787e-1, + 5.812742188572884e-2, 5.015311297029257e-3, + 3.013863170053810e-4, 1.515355054289102e-2, + 1.046593263745308e-1, 2.733682692050934e-1, + 3.385068178176880e-1, 2.067128717899322e-1, + 5.654069408774376e-2, 4.758012015372515e-3, + 3.328395541757345e-4, 1.577781140804291e-2, + 1.069347932934761e-1, 2.757860720157624e-1, + 3.377602994441986e-1, 2.039180546998978e-1, + 5.498242005705833e-2, 4.511159844696522e-3, + 3.658991190604866e-4, 1.642123050987720e-2, + 1.092349365353584e-1, 2.781755328178406e-1, + 3.369580209255218e-1, 2.011223286390304e-1, + 5.345252528786659e-2, 4.274417180567980e-3, + 4.018281470052898e-4, 1.708412915468216e-2, + 1.115593686699867e-1, 2.805356979370117e-1, + 3.361004292964936e-1, 1.983266174793244e-1, + 5.195093154907227e-2, 4.047499038279056e-3, + 4.401875485200435e-4, 1.776690222322941e-2, + 1.139076948165894e-1, 2.828655838966370e-1, + 3.351879119873047e-1, 1.955319195985794e-1, + 5.047753453254700e-2, 3.830091329291463e-3, + 4.812776169274002e-4, 1.846982724964619e-2, + 1.162794977426529e-1, 2.851640880107880e-1, + 3.342207968235016e-1, 1.927391141653061e-1, + 4.903224110603333e-2, 3.621967276558280e-3, + 5.252459668554366e-4, 1.919330470263958e-2, + 1.186743453145027e-1, 2.874303460121155e-1, + 3.331996202468872e-1, 1.899491697549820e-1, + 4.761491715908051e-2, 3.422776935622096e-3, + 5.721592460758984e-4, 1.993762329220772e-2, + 1.210917681455612e-1, 2.896633744239807e-1, + 3.321248590946198e-1, 1.871629506349564e-1, + 4.622544348239899e-2, 3.232272574678064e-3, + 6.222130032256246e-4, 2.070316113531590e-2, + 1.235313042998314e-1, 2.918621897697448e-1, + 3.309969604015350e-1, 1.843813359737396e-1, + 4.486365616321564e-2, 3.050152910873294e-3, + 6.755515350960195e-4, 2.149021252989769e-2, + 1.259924471378326e-1, 2.940258979797364e-1, + 3.298164308071136e-1, 1.816052496433258e-1, + 4.352942481637001e-2, 2.876190468668938e-3, + 7.324148900806904e-4, 2.229913882911205e-2, + 1.284746825695038e-1, 2.961534857749939e-1, + 3.285838961601258e-1, 1.788355410099030e-1, + 4.222255200147629e-2, 2.710093278437853e-3, + 7.928516715764999e-4, 2.313023805618286e-2, + 1.309774816036224e-1, 2.982441186904907e-1, + 3.272998929023742e-1, 1.760730892419815e-1, + 4.094288870692253e-2, 2.551567042246461e-3, + 8.570110658183694e-4, 2.398385666310787e-2, + 1.335003077983856e-1, 3.002967536449432e-1, + 3.259649574756622e-1, 1.733186990022659e-1, + 3.969023004174232e-2, 2.400433411821723e-3, + 9.251192095689476e-4, 2.486028522253036e-2, + 1.360425949096680e-1, 3.023106753826142e-1, + 3.245797157287598e-1, 1.705732345581055e-1, + 3.846437484025955e-2, 2.256359672173858e-3, + 9.974770946428180e-4, 2.575986087322235e-2, + 1.386037617921829e-1, 3.042849004268646e-1, + 3.231448531150818e-1, 1.678375005722046e-1, + 3.726511076092720e-2, 2.119151875376701e-3, + 1.073930296115577e-3, 2.668286114931106e-2, + 1.411831974983215e-1, 3.062185347080230e-1, + 3.216609656810760e-1, 1.651122719049454e-1, + 3.609224036335945e-2, 1.988604199141264e-3, + 1.155023579485714e-3, 2.762960828840732e-2, + 1.437802612781525e-1, 3.081108033657074e-1, + 3.201287388801574e-1, 1.623983532190323e-1, + 3.494550660252571e-2, 1.864377525635064e-3, + 1.240676851011813e-3, 2.860039286315441e-2, + 1.463943719863892e-1, 3.099608123302460e-1, + 3.185488879680634e-1, 1.596965193748474e-1, + 3.382468968629837e-2, 1.746327499859035e-3, + 1.331258914433420e-3, 2.959549613296986e-2, + 1.490248143672943e-1, 3.117676973342896e-1, + 3.169221282005310e-1, 1.570075154304504e-1, + 3.272953629493714e-2, 1.634211512282491e-3, + 1.426893868483603e-3, 3.061520494520664e-2, + 1.516709625720978e-1, 3.135308027267456e-1, + 3.152491748332978e-1, 1.543320864439010e-1, + 3.165979683399200e-2, 1.527829794213176e-3, }; -//FIXME the coeffs are symmetric - static const float lfe_fir_128[] = { -0.00053168571, -0.00016358691, -0.00018878609, -0.00021643363, -0.00024667382, -0.00027949660, -0.00031519096, -0.00035398375, -0.00039634691, -0.00044236859, -0.00049204525, -0.00054522208, -0.00060277141, -0.00066567765, -0.00073179678, -0.00080365466, -0.00088037323, -0.00096255314, -0.00105048984, -0.00114431616, -0.00124442333, -0.00135110028, -0.00146482687, -0.00158570008, -0.00171401864, -0.00185023469, -0.00199495023, -0.00214785640, -0.00231004250, -0.00248134881, -0.00266251224, -0.00285378192, -0.00305565330, -0.00326841651, -0.00349264755, -0.00372874714, -0.00397720048, -0.00423829490, -0.00451271003, -0.00480085658, -0.00510312291, -0.00542017492, -0.00575236930, -0.00610029325, -0.00646453211, -0.00684553990, -0.00724391919, -0.00766016589, -0.00809498038, -0.00854881573, -0.00902230106, -0.00951600447, -0.01003060210, -0.01056654565, -0.01112466771, -0.01170534454, -0.01230939943, -0.01293735672, -0.01358995494, -0.01426773332, -0.01497144438, -0.01570170000, -0.01645922661, -0.01724460535, -0.01805862412, -0.01890186779, -0.01977507770, -0.02067894675, -0.02161412500, -0.02258131653, -0.02358125709, -0.02461459488, -0.02568206564, -0.02678431384, -0.02792212367, -0.02909611352, -0.03030703776, -0.03155555204, -0.03284239396, -0.03416819125, -0.03553372994, -0.03693958372, -0.03838652745, -0.03987516090, -0.04140623659, -0.04298033938, -0.04459818453, -0.04626038298, -0.04796761274, -0.04972046614, -0.05151961371, -0.05336561054, -0.05525910854, -0.05720067024, -0.05919086933, -0.06123027951, -0.06331945211, -0.06545893103, -0.06764923781, -0.06989086419, -0.07218432426, -0.07453006506, -0.07692859322, -0.07938029617, -0.08188561350, -0.08444493264, -0.08705867827, -0.08972713351, -0.09245070815, -0.09522963315, -0.09806428105, -0.10095486045, -0.10390164703, -0.10690483451, -0.10996460915, -0.11308115721, -0.11625462025, -0.11948505789, -0.12277261168, -0.12611730397, -0.12951917946, -0.13297818601, -0.13649433851, -0.14006754756, -0.14369773865, -0.14738474786, -0.15112841129, -0.15492856503, -0.15878495574, -0.16269733012, -0.16666537523, -0.17068879306, -0.17476719618, -0.17890018225, -0.18308731914, -0.18732811511, -0.19162209332, -0.19596865773, -0.20036731660, -0.20481738448, -0.20931822062, -0.21386915445, -0.21846942604, -0.22311829031, -0.22781492770, -0.23255851865, -0.23734821379, -0.24218304455, -0.24706205726, -0.25198432803, -0.25694879889, -0.26195442677, -0.26700007915, -0.27208462358, -0.27720692754, -0.28236576915, -0.28755992651, -0.29278811812, -0.29804900289, -0.30334126949, -0.30866351724, -0.31401440501, -0.31939238310, -0.32479602098, -0.33022382855, -0.33567428589, -0.34114575386, -0.34663668275, -0.35214546323, -0.35767036676, -0.36320972443, -0.36876192689, -0.37432509661, -0.37989753485, -0.38547745347, -0.39106300473, -0.39665243030, -0.40224379301, -0.40783521533, -0.41342487931, -0.41901078820, -0.42459106445, -0.43016362190, -0.43572667241, -0.44127810001, -0.44681602716, -0.45233830810, -0.45784294605, -0.46332800388, -0.46879136562, -0.47423094511, -0.47964480519, -0.48503074050, -0.49038675427, -0.49571081996, -0.50100076199, -0.50625455379, -0.51147013903, -0.51664537191, -0.52177828550, -0.52686679363, -0.53190881014, -0.53690224886, -0.54184508324, -0.54673534632, -0.55157101154, -0.55634999275, -0.56107026339, -0.56572991610, -0.57032698393, -0.57485944033, -0.57932555676, -0.58372318745, -0.58805054426, -0.59230577946, -0.59648692608, -0.60059231520, -0.60462015867, -0.60856848955, -0.61243581772, -0.61622029543, -0.61992025375, -0.62353414297, -0.62706029415, -0.63049703836, -0.63384294510, -0.63709646463, -0.64025616646, -0.64332056046, -0.64628833532, -0.64915806055, -0.65192854404, -0.65459835529, -0.65716648102, -0.65963155031, -0.66199249029, -0.66424828768, -0.66639786959, -0.66844022274, -0.67037439346, -0.67219948769, -0.67391467094, -0.67551922798, -0.67701220512, -0.67839306593, -0.67966115475, -0.68081587553, -0.68185669184, -0.68278300762, -0.68359452486, -0.68429082632, -0.68487155437, -0.68533653021, -0.68568539619, -0.68591803312, -0.68603444099, -0.68603444099, -0.68591803312, -0.68568539619, -0.68533653021, -0.68487155437, -0.68429082632, -0.68359452486, -0.68278300762, -0.68185669184, -0.68081587553, -0.67966115475, -0.67839306593, -0.67701220512, -0.67551922798, -0.67391467094, -0.67219948769, -0.67037439346, -0.66844022274, -0.66639786959, -0.66424828768, -0.66199249029, -0.65963155031, -0.65716648102, -0.65459835529, -0.65192854404, -0.64915806055, -0.64628833532, -0.64332056046, -0.64025616646, -0.63709646463, -0.63384294510, -0.63049703836, -0.62706029415, -0.62353414297, -0.61992025375, -0.61622029543, -0.61243581772, -0.60856848955, -0.60462015867, -0.60059231520, -0.59648692608, -0.59230577946, -0.58805054426, -0.58372318745, -0.57932555676, -0.57485944033, -0.57032698393, -0.56572991610, -0.56107026339, -0.55634999275, -0.55157101154, -0.54673534632, -0.54184508324, -0.53690224886, -0.53190881014, -0.52686679363, -0.52177828550, -0.51664537191, -0.51147013903, -0.50625455379, -0.50100076199, -0.49571081996, -0.49038675427, -0.48503074050, -0.47964480519, -0.47423094511, -0.46879136562, -0.46332800388, -0.45784294605, -0.45233830810, -0.44681602716, -0.44127810001, -0.43572667241, -0.43016362190, -0.42459106445, -0.41901078820, -0.41342487931, -0.40783521533, -0.40224379301, -0.39665243030, -0.39106300473, -0.38547745347, -0.37989753485, -0.37432509661, -0.36876192689, -0.36320972443, -0.35767036676, -0.35214546323, -0.34663668275, -0.34114575386, -0.33567428589, -0.33022382855, -0.32479602098, -0.31939238310, -0.31401440501, -0.30866351724, -0.30334126949, -0.29804900289, -0.29278811812, -0.28755992651, -0.28236576915, -0.27720692754, -0.27208462358, -0.26700007915, -0.26195442677, -0.25694879889, -0.25198432803, -0.24706205726, -0.24218304455, -0.23734821379, -0.23255851865, -0.22781492770, -0.22311829031, -0.21846942604, -0.21386915445, -0.20931822062, -0.20481738448, -0.20036731660, -0.19596865773, -0.19162209332, -0.18732811511, -0.18308731914, -0.17890018225, -0.17476719618, -0.17068879306, -0.16666537523, -0.16269733012, -0.15878495574, -0.15492856503, -0.15112841129, -0.14738474786, -0.14369773865, -0.14006754756, -0.13649433851, -0.13297818601, -0.12951917946, -0.12611730397, -0.12277261168, -0.11948505789, -0.11625462025, -0.11308115721, -0.10996460915, -0.10690483451, -0.10390164703, -0.10095486045, -0.09806428105, -0.09522963315, -0.09245070815, -0.08972713351, -0.08705867827, -0.08444493264, -0.08188561350, -0.07938029617, -0.07692859322, -0.07453006506, -0.07218432426, -0.06989086419, -0.06764923781, -0.06545893103, -0.06331945211, -0.06123027951, -0.05919086933, -0.05720067024, -0.05525910854, -0.05336561054, -0.05151961371, -0.04972046614, -0.04796761274, -0.04626038298, -0.04459818453, -0.04298033938, -0.04140623659, -0.03987516090, -0.03838652745, -0.03693958372, -0.03553372994, -0.03416819125, -0.03284239396, -0.03155555204, -0.03030703776, -0.02909611352, -0.02792212367, -0.02678431384, -0.02568206564, -0.02461459488, -0.02358125709, -0.02258131653, -0.02161412500, -0.02067894675, -0.01977507770, -0.01890186779, -0.01805862412, -0.01724460535, -0.01645922661, -0.01570170000, -0.01497144438, -0.01426773332, -0.01358995494, -0.01293735672, -0.01230939943, -0.01170534454, -0.01112466771, -0.01056654565, -0.01003060210, -0.00951600447, -0.00902230106, -0.00854881573, -0.00809498038, -0.00766016589, -0.00724391919, -0.00684553990, -0.00646453211, -0.00610029325, -0.00575236930, -0.00542017492, -0.00510312291, -0.00480085658, -0.00451271003, -0.00423829490, -0.00397720048, -0.00372874714, -0.00349264755, -0.00326841651, -0.00305565330, -0.00285378192, -0.00266251224, -0.00248134881, -0.00231004250, -0.00214785640, -0.00199495023, -0.00185023469, -0.00171401864, -0.00158570008, -0.00146482687, -0.00135110028, -0.00124442333, -0.00114431616, -0.00105048984, -0.00096255314, -0.00088037323, -0.00080365466, -0.00073179678, -0.00066567765, -0.00060277141, -0.00054522208, -0.00049204525, -0.00044236859, -0.00039634691, -0.00035398375, -0.00031519096, -0.00027949660, -0.00024667382, -0.00021643363, -0.00018878609, -0.00016358691, -0.00053168571 + 0.00053168571, 0.15878495574, 0.68603444099, 0.15492856503, + 0.00016358691, 0.16269733012, 0.68591803312, 0.15112841129, + 0.00018878609, 0.16666537523, 0.68568539619, 0.14738474786, + 0.00021643363, 0.17068879306, 0.68533653021, 0.14369773865, + 0.00024667382, 0.17476719618, 0.68487155437, 0.14006754756, + 0.00027949660, 0.17890018225, 0.68429082632, 0.13649433851, + 0.00031519096, 0.18308731914, 0.68359452486, 0.13297818601, + 0.00035398375, 0.18732811511, 0.68278300762, 0.12951917946, + 0.00039634691, 0.19162209332, 0.68185669184, 0.12611730397, + 0.00044236859, 0.19596865773, 0.68081587553, 0.12277261168, + 0.00049204525, 0.20036731660, 0.67966115475, 0.11948505789, + 0.00054522208, 0.20481738448, 0.67839306593, 0.11625462025, + 0.00060277141, 0.20931822062, 0.67701220512, 0.11308115721, + 0.00066567765, 0.21386915445, 0.67551922798, 0.10996460915, + 0.00073179678, 0.21846942604, 0.67391467094, 0.10690483451, + 0.00080365466, 0.22311829031, 0.67219948769, 0.10390164703, + 0.00088037323, 0.22781492770, 0.67037439346, 0.10095486045, + 0.00096255314, 0.23255851865, 0.66844022274, 0.09806428105, + 0.00105048984, 0.23734821379, 0.66639786959, 0.09522963315, + 0.00114431616, 0.24218304455, 0.66424828768, 0.09245070815, + 0.00124442333, 0.24706205726, 0.66199249029, 0.08972713351, + 0.00135110028, 0.25198432803, 0.65963155031, 0.08705867827, + 0.00146482687, 0.25694879889, 0.65716648102, 0.08444493264, + 0.00158570008, 0.26195442677, 0.65459835529, 0.08188561350, + 0.00171401864, 0.26700007915, 0.65192854404, 0.07938029617, + 0.00185023469, 0.27208462358, 0.64915806055, 0.07692859322, + 0.00199495023, 0.27720692754, 0.64628833532, 0.07453006506, + 0.00214785640, 0.28236576915, 0.64332056046, 0.07218432426, + 0.00231004250, 0.28755992651, 0.64025616646, 0.06989086419, + 0.00248134881, 0.29278811812, 0.63709646463, 0.06764923781, + 0.00266251224, 0.29804900289, 0.63384294510, 0.06545893103, + 0.00285378192, 0.30334126949, 0.63049703836, 0.06331945211, + 0.00305565330, 0.30866351724, 0.62706029415, 0.06123027951, + 0.00326841651, 0.31401440501, 0.62353414297, 0.05919086933, + 0.00349264755, 0.31939238310, 0.61992025375, 0.05720067024, + 0.00372874714, 0.32479602098, 0.61622029543, 0.05525910854, + 0.00397720048, 0.33022382855, 0.61243581772, 0.05336561054, + 0.00423829490, 0.33567428589, 0.60856848955, 0.05151961371, + 0.00451271003, 0.34114575386, 0.60462015867, 0.04972046614, + 0.00480085658, 0.34663668275, 0.60059231520, 0.04796761274, + 0.00510312291, 0.35214546323, 0.59648692608, 0.04626038298, + 0.00542017492, 0.35767036676, 0.59230577946, 0.04459818453, + 0.00575236930, 0.36320972443, 0.58805054426, 0.04298033938, + 0.00610029325, 0.36876192689, 0.58372318745, 0.04140623659, + 0.00646453211, 0.37432509661, 0.57932555676, 0.03987516090, + 0.00684553990, 0.37989753485, 0.57485944033, 0.03838652745, + 0.00724391919, 0.38547745347, 0.57032698393, 0.03693958372, + 0.00766016589, 0.39106300473, 0.56572991610, 0.03553372994, + 0.00809498038, 0.39665243030, 0.56107026339, 0.03416819125, + 0.00854881573, 0.40224379301, 0.55634999275, 0.03284239396, + 0.00902230106, 0.40783521533, 0.55157101154, 0.03155555204, + 0.00951600447, 0.41342487931, 0.54673534632, 0.03030703776, + 0.01003060210, 0.41901078820, 0.54184508324, 0.02909611352, + 0.01056654565, 0.42459106445, 0.53690224886, 0.02792212367, + 0.01112466771, 0.43016362190, 0.53190881014, 0.02678431384, + 0.01170534454, 0.43572667241, 0.52686679363, 0.02568206564, + 0.01230939943, 0.44127810001, 0.52177828550, 0.02461459488, + 0.01293735672, 0.44681602716, 0.51664537191, 0.02358125709, + 0.01358995494, 0.45233830810, 0.51147013903, 0.02258131653, + 0.01426773332, 0.45784294605, 0.50625455379, 0.02161412500, + 0.01497144438, 0.46332800388, 0.50100076199, 0.02067894675, + 0.01570170000, 0.46879136562, 0.49571081996, 0.01977507770, + 0.01645922661, 0.47423094511, 0.49038675427, 0.01890186779, + 0.01724460535, 0.47964480519, 0.48503074050, 0.01805862412, }; /* 10^-(dB/20), with dB being a list of dB values ranging from 0 to -72 */