1 /******************************************************************** 2 * * 3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 * * 8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 * 9 * by the Xiph.Org Foundation http://www.xiph.org/ * 10 * * 11 ******************************************************************** 12 13 function: toplevel residue templates for 32/44.1/48kHz uncoupled 14 last mod: $Id$ 15 16 ********************************************************************/ 17 18 #include "vorbis/codec.h" 19 #include "backends.h" 20 21 #include "books/coupled/res_books_51.h" 22 23 /***** residue backends *********************************************/ 24 25 static const vorbis_info_residue0 _residue_44p_lo={ 26 0,-1, -1, 7,-1,-1, 27 /* 0 1 2 3 4 5 6 7 8 */ 28 {0}, 29 {-1}, 30 { 0, 1, 2, 7, 17, 31}, 31 { 0, 0, 99, 7, 17, 31}, 32 }; 33 34 static const vorbis_info_residue0 _residue_44p={ 35 0,-1, -1, 8,-1,-1, 36 /* 0 1 2 3 4 5 6 7 8 */ 37 {0}, 38 {-1}, 39 { 0, 1, 1, 2, 7, 17, 31}, 40 { 0, 0, 99, 99, 7, 17, 31}, 41 }; 42 43 static const vorbis_info_residue0 _residue_44p_hi={ 44 0,-1, -1, 8,-1,-1, 45 /* 0 1 2 3 4 5 6 7 8 */ 46 {0}, 47 {-1}, 48 { 0, 1, 2, 4, 7, 17, 31}, 49 { 0, 1, 2, 4, 7, 17, 31}, 50 }; 51 52 static const vorbis_info_residue0 _residue_44p_lfe={ 53 0,-1, -1, 2,-1,-1, 54 /* 0 1 2 3 4 5 6 7 8 */ 55 {0}, 56 {-1}, 57 { 32}, 58 { -1} 59 }; 60 61 static const static_bookblock _resbook_44p_n1={ 62 { 63 {0}, 64 {0,&_44pn1_p1_0}, 65 66 {&_44pn1_p2_0,&_44pn1_p2_1,0}, 67 {&_44pn1_p3_0,&_44pn1_p3_1,0}, 68 {&_44pn1_p4_0,&_44pn1_p4_1,0}, 69 70 {&_44pn1_p5_0,&_44pn1_p5_1,&_44pn1_p4_1}, 71 {&_44pn1_p6_0,&_44pn1_p6_1,&_44pn1_p6_2}, 72 } 73 }; 74 75 static const static_bookblock _resbook_44p_0={ 76 { 77 {0}, 78 {0,&_44p0_p1_0}, 79 80 {&_44p0_p2_0,&_44p0_p2_1,0}, 81 {&_44p0_p3_0,&_44p0_p3_1,0}, 82 {&_44p0_p4_0,&_44p0_p4_1,0}, 83 84 {&_44p0_p5_0,&_44p0_p5_1,&_44p0_p4_1}, 85 {&_44p0_p6_0,&_44p0_p6_1,&_44p0_p6_2}, 86 } 87 }; 88 89 static const static_bookblock _resbook_44p_1={ 90 { 91 {0}, 92 {0,&_44p1_p1_0}, 93 94 {&_44p1_p2_0,&_44p1_p2_1,0}, 95 {&_44p1_p3_0,&_44p1_p3_1,0}, 96 {&_44p1_p4_0,&_44p1_p4_1,0}, 97 98 {&_44p1_p5_0,&_44p1_p5_1,&_44p1_p4_1}, 99 {&_44p1_p6_0,&_44p1_p6_1,&_44p1_p6_2}, 100 } 101 }; 102 103 static const static_bookblock _resbook_44p_2={ 104 { 105 {0}, 106 {0,0,&_44p2_p1_0}, 107 {0,&_44p2_p2_0,0}, 108 109 {&_44p2_p3_0,&_44p2_p3_1,0}, 110 {&_44p2_p4_0,&_44p2_p4_1,0}, 111 {&_44p2_p5_0,&_44p2_p5_1,0}, 112 113 {&_44p2_p6_0,&_44p2_p6_1,&_44p2_p5_1}, 114 {&_44p2_p7_0,&_44p2_p7_1,&_44p2_p7_2,&_44p2_p7_3} 115 } 116 }; 117 static const static_bookblock _resbook_44p_3={ 118 { 119 {0}, 120 {0,0,&_44p3_p1_0}, 121 {0,&_44p3_p2_0,0}, 122 123 {&_44p3_p3_0,&_44p3_p3_1,0}, 124 {&_44p3_p4_0,&_44p3_p4_1,0}, 125 {&_44p3_p5_0,&_44p3_p5_1,0}, 126 127 {&_44p3_p6_0,&_44p3_p6_1,&_44p3_p5_1}, 128 {&_44p3_p7_0,&_44p3_p7_1,&_44p3_p7_2,&_44p3_p7_3} 129 } 130 }; 131 static const static_bookblock _resbook_44p_4={ 132 { 133 {0}, 134 {0,0,&_44p4_p1_0}, 135 {0,&_44p4_p2_0,0}, 136 137 {&_44p4_p3_0,&_44p4_p3_1,0}, 138 {&_44p4_p4_0,&_44p4_p4_1,0}, 139 {&_44p4_p5_0,&_44p4_p5_1,0}, 140 141 {&_44p4_p6_0,&_44p4_p6_1,&_44p4_p5_1}, 142 {&_44p4_p7_0,&_44p4_p7_1,&_44p4_p7_2,&_44p4_p7_3} 143 } 144 }; 145 static const static_bookblock _resbook_44p_5={ 146 { 147 {0}, 148 {0,0,&_44p5_p1_0}, 149 {0,&_44p5_p2_0,0}, 150 151 {&_44p5_p3_0,&_44p5_p3_1,0}, 152 {&_44p5_p4_0,&_44p5_p4_1,0}, 153 {&_44p5_p5_0,&_44p5_p5_1,0}, 154 155 {&_44p5_p6_0,&_44p5_p6_1,&_44p5_p5_1}, 156 {&_44p5_p7_0,&_44p5_p7_1,&_44p5_p7_2,&_44p5_p7_3} 157 } 158 }; 159 static const static_bookblock _resbook_44p_6={ 160 { 161 {0}, 162 {0,0,&_44p6_p1_0}, 163 {0,&_44p6_p2_0,0}, 164 165 {&_44p6_p3_0,&_44p6_p3_1,0}, 166 {&_44p6_p4_0,&_44p6_p4_1,0}, 167 {&_44p6_p5_0,&_44p6_p5_1,0}, 168 169 {&_44p6_p6_0,&_44p6_p6_1,&_44p6_p5_1}, 170 {&_44p6_p7_0,&_44p6_p7_1,&_44p6_p7_2,&_44p6_p7_3} 171 } 172 }; 173 static const static_bookblock _resbook_44p_7={ 174 { 175 {0}, 176 {0,0,&_44p7_p1_0}, 177 {0,&_44p7_p2_0,0}, 178 179 {&_44p7_p3_0,&_44p7_p3_1,0}, 180 {&_44p7_p4_0,&_44p7_p4_1,0}, 181 {&_44p7_p5_0,&_44p7_p5_1,0}, 182 183 {&_44p7_p6_0,&_44p7_p6_1,&_44p7_p5_1}, 184 {&_44p7_p7_0,&_44p7_p7_1,&_44p7_p7_2,&_44p7_p7_3} 185 } 186 }; 187 static const static_bookblock _resbook_44p_8={ 188 { 189 {0}, 190 {0,0,&_44p8_p1_0}, 191 {0,&_44p8_p2_0,0}, 192 193 {&_44p8_p3_0,&_44p8_p3_1,0}, 194 {&_44p8_p4_0,&_44p8_p4_1,0}, 195 {&_44p8_p5_0,&_44p8_p5_1,0}, 196 197 {&_44p8_p6_0,&_44p8_p6_1,&_44p8_p5_1}, 198 {&_44p8_p7_0,&_44p8_p7_1,&_44p8_p7_2,&_44p8_p7_3} 199 } 200 }; 201 static const static_bookblock _resbook_44p_9={ 202 { 203 {0}, 204 {0,0,&_44p9_p1_0}, 205 {0,&_44p9_p2_0,0}, 206 207 {&_44p9_p3_0,&_44p9_p3_1,0}, 208 {&_44p9_p4_0,&_44p9_p4_1,0}, 209 {&_44p9_p5_0,&_44p9_p5_1,0}, 210 211 {&_44p9_p6_0,&_44p9_p6_1,&_44p9_p5_1}, 212 {&_44p9_p7_0,&_44p9_p7_1,&_44p9_p7_2,&_44p9_p7_3} 213 } 214 }; 215 216 static const static_bookblock _resbook_44p_ln1={ 217 { 218 {&_44pn1_l0_0,&_44pn1_l0_1,0}, 219 {&_44pn1_l1_0,&_44pn1_p6_1,&_44pn1_p6_2}, 220 } 221 }; 222 static const static_bookblock _resbook_44p_l0={ 223 { 224 {&_44p0_l0_0,&_44p0_l0_1,0}, 225 {&_44p0_l1_0,&_44p0_p6_1,&_44p0_p6_2}, 226 } 227 }; 228 static const static_bookblock _resbook_44p_l1={ 229 { 230 {&_44p1_l0_0,&_44p1_l0_1,0}, 231 {&_44p1_l1_0,&_44p1_p6_1,&_44p1_p6_2}, 232 } 233 }; 234 static const static_bookblock _resbook_44p_l2={ 235 { 236 {&_44p2_l0_0,&_44p2_l0_1,0}, 237 {&_44p2_l1_0,&_44p2_p7_2,&_44p2_p7_3}, 238 } 239 }; 240 static const static_bookblock _resbook_44p_l3={ 241 { 242 {&_44p3_l0_0,&_44p3_l0_1,0}, 243 {&_44p3_l1_0,&_44p3_p7_2,&_44p3_p7_3}, 244 } 245 }; 246 static const static_bookblock _resbook_44p_l4={ 247 { 248 {&_44p4_l0_0,&_44p4_l0_1,0}, 249 {&_44p4_l1_0,&_44p4_p7_2,&_44p4_p7_3}, 250 } 251 }; 252 static const static_bookblock _resbook_44p_l5={ 253 { 254 {&_44p5_l0_0,&_44p5_l0_1,0}, 255 {&_44p5_l1_0,&_44p5_p7_2,&_44p5_p7_3}, 256 } 257 }; 258 static const static_bookblock _resbook_44p_l6={ 259 { 260 {&_44p6_l0_0,&_44p6_l0_1,0}, 261 {&_44p6_l1_0,&_44p6_p7_2,&_44p6_p7_3}, 262 } 263 }; 264 static const static_bookblock _resbook_44p_l7={ 265 { 266 {&_44p7_l0_0,&_44p7_l0_1,0}, 267 {&_44p7_l1_0,&_44p7_p7_2,&_44p7_p7_3}, 268 } 269 }; 270 static const static_bookblock _resbook_44p_l8={ 271 { 272 {&_44p8_l0_0,&_44p8_l0_1,0}, 273 {&_44p8_l1_0,&_44p8_p7_2,&_44p8_p7_3}, 274 } 275 }; 276 static const static_bookblock _resbook_44p_l9={ 277 { 278 {&_44p9_l0_0,&_44p9_l0_1,0}, 279 {&_44p9_l1_0,&_44p9_p7_2,&_44p9_p7_3}, 280 } 281 }; 282 283 284 static const vorbis_info_mapping0 _map_nominal_51[2]={ 285 {2, {0,0,0,0,0,1}, {0,2}, {0,2}, 4,{0,3,0,0},{2,4,1,3}}, 286 {2, {0,0,0,0,0,1}, {1,2}, {1,2}, 4,{0,3,0,0},{2,4,1,3}} 287 }; 288 static const vorbis_info_mapping0 _map_nominal_51u[2]={ 289 {2, {0,0,0,0,0,1}, {0,2}, {0,2}, 0,{0},{0}}, 290 {2, {0,0,0,0,0,1}, {1,2}, {1,2}, 0,{0},{0}} 291 }; 292 293 static const vorbis_residue_template _res_44p51_n1[]={ 294 {2,0,30, &_residue_44p_lo, 295 &_huff_book__44pn1_short,&_huff_book__44pn1_short, 296 &_resbook_44p_n1,&_resbook_44p_n1}, 297 298 {2,0,30, &_residue_44p_lo, 299 &_huff_book__44pn1_long,&_huff_book__44pn1_long, 300 &_resbook_44p_n1,&_resbook_44p_n1}, 301 302 {1,2,6, &_residue_44p_lfe, 303 &_huff_book__44pn1_lfe,&_huff_book__44pn1_lfe, 304 &_resbook_44p_ln1,&_resbook_44p_ln1} 305 }; 306 static const vorbis_residue_template _res_44p51_0[]={ 307 {2,0,15, &_residue_44p_lo, 308 &_huff_book__44p0_short,&_huff_book__44p0_short, 309 &_resbook_44p_0,&_resbook_44p_0}, 310 311 {2,0,30, &_residue_44p_lo, 312 &_huff_book__44p0_long,&_huff_book__44p0_long, 313 &_resbook_44p_0,&_resbook_44p_0}, 314 315 {1,2,6, &_residue_44p_lfe, 316 &_huff_book__44p0_lfe,&_huff_book__44p0_lfe, 317 &_resbook_44p_l0,&_resbook_44p_l0} 318 }; 319 static const vorbis_residue_template _res_44p51_1[]={ 320 {2,0,15, &_residue_44p_lo, 321 &_huff_book__44p1_short,&_huff_book__44p1_short, 322 &_resbook_44p_1,&_resbook_44p_1}, 323 324 {2,0,30, &_residue_44p_lo, 325 &_huff_book__44p1_long,&_huff_book__44p1_long, 326 &_resbook_44p_1,&_resbook_44p_1}, 327 328 {1,2,6, &_residue_44p_lfe, 329 &_huff_book__44p1_lfe,&_huff_book__44p1_lfe, 330 &_resbook_44p_l1,&_resbook_44p_l1} 331 }; 332 static const vorbis_residue_template _res_44p51_2[]={ 333 {2,0,15, &_residue_44p, 334 &_huff_book__44p2_short,&_huff_book__44p2_short, 335 &_resbook_44p_2,&_resbook_44p_2}, 336 337 {2,0,30, &_residue_44p, 338 &_huff_book__44p2_long,&_huff_book__44p2_long, 339 &_resbook_44p_2,&_resbook_44p_2}, 340 341 {1,2,6, &_residue_44p_lfe, 342 &_huff_book__44p2_lfe,&_huff_book__44p2_lfe, 343 &_resbook_44p_l2,&_resbook_44p_l2} 344 }; 345 static const vorbis_residue_template _res_44p51_3[]={ 346 {2,0,15, &_residue_44p, 347 &_huff_book__44p3_short,&_huff_book__44p3_short, 348 &_resbook_44p_3,&_resbook_44p_3}, 349 350 {2,0,30, &_residue_44p, 351 &_huff_book__44p3_long,&_huff_book__44p3_long, 352 &_resbook_44p_3,&_resbook_44p_3}, 353 354 {1,2,6, &_residue_44p_lfe, 355 &_huff_book__44p3_lfe,&_huff_book__44p3_lfe, 356 &_resbook_44p_l3,&_resbook_44p_l3} 357 }; 358 static const vorbis_residue_template _res_44p51_4[]={ 359 {2,0,15, &_residue_44p, 360 &_huff_book__44p4_short,&_huff_book__44p4_short, 361 &_resbook_44p_4,&_resbook_44p_4}, 362 363 {2,0,30, &_residue_44p, 364 &_huff_book__44p4_long,&_huff_book__44p4_long, 365 &_resbook_44p_4,&_resbook_44p_4}, 366 367 {1,2,6, &_residue_44p_lfe, 368 &_huff_book__44p4_lfe,&_huff_book__44p4_lfe, 369 &_resbook_44p_l4,&_resbook_44p_l4} 370 }; 371 static const vorbis_residue_template _res_44p51_5[]={ 372 {2,0,15, &_residue_44p_hi, 373 &_huff_book__44p5_short,&_huff_book__44p5_short, 374 &_resbook_44p_5,&_resbook_44p_5}, 375 376 {2,0,30, &_residue_44p_hi, 377 &_huff_book__44p5_long,&_huff_book__44p5_long, 378 &_resbook_44p_5,&_resbook_44p_5}, 379 380 {1,2,6, &_residue_44p_lfe, 381 &_huff_book__44p5_lfe,&_huff_book__44p5_lfe, 382 &_resbook_44p_l5,&_resbook_44p_l5} 383 }; 384 static const vorbis_residue_template _res_44p51_6[]={ 385 {2,0,15, &_residue_44p_hi, 386 &_huff_book__44p6_short,&_huff_book__44p6_short, 387 &_resbook_44p_6,&_resbook_44p_6}, 388 389 {2,0,30, &_residue_44p_hi, 390 &_huff_book__44p6_long,&_huff_book__44p6_long, 391 &_resbook_44p_6,&_resbook_44p_6}, 392 393 {1,2,6, &_residue_44p_lfe, 394 &_huff_book__44p6_lfe,&_huff_book__44p6_lfe, 395 &_resbook_44p_l6,&_resbook_44p_l6} 396 }; 397 398 399 static const vorbis_residue_template _res_44p51_7[]={ 400 {2,0,15, &_residue_44p_hi, 401 &_huff_book__44p7_short,&_huff_book__44p7_short, 402 &_resbook_44p_7,&_resbook_44p_7}, 403 404 {2,0,30, &_residue_44p_hi, 405 &_huff_book__44p7_long,&_huff_book__44p7_long, 406 &_resbook_44p_7,&_resbook_44p_7}, 407 408 {1,2,6, &_residue_44p_lfe, 409 &_huff_book__44p6_lfe,&_huff_book__44p6_lfe, 410 &_resbook_44p_l6,&_resbook_44p_l6} 411 }; 412 static const vorbis_residue_template _res_44p51_8[]={ 413 {2,0,15, &_residue_44p_hi, 414 &_huff_book__44p8_short,&_huff_book__44p8_short, 415 &_resbook_44p_8,&_resbook_44p_8}, 416 417 {2,0,30, &_residue_44p_hi, 418 &_huff_book__44p8_long,&_huff_book__44p8_long, 419 &_resbook_44p_8,&_resbook_44p_8}, 420 421 {1,2,6, &_residue_44p_lfe, 422 &_huff_book__44p6_lfe,&_huff_book__44p6_lfe, 423 &_resbook_44p_l6,&_resbook_44p_l6} 424 }; 425 static const vorbis_residue_template _res_44p51_9[]={ 426 {2,0,15, &_residue_44p_hi, 427 &_huff_book__44p9_short,&_huff_book__44p9_short, 428 &_resbook_44p_9,&_resbook_44p_9}, 429 430 {2,0,30, &_residue_44p_hi, 431 &_huff_book__44p9_long,&_huff_book__44p9_long, 432 &_resbook_44p_9,&_resbook_44p_9}, 433 434 {1,2,6, &_residue_44p_lfe, 435 &_huff_book__44p6_lfe,&_huff_book__44p6_lfe, 436 &_resbook_44p_l6,&_resbook_44p_l6} 437 }; 438 439 static const vorbis_mapping_template _mapres_template_44_51[]={ 440 { _map_nominal_51, _res_44p51_n1 }, /* -1 */ 441 { _map_nominal_51, _res_44p51_0 }, /* 0 */ 442 { _map_nominal_51, _res_44p51_1 }, /* 1 */ 443 { _map_nominal_51, _res_44p51_2 }, /* 2 */ 444 { _map_nominal_51, _res_44p51_3 }, /* 3 */ 445 { _map_nominal_51, _res_44p51_4 }, /* 4 */ 446 { _map_nominal_51u, _res_44p51_5 }, /* 5 */ 447 { _map_nominal_51u, _res_44p51_6 }, /* 6 */ 448 { _map_nominal_51u, _res_44p51_7 }, /* 7 */ 449 { _map_nominal_51u, _res_44p51_8 }, /* 8 */ 450 { _map_nominal_51u, _res_44p51_9 }, /* 9 */ 451 }; 452