OLD | NEW |
1 /*********************************************************************** | 1 /*********************************************************************** |
2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. | 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. |
3 Redistribution and use in source and binary forms, with or without | 3 Redistribution and use in source and binary forms, with or without |
4 modification, are permitted provided that the following conditions | 4 modification, are permitted provided that the following conditions |
5 are met: | 5 are met: |
6 - Redistributions of source code must retain the above copyright notice, | 6 - Redistributions of source code must retain the above copyright notice, |
7 this list of conditions and the following disclaimer. | 7 this list of conditions and the following disclaimer. |
8 - Redistributions in binary form must reproduce the above copyright | 8 - Redistributions in binary form must reproduce the above copyright |
9 notice, this list of conditions and the following disclaimer in the | 9 notice, this list of conditions and the following disclaimer in the |
10 documentation and/or other materials provided with the distribution. | 10 documentation and/or other materials provided with the distribution. |
(...skipping 23 matching lines...) Expand all Loading... |
34 | 34 |
35 #include "resampler_private.h" | 35 #include "resampler_private.h" |
36 | 36 |
37 /* Matlab code for the notch filter coefficients: */ | 37 /* Matlab code for the notch filter coefficients: */ |
38 /* B = [1, 0.147, 1]; A = [1, 0.107, 0.89]; G = 0.93; freqz(G * B, A, 2^14, 16e
3); axis([0, 8000, -10, 1]) */ | 38 /* B = [1, 0.147, 1]; A = [1, 0.107, 0.89]; G = 0.93; freqz(G * B, A, 2^14, 16e
3); axis([0, 8000, -10, 1]) */ |
39 /* fprintf('\t%6d, %6d, %6d, %6d\n', round(B(2)*2^16), round(-A(2)*2^16), round(
(1-A(3))*2^16), round(G*2^15)) */ | 39 /* fprintf('\t%6d, %6d, %6d, %6d\n', round(B(2)*2^16), round(-A(2)*2^16), round(
(1-A(3))*2^16), round(G*2^15)) */ |
40 /* const opus_int16 silk_resampler_up2_hq_notch[ 4 ] = { 9634, -7012, 7209,
30474 }; */ | 40 /* const opus_int16 silk_resampler_up2_hq_notch[ 4 ] = { 9634, -7012, 7209,
30474 }; */ |
41 | 41 |
42 /* Tables with IIR and FIR coefficients for fractional downsamplers (123 Words)
*/ | 42 /* Tables with IIR and FIR coefficients for fractional downsamplers (123 Words)
*/ |
43 silk_DWORD_ALIGN const opus_int16 silk_Resampler_3_4_COEFS[ 2 + 3 * RESAMPLER_DO
WN_ORDER_FIR0 / 2 ] = { | 43 silk_DWORD_ALIGN const opus_int16 silk_Resampler_3_4_COEFS[ 2 + 3 * RESAMPLER_DO
WN_ORDER_FIR0 / 2 ] = { |
44 » -20694, -13867, | 44 -20694, -13867, |
45 » -49, 64, 17, -157, 353, -496, 163, 11047, 22205, | 45 -49, 64, 17, -157, 353, -496, 163, 11047, 22205, |
46 » -39, 6, 91, -170, 186, 23, -896, 6336, 19928, | 46 -39, 6, 91, -170, 186, 23, -896, 6336, 19928, |
47 » -19, -36, 102, -89, -24, 328, -951, 2568, 15909, | 47 -19, -36, 102, -89, -24, 328, -951, 2568, 15909, |
48 }; | 48 }; |
49 | 49 |
50 silk_DWORD_ALIGN const opus_int16 silk_Resampler_2_3_COEFS[ 2 + 2 * RESAMPLER_DO
WN_ORDER_FIR0 / 2 ] = { | 50 silk_DWORD_ALIGN const opus_int16 silk_Resampler_2_3_COEFS[ 2 + 2 * RESAMPLER_DO
WN_ORDER_FIR0 / 2 ] = { |
51 » -14457, -14019, | 51 -14457, -14019, |
52 » 64, 128, -122, 36, 310, -768, 584, 9267, 17733, | 52 64, 128, -122, 36, 310, -768, 584, 9267, 17733, |
53 » 12, 128, 18, -142, 288, -117, -865, 4123, 14459, | 53 12, 128, 18, -142, 288, -117, -865, 4123, 14459, |
54 }; | 54 }; |
55 | 55 |
56 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_2_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR1 / 2 ] = { | 56 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_2_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR1 / 2 ] = { |
57 » 616, -14323, | 57 616, -14323, |
58 » -10, 39, 58, -46, -84, 120, 184, -315, -541,
1284, 5380, 9024, | 58 -10, 39, 58, -46, -84, 120, 184, -315, -541, 12
84, 5380, 9024, |
59 }; | 59 }; |
60 | 60 |
61 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_3_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR2 / 2 ] = { | 61 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_3_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR2 / 2 ] = { |
62 » 16102, -15162, | 62 16102, -15162, |
63 » -13, 0, 20, 26, 5, -31, -43, -4, 65,
90, 7, -157, -248, -44, 593, 1583, 2612, 3271, | 63 -13, 0, 20, 26, 5, -31, -43, -4, 65,
90, 7, -157, -248, -44, 593, 1583, 2612, 3271, |
64 }; | 64 }; |
65 | 65 |
66 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_4_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR2 / 2 ] = { | 66 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_4_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR2 / 2 ] = { |
67 » 22500, -15099, | 67 22500, -15099, |
68 » 3, -14, -20, -15, 2, 25, 37, 25, -16,
-71, -107, -79, 50, 292, 623, 982, 1288, 1464, | 68 3, -14, -20, -15, 2, 25, 37, 25, -16, -
71, -107, -79, 50, 292, 623, 982, 1288, 1464, |
69 }; | 69 }; |
70 | 70 |
71 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_6_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR2 / 2 ] = { | 71 silk_DWORD_ALIGN const opus_int16 silk_Resampler_1_6_COEFS[ 2 + RESAMPLER_DOWN_O
RDER_FIR2 / 2 ] = { |
72 » 27540, -15257, | 72 27540, -15257, |
73 » 17, 12, 8, 1, -10, -22, -30, -32, -22,
3, 44, 100, 168, 243, 317, 381, 429, 455, | 73 17, 12, 8, 1, -10, -22, -30, -32, -22,
3, 44, 100, 168, 243, 317, 381, 429, 455, |
74 }; | 74 }; |
75 | 75 |
76 silk_DWORD_ALIGN const opus_int16 silk_Resampler_2_3_COEFS_LQ[ 2 + 2 * 2 ] = { | 76 silk_DWORD_ALIGN const opus_int16 silk_Resampler_2_3_COEFS_LQ[ 2 + 2 * 2 ] = { |
77 -2797, -6507, | 77 -2797, -6507, |
78 4697, 10739, | 78 4697, 10739, |
79 1567, 8276, | 79 1567, 8276, |
80 }; | 80 }; |
81 | 81 |
82 /* Table with interplation fractions of 1/24, 3/24, 5/24, ... , 23/24 : 23/24 (4
6 Words) */ | 82 /* Table with interplation fractions of 1/24, 3/24, 5/24, ... , 23/24 : 23/24 (4
6 Words) */ |
83 silk_DWORD_ALIGN const opus_int16 silk_resampler_frac_FIR_12[ 12 ][ RESAMPLER_OR
DER_FIR_12 / 2 ] = { | 83 silk_DWORD_ALIGN const opus_int16 silk_resampler_frac_FIR_12[ 12 ][ RESAMPLER_OR
DER_FIR_12 / 2 ] = { |
84 » { 189, -600, 617, 30567 }, | 84 { 189, -600, 617, 30567 }, |
85 » { 117, -159, -1070, 29704 }, | 85 { 117, -159, -1070, 29704 }, |
86 » { 52, 221, -2392, 28276 }, | 86 { 52, 221, -2392, 28276 }, |
87 » { -4, 529, -3350, 26341 }, | 87 { -4, 529, -3350, 26341 }, |
88 » { -48, 758, -3956, 23973 }, | 88 { -48, 758, -3956, 23973 }, |
89 » { -80, 905, -4235, 21254 }, | 89 { -80, 905, -4235, 21254 }, |
90 » { -99, 972, -4222, 18278 }, | 90 { -99, 972, -4222, 18278 }, |
91 » { -107, 967, -3957, 15143 }, | 91 { -107, 967, -3957, 15143 }, |
92 » { -103, 896, -3487, 11950 }, | 92 { -103, 896, -3487, 11950 }, |
93 » { -91, 773, -2865, 8798 }, | 93 { -91, 773, -2865, 8798 }, |
94 » { -71, 611, -2143, 5784 }, | 94 { -71, 611, -2143, 5784 }, |
95 » { -46, 425, -1375, 2996 }, | 95 { -46, 425, -1375, 2996 }, |
96 }; | 96 }; |
OLD | NEW |