公布 瑞士军刀里的升重采样算法定点化系数xCoeff [] 手机上定点化查表表格

【好久没做音频开发了,公布一年半年前在上一家公司做的瑞士军刀里的重采样算法定点化系数xCoeff 定点化查表表格,如果底层没有变动的化,目前手机通通里的升采样处理用的就是这套算法做定点化好久没做音频开发,现在都陌生了。。。。】

【只是隐隐约约记得当时是花了整整两个星期加班把那套浮点的重采样处理算法实现了定点化,定点化的过程全忘记了。当时用原始的低音质8k/16k wav文件先用SSRC Upsample到高采样率,再基于这套定点的重采样处理算法把它们 低音质的 wav升到高采样率,再基于PEAQ/PEMOQ来对比分值,当时记得效果还可以,至少用PEMOQ求得的相关性为0.9+】

 

/*
 * add by boat, 8k/16k upsample to 44.1k/ 48k
 * 三次立方插值处理时,系数 x的定点化表,直接查表法 替换浮点除法
 *

 */

#ifndef __XCOEFF__FIXED__TABLE__H__
#define __XCOEFF__FIXED__TABLE__H__


//
// 8k 与 16k 最终的系数表都是一样的,这里还是把 8k的也列出来
// xCoeff_16k_FirstFrame_Table[] 数组总长度: 882
// 第一帧:实际只有 0 至 876 下标对应的数组元素【共 877个】有效,后继全部填0
//
static short xCoeff_16k_FirstFrame_Table[]=
{
0,
11889,
23777,
2898,
14786,
26675,
5796,
17684,
29573,
8694,
20582,
32471,
11591,
23480,
2601,
14489,
26378,
5498,
17387,
29276,
8396,
20285,
32174,
11294,
23183,
2303,
14192,
26081,
5201,
17090,
28979,
8099,
19988,
31876,
10997,
22886,
2006,
13895,
25783,
4904,
16793,
28681,
7802,
19691,
31579,
10700,
22588,
1709,
13598,
25486,
4607,
16495,
28384,
7505,
19393,
31282,
10403,
22291,
1412 ,
13300 ,
25189,
4310 ,
16198 ,
28087 ,
7207,
19096 ,
30985,
10105,
21994 ,
1115,
13003,
24892 ,
4012 ,
15901,
27790 ,
6910,
18799 ,
30687 ,
9808 ,
21697 ,
817 ,
12706 ,
24595 ,
3715 ,
15604 ,
27492 ,
6613 ,
18502 ,
30390,
9511 ,
21400 ,
520 ,
12409 ,
24297 ,
3418 ,
15307 ,
27195 ,
6316 ,
18204 ,
30093 ,
9214 ,
21102,
223 ,
12112,
24000,
3121 ,
15009,
26898,
6019 ,
17907,
29796,
8916 ,
20805,
32694,
11814,
23703,
2824 ,
14712,
26601,
5721 ,
17610,
29499,
8619 ,
20508,
32396,
11517,
23406,
2526 ,
14415,
26304,
5424 ,
17313,
29201,
8322 ,
20211,
32099,
11220,
23108,
2229 ,
14118,
26006,
5127 ,
17016,
28904,
8025 ,
19913,
31802,
10923,
22811,
1932 ,
13821,
25709,
4830 ,
16718,
28607,
7728 ,
19616,
31505,
10625,
22514,
1635 ,
13523,
25412,
4533 ,
16421,
28310,
7430 ,
19319,
31208,
10328,
22217,
1337 ,
13226,
25115,
4235 ,
16124,
28013,
7133 ,
19022,
30910,
10031,
21920,
1040 ,
12929,
24817,
3938 ,
15827,
27715,
6836 ,
18725,
30613,
9734 ,
21622,
743 ,
12632,
24520,
3641 ,
15530,
27418,
6539 ,
18427,
30316,
9437 ,
21325,
446 ,
12334,
24223,
3344 ,
15232,
27121,
6242 ,
18130,
30019,
9139 ,
21028,
149 ,
12037,
23926,
3046 ,
14935,
26824,
5944 ,
17833,
29722,
8842 ,
20731,
32619,
11740,
23629,
2749 ,
14638,
26526,
5647 ,
17536,
29424,
8545 ,
20434,
32322,
11443,
23331,
2452 ,
14341,
26229,
5350 ,
17238,
29127,
8248 ,
20136,
32025,
11146,
23034,
2155 ,
14043,
25932,
5053 ,
16941,
28830,
7951 ,
19839,
31728,
10848,
22737,
1858 ,
13746,
25635,
4755 ,
16644,
28533,
7653 ,
19542,
31431,
10551,
22440,
1560 ,
13449,
25338,
4458 ,
16347,
28235,
7356 ,
19245,
31133,
10254,
22143,
1263 ,
13152,
25040,
4161 ,
16050,
27938,
7059 ,
18947,
30836,
9957 ,
21845,
966 ,
12855,
24743,
3864 ,
15752,
27641,
6762 ,
18650,
30539,
9660 ,
21548,
669 ,
12557,
24446,
3567 ,
15455,
27344,
6464 ,
18353,
30242,
9362 ,
21251,
372 ,
12260,
24149,
3269 ,
15158,
27047,
6167 ,
18056,
29944,
9065 ,
20954,
74 ,
11963,
23852,
2972 ,
14861,
26749,
5870 ,
17759,
29647,
8768 ,
20656,
32545,
11666,
23554,
2675 ,
14564,
26452,
5573 ,
17461,
29350,
8471 ,
20359,
32248,
11368,
23257,
2378 ,
14266,
26155,
5276 ,
17164,
29053,
8173 ,
20062,
31951,
11071,
22960,
2081 ,
13969,
25858,
4978 ,
16867,
28756,
7876 ,
19765,
31653,
10774,
22663,
1783 ,
13672,
25561,
4681 ,
16570,
28458,
7579 ,
19468,
31356,
10477,
22365,
1486 ,
13375,
25263,
4384 ,
16273,
28161,
7282 ,
19170,
31059,
10180,
22068,
1189 ,
13077,
24966,
4087 ,
15975,
27864,
6985 ,
18873,
30762,
9882 ,
21771,
892 ,
12780,
24669,
3789 ,
15678,
27567,
6687,
18576,
30465,
9585,
21474,
594 ,
12483,
24372,
3492 ,
15381,
27270,
6390 ,
18279,
30167,
9288 ,
21177,
297 ,
12186,
24074,
3195 ,
15084,
26972,
6093 ,
17982,
29870,
8991 ,
20879,
0 ,
11889,
23777,
2898 ,
14786,
26675,
5796 ,
17684,
29573,
8694 ,
20582,
32471,
11591,
23480,
2601 ,
14489,
26378,
5498 ,
17387,
29276,
8396 ,
20285,
32174,
11294,
23183,
2303 ,
14192,
26081,
5201 ,
17090,
28979,
8099 ,
19988,
31876,
10997,
22886,
2006 ,
13895,
25783,
4904 ,
16793,
28681,
7802 ,
19691,
31579,
10700,
22588,
1709 ,
13598,
25486,
4607 ,
16495,
28384,
7505 ,
19393,
31282,
10403,
22291,
1412 ,
13300,
25189,
4310 ,
16198,
28087,
7207 ,
19096,
30985,
10105,
21994,
1115 ,
13003,
24892,
4012 ,
15901,
27790,
6910 ,
18799,
30687,
9808 ,
21697,
817 ,
12706,
24595,
3715 ,
15604,
27492,
6613 ,
18502,
30390,
9511 ,
21400,
520 ,
12409,
24297,
3418 ,
15307,
27195,
6316 ,
18204,
30093,
9214 ,
21102,
223 ,
12112,
24000,
3121 ,
15009,
26898,
6019 ,
17907,
29796,
8916 ,
20805,
32694,
11814,
23703,
2824 ,
14712,
26601,
5721 ,
17610,
29499,
8619 ,
20508,
32396,
11517,
23406,
2526 ,
14415,
26304,
5424 ,
17313,
29201,
8322 ,
20211,
32099,
11220,
23109,
2229 ,
14118,
26006,
5127 ,
17016,
28904,
8025 ,
19913,
31802,
10923,
22811,
1932 ,
13821,
25709,
4830 ,
16718,
28607,
7728 ,
19616,
31505,
10625,
22514,
1635 ,
13523,
25412,
4533 ,
16421,
28310,
7430 ,
19319,
31208,
10328,
22217,
1337 ,
13226,
25115,
4235 ,
16124,
28013,
7133 ,
19022,
30910,
10031,
21920,
1040 ,
12929,
24817,
3938 ,
15827,
27715,
6836 ,
18725,
30613,
9734 ,
21622,
743 ,
12632,
24520,
3641 ,
15530,
27418,
6539 ,
18427,
30316,
9437 ,
21325,
446 ,
12334,
24223,
3344 ,
15232,
27121,
6242 ,
18130,
30019,
9139 ,
21028,
149 ,
12037,
23926,
3046 ,
14935,
26824,
5944 ,
17833,
29722,
8842 ,
20731,
32619,
11740,
23629,
2749 ,
14638,
26526,
5647 ,
17536,
29424,
8545 ,
20434,
32322,
11443,
23331,
2452 ,
14341,
26229,
5350 ,
17238,
29127,
8248 ,
20136,
32025,
11146,
23034,
2155 ,
14043,
25932,
5053 ,
16941,
28830,
7951 ,
19839,
31728,
10848,
22737,
1858 ,
13746,
25635,
4755 ,
16644,
28533,
7653 ,
19542,
31431,
10551,
22440,
1560 ,
13449,
25338,
4458 ,
16347,
28235,
7356 ,
19245,
31133,
10254,
22143,
1263 ,
13152,
25040,
4161 ,
16050,
27938,
7059 ,
18947,
30836,
9957 ,
21845,
966 ,
12855,
24743,
3864 ,
15752,
27641,
6762 ,
18650,
30539,
9660 ,
21548,
669 ,
12557,
24446,
3567 ,
15455,
27344,
6464 ,
18353,
30242,
9362 ,
21251,
372 ,
12260,
24149,
3269 ,
15158,
27047,
6167 ,
18056,
29944,
9065 ,
20954,
74 ,
11963,
23852,
2972 ,
14861,
26749,
5870 ,
17759,
29647,
8768 ,
20656,
32545,
11666,
23554,
2675 ,
14564,
26452,
5573 ,
17461,
29350,
8471 ,
20359,
32248,
11368,
23257,
2378 ,
14266,
26155,
5276 ,
17164,
29053,
8173 ,
20062,
31951,
11071,
22960,
2081 ,
13969,
25858,
4978 ,
16867,
28756,
7876 ,
19765,
31653,
10774,
22663,
1783 ,
13672,
25561,
4681 ,
16570,
28458,
7579 ,
19468,
31356,
10477,
22365,
1486 ,
13375,
25263,
4384 ,
16273,
28161,
7282 ,
19170,
31059,
10180,
22068,
1189 ,
13077,
24966,
4087 ,
15975,
27864,
6985 ,
18873,
30762,
9882 ,
21771,
892 ,
12780,
24669,
3789 ,
15678,
27567,
6687 ,
18576,
30465,
9585 ,
21474,
594 ,
12483,
24372,
3492 ,
15381,
27270,
6390 ,
18279,
30167,
9288 ,
21177,
297 ,
12186,
24074,
3195 ,
15084,
26972,
0,
0,
0,
0,
0
};

 

