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 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