1 /*
2 * Copyright (C) 2003 - 2016 Sony Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include "ldac.h"
18
19 /***************************************************************************************************
20 Tables related to Sampling Rate Indices
21 ***************************************************************************************************/
22 DECLFUNC const unsigned int ga_smplrate_ldac[LDAC_NSUPSMPLRATEID] = {
23 44100, 48000, 88200, 96000,
24 };
25
26 DECLFUNC const unsigned short ga_framesmpls_ldac[LDAC_NSUPSMPLRATEID] = {
27 LDAC_1FSLSU, LDAC_1FSLSU, LDAC_2FSLSU, LDAC_2FSLSU,
28 };
29
30 DECLFUNC const unsigned char ga_ln_framesmpls_ldac[LDAC_NSUPSMPLRATEID] = {
31 LDAC_1FSLNN, LDAC_1FSLNN, LDAC_2FSLNN, LDAC_2FSLNN,
32 };
33
34 DECLFUNC const unsigned char ga_max_nbands_ldac[LDAC_NSUPSMPLRATEID] = {
35 LDAC_1FSNBANDS, LDAC_1FSNBANDS, LDAC_2FSNBANDS, LDAC_2FSNBANDS,
36 };
37
38 DECLFUNC const char gaa_nlnn_shift_ldac[LDAC_NSUPSMPLRATEID][LDAC_NSFTSTEP] = {
39 {-1, -1, 0, 0, -1},
40 {-1, -1, 0, 0, -1},
41 {-1, 0, 0, -1, -1},
42 {-1, 0, 0, -1, -1},
43 };
44
45 /***************************************************************************************************
46 Tables related to Channel Config Indices
47 ***************************************************************************************************/
48 DECLFUNC const unsigned char ga_ch_ldac[LDAC_NCHCONFIGID] = {
49 LDAC_CHANNEL_1CH, LDAC_CHANNEL_2CH, LDAC_CHANNEL_2CH, 0, 0, 0, 0, 0
50 };
51
52 DECLFUNC const unsigned char ga_chconfig_id_ldac[LDAC_MAXNCH+1] = {
53 0, LDAC_CHCONFIGID_MN, LDAC_CHCONFIGID_ST
54 };
55
56 DECLFUNC const char gaa_block_setting_ldac[LDAC_NCHCONFIGID][LDAC_MAXNCH+2]=
57 {
58 {LDAC_CHANNEL_1CH, 1, LDAC_BLKID_MONO},
59 {LDAC_CHANNEL_2CH, 2, LDAC_BLKID_MONO, LDAC_BLKID_MONO},
60 {LDAC_CHANNEL_2CH, 1, LDAC_BLKID_STEREO},
61 {0, 0, 0},
62 };
63
get_block_nchs_ldac(int blk_type)64 DECLFUNC int get_block_nchs_ldac(
65 int blk_type)
66 {
67 int blk_nchs;
68
69 if (blk_type == LDAC_BLKID_MONO) {
70 blk_nchs = 1;
71 }
72 else if (blk_type == LDAC_BLKID_STEREO) {
73 blk_nchs = 2;
74 }
75 else {
76 blk_nchs = -1;
77 }
78
79 return blk_nchs;
80 }
81
82 /***************************************************************************************************
83 Tables related to Quantization Units
84 ***************************************************************************************************/
85 DECLFUNC const unsigned char ga_idsp_ldac[LDAC_MAXNQUS] = {
86 0, 0, 0, 0, 0, 0, 0, 0,
87 1, 1, 1, 1,
88 1, 1, 1, 1,
89 1, 1, 1, 1,
90 2, 2,
91 2, 2,
92 3, 3,
93 3, 3,
94 3, 3,
95 3, 3,
96 3, 3,
97 };
98
99 DECLFUNC const unsigned char ga_nsps_ldac[LDAC_MAXNQUS] = {
100 2, 2, 2, 2, 2, 2, 2, 2,
101 4, 4, 4, 4,
102 4, 4, 4, 4,
103 4, 4, 4, 4,
104 8, 8,
105 8, 8,
106 16, 16,
107 16, 16,
108 16, 16,
109 16, 16,
110 16, 16,
111 };
112
113 DECLFUNC const unsigned short ga_isp_ldac[LDAC_MAXNQUS+1] = {
114 0, 2, 4, 6, 8, 10, 12, 14,
115 16, 20, 24, 28,
116 32, 36, 40, 44,
117 48, 52, 56, 60,
118 64, 72,
119 80, 88,
120 96,112,
121 128,144,
122 160,176,
123 192,208,
124 224,240,
125 256,
126 };
127
128 DECLFUNC const unsigned char ga_nqus_ldac[LDAC_MAXNBANDS+1] = {
129 0, 4, 8, 10, 12, 14, 16, 18, 20, 22, 24, 25, 26, 28, 30, 32, 34,
130 };
131
132 /***************************************************************************************************
133 Encoding/Decoding Tables for Spectrum Data
134 ***************************************************************************************************/
135 DECLFUNC const unsigned char ga_wl_ldac[LDAC_NIDWL] = {
136 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
137 };
138
139 DECLFUNC const short gaa_ndim_wls_ldac[4][LDAC_NIDWL] = {
140 {0, 3, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32},
141 {0, 7, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64},
142 {0, 14, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,104,112,120,128},
143 {0, 28, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240,256},
144 };
145
146 DECLFUNC const int ga_2dimenc_spec_ldac[LDAC_N2DIMSPECENCTBL] = {
147 0, 1, 2, 0, 3, 0, 4, 0, 5, 6, 7, 0, 0, 0, 0, 0,
148 };
149
150 DECLFUNC const int ga_4dimenc_spec_ldac[LDAC_N4DIMSPECENCTBL] = {
151 0, 1, 2, 0, 3, 4, 5, 0, 6, 7, 8, 0, 0, 0, 0, 0,
152 9, 10, 11, 0, 12, 13, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0,
153 18, 19, 20, 0, 21, 22, 23, 0, 24, 25, 26, 0, 0, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
155 27, 28, 29, 0, 30, 31, 32, 0, 33, 34, 35, 0, 0, 0, 0, 0,
156 36, 37, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 0, 0, 0,
157 45, 46, 47, 0, 48, 49, 50, 0, 51, 52, 53, 0, 0, 0, 0, 0,
158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
159 54, 55, 56, 0, 57, 58, 59, 0, 60, 61, 62, 0, 0, 0, 0, 0,
160 63, 64, 65, 0, 66, 67, 68, 0, 69, 70, 71, 0, 0, 0, 0, 0,
161 72, 73, 74, 0, 75, 76, 77, 0, 78, 79, 80, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
167 };
168
169
170 /***************************************************************************************************
171 Resampled Gradient Table
172 ***************************************************************************************************/
173 DECLFUNC const unsigned char gaa_resamp_grad_ldac[LDAC_MAXGRADQU][LDAC_MAXGRADQU] = {
174 {
175 128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
176 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
177 },
178 {
179 31,225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
180 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
181 },
182 {
183 17,128,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
184 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
185 },
186 {
187 12, 69,187,244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
188 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
189 },
190 {
191 10, 43,128,213,246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
192 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
193 },
194 {
195 9, 31, 87,169,225,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
196 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
197 },
198 {
199 8, 24, 62,128,194,232,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
200 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
201 },
202 {
203 8, 19, 47, 97,159,209,237,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
204 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
205 },
206 {
207 7, 17, 37, 75,128,181,219,239,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
208 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
209 },
210 {
211 7, 15, 31, 59,103,153,197,225,241,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
212 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
213 },
214 {
215 7, 13, 26, 48, 83,128,173,208,230,243,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
216 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
217 },
218 {
219 6, 12, 23, 41, 69,107,149,187,215,233,244,250,255,255,255,255,255,255,255,255,255,255,255,255,255,
220 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
221 },
222 {
223 6, 11, 20, 35, 58, 90,128,166,198,221,236,245,250,255,255,255,255,255,255,255,255,255,255,255,255,
224 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
225 },
226 {
227 6, 11, 18, 31, 49, 76,110,146,180,207,225,238,245,250,255,255,255,255,255,255,255,255,255,255,255,
228 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
229 },
230 {
231 6, 10, 17, 27, 43, 66, 95,128,161,190,213,229,239,246,250,255,255,255,255,255,255,255,255,255,255,
232 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
233 },
234 {
235 6, 10, 15, 24, 38, 57, 82,112,144,174,199,218,232,241,246,250,255,255,255,255,255,255,255,255,255,
236 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
237 },
238 {
239 6, 9, 14, 22, 34, 50, 72, 98,128,158,184,206,222,234,242,247,250,255,255,255,255,255,255,255,255,
240 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
241 },
242 {
243 6, 9, 13, 20, 31, 45, 63, 87,114,142,169,193,211,225,236,243,247,250,255,255,255,255,255,255,255,
244 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
245 },
246 {
247 6, 9, 13, 19, 28, 40, 56, 77,101,128,155,179,200,216,228,237,243,247,250,255,255,255,255,255,255,
248 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
249 },
250 {
251 6, 8, 12, 18, 26, 36, 51, 69, 91,115,141,165,187,205,220,230,238,244,248,250,255,255,255,255,255,
252 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
253 },
254 {
255 6, 8, 12, 17, 24, 33, 46, 62, 81,104,128,152,175,194,210,223,232,239,244,248,250,255,255,255,255,
256 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
257 },
258 {
259 6, 8, 11, 16, 22, 31, 42, 56, 74, 94,116,140,162,182,200,214,225,234,240,245,248,250,255,255,255,
260 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
261 },
262 {
263 5, 8, 11, 15, 21, 28, 38, 51, 67, 85,106,128,150,171,189,205,218,228,235,241,245,248,251,255,255,
264 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
265 },
266 {
267 5, 8, 10, 14, 19, 26, 35, 47, 61, 78, 97,117,139,159,178,195,209,221,230,237,242,246,248,251,255,
268 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
269 },
270 {
271 5, 7, 10, 14, 18, 25, 33, 43, 56, 71, 88,108,128,148,168,185,200,213,223,231,238,242,246,249,251,
272 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
273 },
274 {
275 5, 7, 10, 13, 17, 23, 31, 40, 51, 65, 81, 99,118,138,157,175,191,205,216,225,233,239,243,246,249,
276 251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
277 },
278 {
279 5, 7, 9, 13, 17, 22, 29, 37, 47, 60, 75, 91,109,128,147,165,181,196,209,219,227,234,239,243,247,
280 249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
281 },
282 {
283 5, 7, 9, 12, 16, 21, 27, 35, 44, 55, 69, 84,101,119,137,155,172,187,201,212,221,229,235,240,244,
284 247,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
285 },
286 {
287 5, 7, 9, 12, 15, 20, 25, 32, 41, 51, 64, 78, 94,110,128,146,162,178,192,205,215,224,231,236,241,
288 244,247,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
289 },
290 {
291 5, 7, 9, 11, 15, 19, 24, 31, 38, 48, 59, 72, 87,103,119,137,153,169,184,197,208,218,225,232,237,
292 241,245,247,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
293 },
294 {
295 5, 7, 9, 11, 14, 18, 23, 29, 36, 45, 55, 67, 81, 96,112,128,144,160,175,189,201,211,220,227,233,
296 238,242,245,247,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
297 },
298 {
299 5, 7, 8, 11, 14, 17, 22, 27, 34, 42, 52, 63, 75, 89,104,120,136,152,167,181,193,204,214,222,229,
300 234,239,242,245,248,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
301 },
302 {
303 5, 7, 8, 11, 13, 17, 21, 26, 32, 40, 48, 59, 70, 83, 98,113,128,143,158,173,186,197,208,216,224,
304 230,235,239,243,245,248,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
305 },
306 {
307 5, 7, 8, 10, 13, 16, 20, 25, 31, 37, 46, 55, 66, 78, 91,106,120,136,150,165,178,190,201,210,219,
308 225,231,236,240,243,246,248,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
309 },
310 {
311 5, 6, 8, 10, 12, 15, 19, 24, 29, 35, 43, 52, 62, 73, 86, 99,113,128,143,157,170,183,194,204,213,
312 221,227,232,237,241,244,246,248,250,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
313 },
314 {
315 5, 6, 8, 10, 12, 15, 18, 23, 28, 34, 41, 49, 58, 69, 81, 93,107,121,135,149,163,175,187,198,207,
316 215,222,228,233,238,241,244,246,248,250,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
317 },
318 {
319 5, 6, 8, 10, 12, 15, 18, 22, 26, 32, 39, 46, 55, 65, 76, 88,101,114,128,142,155,168,180,191,201,
320 210,217,224,230,234,238,241,244,246,248,250,251,255,255,255,255,255,255,255,255,255,255,255,255,255,
321 },
322 {
323 5, 6, 8, 9, 12, 14, 17, 21, 25, 31, 37, 44, 52, 61, 72, 83, 95,108,121,135,148,161,173,184,195,
324 204,212,219,225,231,235,239,242,244,247,248,250,251,255,255,255,255,255,255,255,255,255,255,255,255,
325 },
326 {
327 5, 6, 8, 9, 11, 14, 17, 20, 24, 29, 35, 42, 49, 58, 68, 78, 90,102,115,128,141,154,166,178,188,
328 198,207,214,221,227,232,236,239,242,245,247,248,250,251,255,255,255,255,255,255,255,255,255,255,255,
329 },
330 {
331 5, 6, 8, 9, 11, 13, 16, 19, 23, 28, 33, 40, 47, 55, 64, 74, 85, 97,109,122,134,147,159,171,182,
332 192,201,209,216,223,228,233,237,240,243,245,247,248,250,251,255,255,255,255,255,255,255,255,255,255,
333 },
334 {
335 5, 6, 7, 9, 11, 13, 16, 19, 22, 27, 32, 38, 44, 52, 61, 70, 80, 92,103,116,128,140,153,164,176,
336 186,195,204,212,218,224,229,234,237,240,243,245,247,249,250,251,255,255,255,255,255,255,255,255,255,
337 },
338 {
339 5, 6, 7, 9, 11, 13, 15, 18, 22, 26, 31, 36, 42, 49, 58, 66, 76, 87, 98,110,122,134,146,158,169,
340 180,190,198,207,214,220,225,230,234,238,241,243,245,247,249,250,251,255,255,255,255,255,255,255,255,
341 },
342 {
343 5, 6, 7, 9, 10, 12, 15, 18, 21, 25, 29, 34, 40, 47, 55, 63, 72, 82, 93,104,116,128,140,152,163,
344 174,184,193,201,209,216,222,227,231,235,238,241,244,246,247,249,250,251,255,255,255,255,255,255,255,
345 },
346 {
347 5, 6, 7, 9, 10, 12, 14, 17, 20, 24, 28, 33, 39, 45, 52, 60, 69, 78, 89, 99,111,122,134,145,157,
348 167,178,187,196,204,211,217,223,228,232,236,239,242,244,246,247,249,250,251,255,255,255,255,255,255,
349 },
350 {
351 5, 6, 7, 8, 10, 12, 14, 17, 20, 23, 27, 32, 37, 43, 50, 57, 66, 75, 84, 95,105,117,128,139,151,
352 161,172,181,190,199,206,213,219,224,229,233,236,239,242,244,246,248,249,250,251,255,255,255,255,255,
353 },
354 {
355 5, 6, 7, 8, 10, 12, 14, 16, 19, 22, 26, 31, 36, 41, 48, 55, 62, 71, 80, 90,101,111,122,134,145,
356 155,166,176,185,194,201,208,215,220,225,230,234,237,240,242,244,246,248,249,250,251,255,255,255,255,
357 },
358 {
359 5, 6, 7, 8, 10, 11, 13, 16, 18, 22, 25, 29, 34, 39, 45, 52, 60, 68, 77, 86, 96,106,117,128,139,
360 150,160,170,179,188,196,204,211,217,222,227,231,234,238,240,243,245,246,248,249,250,251,255,255,255,
361 },
362 {
363 5, 6, 7, 8, 10, 11, 13, 15, 18, 21, 24, 28, 33, 38, 44, 50, 57, 65, 73, 82, 92,102,112,123,133,
364 144,154,164,174,183,191,199,206,212,218,223,228,232,235,238,241,243,245,246,248,249,250,251,255,255,
365 },
366 {
367 5, 6, 7, 8, 9, 11, 13, 15, 17, 20, 24, 27, 32, 36, 42, 48, 55, 62, 70, 78, 88, 97,107,118,128,
368 138,149,159,168,178,186,194,201,208,214,220,224,229,232,236,239,241,243,245,247,248,249,250,251,255,
369 },
370 {
371 5, 6, 7, 8, 9, 11, 13, 15, 17, 20, 23, 26, 31, 35, 40, 46, 52, 59, 67, 75, 84, 93,103,113,123,
372 133,143,153,163,172,181,189,197,204,210,216,221,225,230,233,236,239,241,243,245,247,248,249,250,251,
373 },
374 };
375
376 /***************************************************************************************************
377 Weighting Tables for Scale Factor Data
378 ***************************************************************************************************/
379 DECLFUNC const unsigned char gaa_sfcwgt_ldac[LDAC_NSFCWTBL][LDAC_MAXNQUS] = {
380 {
381 1, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
382 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8,
383 },
384 {
385 0, 1, 1, 2, 3, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 7,
386 7, 7, 7, 7, 7, 7, 8, 8, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12,
387 },
388 {
389 0, 1, 1, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5,
390 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11,
391 },
392 {
393 0, 1, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,
394 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10,
395 },
396 {
397 0, 1, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 10,
398 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13,
399 },
400 {
401 1, 0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 7, 8, 8, 8,
402 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,
403 },
404 {
405 0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
406 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 7, 7, 7, 8, 9, 9, 9, 9,
407 },
408 {
409 0, 0, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 8,
410 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12,
411 },
412 };
413
414 /***************************************************************************************************
415 Huffman Codewords for Scale Factor Data
416 ***************************************************************************************************/
417 static const HC sa_hc_sf0_blen3_ldac[8] = {
418 { 0, 2}, { 1, 2}, { 14, 4}, { 62, 6},
419 { 63, 6}, { 30, 5}, { 6, 3}, { 2, 2},
420 };
421
422 static const HC sa_hc_sf0_blen4_ldac[16] = {
423 { 1, 2}, { 2, 2}, { 0, 4}, { 6, 5},
424 { 15, 6}, { 19, 7}, { 35, 8}, { 36, 8},
425 { 37, 8}, { 34, 8}, { 33, 8}, { 32, 8},
426 { 14, 6}, { 5, 5}, { 1, 4}, { 3, 2},
427 };
428
429 static const HC sa_hc_sf0_blen5_ldac[32] = {
430 { 2, 2}, { 1, 3}, { 7, 3}, { 13, 4},
431 { 12, 5}, { 24, 5}, { 27, 6}, { 33, 7},
432 { 63, 7}, {106, 8}, {107, 8}, {104, 8},
433 {115, 8}, {121, 8}, {124, 8}, {125, 8},
434 {122, 8}, {123, 8}, {120, 8}, {114, 8},
435 { 68, 8}, { 69, 8}, { 71, 8}, { 70, 8},
436 {105, 8}, { 56, 7}, { 32, 7}, { 29, 6},
437 { 25, 5}, { 9, 5}, { 5, 4}, { 0, 3},
438 };
439
440 static const HC sa_hc_sf0_blen6_ldac[64] = {
441 { 0, 3}, { 1, 3}, { 4, 4}, { 5, 4},
442 { 18, 5}, { 19, 5}, { 46, 6}, { 47, 6},
443 { 48, 6}, {102, 7}, {103, 7}, {214, 8},
444 {215, 8}, {216, 8}, {217, 8}, {218, 8},
445 {219, 8}, {220, 8}, {221, 8}, {222, 8},
446 {223, 8}, {224, 8}, {225, 8}, {226, 8},
447 {227, 8}, {228, 8}, {229, 8}, {230, 8},
448 {231, 8}, {232, 8}, {233, 8}, {234, 8},
449 {235, 8}, {236, 8}, {237, 8}, {238, 8},
450 {239, 8}, {240, 8}, {241, 8}, {242, 8},
451 {243, 8}, {244, 8}, {245, 8}, {246, 8},
452 {247, 8}, {248, 8}, {249, 8}, {250, 8},
453 {251, 8}, {252, 8}, {253, 8}, {254, 8},
454 {255, 8}, {104, 7}, {105, 7}, {106, 7},
455 { 49, 6}, { 50, 6}, { 20, 5}, { 21, 5},
456 { 22, 5}, { 6, 4}, { 7, 4}, { 8, 4},
457 };
458
459 static const HC sa_hc_sf1_blen2_ldac[4] = {
460 { 0, 1}, { 3, 2}, { 0, 0}, { 2, 2},
461 };
462
463 static const HC sa_hc_sf1_blen3_ldac[8] = {
464 { 1, 1}, { 0, 3}, { 4, 5}, { 11, 6},
465 { 0, 0}, { 10, 6}, { 3, 4}, { 1, 2},
466 };
467
468 static const HC sa_hc_sf1_blen4_ldac[16] = {
469 { 1, 1}, { 1, 3}, { 4, 4}, { 14, 5},
470 { 15, 5}, { 44, 7}, { 90, 8}, { 93, 8},
471 { 0, 0}, { 92, 8}, { 91, 8}, { 47, 7},
472 { 21, 6}, { 20, 6}, { 6, 4}, { 0, 3},
473 };
474
475 static const HC sa_hc_sf1_blen5_ldac[32] = {
476 { 0, 3}, { 5, 3}, { 7, 4}, { 12, 4},
477 { 4, 4}, { 2, 4}, { 3, 4}, { 5, 4},
478 { 9, 4}, { 16, 5}, { 35, 6}, { 51, 7},
479 { 54, 7}, {110, 7}, { 96, 8}, {101, 8},
480 { 98, 8}, { 97, 8}, { 99, 8}, {100, 8},
481 {111, 7}, {109, 7}, {108, 7}, {107, 7},
482 {106, 7}, {104, 7}, {105, 7}, { 69, 7},
483 { 68, 7}, { 55, 7}, { 26, 6}, { 7, 3},
484 };
485
486
487 /***************************************************************************************************
488 Huffman Encoding/Decoding Structures for Scale Factor Data
489 ***************************************************************************************************/
490 DECLFUNC HCENC ga_hcenc_sf0_ldac[LDAC_MAXSFCBLEN_0-LDAC_MINSFCBLEN_0+1] = {
491 {sa_hc_sf0_blen3_ldac, 8, 3, 7},
492 {sa_hc_sf0_blen4_ldac, 16, 4, 15},
493 {sa_hc_sf0_blen5_ldac, 32, 5, 31},
494 {sa_hc_sf0_blen6_ldac, 64, 6, 63},
495 };
496
497 DECLFUNC HCENC ga_hcenc_sf1_ldac[LDAC_MAXSFCBLEN_2-LDAC_MINSFCBLEN_2+1] = {
498 {sa_hc_sf1_blen2_ldac, 4, 2, 3},
499 {sa_hc_sf1_blen3_ldac, 8, 3, 7},
500 {sa_hc_sf1_blen4_ldac, 16, 4, 15},
501 {sa_hc_sf1_blen5_ldac, 32, 5, 31},
502 };
503
504
505
506