/******************Start of xCoeff_16k_AfterFirst_table[] 共 882个元素 */

////////////////////////////   8k/16k upsample to 44.1k/ 48k, 第1帧之后的所有帧采用的系数查表
static short xCoeff_16k_AfterFirst_table[]=
{
6093 ,
17982,
29870 ,
8991 ,
20879 ,
0 ,
11889 ,
23777 ,
2898 ,
14786 ,
26675 ,
5796,
17684 ,
29573,
8694 ,
20582 ,
32471 ,
11591 ,
23480 ,
2601 ,
14489 ,
26378 ,
5498 ,
17387 ,
29276 ,
8396 ,
20285 ,
32174 ,
11294 ,
23183 ,
2303 ,
14192 ,
26081 ,
5201 ,
17090 ,
28979 ,
8099 ,
19988 ,
31876 ,
10997 ,
22886 ,
2006 ,
13895 ,
25783 ,
4904 ,
16793 ,
28681 ,
7802 ,
19691 ,
31579 ,
10700 ,
22588 ,
1709 ,
13598 ,
25486 ,
4607 ,
16495 ,
28384 ,
7505 ,
19393 ,
31282 ,
10403 ,
22291 ,
1412 ,
13300 ,
25189 ,
4310 ,
16198 ,
28087 ,
7207 ,
19096 ,
30985 ,
10105 ,
21994 ,
1115 ,
13003 ,
24892 ,
4012 ,
15901 ,
27790 ,
6910 ,
18799 ,
30688 ,
9808 ,
21697 ,
817 ,
12706,
24595 ,
3715 ,
15604 ,
27492 ,
6613 ,
18502 ,
30390 ,
9511 ,
21400 ,
520 ,
12409,
24297 ,
3418 ,
15307 ,
27195 ,
6316 ,
18204 ,
30093 ,
9214 ,
21102 ,
223 ,
12112,
24000 ,
3121 ,
15009 ,
26898 ,
6019 ,
17907 ,
29796 ,
8916 ,
20805 ,
32694 ,
11814 ,
23703 ,
2824 ,
14712 ,
26601 ,
5721 ,
17610 ,
29499 ,
8619 ,
20508 ,
32396 ,
11517 ,
23406 ,
2526 ,
14415 ,
26304 ,
5424 ,
17313 ,
29201 ,
8322 ,
20211 ,
32099 ,
11220 ,
23109 ,
2229 ,
14118 ,
26006 ,
5127 ,
17016 ,
28904 ,
8025 ,
19913 ,
31802 ,
10923 ,
22811 ,
1932 ,
13821 ,
25709 ,
4830 ,
16718 ,
28607 ,
7728 ,
19616 ,
31505 ,
10625 ,
22514 ,
1635 ,
13523 ,
25412 ,
4533 ,
16421 ,
28310 ,
7430 ,
19319 ,
31208 ,
10328 ,
22217 ,
1337 ,
13226 ,
25115 ,
4235 ,
16124 ,
28013 ,
7133 ,
19022 ,
30910 ,
10031 ,
21920 ,
1040 ,
12929 ,
24817 ,
3938 ,
15827 ,
27715 ,
6836 ,
18725 ,
30613 ,
9734 ,
21622 ,
743 ,
12632,
24520 ,
3641 ,
15530 ,
27418 ,
6539 ,
18427 ,
30316 ,
9437 ,
21325 ,
446 ,
12334,
24223 ,
3344 ,
15232 ,
27121 ,
6242 ,
18130 ,
30019 ,
9139 ,
21028 ,
149 ,
12037,
23926 ,
3046 ,
14935 ,
26824 ,
5944 ,
17833 ,
29722 ,
8842 ,
20731 ,
32619 ,
11740 ,
23629 ,
2749 ,
14638 ,
26526 ,
5647 ,
17536 ,
29424 ,
8545 ,
20434 ,
32322 ,
11443 ,
23331 ,
2452 ,
14341 ,
26229 ,
5350 ,
17239 ,
29127 ,
8248 ,
20136 ,
32025 ,
11146 ,
23034 ,
2155 ,
14043 ,
25932 ,
5053 ,
16941 ,
28830 ,
7951 ,
19839 ,
31728 ,
10848 ,
22737 ,
1858 ,
13746 ,
25635 ,
4755 ,
16644 ,
28533 ,
7653 ,
19542 ,
31431 ,
10551 ,
22440 ,
1560 ,
13449 ,
25338 ,
4458 ,
16347 ,
28235 ,
7356 ,
19245 ,
31133 ,
10254 ,
22143 ,
1263 ,
13152 ,
25040 ,
4161 ,
16050 ,
27938 ,
7059 ,
18947 ,
30836 ,
9957 ,
21845 ,
966 ,
12855,
24743 ,
3864 ,
15752 ,
27641 ,
6762 ,
18650 ,
30539 ,
9660 ,
21548 ,
669 ,
12557,
24446 ,
3567 ,
15455 ,
27344 ,
6464 ,
18353 ,
30242 ,
9362 ,
21251 ,
372 ,
12260,
24149 ,
3269 ,
15158 ,
27047 ,
6167 ,
18056 ,
29944 ,
9065 ,
20954 ,
74 ,
11963,
23852 ,
2972 ,
14861 ,
26749 ,
5870 ,
17759 ,
29647 ,
8768 ,
20656 ,
32545 ,
11666 ,
23554 ,
2675 ,
14564 ,
26452 ,
5573 ,
17461 ,
29350 ,
8471 ,
20359 ,
32248 ,
11368 ,
23257 ,
2378 ,
14266 ,
26155 ,
5276 ,
17164 ,
29053 ,
8173 ,
20062 ,
31951 ,
11071 ,
22960 ,
2081 ,
13969 ,
25858 ,
4978 ,
16867 ,
28756 ,
7876 ,
19765 ,
31653 ,
10774 ,
22663 ,
1783 ,
13672 ,
25561 ,
4681 ,
16570 ,
28458 ,
7579 ,
19468 ,
31356 ,
10477 ,
22365 ,
1486 ,
13375 ,
25263 ,
4384 ,
16273 ,
28161 ,
7282 ,
19170 ,
31059 ,
10180 ,
22068 ,
1189 ,
13077 ,
24966 ,
4087 ,
15975 ,
27864 ,
6985 ,
18873 ,
30762 ,
9882 ,
21771 ,
892 ,
12780,
24669 ,
3790 ,
15678 ,
27567 ,
6687 ,
18576 ,
30465 ,
9585 ,
21474 ,
594 ,
12483,
24372 ,
3492 ,
15381 ,
27270 ,
6390 ,
18279 ,
30167 ,
9288 ,
21177 ,
297 ,
12186,
24074 ,
3195 ,
15084 ,
26972 ,
6093 ,
17982 ,
29870 ,
8991 ,
20879 ,
0 ,
11889,
23777 ,
2898 ,
14786 ,
26675 ,
5796 ,
17684 ,
29573 ,
8694 ,
20582 ,
32471 ,
11591 ,
23480 ,
2601 ,
14489 ,
26378 ,
5498 ,
17387 ,
29276 ,
8396 ,
20285 ,
32174 ,
11294 ,
23183 ,
2303 ,
14192 ,
26081 ,
5201 ,
17090 ,
28979 ,
8099 ,
19988 ,
31876 ,
10997 ,
22886 ,
2006 ,
13895 ,
25783 ,
4904 ,
16793 ,
28681 ,
7802 ,
19691 ,
31579 ,
10700 ,
22588 ,
1709 ,
13598 ,
25486 ,
4607 ,
16495 ,
28384 ,
7505 ,
19393 ,
31282 ,
10403 ,
22291 ,
1412 ,
13300 ,
25189 ,
4310 ,
16198 ,
28087 ,
7207 ,
19096 ,
30985 ,
10105 ,
21994 ,
1115 ,
13003 ,
24892 ,
4012 ,
15901 ,
27790 ,
6910 ,
18799 ,
30688 ,
9808 ,
21697 ,
817 ,
12706,
24595 ,
3715 ,
15604 ,
27492 ,
6613 ,
18502 ,
30390 ,
9511 ,
21400 ,
520 ,
12409,
24297 ,
3418 ,
15307 ,
27195 ,
6316 ,
18204 ,
30093 ,
9214 ,
21102 ,
223 ,
12112,
24000 ,
3121 ,
15009 ,
26898 ,
6019 ,
17907 ,
29796 ,
8916 ,
20805 ,
32694 ,
11814 ,
23703 ,
2824 ,
14712 ,
26601 ,
5721 ,
17610 ,
29499 ,
8619 ,
20508 ,
32396 ,
11517 ,
23406 ,
2526 ,
14415 ,
26304 ,
5424 ,
17313 ,
29201 ,
8322 ,
20211 ,
32099 ,
11220 ,
23109 ,
2229 ,
14118 ,
26006 ,
5127 ,
17016 ,
28904 ,
8025 ,
19913 ,
31802 ,
10923 ,
22811 ,
1932 ,
13821 ,
25709 ,
4830 ,
16718 ,
28607 ,
7728 ,
19616 ,
31505 ,
10625 ,
22514 ,
1635 ,
13523 ,
25412 ,
4533 ,
16421 ,
28310 ,
7430 ,
19319 ,
31208 ,
10328 ,
22217 ,
1337 ,
13226 ,
25115 ,
4235 ,
16124 ,
28013 ,
7133 ,
19022 ,
30910 ,
10031 ,
21920 ,
1040 ,
12929 ,
24817 ,
3938 ,
15827 ,
27715 ,
6836 ,
18725 ,
30613 ,
9734 ,
21622 ,
743 ,
12632,
24520 ,
3641 ,
15530 ,
27418 ,
6539 ,
18427 ,
30316 ,
9437 ,
21325 ,
446 ,
12334,
24223 ,
3344 ,
15232 ,
27121 ,
6242 ,
18130 ,
30019 ,
9139 ,
21028 ,
149 ,
12037,
23926 ,
3046 ,
14935 ,
26824 ,
5944 ,
17833 ,
29722 ,
8842 ,
20731 ,
32619 ,
11740 ,
23629 ,
2749 ,
14638 ,
26526 ,
5647 ,
17536 ,
29424 ,
8545 ,
20434 ,
32322 ,
11443 ,
23331 ,
2452 ,
14341 ,
26229 ,
5350 ,
17239 ,
29127 ,
8248 ,
20136 ,
32025 ,
11146 ,
23034 ,
2155 ,
14043 ,
25932 ,
5053 ,
16941 ,
28830 ,
7951 ,
19839 ,
31728 ,
10848 ,
22737 ,
1858 ,
13746 ,
25635 ,
4755 ,
16644 ,
28533 ,
7653 ,
19542 ,
31431 ,
10551 ,
22440 ,
1560 ,
13449 ,
25338 ,
4458 ,
16347 ,
28235 ,
7356 ,
19245 ,
31133 ,
10254 ,
22143 ,
1263 ,
13152 ,
25040 ,
4161 ,
16050 ,
27938 ,
7059 ,
18947 ,
30836 ,
9957 ,
21845 ,
966 ,
12855,
24743 ,
3864 ,
15752 ,
27641 ,
6762 ,
18650 ,
30539 ,
9660 ,
21548 ,
669 ,
12557,
24446 ,
3567 ,
15455 ,
27344 ,
6464 ,
18353 ,
30242 ,
9362 ,
21251 ,
372 ,
12260,
24149 ,
3269 ,
15158 ,
27047 ,
6167 ,
18056 ,
29944 ,
9065 ,
20954 ,
74 ,
11963,
23852 ,
2972 ,
14861 ,
26749 ,
5870 ,
17759 ,
29647 ,
8768 ,
20656 ,
32545 ,
11666 ,
23554 ,
2675 ,
14564 ,
26452 ,
5573 ,
17461 ,
29350 ,
8471 ,
20359 ,
32248 ,
11369 ,
23257 ,
2378 ,
14266 ,
26155 ,
5276 ,
17164 ,
29053 ,
8173 ,
20062 ,
31951 ,
11071 ,
22960 ,
2081 ,
13969 ,
25858 ,
4978 ,
16867 ,
28756 ,
7876 ,
19765 ,
31653 ,
10774 ,
22663 ,
1783 ,
13672 ,
25561 ,
4681 ,
16570 ,
28458 ,
7579 ,
19468 ,
31356 ,
10477 ,
22365 ,
1486 ,
13375 ,
25263 ,
4384 ,
16273 ,
28161 ,
7282 ,
19170 ,
31059 ,
10180 ,
22068 ,
1189 ,
13077 ,
24966 ,
4087 ,
15975 ,
27864 ,
6985 ,
18873 ,
30762 ,
9882 ,
21771 ,
892 ,
12780,
24669 ,
3790 ,
15678 ,
27567 ,
6687 ,
18576 ,
30465 ,
9585 ,
21474 ,
594 ,
12483,
24372 ,
3492 ,
15381 ,
27270 ,
6390 ,
18279 ,
30167 ,
9288 ,
21177 ,
297 ,
12186,
24074 ,
3195 ,
15084 ,
26972
};
/******************Start of xCoeff_16k_AfterFirst_table[] 共 882个元素 */

 

//
//=================8k下的系数同 16k下的系数,此处不再重复定义
//
static short xCoeff_8k_AfterFirst_table[]={ 0};

 //
// 8k 与 16k 最终的系数表都是一样的,这里还是把 8k的也列出来
//
static short xCoeff_8k_FirstFrame_Table[]={0};

 

#endif

posted @ 2012-05-24 10:02  Lippman  阅读(514)  评论(0编辑  收藏  举报