Update contrib.
1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __SBCCONST_H__
17 #define __SBCCONST_H__
20 SBC Syncword, used in the begin of each sbc frame to identify sbc frame,
21 it's value is always 0x9c
23 const TUint8 KSBCFrameSyncWord = 0x9c;
26 This table is used to calculate bit allocation for 4 subbands sbc frame
27 with Loudness allocation method
29 const TInt8 KSBCOffset4[4][4] =
31 {-1, 0, 0, 0}, // fs = 16000
32 {-2, 0, 0, 1}, // fs = 32000
33 {-2, 0, 0, 1}, // fs = 44100
34 {-2, 0, 0, 1} // fs = 48000
38 This table is used to calculate bit allocation for 8 subbands sbc frame
39 with Loudness allocation method
41 const TInt8 KSBCOffset8[4][8] =
43 {-2, 0, 0, 0, 0, 0, 0, 1}, // fs = 16000
44 {-3, 0, 0, 0, 0, 0, 1, 2}, // fs = 32000
45 {-4, 0, 0, 0, 0, 0, 1, 2}, // fs = 44100
46 {-4, 0, 0, 0, 0, 0, 1, 2} // fs = 48000
50 2^32, scale value of Table KSBCProto4 and KSBCProto8.
52 const TUint8 KSBCProtoBitsShift = 32;
55 Table KSBCProto4 is derived form Table Proto_4_40 (see A2DP spec for detail)
56 by scaling up by 2^32, it is for the Analysis process for 4 subbands sbc frames,
57 we are using integer numbers for high speed, after the calculation the results
58 will be scaled down by the same value.
60 const TInt32 KSBCProto4[40] =
62 0, 2304460, 6407591, 11741191,
63 16480657, 16716234, 8013623, -13143128,
64 46874251, 87782726, 124020356, 138271872,
65 111139929, 26338680, -123788377, -333488531,
66 582368677, 837466400, 1059296397, 1210442915,
67 1264074726, 1210442915, 1059296397, 837466400,
68 -582368677, -333488531, -123788377, 26338680,
69 111139929, 138271872, 124020356, 87782726,
70 -46874251, -13143128, 8013623, 16716234,
71 16480657, 11741191, 6407591, 2304460
75 Table KSBCProto8 is derived form Table Proto_8_80 (see A2DP spec for detail)
76 by scaling up by 2^32, it is for the Analysis process for 8 subbands sbc frames,
77 we are using integer numbers for high speed, after the calculation the results
78 will be scaled down by the same value.
80 const TInt32 KSBCProto8[80] =
82 0, 672486, 1474275, 2382076,
83 3538707, 4895941, 6341097, 7661007,
84 8640724, 9035408, 8566508, 6943084,
85 3874724, -767963, -7085541, -15020250,
86 24307345, 34486060, 44918676, 54748951,
87 62932121, 68309566, 69668008, 65792073,
88 55564768, 38042997, 12558847, -21113115,
89 -62880072, -112141060, -167826440, -228437728,
90 292053237, 356416821, 419083117, 477586143,
91 529417202, 572366304, 604531701, 624444638,
92 631167211, 624444638, 604531701, 572366304,
93 529417202, 477586143, 419083117, 356416821,
94 -292053237, -228437728, -167826440, -112141060,
95 -62880072, -21113115, 12558847, 38042997,
96 55564768, 65792073, 69668008, 68309566,
97 62932121, 54748951, 44918676, 34486060,
98 -24307345, -15020250, -7085541, -767963,
99 3874724, 6943084, 8566508, 9035408,
100 8640724, 7661007, 6341097, 4895941,
101 3538707, 2382076, 1474275, 672486
106 2^30, scale value of Table KSBCAnalysisMatrix4 and KSBCAnalysisMatrix8.
108 const TUint8 KSBCAnalysisMatrixBitsShift = 30;
111 Table of cos((i + 0.5) * (k - 2) * PI / 4) * 2^30
112 This table is used in Analysis process for 4 subbands, here we are using
113 integer values instead of real values for high speed, the values are scaled
114 up by 2^30, after calculation the results will be scaled down by the same value.
116 const TInt32 KSBCAnalysisMatrix4[4][8] =
118 { 759250125, 992008094, 1073741824, 992008094,
119 759250125, 410903207, 0, -410903207 },
121 { -759250125, 410903207, 1073741824, 410903207,
122 -759250125, -992008094, 0, 992008094 },
124 { -759250125, -410903207, 1073741824, -410903207,
125 -759250125, 992008094, 0, -992008094 },
127 { 759250125, -992008094, 1073741824, -992008094,
128 759250125, -410903207, 0, 410903207 }
132 Table of cos((i + 0.5) * (k - 4) * PI / 8) * 2^30
133 This table is used in Analysis process for 8 subbands, here we are using
134 integer values instead of real values for high speed, the values are scaled
135 up by 2^30, after calculation the results will be scaled down by the same value.
137 const TInt32 KSBCAnalysisMatrix8[8][16] =
139 { 759250125, 892783698, 992008094, 1053110176,
140 1073741824, 1053110176, 992008094, 892783698,
141 759250125, 596538995, 410903207, 209476638,
142 0, -209476638, -410903207, -596538995 },
144 { -759250125, -209476638, 410903207, 892783698,
145 1073741824, 892783698, 410903207, -209476638,
146 -759250125, -1053110176, -992008094, -596538995,
147 0, 596538995, 992008094, 1053110176 },
149 { -759250125, -1053110176, -410903207, 596538995,
150 1073741824, 596538995, -410903207, -1053110176,
151 -759250125, 209476638, 992008094, 892783698,
152 0, -892783698, -992008094, -209476638 },
154 { 759250125, -596538995, -992008094, 209476638,
155 1073741824, 209476638, -992008094, -596538995,
156 759250125, 892783698, -410903207, -1053110176,
157 0, 1053110176, 410903207, -892783698 },
159 { 759250125, 596538995, -992008094, -209476638,
160 1073741824, -209476638, -992008094, 596538995,
161 759250125, -892783698, -410903207, 1053110176,
162 0, -1053110176, 410903207, 892783698 },
164 { -759250125, 1053110176, -410903207, -596538995,
165 1073741824, -596538995, -410903207, 1053110176,
166 -759250125, -209476638, 992008094, -892783698,
167 0, 892783698, -992008094, 209476638 },
169 { -759250125, 209476638, 410903207, -892783698,
170 1073741824, -892783698, 410903207, 209476638,
171 -759250125, 1053110176, -992008094, 596538995,
172 0, -596538995, 992008094, -1053110176 },
174 { 759250125, -892783698, 992008094, -1053110176,
175 1073741824, -1053110176, 992008094, -892783698,
176 759250125, -596538995, 410903207, -209476638,
177 0, 209476638, -410903207, 596538995 }
180 #endif // __SBCCONST_H__