more pa bs
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11364 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
3b19c0117d
commit
b9568795b3
|
@ -3,34 +3,34 @@ static const float max_dct_core_a[] =
|
|||
5.572937315437795e-02f,
|
||||
5.435713103213160e-02f,
|
||||
5.164643594289910e-02f,
|
||||
4.766403419605858e-02f,
|
||||
4.250798573945089e-02f,
|
||||
3.630524959802148e-02f,
|
||||
4.766403419605859e-02f,
|
||||
4.250798573945090e-02f,
|
||||
3.630524959802149e-02f,
|
||||
2.920855772127337e-02f,
|
||||
2.139265421578210e-02f,
|
||||
1.304999256534943e-02f,
|
||||
4.385996787515619e-03f,
|
||||
5.435713103213160e-02f,
|
||||
4.250798573945089e-02f,
|
||||
4.250798573945090e-02f,
|
||||
2.139265421578210e-02f,
|
||||
-4.385996787515612e-03f,
|
||||
-2.920855772127336e-02f,
|
||||
-4.766403419605858e-02f,
|
||||
-5.572937315437795e-02f,
|
||||
-5.164643594289911e-02f,
|
||||
-5.164643594289910e-02f,
|
||||
-3.630524959802151e-02f,
|
||||
-1.304999256534941e-02f,
|
||||
5.164643594289910e-02f,
|
||||
2.139265421578210e-02f,
|
||||
-2.139265421578209e-02f,
|
||||
-5.164643594289910e-02f,
|
||||
-5.164643594289911e-02f,
|
||||
-5.164643594289910e-02f,
|
||||
-2.139265421578213e-02f,
|
||||
2.139265421578211e-02f,
|
||||
5.164643594289909e-02f,
|
||||
5.164643594289910e-02f,
|
||||
2.139265421578213e-02f,
|
||||
4.766403419605858e-02f,
|
||||
2.139265421578214e-02f,
|
||||
4.766403419605859e-02f,
|
||||
-4.385996787515612e-03f,
|
||||
-5.164643594289910e-02f,
|
||||
-4.250798573945090e-02f,
|
||||
|
@ -40,17 +40,17 @@ static const float max_dct_core_a[] =
|
|||
-2.139265421578210e-02f,
|
||||
-5.572937315437795e-02f,
|
||||
-2.920855772127336e-02f,
|
||||
4.250798573945089e-02f,
|
||||
4.250798573945090e-02f,
|
||||
-2.920855772127336e-02f,
|
||||
-5.164643594289911e-02f,
|
||||
-5.164643594289910e-02f,
|
||||
1.304999256534939e-02f,
|
||||
5.572937315437795e-02f,
|
||||
4.385996787515657e-03f,
|
||||
-5.435713103213161e-02f,
|
||||
-2.139265421578214e-02f,
|
||||
4.766403419605858e-02f,
|
||||
4.766403419605859e-02f,
|
||||
3.630524959802153e-02f,
|
||||
3.630524959802148e-02f,
|
||||
3.630524959802149e-02f,
|
||||
-4.766403419605858e-02f,
|
||||
-2.139265421578213e-02f,
|
||||
5.435713103213161e-02f,
|
||||
|
@ -66,12 +66,12 @@ static const float max_dct_core_a[] =
|
|||
3.630524959802152e-02f,
|
||||
-5.435713103213161e-02f,
|
||||
1.304999256534937e-02f,
|
||||
4.250798573945089e-02f,
|
||||
4.250798573945090e-02f,
|
||||
-5.164643594289908e-02f,
|
||||
4.385996787515504e-03f,
|
||||
4.385996787515503e-03f,
|
||||
4.766403419605861e-02f,
|
||||
2.139265421578210e-02f,
|
||||
-5.164643594289911e-02f,
|
||||
-5.164643594289910e-02f,
|
||||
5.164643594289909e-02f,
|
||||
-2.139265421578210e-02f,
|
||||
-2.139265421578214e-02f,
|
||||
|
@ -84,15 +84,15 @@ static const float max_dct_core_a[] =
|
|||
-3.630524959802151e-02f,
|
||||
5.164643594289910e-02f,
|
||||
-5.572937315437795e-02f,
|
||||
4.766403419605858e-02f,
|
||||
4.766403419605859e-02f,
|
||||
-2.920855772127332e-02f,
|
||||
4.385996787515504e-03f,
|
||||
4.385996787515503e-03f,
|
||||
2.139265421578216e-02f,
|
||||
-4.250798573945092e-02f,
|
||||
5.435713103213160e-02f,
|
||||
4.385996787515619e-03f,
|
||||
-1.304999256534941e-02f,
|
||||
2.139265421578213e-02f,
|
||||
2.139265421578214e-02f,
|
||||
-2.920855772127336e-02f,
|
||||
3.630524959802153e-02f,
|
||||
-4.250798573945090e-02f,
|
||||
|
@ -107,54 +107,54 @@ static const float dct_core_a[] =
|
|||
7.881323533747238e-02f,
|
||||
7.687259191733195e-02f,
|
||||
7.303909015868119e-02f,
|
||||
6.740712359748102e-02f,
|
||||
6.011536994189358e-02f,
|
||||
5.134337636686234e-02f,
|
||||
6.740712359748104e-02f,
|
||||
6.011536994189359e-02f,
|
||||
5.134337636686236e-02f,
|
||||
4.130713846678219e-02f,
|
||||
3.025378172711701e-02f,
|
||||
1.845547647478522e-02f,
|
||||
6.202736141429415e-03f,
|
||||
7.687259191733195e-02f,
|
||||
6.011536994189358e-02f,
|
||||
6.011536994189359e-02f,
|
||||
3.025378172711701e-02f,
|
||||
-6.202736141429404e-03f,
|
||||
-6.202736141429406e-03f,
|
||||
-4.130713846678218e-02f,
|
||||
-6.740712359748102e-02f,
|
||||
-7.881323533747238e-02f,
|
||||
-7.303909015868121e-02f,
|
||||
-7.303909015868119e-02f,
|
||||
-5.134337636686238e-02f,
|
||||
-1.845547647478519e-02f,
|
||||
-1.845547647478520e-02f,
|
||||
7.303909015868119e-02f,
|
||||
3.025378172711701e-02f,
|
||||
-3.025378172711701e-02f,
|
||||
-7.303909015868119e-02f,
|
||||
-7.303909015868121e-02f,
|
||||
-7.303909015868119e-02f,
|
||||
-3.025378172711705e-02f,
|
||||
3.025378172711703e-02f,
|
||||
7.303909015868118e-02f,
|
||||
7.303909015868119e-02f,
|
||||
3.025378172711706e-02f,
|
||||
6.740712359748102e-02f,
|
||||
-6.202736141429404e-03f,
|
||||
3.025378172711707e-02f,
|
||||
6.740712359748104e-02f,
|
||||
-6.202736141429406e-03f,
|
||||
-7.303909015868119e-02f,
|
||||
-6.011536994189359e-02f,
|
||||
1.845547647478516e-02f,
|
||||
7.687259191733196e-02f,
|
||||
5.134337636686239e-02f,
|
||||
-3.025378172711702e-02f,
|
||||
-3.025378172711701e-02f,
|
||||
-7.881323533747238e-02f,
|
||||
-4.130713846678218e-02f,
|
||||
6.011536994189358e-02f,
|
||||
6.011536994189359e-02f,
|
||||
-4.130713846678218e-02f,
|
||||
-7.303909015868121e-02f,
|
||||
-7.303909015868119e-02f,
|
||||
1.845547647478516e-02f,
|
||||
7.881323533747238e-02f,
|
||||
6.202736141429469e-03f,
|
||||
-7.687259191733196e-02f,
|
||||
-3.025378172711707e-02f,
|
||||
6.740712359748102e-02f,
|
||||
6.740712359748104e-02f,
|
||||
5.134337636686240e-02f,
|
||||
5.134337636686234e-02f,
|
||||
5.134337636686236e-02f,
|
||||
-6.740712359748102e-02f,
|
||||
-3.025378172711705e-02f,
|
||||
7.687259191733196e-02f,
|
||||
|
@ -170,17 +170,17 @@ static const float dct_core_a[] =
|
|||
5.134337636686239e-02f,
|
||||
-7.687259191733196e-02f,
|
||||
1.845547647478515e-02f,
|
||||
6.011536994189358e-02f,
|
||||
-7.303909015868118e-02f,
|
||||
6.202736141429252e-03f,
|
||||
6.011536994189359e-02f,
|
||||
-7.303909015868117e-02f,
|
||||
6.202736141429251e-03f,
|
||||
6.740712359748108e-02f,
|
||||
3.025378172711701e-02f,
|
||||
-7.303909015868121e-02f,
|
||||
-7.303909015868119e-02f,
|
||||
7.303909015868118e-02f,
|
||||
-3.025378172711702e-02f,
|
||||
-3.025378172711701e-02f,
|
||||
-3.025378172711707e-02f,
|
||||
7.303909015868119e-02f,
|
||||
-7.303909015868118e-02f,
|
||||
-7.303909015868117e-02f,
|
||||
3.025378172711699e-02f,
|
||||
3.025378172711710e-02f,
|
||||
-7.303909015868128e-02f,
|
||||
|
@ -188,15 +188,15 @@ static const float dct_core_a[] =
|
|||
-5.134337636686238e-02f,
|
||||
7.303909015868119e-02f,
|
||||
-7.881323533747238e-02f,
|
||||
6.740712359748102e-02f,
|
||||
6.740712359748104e-02f,
|
||||
-4.130713846678212e-02f,
|
||||
6.202736141429252e-03f,
|
||||
6.202736141429251e-03f,
|
||||
3.025378172711710e-02f,
|
||||
-6.011536994189360e-02f,
|
||||
7.687259191733195e-02f,
|
||||
6.202736141429415e-03f,
|
||||
-1.845547647478519e-02f,
|
||||
3.025378172711706e-02f,
|
||||
-1.845547647478520e-02f,
|
||||
3.025378172711707e-02f,
|
||||
-4.130713846678218e-02f,
|
||||
5.134337636686240e-02f,
|
||||
-6.011536994189359e-02f,
|
||||
|
@ -211,8 +211,8 @@ static const cos_msin_t cos_msin_5[5] =
|
|||
{9.969173337331280e-01f, -7.845909572784494e-02f},
|
||||
{9.723699203976766e-01f, -2.334453638559054e-01f},
|
||||
{9.238795325112867e-01f, -3.826834323650898e-01f},
|
||||
{8.526401643540922e-01f, -5.224985647159488e-01f},
|
||||
{7.604059656000309e-01f, -6.494480483301837e-01f}
|
||||
{8.526401643540923e-01f, -5.224985647159488e-01f},
|
||||
{7.604059656000310e-01f, -6.494480483301837e-01f}
|
||||
};
|
||||
|
||||
static const cos_msin_t cos_msin_10[10] =
|
||||
|
@ -222,8 +222,8 @@ static const cos_msin_t cos_msin_10[10] =
|
|||
{9.807852804032304e-01f, -1.950903220161282e-01f},
|
||||
{9.624552364536473e-01f, -2.714404498650743e-01f},
|
||||
{9.381913359224842e-01f, -3.461170570774930e-01f},
|
||||
{9.081431738250813e-01f, -4.186597375374281e-01f},
|
||||
{8.724960070727972e-01f, -4.886212414969549e-01f},
|
||||
{9.081431738250814e-01f, -4.186597375374281e-01f},
|
||||
{8.724960070727972e-01f, -4.886212414969550e-01f},
|
||||
{8.314696123025452e-01f, -5.555702330196022e-01f},
|
||||
{7.853169308807449e-01f, -6.190939493098340e-01f},
|
||||
{7.343225094356856e-01f, -6.788007455329417e-01f}
|
||||
|
@ -241,7 +241,7 @@ static const cos_msin_t cos_msin_20[20] =
|
|||
{9.569403357322088e-01f, -2.902846772544623e-01f},
|
||||
{9.448060464668780e-01f, -3.276301795616935e-01f},
|
||||
{9.312149347588036e-01f, -3.644704998791496e-01f},
|
||||
{9.161879571171360e-01f, -4.007488331031410e-01f},
|
||||
{9.161879571171359e-01f, -4.007488331031410e-01f},
|
||||
{8.997482840522215e-01f, -4.364092406733421e-01f},
|
||||
{8.819212643483550e-01f, -4.713967368259976e-01f},
|
||||
{8.627343859777918e-01f, -5.056573733779846e-01f},
|
||||
|
@ -286,13 +286,13 @@ static const cos_msin_t cos_msin_40[40] =
|
|||
{8.474695394742344e-01f, -5.308440257395095e-01f},
|
||||
{8.368837533084094e-01f, -5.473806568087964e-01f},
|
||||
{8.259753325248732e-01f, -5.637062622150167e-01f},
|
||||
{8.147484825274894e-01f, -5.798145481265136e-01f},
|
||||
{8.147484825274895e-01f, -5.798145481265136e-01f},
|
||||
{8.032075314806449e-01f, -5.956993044924334e-01f},
|
||||
{7.913569286406602e-01f, -6.113544074368165e-01f},
|
||||
{7.913569286406603e-01f, -6.113544074368165e-01f},
|
||||
{7.792012426405167e-01f, -6.267738216194696e-01f},
|
||||
{7.667451597285615e-01f, -6.419516025627030e-01f},
|
||||
{7.667451597285615e-01f, -6.419516025627031e-01f},
|
||||
{7.539934819618694e-01f, -6.568818989430414e-01f},
|
||||
{7.409511253549591e-01f, -6.715589548470183e-01f},
|
||||
{7.409511253549592e-01f, -6.715589548470183e-01f},
|
||||
{7.276231179845748e-01f, -6.859771119901928e-01f},
|
||||
{7.140145980512683e-01f, -7.001308118985236e-01f}
|
||||
};
|
||||
|
@ -327,7 +327,7 @@ static const cos_msin_t cos_msin_80[80] =
|
|||
{9.688268450411880e-01f, -2.477388631755984e-01f},
|
||||
{9.663480247352773e-01f, -2.572382069021397e-01f},
|
||||
{9.637760657954398e-01f, -2.667127574748984e-01f},
|
||||
{9.611112161124317e-01f, -2.761616017169707e-01f},
|
||||
{9.611112161124316e-01f, -2.761616017169707e-01f},
|
||||
{9.583537325300114e-01f, -2.855838289290823e-01f},
|
||||
{9.555038808201862e-01f, -2.949785309773635e-01f},
|
||||
{9.525619356575953e-01f, -3.043448023808773e-01f},
|
||||
|
@ -339,11 +339,11 @@ static const cos_msin_t cos_msin_80[80] =
|
|||
{9.329927988347390e-01f, -3.598950365349881e-01f},
|
||||
{9.294146324393044e-01f, -3.690371810640665e-01f},
|
||||
{9.257468871271640e-01f, -3.781437570215405e-01f},
|
||||
{9.219899164032445e-01f, -3.872138866966656e-01f},
|
||||
{9.219899164032446e-01f, -3.872138866966656e-01f},
|
||||
{9.181440823722039e-01f, -3.962466958914656e-01f},
|
||||
{9.142097557035307e-01f, -4.052413140049899e-01f},
|
||||
{9.101873155958178e-01f, -4.141968741172237e-01f},
|
||||
{9.060771497402148e-01f, -4.231125130726441e-01f},
|
||||
{9.060771497402147e-01f, -4.231125130726441e-01f},
|
||||
{9.018796542830616e-01f, -4.319873715634118e-01f},
|
||||
{8.975952337877069e-01f, -4.408205942121939e-01f},
|
||||
{8.932243011955153e-01f, -4.496113296546065e-01f},
|
||||
|
@ -365,12 +365,12 @@ static const cos_msin_t cos_msin_80[80] =
|
|||
{8.118925199965048e-01f, -5.838069338177863e-01f},
|
||||
{8.061219749505210e-01f, -5.917494076903429e-01f},
|
||||
{8.002737341907743e-01f, -5.996348475233523e-01f},
|
||||
{7.943483613828813e-01f, -6.074624933017110e-01f},
|
||||
{7.943483613828815e-01f, -6.074624933017110e-01f},
|
||||
{7.883464276266063e-01f, -6.152315905806268e-01f},
|
||||
{7.822685114008164e-01f, -6.229413905583340e-01f},
|
||||
{7.761151985077279e-01f, -6.305911501482637e-01f},
|
||||
{7.698870820164444e-01f, -6.381801320506653e-01f},
|
||||
{7.635847622057965e-01f, -6.457076048236672e-01f},
|
||||
{7.698870820164445e-01f, -6.381801320506653e-01f},
|
||||
{7.635847622057965e-01f, -6.457076048236673e-01f},
|
||||
{7.572088465064846e-01f, -6.531728429537768e-01f},
|
||||
{7.507599494425343e-01f, -6.605751269258050e-01f},
|
||||
{7.442386925720670e-01f, -6.679137432922161e-01f},
|
||||
|
@ -417,7 +417,7 @@ static const cos_msin_t cos_msin_160[160] =
|
|||
{9.880693132714919e-01f, -1.540098443970461e-01f},
|
||||
{9.873014181578584e-01f, -1.588581433338614e-01f},
|
||||
{9.865097333595187e-01f, -1.637026144779952e-01f},
|
||||
{9.856942779526452e-01f, -1.685431410986913e-01f},
|
||||
{9.856942779526452e-01f, -1.685431410986914e-01f},
|
||||
{9.848550715861784e-01f, -1.733796065602395e-01f},
|
||||
{9.839921344813541e-01f, -1.782118943247859e-01f},
|
||||
{9.831054874312163e-01f, -1.830398879551410e-01f},
|
||||
|
@ -490,17 +490,17 @@ static const cos_msin_t cos_msin_160[160] =
|
|||
{8.712941233961736e-01f, -4.907611950177941e-01f},
|
||||
{8.688746174820854e-01f, -4.950322202598127e-01f},
|
||||
{8.664341754558650e-01f, -4.992913173710469e-01f},
|
||||
{8.639728561215868e-01f, -5.035383837257176e-01f},
|
||||
{8.639728561215867e-01f, -5.035383837257176e-01f},
|
||||
{8.614907187863783e-01f, -5.077733169879345e-01f},
|
||||
{8.589878232589904e-01f, -5.119960151141624e-01f},
|
||||
{8.589878232589903e-01f, -5.119960151141624e-01f},
|
||||
{8.564642298483565e-01f, -5.162063763556797e-01f},
|
||||
{8.539199993621391e-01f, -5.204042992610306e-01f},
|
||||
{8.513551931052652e-01f, -5.245896826784689e-01f},
|
||||
{8.487698728784481e-01f, -5.287624257583958e-01f},
|
||||
{8.461641009766995e-01f, -5.329224279557898e-01f},
|
||||
{8.461641009766994e-01f, -5.329224279557898e-01f},
|
||||
{8.435379401878270e-01f, -5.370695890326298e-01f},
|
||||
{8.408914537909229e-01f, -5.412038090603096e-01f},
|
||||
{8.382247055548381e-01f, -5.453249884220465e-01f},
|
||||
{8.382247055548380e-01f, -5.453249884220465e-01f},
|
||||
{8.355377597366458e-01f, -5.494330278152808e-01f},
|
||||
{8.328306810800937e-01f, -5.535278282540700e-01f},
|
||||
{8.301035348140438e-01f, -5.576092910714722e-01f},
|
||||
|
@ -518,12 +518,12 @@ static const cos_msin_t cos_msin_160[160] =
|
|||
{7.958369046088836e-01f, -6.055110414043255e-01f},
|
||||
{7.928550330615741e-01f, -6.094102858903271e-01f},
|
||||
{7.898540571446090e-01f, -6.132948462299359e-01f},
|
||||
{7.868340491684999e-01f, -6.171646288220856e-01f},
|
||||
{7.868340491685000e-01f, -6.171646288220856e-01f},
|
||||
{7.837950819023488e-01f, -6.210195404217892e-01f},
|
||||
{7.807372285720945e-01f, -6.248594881423863e-01f},
|
||||
{7.776605628587479e-01f, -6.286843794577813e-01f},
|
||||
{7.745651588966166e-01f, -6.324941222046724e-01f},
|
||||
{7.714510912715192e-01f, -6.362886245847729e-01f},
|
||||
{7.714510912715193e-01f, -6.362886245847729e-01f},
|
||||
{7.683184350189877e-01f, -6.400677951670226e-01f},
|
||||
{7.651672656224590e-01f, -6.438315428897914e-01f},
|
||||
{7.619976590114568e-01f, -6.475797770630733e-01f},
|
||||
|
@ -534,15 +534,15 @@ static const cos_msin_t cos_msin_160[160] =
|
|||
{7.458757562673048e-01f, -6.660850968252301e-01f},
|
||||
{7.425971456384329e-01f, -6.697383662966099e-01f},
|
||||
{7.393006416371488e-01f, -6.733754979763520e-01f},
|
||||
{7.359863236949099e-01f, -6.769964042253483e-01f},
|
||||
{7.359863236949100e-01f, -6.769964042253483e-01f},
|
||||
{7.326542716724128e-01f, -6.806009977954530e-01f},
|
||||
{7.293045658576685e-01f, -6.841891918315852e-01f},
|
||||
{7.259372869640676e-01f, -6.877608998738217e-01f},
|
||||
{7.259372869640677e-01f, -6.877608998738217e-01f},
|
||||
{7.225525161284360e-01f, -6.913160358594803e-01f},
|
||||
{7.191503349090794e-01f, -6.948545141251936e-01f},
|
||||
{7.157308252838186e-01f, -6.983762494089729e-01f},
|
||||
{7.122940696480137e-01f, -7.018811568522627e-01f},
|
||||
{7.088401508125785e-01f, -7.053691520019861e-01f}
|
||||
{7.088401508125786e-01f, -7.053691520019861e-01f}
|
||||
};
|
||||
|
||||
static const cos_msin_t cos_msin_320[320] =
|
||||
|
@ -562,17 +562,17 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{9.995294175010931e-01f, -3.067480317663663e-02f},
|
||||
{9.994511197373437e-01f, -3.312792259967294e-02f},
|
||||
{9.993668013545645e-01f, -3.558084246257342e-02f},
|
||||
{9.992764628606833e-01f, -3.803354798913168e-02f},
|
||||
{9.992764628606832e-01f, -3.803354798913168e-02f},
|
||||
{9.991801047998923e-01f, -4.048602440443251e-02f},
|
||||
{9.990777277526454e-01f, -4.293825693494082e-02f},
|
||||
{9.989693323356542e-01f, -4.539023080859068e-02f},
|
||||
{9.988549192018848e-01f, -4.784193125487429e-02f},
|
||||
{9.987344890405533e-01f, -5.029334350493095e-02f},
|
||||
{9.986080425771219e-01f, -5.274445279163603e-02f},
|
||||
{9.984755805732948e-01f, -5.519524434968993e-02f},
|
||||
{9.984755805732948e-01f, -5.519524434968994e-02f},
|
||||
{9.983371038270131e-01f, -5.764570341570704e-02f},
|
||||
{9.981926131724506e-01f, -6.009581522830464e-02f},
|
||||
{9.980421094800079e-01f, -6.254556502819182e-02f},
|
||||
{9.980421094800079e-01f, -6.254556502819184e-02f},
|
||||
{9.978855936563085e-01f, -6.499493805825848e-02f},
|
||||
{9.977230666441916e-01f, -6.744391956366405e-02f},
|
||||
{9.975545294227081e-01f, -6.989249479192657e-02f},
|
||||
|
@ -646,10 +646,10 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{9.720827077212779e-01f, -2.346384651954331e-01f},
|
||||
{9.715038909862518e-01f, -2.370236059943672e-01f},
|
||||
{9.709192219842182e-01f, -2.394073189807704e-01f},
|
||||
{9.703287042371799e-01f, -2.417895897953334e-01f},
|
||||
{9.703287042371798e-01f, -2.417895897953334e-01f},
|
||||
{9.697323413023714e-01f, -2.441704040874346e-01f},
|
||||
{9.691301367722388e-01f, -2.465497475152259e-01f},
|
||||
{9.685220942744174e-01f, -2.489276057457201e-01f},
|
||||
{9.685220942744173e-01f, -2.489276057457201e-01f},
|
||||
{9.679082174717095e-01f, -2.513039644548766e-01f},
|
||||
{9.672885100620635e-01f, -2.536788093276874e-01f},
|
||||
{9.666629757785506e-01f, -2.560521260582643e-01f},
|
||||
|
@ -667,12 +667,12 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{9.587034748958716e-01f, -2.844075372112719e-01f},
|
||||
{9.580025469007496e-01f, -2.867596905628075e-01f},
|
||||
{9.572958479697103e-01f, -2.891101164953470e-01f},
|
||||
{9.565833823598556e-01f, -2.914588008500998e-01f},
|
||||
{9.565833823598557e-01f, -2.914588008500998e-01f},
|
||||
{9.558651543630251e-01f, -2.938057294787664e-01f},
|
||||
{9.551411683057708e-01f, -2.961508882436238e-01f},
|
||||
{9.551411683057707e-01f, -2.961508882436238e-01f},
|
||||
{9.544114285493304e-01f, -2.984942630176104e-01f},
|
||||
{9.536759394896021e-01f, -3.008358396844112e-01f},
|
||||
{9.529347055571170e-01f, -3.031756041385431e-01f},
|
||||
{9.529347055571171e-01f, -3.031756041385431e-01f},
|
||||
{9.521877312170133e-01f, -3.055135422854393e-01f},
|
||||
{9.514350209690083e-01f, -3.078496400415349e-01f},
|
||||
{9.506765793473728e-01f, -3.101838833343510e-01f},
|
||||
|
@ -709,7 +709,7 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{9.243484599469451e-01f, -3.815493737299417e-01f},
|
||||
{9.234092137297489e-01f, -3.838169146859046e-01f},
|
||||
{9.224644049642953e-01f, -3.860821435573893e-01f},
|
||||
{9.215140393420420e-01f, -3.883450466988262e-01f},
|
||||
{9.215140393420419e-01f, -3.883450466988262e-01f},
|
||||
{9.205581225879205e-01f, -3.906056104786556e-01f},
|
||||
{9.195966604603021e-01f, -3.928638212794095e-01f},
|
||||
{9.186296587509630e-01f, -3.951196654977946e-01f},
|
||||
|
@ -728,12 +728,12 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{9.055572304297014e-01f, -4.242241181456904e-01f},
|
||||
{9.045133013352465e-01f, -4.264454099971220e-01f},
|
||||
{9.034639235201017e-01f, -4.286641329731982e-01f},
|
||||
{9.024091033056408e-01f, -4.308802737084970e-01f},
|
||||
{9.024091033056407e-01f, -4.308802737084971e-01f},
|
||||
{9.013488470460220e-01f, -4.330938188531520e-01f},
|
||||
{9.002831611281501e-01f, -4.353047550729321e-01f},
|
||||
{8.992120519716374e-01f, -4.375130690493225e-01f},
|
||||
{8.981355260287659e-01f, -4.397187474796043e-01f},
|
||||
{8.970535897844474e-01f, -4.419217770769352e-01f},
|
||||
{8.970535897844474e-01f, -4.419217770769353e-01f},
|
||||
{8.959662497561852e-01f, -4.441221445704292e-01f},
|
||||
{8.948735124940346e-01f, -4.463198367052365e-01f},
|
||||
{8.937753845805634e-01f, -4.485148402426236e-01f},
|
||||
|
@ -745,12 +745,12 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{8.870737861323454e-01f, -4.616276616027529e-01f},
|
||||
{8.859381106942048e-01f, -4.638034756441384e-01f},
|
||||
{8.847970984309378e-01f, -4.659764957679662e-01f},
|
||||
{8.836507562159172e-01f, -4.681467088841250e-01f},
|
||||
{8.836507562159173e-01f, -4.681467088841250e-01f},
|
||||
{8.824990909546231e-01f, -4.703141019194129e-01f},
|
||||
{8.813421095846011e-01f, -4.724786618176158e-01f},
|
||||
{8.801798190754208e-01f, -4.746403755395864e-01f},
|
||||
{8.790122264286335e-01f, -4.767992300633221e-01f},
|
||||
{8.778393386777302e-01f, -4.789552123840445e-01f},
|
||||
{8.778393386777303e-01f, -4.789552123840445e-01f},
|
||||
{8.766611628880995e-01f, -4.811083095142767e-01f},
|
||||
{8.754777061569843e-01f, -4.832585084839222e-01f},
|
||||
{8.742889756134398e-01f, -4.854057963403425e-01f},
|
||||
|
@ -770,15 +770,15 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{8.570970653106597e-01f, -5.151549481814718e-01f},
|
||||
{8.558301045664012e-01f, -5.172570271324139e-01f},
|
||||
{8.545579883654005e-01f, -5.193559901655896e-01f},
|
||||
{8.532807243707908e-01f, -5.214518246370019e-01f},
|
||||
{8.532807243707907e-01f, -5.214518246370019e-01f},
|
||||
{8.519983202767152e-01f, -5.235445179215000e-01f},
|
||||
{8.507107838082801e-01f, -5.256340574128560e-01f},
|
||||
{8.494181227215095e-01f, -5.277204305238395e-01f},
|
||||
{8.481203448032972e-01f, -5.298036246862946e-01f},
|
||||
{8.468174578713608e-01f, -5.318836273512150e-01f},
|
||||
{8.455094697741939e-01f, -5.339604259888194e-01f},
|
||||
{8.455094697741938e-01f, -5.339604259888194e-01f},
|
||||
{8.441963883910193e-01f, -5.360340080886280e-01f},
|
||||
{8.428782216317413e-01f, -5.381043611595366e-01f},
|
||||
{8.428782216317414e-01f, -5.381043611595366e-01f},
|
||||
{8.415549774368984e-01f, -5.401714727298929e-01f},
|
||||
{8.402266637776148e-01f, -5.422353303475707e-01f},
|
||||
{8.388932886555529e-01f, -5.442959215800456e-01f},
|
||||
|
@ -791,7 +791,7 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{8.294186203736174e-01f, -5.586275612405148e-01f},
|
||||
{8.280450452577558e-01f, -5.606615761973360e-01f},
|
||||
{8.266664820602777e-01f, -5.626922137706231e-01f},
|
||||
{8.252829390855451e-01f, -5.647194617279668e-01f},
|
||||
{8.252829390855451e-01f, -5.647194617279667e-01f},
|
||||
{8.238944246679176e-01f, -5.667433078573766e-01f},
|
||||
{8.225009471717026e-01f, -5.687637399673542e-01f},
|
||||
{8.211025149911046e-01f, -5.707807458869673e-01f},
|
||||
|
@ -800,14 +800,14 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{8.168775747324537e-01f, -5.768110851043212e-01f},
|
||||
{8.154594083525400e-01f, -5.788142649670318e-01f},
|
||||
{8.140363297059484e-01f, -5.808139580957645e-01f},
|
||||
{8.126083473651983e-01f, -5.828101524445172e-01f},
|
||||
{8.126083473651982e-01f, -5.828101524445172e-01f},
|
||||
{8.111754699323488e-01f, -5.848028359883638e-01f},
|
||||
{8.097377060389469e-01f, -5.867919967235272e-01f},
|
||||
{8.082950643459751e-01f, -5.887776226674516e-01f},
|
||||
{8.082950643459751e-01f, -5.887776226674515e-01f},
|
||||
{8.068475535437993e-01f, -5.907597018588742e-01f},
|
||||
{8.053951823521167e-01f, -5.927382223578977e-01f},
|
||||
{8.053951823521167e-01f, -5.927382223578979e-01f},
|
||||
{8.039379595199031e-01f, -5.947131722460625e-01f},
|
||||
{8.024758938253601e-01f, -5.966845396264172e-01f},
|
||||
{8.024758938253600e-01f, -5.966845396264172e-01f},
|
||||
{8.010089940758625e-01f, -5.986523126235920e-01f},
|
||||
{7.995372691079050e-01f, -6.006164793838690e-01f},
|
||||
{7.980607277870492e-01f, -6.025770280752539e-01f},
|
||||
|
@ -823,11 +823,11 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{7.830323862678940e-01f, -6.219809338360844e-01f},
|
||||
{7.815034584514979e-01f, -6.239009091421072e-01f},
|
||||
{7.799698229165344e-01f, -6.258171261155689e-01f},
|
||||
{7.784314889015095e-01f, -6.277295732133219e-01f},
|
||||
{7.784314889015094e-01f, -6.277295732133219e-01f},
|
||||
{7.768884656732324e-01f, -6.296382389149270e-01f},
|
||||
{7.753407625267603e-01f, -6.315431117227246e-01f},
|
||||
{7.737883887853415e-01f, -6.334441801619028e-01f},
|
||||
{7.722313538003597e-01f, -6.353414327805670e-01f},
|
||||
{7.722313538003597e-01f, -6.353414327805671e-01f},
|
||||
{7.706696669512773e-01f, -6.372348581498091e-01f},
|
||||
{7.691033376455797e-01f, -6.391244448637757e-01f},
|
||||
{7.675323753187178e-01f, -6.410101815397373e-01f},
|
||||
|
@ -844,29 +844,29 @@ static const cos_msin_t cos_msin_320[320] =
|
|||
{7.499487366876190e-01f, -6.614959503584616e-01f},
|
||||
{7.483229241734281e-01f, -6.633346072356920e-01f},
|
||||
{7.466926038177344e-01f, -6.651692682347043e-01f},
|
||||
{7.450577854414661e-01f, -6.669999223036375e-01f},
|
||||
{7.450577854414659e-01f, -6.669999223036375e-01f},
|
||||
{7.434184788926470e-01f, -6.688265584147679e-01f},
|
||||
{7.417746940463380e-01f, -6.706491655645758e-01f},
|
||||
{7.417746940463379e-01f, -6.706491655645758e-01f},
|
||||
{7.401264408045760e-01f, -6.724677327738116e-01f},
|
||||
{7.384737290963160e-01f, -6.742822490875620e-01f},
|
||||
{7.368165688773699e-01f, -6.760927035753159e-01f},
|
||||
{7.351549701303474e-01f, -6.778990853310308e-01f},
|
||||
{7.334889428645953e-01f, -6.797013834731973e-01f},
|
||||
{7.384737290963159e-01f, -6.742822490875620e-01f},
|
||||
{7.368165688773698e-01f, -6.760927035753159e-01f},
|
||||
{7.351549701303473e-01f, -6.778990853310308e-01f},
|
||||
{7.334889428645954e-01f, -6.797013834731973e-01f},
|
||||
{7.318184971161379e-01f, -6.814995871449060e-01f},
|
||||
{7.301436429476156e-01f, -6.832936855139119e-01f},
|
||||
{7.284643904482252e-01f, -6.850836677727004e-01f},
|
||||
{7.267807497336585e-01f, -6.868695231385515e-01f},
|
||||
{7.250927309460417e-01f, -6.886512408536060e-01f},
|
||||
{7.234003442538740e-01f, -6.904288101849290e-01f},
|
||||
{7.217035998519666e-01f, -6.922022204245754e-01f},
|
||||
{7.200025079613817e-01f, -6.939714608896540e-01f},
|
||||
{7.182970788293696e-01f, -6.957365209223924e-01f},
|
||||
{7.234003442538739e-01f, -6.904288101849290e-01f},
|
||||
{7.217035998519667e-01f, -6.922022204245754e-01f},
|
||||
{7.200025079613817e-01f, -6.939714608896539e-01f},
|
||||
{7.182970788293694e-01f, -6.957365209223924e-01f},
|
||||
{7.165873227293083e-01f, -6.974973898902004e-01f},
|
||||
{7.148732499606411e-01f, -6.992540571857347e-01f},
|
||||
{7.131548708488146e-01f, -7.010065122269625e-01f},
|
||||
{7.114321957452164e-01f, -7.027547444572253e-01f},
|
||||
{7.097052350271130e-01f, -7.044987433453024e-01f},
|
||||
{7.079739990975870e-01f, -7.062384983854745e-01f}
|
||||
{7.097052350271131e-01f, -7.044987433453024e-01f},
|
||||
{7.079739990975871e-01f, -7.062384983854745e-01f}
|
||||
};
|
||||
|
||||
static const cos_msin_t cos_msin_640[640] =
|
||||
|
@ -941,7 +941,7 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.965711457905548e-01f, -8.274026454937569e-02f},
|
||||
{9.964688578260101e-01f, -8.396317873286374e-02f},
|
||||
{9.963650691973739e-01f, -8.518596646932200e-02f},
|
||||
{9.962597800609497e-01f, -8.640862591725426e-02f},
|
||||
{9.962597800609497e-01f, -8.640862591725428e-02f},
|
||||
{9.961529905753015e-01f, -8.763115523535747e-02f},
|
||||
{9.960447009012520e-01f, -8.885355258252460e-02f},
|
||||
{9.959349112018836e-01f, -9.007581611784729e-02f},
|
||||
|
@ -959,7 +959,7 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.945004952793278e-01f, -1.047318714106244e-01f},
|
||||
{9.943712211188022e-01f, -1.059522279647869e-01f},
|
||||
{9.942404494531879e-01f, -1.071724249568088e-01f},
|
||||
{9.941081804794248e-01f, -1.083924605490956e-01f},
|
||||
{9.941081804794248e-01f, -1.083924605490957e-01f},
|
||||
{9.939744143967076e-01f, -1.096123329042957e-01f},
|
||||
{9.938391514064855e-01f, -1.108320401853034e-01f},
|
||||
{9.937023917124622e-01f, -1.120515805552615e-01f},
|
||||
|
@ -979,14 +979,14 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.916307215336136e-01f, -1.291065920498434e-01f},
|
||||
{9.914715372589731e-01f, -1.303234085087122e-01f},
|
||||
{9.913108598461154e-01f, -1.315400287028831e-01f},
|
||||
{9.911486895370180e-01f, -1.327564508001479e-01f},
|
||||
{9.911486895370178e-01f, -1.327564508001479e-01f},
|
||||
{9.909850265759061e-01f, -1.339726729685971e-01f},
|
||||
{9.908198712092535e-01f, -1.351886933766218e-01f},
|
||||
{9.906532236857811e-01f, -1.364045101929175e-01f},
|
||||
{9.904850842564571e-01f, -1.376201215864860e-01f},
|
||||
{9.903154531744962e-01f, -1.388355257266385e-01f},
|
||||
{9.901443306953601e-01f, -1.400507207829983e-01f},
|
||||
{9.899717170767560e-01f, -1.412657049255036e-01f},
|
||||
{9.899717170767559e-01f, -1.412657049255036e-01f},
|
||||
{9.897976125786367e-01f, -1.424804763244102e-01f},
|
||||
{9.896220174632009e-01f, -1.436950331502945e-01f},
|
||||
{9.894449319948911e-01f, -1.449093735740556e-01f},
|
||||
|
@ -1077,7 +1077,7 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.689786733147769e-01f, -2.471443518697825e-01f},
|
||||
{9.686746520086348e-01f, -2.483332812088429e-01f},
|
||||
{9.683691718959728e-01f, -2.495218365624697e-01f},
|
||||
{9.680622334368384e-01f, -2.507100161407201e-01f},
|
||||
{9.680622334368385e-01f, -2.507100161407201e-01f},
|
||||
{9.677538370934755e-01f, -2.518978181542170e-01f},
|
||||
{9.674439833303232e-01f, -2.530852408141520e-01f},
|
||||
{9.671326726140158e-01f, -2.542722823322882e-01f},
|
||||
|
@ -1101,7 +1101,7 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.612804858113206e-01f, -2.755718193109581e-01f},
|
||||
{9.609415845594780e-01f, -2.767512801493782e-01f},
|
||||
{9.606012361469752e-01f, -2.779303242053718e-01f},
|
||||
{9.602594410863711e-01f, -2.791089497033199e-01f},
|
||||
{9.602594410863710e-01f, -2.791089497033199e-01f},
|
||||
{9.599161998924024e-01f, -2.802871548682339e-01f},
|
||||
{9.595715130819845e-01f, -2.814649379257579e-01f},
|
||||
{9.592253811742094e-01f, -2.826422971021723e-01f},
|
||||
|
@ -1117,11 +1117,11 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.556846974971080e-01f, -2.943921856467341e-01f},
|
||||
{9.553227044003364e-01f, -2.955647652498983e-01f},
|
||||
{9.549592726048367e-01f, -2.967368997378675e-01f},
|
||||
{9.545944026579306e-01f, -2.979085873454284e-01f},
|
||||
{9.545944026579306e-01f, -2.979085873454283e-01f},
|
||||
{9.542280951091057e-01f, -2.990798263080405e-01f},
|
||||
{9.538603505100144e-01f, -3.002506148618392e-01f},
|
||||
{9.534911694144735e-01f, -3.014209512436381e-01f},
|
||||
{9.531205523784633e-01f, -3.025908336909318e-01f},
|
||||
{9.531205523784632e-01f, -3.025908336909318e-01f},
|
||||
{9.527484999601259e-01f, -3.037602604418984e-01f},
|
||||
{9.523750127197659e-01f, -3.049292297354024e-01f},
|
||||
{9.520000912198481e-01f, -3.060977398109971e-01f},
|
||||
|
@ -1156,29 +1156,29 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.405060705932683e-01f, -3.397768844068269e-01f},
|
||||
{9.400883935350755e-01f, -3.409308028627527e-01f},
|
||||
{9.396693007207513e-01f, -3.420842078830508e-01f},
|
||||
{9.392487927814420e-01f, -3.432370977307140e-01f},
|
||||
{9.392487927814421e-01f, -3.432370977307140e-01f},
|
||||
{9.388268703504251e-01f, -3.443894706695110e-01f},
|
||||
{9.384035340631081e-01f, -3.455413249639891e-01f},
|
||||
{9.379787845570278e-01f, -3.466926588794764e-01f},
|
||||
{9.375526224718491e-01f, -3.478434706820849e-01f},
|
||||
{9.375526224718490e-01f, -3.478434706820849e-01f},
|
||||
{9.371250484493645e-01f, -3.489937586387129e-01f},
|
||||
{9.366960631334929e-01f, -3.501435210170474e-01f},
|
||||
{9.362656671702783e-01f, -3.512927560855671e-01f},
|
||||
{9.358338612078891e-01f, -3.524414621135448e-01f},
|
||||
{9.354006458966176e-01f, -3.535896373710499e-01f},
|
||||
{9.349660218888781e-01f, -3.547372801289512e-01f},
|
||||
{9.345299898392064e-01f, -3.558843886589194e-01f},
|
||||
{9.345299898392063e-01f, -3.558843886589194e-01f},
|
||||
{9.340925504042590e-01f, -3.570309612334300e-01f},
|
||||
{9.336537042428116e-01f, -3.581769961257653e-01f},
|
||||
{9.332134520157588e-01f, -3.593224916100174e-01f},
|
||||
{9.327717943861125e-01f, -3.604674459610909e-01f},
|
||||
{9.323287320190009e-01f, -3.616118574547051e-01f},
|
||||
{9.318842655816681e-01f, -3.627557243673972e-01f},
|
||||
{9.314383957434725e-01f, -3.638990449765241e-01f},
|
||||
{9.314383957434724e-01f, -3.638990449765241e-01f},
|
||||
{9.309911231758859e-01f, -3.650418175602657e-01f},
|
||||
{9.305424485524929e-01f, -3.661840403976272e-01f},
|
||||
{9.300923725489892e-01f, -3.673257117684415e-01f},
|
||||
{9.296408958431813e-01f, -3.684668299533723e-01f},
|
||||
{9.296408958431812e-01f, -3.684668299533723e-01f},
|
||||
{9.291880191149847e-01f, -3.696073932339162e-01f},
|
||||
{9.287337430464239e-01f, -3.707473998924054e-01f},
|
||||
{9.282780683216301e-01f, -3.718868482120106e-01f},
|
||||
|
@ -1199,7 +1199,7 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.212755803477590e-01f, -3.889104074911081e-01f},
|
||||
{9.207976218807237e-01f, -3.900406895937958e-01f},
|
||||
{9.203182767091106e-01f, -3.911703843022539e-01f},
|
||||
{9.198375455548048e-01f, -3.922994899151824e-01f},
|
||||
{9.198375455548049e-01f, -3.922994899151824e-01f},
|
||||
{9.193554291417789e-01f, -3.934280047321689e-01f},
|
||||
{9.188719281960914e-01f, -3.945559270536903e-01f},
|
||||
{9.183870434458861e-01f, -3.956832551811160e-01f},
|
||||
|
@ -1217,8 +1217,8 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{9.124607575766490e-01f, -4.091642284983474e-01f},
|
||||
{9.119579505754890e-01f, -4.102836779377824e-01f},
|
||||
{9.114537701821365e-01f, -4.114025094974132e-01f},
|
||||
{9.109482171558779e-01f, -4.125207214922996e-01f},
|
||||
{9.104412922580672e-01f, -4.136383122384345e-01f},
|
||||
{9.109482171558780e-01f, -4.125207214922996e-01f},
|
||||
{9.104412922580672e-01f, -4.136383122384346e-01f},
|
||||
{9.099329962521239e-01f, -4.147552800527466e-01f},
|
||||
{9.094233299035327e-01f, -4.158716232531024e-01f},
|
||||
{9.089122939798419e-01f, -4.169873401583093e-01f},
|
||||
|
@ -1252,23 +1252,23 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{8.940504215712870e-01f, -4.479663421376699e-01f},
|
||||
{8.935000110874138e-01f, -4.490631694837502e-01f},
|
||||
{8.929482550086714e-01f, -4.501593205488127e-01f},
|
||||
{8.923951541659944e-01f, -4.512547936820739e-01f},
|
||||
{8.923951541659945e-01f, -4.512547936820739e-01f},
|
||||
{8.918407093923427e-01f, -4.523495872337709e-01f},
|
||||
{8.912849215227001e-01f, -4.534436995551644e-01f},
|
||||
{8.907277913940732e-01f, -4.545371289985410e-01f},
|
||||
{8.901693198454897e-01f, -4.556298739172159e-01f},
|
||||
{8.901693198454899e-01f, -4.556298739172159e-01f},
|
||||
{8.896095077179980e-01f, -4.567219326655349e-01f},
|
||||
{8.890483558546646e-01f, -4.578133035988772e-01f},
|
||||
{8.884858651005743e-01f, -4.589039850736579e-01f},
|
||||
{8.879220363028281e-01f, -4.599939754473306e-01f},
|
||||
{8.873568703105417e-01f, -4.610832730783892e-01f},
|
||||
{8.867903679748451e-01f, -4.621718763263714e-01f},
|
||||
{8.867903679748452e-01f, -4.621718763263714e-01f},
|
||||
{8.862225301488806e-01f, -4.632597835518601e-01f},
|
||||
{8.856533576878016e-01f, -4.643469931164871e-01f},
|
||||
{8.850828514487716e-01f, -4.654335033829341e-01f},
|
||||
{8.845110122909626e-01f, -4.665193127149364e-01f},
|
||||
{8.839378410755541e-01f, -4.676044194772847e-01f},
|
||||
{8.833633386657316e-01f, -4.686888220358279e-01f},
|
||||
{8.833633386657316e-01f, -4.686888220358280e-01f},
|
||||
{8.827875059266853e-01f, -4.697725187574754e-01f},
|
||||
{8.822103437256089e-01f, -4.708555080101994e-01f},
|
||||
{8.816318529316984e-01f, -4.719377881630376e-01f},
|
||||
|
@ -1279,11 +1279,11 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{8.787195006314716e-01f, -4.773384954201548e-01f},
|
||||
{8.781330566456232e-01f, -4.784164867834454e-01f},
|
||||
{8.775452902072614e-01f, -4.794937576601530e-01f},
|
||||
{8.769562022015515e-01f, -4.805703064279270e-01f},
|
||||
{8.769562022015513e-01f, -4.805703064279270e-01f},
|
||||
{8.763657935156495e-01f, -4.816461314655044e-01f},
|
||||
{8.757740650387004e-01f, -4.827212311527123e-01f},
|
||||
{8.757740650387003e-01f, -4.827212311527123e-01f},
|
||||
{8.751810176618363e-01f, -4.837956038704698e-01f},
|
||||
{8.745866522781761e-01f, -4.848692480007911e-01f},
|
||||
{8.745866522781762e-01f, -4.848692480007911e-01f},
|
||||
{8.739909697828232e-01f, -4.859421619267875e-01f},
|
||||
{8.733939710728648e-01f, -4.870143440326701e-01f},
|
||||
{8.727956570473698e-01f, -4.880857927037520e-01f},
|
||||
|
@ -1297,13 +1297,13 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{8.679619020254642e-01f, -4.966307850227757e-01f},
|
||||
{8.673517909446490e-01f, -4.976955603027919e-01f},
|
||||
{8.667403736477115e-01f, -4.987595860622885e-01f},
|
||||
{8.661276510554351e-01f, -4.998228606988624e-01f},
|
||||
{8.661276510554352e-01f, -4.998228606988624e-01f},
|
||||
{8.655136240905691e-01f, -5.008853826112407e-01f},
|
||||
{8.648982936778269e-01f, -5.019471501992850e-01f},
|
||||
{8.642816607438848e-01f, -5.030081618639924e-01f},
|
||||
{8.636637262173812e-01f, -5.040684160074983e-01f},
|
||||
{8.636637262173812e-01f, -5.040684160074984e-01f},
|
||||
{8.630444910289141e-01f, -5.051279110330795e-01f},
|
||||
{8.624239561110406e-01f, -5.061866453451552e-01f},
|
||||
{8.624239561110405e-01f, -5.061866453451552e-01f},
|
||||
{8.618021223982749e-01f, -5.072446173492910e-01f},
|
||||
{8.611789908270876e-01f, -5.083018254522002e-01f},
|
||||
{8.605545623359034e-01f, -5.093582680617462e-01f},
|
||||
|
@ -1322,8 +1322,8 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{8.523194027626210e-01f, -5.230216397763758e-01f},
|
||||
{8.516769170172609e-01f, -5.240671989544601e-01f},
|
||||
{8.510331486618554e-01f, -5.251119688968137e-01f},
|
||||
{8.503880986659081e-01f, -5.261559480300321e-01f},
|
||||
{8.497417680008525e-01f, -5.271991347819013e-01f},
|
||||
{8.503880986659080e-01f, -5.261559480300321e-01f},
|
||||
{8.497417680008525e-01f, -5.271991347819014e-01f},
|
||||
{8.490941576400509e-01f, -5.282415275814013e-01f},
|
||||
{8.484452685587929e-01f, -5.292831248587072e-01f},
|
||||
{8.477951017342936e-01f, -5.303239250451923e-01f},
|
||||
|
@ -1342,7 +1342,7 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{8.392271065094661e-01f, -5.437810806747042e-01f},
|
||||
{8.385591549620770e-01f, -5.448105575604123e-01f},
|
||||
{8.378899405597550e-01f, -5.458392139712668e-01f},
|
||||
{8.372194643103249e-01f, -5.468670483581293e-01f},
|
||||
{8.372194643103250e-01f, -5.468670483581293e-01f},
|
||||
{8.365477272235120e-01f, -5.478940591731002e-01f},
|
||||
{8.358747303109401e-01f, -5.489202448695194e-01f},
|
||||
{8.352004745861303e-01f, -5.499456039019702e-01f},
|
||||
|
@ -1367,37 +1367,37 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{8.221518032996592e-01f, -5.692683131275782e-01f},
|
||||
{8.214525870777344e-01f, -5.702768162772331e-01f},
|
||||
{8.207521337630588e-01f, -5.712844606003090e-01f},
|
||||
{8.200504444105025e-01f, -5.722912445793115e-01f},
|
||||
{8.193475200767969e-01f, -5.732971666980422e-01f},
|
||||
{8.200504444105026e-01f, -5.722912445793115e-01f},
|
||||
{8.193475200767970e-01f, -5.732971666980422e-01f},
|
||||
{8.186433618205335e-01f, -5.743022254416005e-01f},
|
||||
{8.179379707021619e-01f, -5.753064192963863e-01f},
|
||||
{8.172313477839882e-01f, -5.763097467501014e-01f},
|
||||
{8.172313477839883e-01f, -5.763097467501014e-01f},
|
||||
{8.165234941301740e-01f, -5.773122062917532e-01f},
|
||||
{8.158144108067338e-01f, -5.783137964116556e-01f},
|
||||
{8.151040988815345e-01f, -5.793145156014319e-01f},
|
||||
{8.151040988815346e-01f, -5.793145156014319e-01f},
|
||||
{8.143925594242929e-01f, -5.803143623540171e-01f},
|
||||
{8.136797935065747e-01f, -5.813133351636602e-01f},
|
||||
{8.129658022017924e-01f, -5.823114325259262e-01f},
|
||||
{8.129658022017923e-01f, -5.823114325259262e-01f},
|
||||
{8.122505865852039e-01f, -5.833086529376983e-01f},
|
||||
{8.115341477339112e-01f, -5.843049948971807e-01f},
|
||||
{8.108164867268581e-01f, -5.853004569039005e-01f},
|
||||
{8.115341477339113e-01f, -5.843049948971807e-01f},
|
||||
{8.108164867268581e-01f, -5.853004569039004e-01f},
|
||||
{8.100976046448293e-01f, -5.862950374587097e-01f},
|
||||
{8.093775025704479e-01f, -5.872887350637883e-01f},
|
||||
{8.086561815881750e-01f, -5.882815482226452e-01f},
|
||||
{8.079336427843067e-01f, -5.892734754401222e-01f},
|
||||
{8.072098872469734e-01f, -5.902645152223945e-01f},
|
||||
{8.072098872469735e-01f, -5.902645152223945e-01f},
|
||||
{8.064849160661379e-01f, -5.912546660769743e-01f},
|
||||
{8.057587303335938e-01f, -5.922439265127122e-01f},
|
||||
{8.050313311429637e-01f, -5.932322950397998e-01f},
|
||||
{8.043027195896973e-01f, -5.942197701697721e-01f},
|
||||
{8.035728967710708e-01f, -5.952063504155093e-01f},
|
||||
{8.028418637861839e-01f, -5.961920342912395e-01f},
|
||||
{8.021096217359593e-01f, -5.971768203125404e-01f},
|
||||
{8.013761717231402e-01f, -5.981607069963423e-01f},
|
||||
{8.021096217359593e-01f, -5.971768203125405e-01f},
|
||||
{8.013761717231402e-01f, -5.981607069963424e-01f},
|
||||
{8.006415148522891e-01f, -5.991436928609294e-01f},
|
||||
{7.999056522297859e-01f, -6.001257764259429e-01f},
|
||||
{7.991685849638264e-01f, -6.011069562123827e-01f},
|
||||
{7.984303141644207e-01f, -6.020872307426096e-01f},
|
||||
{7.984303141644207e-01f, -6.020872307426097e-01f},
|
||||
{7.976908409433912e-01f, -6.030665985403482e-01f},
|
||||
{7.969501664143711e-01f, -6.040450581306880e-01f},
|
||||
{7.962082916928030e-01f, -6.050226080400867e-01f},
|
||||
|
@ -1426,30 +1426,30 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{7.788165123814760e-01f, -6.272518154951441e-01f},
|
||||
{7.780461723455767e-01f, -6.282070945941292e-01f},
|
||||
{7.772746605862029e-01f, -6.291614276245828e-01f},
|
||||
{7.765019782652373e-01f, -6.301148131492967e-01f},
|
||||
{7.765019782652371e-01f, -6.301148131492967e-01f},
|
||||
{7.757281265463254e-01f, -6.310672497324895e-01f},
|
||||
{7.749531065948739e-01f, -6.320187359398091e-01f},
|
||||
{7.749531065948738e-01f, -6.320187359398091e-01f},
|
||||
{7.741769195780490e-01f, -6.329692703383341e-01f},
|
||||
{7.733995666647743e-01f, -6.339188514965771e-01f},
|
||||
{7.726210490257291e-01f, -6.348674779844861e-01f},
|
||||
{7.718413678333470e-01f, -6.358151483734467e-01f},
|
||||
{7.710605242618138e-01f, -6.367618612362842e-01f},
|
||||
{7.702785194870657e-01f, -6.377076151472665e-01f},
|
||||
{7.694953546867879e-01f, -6.386524086821050e-01f},
|
||||
{7.694953546867880e-01f, -6.386524086821050e-01f},
|
||||
{7.687110310404124e-01f, -6.395962404179578e-01f},
|
||||
{7.679255497291163e-01f, -6.405391089334316e-01f},
|
||||
{7.671389119358204e-01f, -6.414810128085832e-01f},
|
||||
{7.663511188451869e-01f, -6.424219506249224e-01f},
|
||||
{7.663511188451870e-01f, -6.424219506249224e-01f},
|
||||
{7.655621716436182e-01f, -6.433619209654138e-01f},
|
||||
{7.647720715192542e-01f, -6.443009224144792e-01f},
|
||||
{7.647720715192541e-01f, -6.443009224144792e-01f},
|
||||
{7.639808196619715e-01f, -6.452389535579994e-01f},
|
||||
{7.631884172633813e-01f, -6.461760129833163e-01f},
|
||||
{7.631884172633814e-01f, -6.461760129833163e-01f},
|
||||
{7.623948655168271e-01f, -6.471120992792355e-01f},
|
||||
{7.616001656173835e-01f, -6.480472110360278e-01f},
|
||||
{7.608043187618542e-01f, -6.489813468454321e-01f},
|
||||
{7.600073261487703e-01f, -6.499145053006563e-01f},
|
||||
{7.592091889783881e-01f, -6.508466849963809e-01f},
|
||||
{7.584099084526877e-01f, -6.517778845287601e-01f},
|
||||
{7.592091889783880e-01f, -6.508466849963810e-01f},
|
||||
{7.584099084526879e-01f, -6.517778845287601e-01f},
|
||||
{7.576094857753715e-01f, -6.527081024954242e-01f},
|
||||
{7.568079221518612e-01f, -6.536373374954818e-01f},
|
||||
{7.560052187892974e-01f, -6.545655881295217e-01f},
|
||||
|
@ -1457,16 +1457,16 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{7.543963976841503e-01f, -6.564191307093185e-01f},
|
||||
{7.535902823644226e-01f, -6.573444198636738e-01f},
|
||||
{7.527830321513488e-01f, -6.582687190692122e-01f},
|
||||
{7.519746482606328e-01f, -6.591920269339562e-01f},
|
||||
{7.511651319096865e-01f, -6.601143420674205e-01f},
|
||||
{7.503544843176265e-01f, -6.610356630806152e-01f},
|
||||
{7.495427067052737e-01f, -6.619559885860479e-01f},
|
||||
{7.487298002951505e-01f, -6.628753171977246e-01f},
|
||||
{7.479157663114792e-01f, -6.637936475311532e-01f},
|
||||
{7.519746482606329e-01f, -6.591920269339562e-01f},
|
||||
{7.511651319096864e-01f, -6.601143420674205e-01f},
|
||||
{7.503544843176265e-01f, -6.610356630806153e-01f},
|
||||
{7.495427067052738e-01f, -6.619559885860480e-01f},
|
||||
{7.487298002951506e-01f, -6.628753171977246e-01f},
|
||||
{7.479157663114792e-01f, -6.637936475311533e-01f},
|
||||
{7.471006059801801e-01f, -6.647109782033448e-01f},
|
||||
{7.462843205288703e-01f, -6.656273078328160e-01f},
|
||||
{7.462843205288703e-01f, -6.656273078328161e-01f},
|
||||
{7.454669111868606e-01f, -6.665426350395909e-01f},
|
||||
{7.446483791851549e-01f, -6.674569584452033e-01f},
|
||||
{7.446483791851548e-01f, -6.674569584452033e-01f},
|
||||
{7.438287257564475e-01f, -6.683702766726985e-01f},
|
||||
{7.430079521351217e-01f, -6.692825883466360e-01f},
|
||||
{7.421860595572477e-01f, -6.701938920930909e-01f},
|
||||
|
@ -1474,28 +1474,28 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{7.405389224845600e-01f, -6.720134703154446e-01f},
|
||||
{7.397136804703048e-01f, -6.729217420510915e-01f},
|
||||
{7.388873244606151e-01f, -6.738290003787560e-01f},
|
||||
{7.380598556999681e-01f, -6.747352439321236e-01f},
|
||||
{7.380598556999680e-01f, -6.747352439321236e-01f},
|
||||
{7.372312754345167e-01f, -6.756404713464076e-01f},
|
||||
{7.364015849120877e-01f, -6.765446812583521e-01f},
|
||||
{7.355707853821803e-01f, -6.774478723062332e-01f},
|
||||
{7.347388780959635e-01f, -6.783500431298615e-01f},
|
||||
{7.355707853821805e-01f, -6.774478723062332e-01f},
|
||||
{7.347388780959634e-01f, -6.783500431298615e-01f},
|
||||
{7.339058643062745e-01f, -6.792511923705841e-01f},
|
||||
{7.330717452676171e-01f, -6.801513186712865e-01f},
|
||||
{7.322365222361595e-01f, -6.810504206763948e-01f},
|
||||
{7.314001964697324e-01f, -6.819484970318775e-01f},
|
||||
{7.314001964697325e-01f, -6.819484970318775e-01f},
|
||||
{7.305627692278276e-01f, -6.828455463852481e-01f},
|
||||
{7.297242417715950e-01f, -6.837415673855661e-01f},
|
||||
{7.288846153638420e-01f, -6.846365586834405e-01f},
|
||||
{7.280438912690308e-01f, -6.855305189310302e-01f},
|
||||
{7.272020707532766e-01f, -6.864234467820476e-01f},
|
||||
{7.272020707532767e-01f, -6.864234467820476e-01f},
|
||||
{7.263591550843460e-01f, -6.873153408917591e-01f},
|
||||
{7.255151455316546e-01f, -6.882061999169885e-01f},
|
||||
{7.246700433662657e-01f, -6.890960225161182e-01f},
|
||||
{7.238238498608879e-01f, -6.899848073490914e-01f},
|
||||
{7.229765662898732e-01f, -6.908725530774144e-01f},
|
||||
{7.238238498608880e-01f, -6.899848073490914e-01f},
|
||||
{7.229765662898732e-01f, -6.908725530774142e-01f},
|
||||
{7.221281939292153e-01f, -6.917592583641577e-01f},
|
||||
{7.212787340565479e-01f, -6.926449218739597e-01f},
|
||||
{7.204281879511419e-01f, -6.935295422730269e-01f},
|
||||
{7.204281879511419e-01f, -6.935295422730268e-01f},
|
||||
{7.195765568939045e-01f, -6.944131182291369e-01f},
|
||||
{7.187238421673769e-01f, -6.952956484116404e-01f},
|
||||
{7.178700450557317e-01f, -6.961771314914630e-01f},
|
||||
|
@ -1503,13 +1503,13 @@ static const cos_msin_t cos_msin_640[640] =
|
|||
{7.161592088219294e-01f, -6.979369510346534e-01f},
|
||||
{7.153021722762606e-01f, -6.988152848477649e-01f},
|
||||
{7.144440584984474e-01f, -6.996925662576865e-01f},
|
||||
{7.135848687807936e-01f, -7.005687939432483e-01f},
|
||||
{7.127246044172235e-01f, -7.014439665848672e-01f},
|
||||
{7.118632667032795e-01f, -7.023180828645491e-01f},
|
||||
{7.135848687807935e-01f, -7.005687939432483e-01f},
|
||||
{7.127246044172235e-01f, -7.014439665848673e-01f},
|
||||
{7.118632667032795e-01f, -7.023180828645490e-01f},
|
||||
{7.110008569361208e-01f, -7.031911414658905e-01f},
|
||||
{7.101373764145209e-01f, -7.040631410740809e-01f},
|
||||
{7.092728264388657e-01f, -7.049340803759049e-01f},
|
||||
{7.084072083111520e-01f, -7.058039580597435e-01f},
|
||||
{7.084072083111521e-01f, -7.058039580597435e-01f},
|
||||
{7.075405233349850e-01f, -7.066727728155766e-01f}
|
||||
};
|
||||
|
||||
|
|
|
@ -157,8 +157,8 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
|
|||
static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id);
|
||||
static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id);
|
||||
static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig);
|
||||
static switch_status_t engage_device(int samplerate, int codec_ms);
|
||||
static switch_status_t engage_ring_device(int sample_rate, int channels);
|
||||
static switch_status_t engage_device(int restart);
|
||||
static switch_status_t engage_ring_device(void);
|
||||
static void deactivate_ring_device(void);
|
||||
static int dump_info(int verbose);
|
||||
static switch_status_t load_config(void);
|
||||
|
@ -200,12 +200,12 @@ static switch_status_t channel_on_init(switch_core_session_t *session)
|
|||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL INIT %d %d\n",
|
||||
switch_channel_get_name(channel), switch_channel_get_state(channel), switch_test_flag(tech_pvt, TFLAG_ANSWER));
|
||||
|
||||
if (engage_device(globals.sample_rate, globals.codec_ms) != SWITCH_STATUS_SUCCESS) {
|
||||
if (engage_device(0) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
|
||||
if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
|
||||
if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND) && !switch_test_flag(tech_pvt, TFLAG_AUTO_ANSWER)) {
|
||||
add_pvt(tech_pvt, PA_SLAVE);
|
||||
|
||||
ring_file = globals.ring_file;
|
||||
|
@ -224,7 +224,7 @@ static switch_status_t channel_on_init(switch_core_session_t *session)
|
|||
globals.read_codec.implementation->actual_samples_per_second,
|
||||
SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
|
||||
|
||||
if (engage_ring_device(fh.samplerate, fh.channels) != SWITCH_STATUS_SUCCESS) {
|
||||
if (engage_ring_device() != SWITCH_STATUS_SUCCESS) {
|
||||
switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Ring Error!\n");
|
||||
switch_core_file_close(&fh);
|
||||
|
@ -290,7 +290,7 @@ static switch_status_t channel_on_init(switch_core_session_t *session)
|
|||
}
|
||||
|
||||
if (ring_file) {
|
||||
deactivate_ring_device();
|
||||
//deactivate_ring_device();
|
||||
switch_core_file_close(&fh);
|
||||
}
|
||||
|
||||
|
@ -331,6 +331,9 @@ static void deactivate_audio_device(void)
|
|||
/* LOCKED ************************************************************************************************** */
|
||||
|
||||
if (globals.audio_stream) {
|
||||
if (globals.ring_stream == globals.audio_stream) {
|
||||
globals.ring_stream = NULL;
|
||||
}
|
||||
CloseAudioStream(globals.audio_stream);
|
||||
globals.audio_stream = NULL;
|
||||
}
|
||||
|
@ -370,7 +373,7 @@ static void deactivate_ring_device(void)
|
|||
}
|
||||
|
||||
switch_mutex_lock(globals.device_lock);
|
||||
if (globals.ringdev != globals.outdev && globals.ring_stream) {
|
||||
if (globals.ring_stream && globals.ring_stream != globals.audio_stream) {
|
||||
CloseAudioStream(globals.ring_stream);
|
||||
}
|
||||
globals.ring_stream = NULL;
|
||||
|
@ -762,12 +765,19 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_portaudio_load)
|
|||
|
||||
Pa_Initialize();
|
||||
|
||||
if (dump_info(0)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't find any audio devices!\n");
|
||||
return SWITCH_STATUS_TERM;
|
||||
}
|
||||
|
||||
memset(&globals, 0, sizeof(globals));
|
||||
switch_core_hash_init(&globals.call_hash, module_pool);
|
||||
switch_mutex_init(&globals.device_lock, SWITCH_MUTEX_NESTED, module_pool);
|
||||
switch_mutex_init(&globals.pvt_lock, SWITCH_MUTEX_NESTED, module_pool);
|
||||
switch_mutex_init(&globals.flag_mutex, SWITCH_MUTEX_NESTED, module_pool);
|
||||
switch_mutex_init(&globals.pa_mutex, SWITCH_MUTEX_NESTED, module_pool);
|
||||
|
||||
globals.read_frame.data = globals.databuf;
|
||||
globals.read_frame.buflen = sizeof(globals.databuf);
|
||||
globals.cng_frame.data = globals.cngbuf;
|
||||
globals.cng_frame.buflen = sizeof(globals.cngbuf);
|
||||
globals.cng_frame.datalen = switch_samples_per_packet(globals.sample_rate, globals.codec_ms) * 2;
|
||||
switch_set_flag((&globals.cng_frame), SFF_CNG);
|
||||
|
||||
/* dual streams makes portaudio on solaris choke */
|
||||
#if defined(sun) || defined(__sun)
|
||||
|
@ -780,28 +790,21 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_portaudio_load)
|
|||
return status;
|
||||
}
|
||||
|
||||
if (dump_info(0)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't find any audio devices!\n");
|
||||
return SWITCH_STATUS_TERM;
|
||||
}
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
|
||||
"Input Device: %d, Output Device: %d, Ring Device: %d Sample Rate: %d MS: %d\n", globals.indev,
|
||||
globals.outdev, globals.ringdev, globals.sample_rate, globals.codec_ms);
|
||||
|
||||
switch_core_hash_init(&globals.call_hash, module_pool);
|
||||
switch_mutex_init(&globals.device_lock, SWITCH_MUTEX_NESTED, module_pool);
|
||||
switch_mutex_init(&globals.pvt_lock, SWITCH_MUTEX_NESTED, module_pool);
|
||||
switch_mutex_init(&globals.flag_mutex, SWITCH_MUTEX_NESTED, module_pool);
|
||||
switch_mutex_init(&globals.pa_mutex, SWITCH_MUTEX_NESTED, module_pool);
|
||||
|
||||
if (switch_event_reserve_subclass(MY_EVENT_RINGING) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass!\n");
|
||||
return SWITCH_STATUS_GENERR;
|
||||
}
|
||||
|
||||
globals.read_frame.data = globals.databuf;
|
||||
globals.read_frame.buflen = sizeof(globals.databuf);
|
||||
globals.cng_frame.data = globals.cngbuf;
|
||||
globals.cng_frame.buflen = sizeof(globals.cngbuf);
|
||||
globals.cng_frame.datalen = switch_samples_per_packet(globals.sample_rate, globals.codec_ms) * 2;
|
||||
switch_set_flag((&globals.cng_frame), SFF_CNG);
|
||||
|
||||
/* connect my internal structure to the blank pointer passed to me */
|
||||
*module_interface = switch_loadable_module_create_module_interface(pool, modname);
|
||||
|
@ -923,9 +926,9 @@ static switch_status_t load_config(void)
|
|||
if (globals.indev < 0) {
|
||||
globals.indev = get_dev_by_name(NULL, 1);
|
||||
if (globals.indev > -1) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default input device!\n");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default input device\n");
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device!\n");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device\n");
|
||||
status = SWITCH_STATUS_GENERR;
|
||||
}
|
||||
}
|
||||
|
@ -933,16 +936,16 @@ static switch_status_t load_config(void)
|
|||
if (globals.outdev < 0) {
|
||||
globals.outdev = get_dev_by_name(NULL, 0);
|
||||
if (globals.outdev > -1) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default output device!\n");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default output device\n");
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device!\n");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device\n");
|
||||
status = SWITCH_STATUS_GENERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (globals.ringdev < 0) {
|
||||
if (globals.outdev > -1) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid ring device configured using output device!\n");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid ring device configured using output device\n");
|
||||
globals.ringdev = globals.outdev;
|
||||
}
|
||||
}
|
||||
|
@ -954,6 +957,7 @@ static switch_status_t load_config(void)
|
|||
|
||||
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_portaudio_shutdown)
|
||||
{
|
||||
#if 0
|
||||
if (globals.monitor_running == 1) {
|
||||
int sanity = 20;
|
||||
globals.monitor_running = -1;
|
||||
|
@ -964,14 +968,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_portaudio_shutdown)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (globals.read_codec.implementation) {
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
}
|
||||
|
||||
if (globals.write_codec.implementation) {
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
}
|
||||
#endif
|
||||
|
||||
deactivate_audio_device();
|
||||
deactivate_ring_device();
|
||||
|
@ -1162,76 +1159,78 @@ static int dump_info(int verbose)
|
|||
PaError err;
|
||||
const char *line = "--------------------------------------------------------------------------------\n";
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO,
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
|
||||
"PortAudio version number = %d\nPortAudio version text = '%s'\n", Pa_GetVersion(), Pa_GetVersionText());
|
||||
if (globals.audio_stream) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (verbose < 0) {
|
||||
deactivate_audio_device();
|
||||
deactivate_ring_device();
|
||||
destroy_codecs();
|
||||
Pa_Terminate();
|
||||
Pa_Initialize();
|
||||
load_config();
|
||||
verbose = 0;
|
||||
}
|
||||
|
||||
|
||||
numDevices = Pa_GetDeviceCount();
|
||||
if (numDevices < 0) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Pa_CountDevices returned 0x%x\n", numDevices);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Pa_CountDevices returned 0x%x\n", numDevices);
|
||||
err = numDevices;
|
||||
goto error;
|
||||
}
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Number of devices = %d\n", numDevices);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Number of devices = %d\n", numDevices);
|
||||
|
||||
if (!verbose) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < numDevices; i++) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "%s", line);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s", line);
|
||||
deviceInfo = Pa_GetDeviceInfo(i);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Device #%d ", i);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Device #%d ", i);
|
||||
|
||||
/* Mark global and API specific default devices */
|
||||
defaultDisplayed = 0;
|
||||
if (i == Pa_GetDefaultInputDevice()) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default Input");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default Input");
|
||||
defaultDisplayed = 1;
|
||||
|
||||
} else if (i == Pa_GetHostApiInfo(deviceInfo->hostApi)->defaultInputDevice) {
|
||||
|
||||
const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo(deviceInfo->hostApi);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default %s Input", hostInfo->name);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default %s Input", hostInfo->name);
|
||||
defaultDisplayed = 1;
|
||||
}
|
||||
|
||||
if (i == Pa_GetDefaultOutputDevice()) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default Output");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default Output");
|
||||
defaultDisplayed = 1;
|
||||
|
||||
} else if (i == Pa_GetHostApiInfo(deviceInfo->hostApi)->defaultOutputDevice) {
|
||||
|
||||
const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo(deviceInfo->hostApi);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default %s Output", hostInfo->name);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default %s Output", hostInfo->name);
|
||||
defaultDisplayed = 1;
|
||||
}
|
||||
|
||||
if (defaultDisplayed) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "** | ");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "** | ");
|
||||
}
|
||||
/* print device info fields */
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Name: %s\n", deviceInfo->name);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Host: %s | ", Pa_GetHostApiInfo(deviceInfo->hostApi)->name);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "inputs: %d | ", deviceInfo->maxInputChannels);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "outputs: %d | ", deviceInfo->maxOutputChannels);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Name: %s\n", deviceInfo->name);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Host: %s | ", Pa_GetHostApiInfo(deviceInfo->hostApi)->name);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "inputs: %d | ", deviceInfo->maxInputChannels);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "outputs: %d | ", deviceInfo->maxOutputChannels);
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default rate: %8.2f\n", deviceInfo->defaultSampleRate);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Default rate: %8.2f\n", deviceInfo->defaultSampleRate);
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default input latency: %.3f | ", deviceInfo->defaultLowInputLatency);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default output latency: %.3f\n", deviceInfo->defaultLowOutputLatency);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Default input latency: %.3f | ", deviceInfo->defaultLowInputLatency);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Default output latency: %.3f\n", deviceInfo->defaultLowOutputLatency);
|
||||
|
||||
/* poll for standard sample rates */
|
||||
inputParameters.device = i;
|
||||
|
@ -1248,25 +1247,25 @@ static int dump_info(int verbose)
|
|||
|
||||
if (inputParameters.channelCount > 0) {
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel input rates:", inputParameters.channelCount);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel input rates:", inputParameters.channelCount);
|
||||
PrintSupportedStandardSampleRates(&inputParameters, NULL);
|
||||
}
|
||||
|
||||
if (outputParameters.channelCount > 0) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel output rates:", outputParameters.channelCount);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel output rates:", outputParameters.channelCount);
|
||||
PrintSupportedStandardSampleRates(NULL, &outputParameters);
|
||||
}
|
||||
|
||||
if (inputParameters.channelCount > 0 && outputParameters.channelCount > 0) {
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO,
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
|
||||
"full-duplex 16 bit %d channel input, %d channel output rates:", inputParameters.channelCount,
|
||||
outputParameters.channelCount);
|
||||
PrintSupportedStandardSampleRates(&inputParameters, &outputParameters);
|
||||
}
|
||||
}
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "%s", line);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s", line);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -1277,148 +1276,165 @@ static int dump_info(int verbose)
|
|||
return err;
|
||||
}
|
||||
|
||||
static switch_status_t engage_device(int sample_rate, int codec_ms)
|
||||
static switch_status_t engage_device(int restart)
|
||||
{
|
||||
PaStreamParameters inputParameters, outputParameters;
|
||||
PaError err;
|
||||
int sample_rate = globals.sample_rate;
|
||||
int codec_ms = globals.codec_ms;
|
||||
|
||||
if (!globals.audio_stream) {
|
||||
if (!sample_rate) {
|
||||
sample_rate = globals.sample_rate;
|
||||
}
|
||||
if (!codec_ms) {
|
||||
codec_ms = globals.codec_ms;
|
||||
}
|
||||
|
||||
if (!globals.read_codec.implementation) {
|
||||
if (switch_core_codec_init(&globals.read_codec,
|
||||
"L16",
|
||||
NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
|
||||
NULL) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
if (restart) {
|
||||
deactivate_audio_device();
|
||||
deactivate_ring_device();
|
||||
destroy_codecs();
|
||||
}
|
||||
|
||||
switch_assert(globals.read_codec.implementation);
|
||||
if (globals.timer.timer_interface) {
|
||||
switch_core_timer_sync(&globals.timer);
|
||||
}
|
||||
|
||||
if (!globals.write_codec.implementation) {
|
||||
if (switch_core_codec_init(&globals.write_codec,
|
||||
"L16",
|
||||
NULL,
|
||||
sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
|
||||
NULL) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
if (globals.audio_stream) {
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (!globals.timer.timer_interface) {
|
||||
if (switch_core_timer_init(&globals.timer,
|
||||
globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
|
||||
module_pool) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup timer failed!\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!globals.hold_timer.timer_interface) {
|
||||
if (switch_core_timer_init(&globals.hold_timer,
|
||||
globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
|
||||
module_pool) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup hold timer failed!\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
switch_core_timer_destroy(&globals.timer);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
globals.read_frame.rate = sample_rate;
|
||||
globals.read_frame.codec = &globals.read_codec;
|
||||
|
||||
switch_mutex_lock(globals.device_lock);
|
||||
/* LOCKED ************************************************************************************************** */
|
||||
inputParameters.device = globals.indev;
|
||||
inputParameters.channelCount = 1;
|
||||
inputParameters.sampleFormat = SAMPLE_TYPE;
|
||||
inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency;
|
||||
inputParameters.hostApiSpecificStreamInfo = NULL;
|
||||
|
||||
outputParameters.device = globals.outdev;
|
||||
outputParameters.channelCount = 1;
|
||||
outputParameters.sampleFormat = SAMPLE_TYPE;
|
||||
outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
|
||||
outputParameters.hostApiSpecificStreamInfo = NULL;
|
||||
//err = OpenAudioStream(&globals.audio_stream, NULL/*&inputParameters*/, &outputParameters, sample_rate, paClipOff,
|
||||
//globals.read_codec.implementation->samples_per_packet);
|
||||
|
||||
err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
|
||||
globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
|
||||
/* UNLOCKED ************************************************************************************************* */
|
||||
|
||||
if (err != paNoError) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening audio device! retrying\n");
|
||||
switch_yield(1000000);
|
||||
err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
|
||||
globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
|
||||
}
|
||||
|
||||
switch_mutex_unlock(globals.device_lock);
|
||||
|
||||
if (err != paNoError) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open audio device!\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
switch_core_timer_destroy(&globals.timer);
|
||||
switch_core_timer_destroy(&globals.hold_timer);
|
||||
if (!globals.read_codec.implementation) {
|
||||
if (switch_core_codec_init(&globals.read_codec,
|
||||
"L16",
|
||||
NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
|
||||
NULL) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
switch_assert(globals.read_codec.implementation);
|
||||
|
||||
if (!globals.write_codec.implementation) {
|
||||
if (switch_core_codec_init(&globals.write_codec,
|
||||
"L16",
|
||||
NULL,
|
||||
sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
|
||||
NULL) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!globals.timer.timer_interface) {
|
||||
if (switch_core_timer_init(&globals.timer,
|
||||
globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
|
||||
module_pool) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup timer failed!\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!globals.hold_timer.timer_interface) {
|
||||
if (switch_core_timer_init(&globals.hold_timer,
|
||||
globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
|
||||
module_pool) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup hold timer failed!\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
switch_core_timer_destroy(&globals.timer);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
globals.read_frame.rate = sample_rate;
|
||||
globals.read_frame.codec = &globals.read_codec;
|
||||
|
||||
switch_mutex_lock(globals.device_lock);
|
||||
/* LOCKED ************************************************************************************************** */
|
||||
inputParameters.device = globals.indev;
|
||||
inputParameters.channelCount = 1;
|
||||
inputParameters.sampleFormat = SAMPLE_TYPE;
|
||||
inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency;
|
||||
inputParameters.hostApiSpecificStreamInfo = NULL;
|
||||
outputParameters.device = globals.outdev;
|
||||
outputParameters.channelCount = 1;
|
||||
outputParameters.sampleFormat = SAMPLE_TYPE;
|
||||
outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
|
||||
outputParameters.hostApiSpecificStreamInfo = NULL;
|
||||
//err = OpenAudioStream(&globals.audio_stream, NULL/*&inputParameters*/, &outputParameters, sample_rate, paClipOff,
|
||||
//globals.read_codec.implementation->samples_per_packet);
|
||||
err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
|
||||
globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
|
||||
/* UNLOCKED ************************************************************************************************* */
|
||||
if (err != paNoError) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening audio device retrying\n");
|
||||
switch_yield(1000000);
|
||||
err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
|
||||
globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
|
||||
}
|
||||
|
||||
switch_mutex_unlock(globals.device_lock);
|
||||
|
||||
if (err != paNoError) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open audio device\n");
|
||||
switch_core_codec_destroy(&globals.read_codec);
|
||||
switch_core_codec_destroy(&globals.write_codec);
|
||||
switch_core_timer_destroy(&globals.timer);
|
||||
switch_core_timer_destroy(&globals.hold_timer);
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Engage audio device rate: %d channels %d\n", sample_rate, outputParameters.channelCount);
|
||||
|
||||
engage_ring_device();
|
||||
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static switch_status_t engage_ring_device(int sample_rate, int channels)
|
||||
static switch_status_t engage_ring_device(void)
|
||||
{
|
||||
PaStreamParameters outputParameters = {0};
|
||||
PaError err;
|
||||
int sample_rate = globals.sample_rate;
|
||||
int channels = 1;
|
||||
|
||||
if (!globals.ring_stream) {
|
||||
if (globals.ringdev == globals.outdev) {
|
||||
if (globals.ring_stream) {
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (globals.ringdev == globals.outdev) {
|
||||
if (engage_device(0) == SWITCH_STATUS_SUCCESS) {
|
||||
globals.ring_stream = globals.audio_stream;
|
||||
} else {
|
||||
if (!sample_rate) {
|
||||
sample_rate = globals.sample_rate;
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
switch_mutex_lock(globals.device_lock);
|
||||
/* LOCKED ************************************************************************************************** */
|
||||
outputParameters.device = globals.ringdev;
|
||||
outputParameters.channelCount = channels;
|
||||
outputParameters.sampleFormat = SAMPLE_TYPE;
|
||||
outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
|
||||
outputParameters.hostApiSpecificStreamInfo = NULL;
|
||||
err = OpenAudioStream(&globals.ring_stream, NULL,
|
||||
&outputParameters, sample_rate, paClipOff, globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
|
||||
/* UNLOCKED ************************************************************************************************* */
|
||||
switch_mutex_unlock(globals.device_lock);
|
||||
|
||||
switch_mutex_lock(globals.device_lock);
|
||||
/* LOCKED ************************************************************************************************** */
|
||||
outputParameters.device = globals.ringdev;
|
||||
outputParameters.channelCount = channels;
|
||||
outputParameters.sampleFormat = SAMPLE_TYPE;
|
||||
outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
|
||||
outputParameters.hostApiSpecificStreamInfo = NULL;
|
||||
err = OpenAudioStream(&globals.ring_stream, NULL,
|
||||
&outputParameters, sample_rate, paClipOff, globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
|
||||
|
||||
/* UNLOCKED ************************************************************************************************* */
|
||||
switch_mutex_unlock(globals.device_lock);
|
||||
|
||||
if (err != paNoError) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open ring device!\n");
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
if (err != paNoError) {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
switch_yield(10000);
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Engage ring device! rate: %d channels %d\n", sample_rate, channels);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Engage ring device rate: %d channels %d\n", sample_rate, channels);
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
|
||||
|
||||
error:
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open ring device\n");
|
||||
return SWITCH_STATUS_FALSE;
|
||||
|
||||
}
|
||||
|
||||
static switch_status_t dtmf_call(char **argv, int argc, switch_stream_handle_t *stream)
|
||||
|
@ -1723,7 +1739,7 @@ static switch_status_t place_call(char **argv, int argc, switch_stream_handle_t
|
|||
switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
|
||||
}
|
||||
tech_pvt->session = session;
|
||||
if ((status = engage_device(tech_pvt->sample_rate, tech_pvt->codec_ms)) == SWITCH_STATUS_SUCCESS) {
|
||||
if ((status = engage_device(0)) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
|
||||
switch_channel_mark_answered(channel);
|
||||
switch_channel_set_state(channel, CS_INIT);
|
||||
|
@ -1772,8 +1788,7 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
"pa indev #<num>|<partial name>\n"
|
||||
"pa outdev #<num>|<partial name>\n"
|
||||
"pa ringdev #<num>|<partial name>\n"
|
||||
"pa play <filename>\n"
|
||||
"pa ringtest\n"
|
||||
"pa play [ringtest|<filename>]\n"
|
||||
"pa looptest\n" "--------------------------------------------------------------------------------\n";
|
||||
|
||||
|
||||
|
@ -1843,7 +1858,13 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
} else if (!strcasecmp(argv[0], "devlist")) {
|
||||
func = devlist;
|
||||
} else if (!strcasecmp(argv[0], "rescan")) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Looking for new devices.\n");
|
||||
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Looking for new devices.\n");
|
||||
dump_info(-1);
|
||||
goto done;
|
||||
} else if (!strcasecmp(argv[0], "dump")) {
|
||||
|
@ -1862,6 +1883,12 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
} else if (!strcasecmp(argv[0], "dtmf")) {
|
||||
func = dtmf_call;
|
||||
} else if (argv[1] && !strcmp(argv[0], "indev")) {
|
||||
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (*argv[1] == '#') {
|
||||
devval = get_dev_by_number(argv[1] + 1, 1);
|
||||
} else {
|
||||
|
@ -1870,8 +1897,15 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
devname = "indev";
|
||||
if (devval > -1) {
|
||||
globals.indev = devval;
|
||||
engage_device(1);
|
||||
}
|
||||
} else if (argv[1] && !strcmp(argv[0], "outdev")) {
|
||||
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (*argv[1] == '#') {
|
||||
devval = get_dev_by_number(argv[1] + 1, 0);
|
||||
} else {
|
||||
|
@ -1880,8 +1914,15 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
devname = "outdev";
|
||||
if (devval > -1) {
|
||||
globals.outdev = devval;
|
||||
engage_device(1);
|
||||
}
|
||||
} else if (argv[1] && !strcmp(argv[0], "ringdev")) {
|
||||
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (*argv[1] == '#') {
|
||||
devval = get_dev_by_number(argv[1] + 1, 0);
|
||||
} else {
|
||||
|
@ -1890,52 +1931,71 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
devname = "ringdev";
|
||||
if (devval > -1) {
|
||||
globals.ringdev = devval;
|
||||
engage_device(1);
|
||||
}
|
||||
} else if ((argv[1] && !strcasecmp(argv[0], "play")) || !strcasecmp(argv[0], "ringtest")) {
|
||||
} else if ((argv[1] && !strcasecmp(argv[0], "play"))) {
|
||||
switch_file_handle_t fh = { 0 };
|
||||
char *playfile = NULL;
|
||||
if (globals.audio_stream) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
int samples = 0;
|
||||
int seconds = 5;
|
||||
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!strcasecmp(argv[0], "ringtest")) {
|
||||
if (!strcasecmp(argv[1], "ringtest")) {
|
||||
playfile = globals.ring_file;
|
||||
} else {
|
||||
playfile = argv[1];
|
||||
}
|
||||
|
||||
if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
|
||||
fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
|
||||
if (engage_device(0) == SWITCH_STATUS_SUCCESS) {
|
||||
if (switch_core_file_open(&fh,
|
||||
playfile,
|
||||
globals.read_codec.implementation->number_of_channels,
|
||||
globals.read_codec.implementation->actual_samples_per_second,
|
||||
SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_size_t olen = globals.timer.samples;
|
||||
playfile,
|
||||
globals.read_codec.implementation->number_of_channels,
|
||||
globals.read_codec.implementation->actual_samples_per_second,
|
||||
SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_size_t olen = globals.read_codec.implementation->samples_per_packet;
|
||||
int16_t abuf[2048];
|
||||
|
||||
if (argv[2]) {
|
||||
int i = atoi(argv[2]);
|
||||
if (i > 0) {
|
||||
seconds = i;
|
||||
}
|
||||
}
|
||||
|
||||
samples = globals.read_codec.implementation->actual_samples_per_second * seconds;
|
||||
stream->write_function(stream, "playback test [%s] %d second(s) %d samples @%dkhz",
|
||||
playfile, seconds, samples, globals.read_codec.implementation->actual_samples_per_second);
|
||||
|
||||
while (switch_core_file_read(&fh, abuf, &olen) == SWITCH_STATUS_SUCCESS) {
|
||||
WriteAudioStream(globals.audio_stream, abuf, (long) olen, &globals.timer);
|
||||
switch_core_timer_next(&globals.timer);
|
||||
olen = globals.timer.samples;
|
||||
samples -= (int) olen;
|
||||
if (samples <= 0) {
|
||||
break;
|
||||
}
|
||||
olen = globals.read_codec.implementation->samples_per_packet;
|
||||
}
|
||||
|
||||
switch_core_file_close(&fh);
|
||||
} else {
|
||||
stream->write_function(stream, "Cannot play requested file %s\n", argv[1]);
|
||||
}
|
||||
deactivate_audio_device();
|
||||
} else {
|
||||
stream->write_function(stream, "Failed to engage audio device\n");
|
||||
}
|
||||
goto done;
|
||||
} else if (!strcasecmp(argv[0], "looptest")) {
|
||||
if (globals.audio_stream) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
if (globals.call_list) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
|
||||
if (engage_device(0) == SWITCH_STATUS_SUCCESS) {
|
||||
int samples = 0;
|
||||
int success = 0;
|
||||
int i;
|
||||
|
@ -1947,7 +2007,6 @@ SWITCH_STANDARD_API(pa_cmd)
|
|||
}
|
||||
switch_yield(10000);
|
||||
}
|
||||
deactivate_audio_device();
|
||||
if (!success) {
|
||||
stream->write_function(stream, "Failed to read any bytes from indev\n");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue