Home | History | Annotate | Download | only in modes
      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