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-2009             *
      9  * by the Xiph.Org Foundation http://www.xiph.org/                  *
     10  *                                                                  *
     11  ********************************************************************
     12 
     13  function: key floor settings
     14  last mod: $Id: floor_all.h 17050 2010-03-26 01:34:42Z xiphmont $
     15 
     16  ********************************************************************/
     17 
     18 #include "vorbis/codec.h"
     19 #include "backends.h"
     20 #include "books/floor/floor_books.h"
     21 
     22 static const static_codebook*const _floor_128x4_books[]={
     23   &_huff_book_line_128x4_class0,
     24   &_huff_book_line_128x4_0sub0,
     25   &_huff_book_line_128x4_0sub1,
     26   &_huff_book_line_128x4_0sub2,
     27   &_huff_book_line_128x4_0sub3,
     28 };
     29 static const static_codebook*const _floor_256x4_books[]={
     30   &_huff_book_line_256x4_class0,
     31   &_huff_book_line_256x4_0sub0,
     32   &_huff_book_line_256x4_0sub1,
     33   &_huff_book_line_256x4_0sub2,
     34   &_huff_book_line_256x4_0sub3,
     35 };
     36 static const static_codebook*const _floor_128x7_books[]={
     37   &_huff_book_line_128x7_class0,
     38   &_huff_book_line_128x7_class1,
     39 
     40   &_huff_book_line_128x7_0sub1,
     41   &_huff_book_line_128x7_0sub2,
     42   &_huff_book_line_128x7_0sub3,
     43   &_huff_book_line_128x7_1sub1,
     44   &_huff_book_line_128x7_1sub2,
     45   &_huff_book_line_128x7_1sub3,
     46 };
     47 static const static_codebook*const _floor_256x7_books[]={
     48   &_huff_book_line_256x7_class0,
     49   &_huff_book_line_256x7_class1,
     50 
     51   &_huff_book_line_256x7_0sub1,
     52   &_huff_book_line_256x7_0sub2,
     53   &_huff_book_line_256x7_0sub3,
     54   &_huff_book_line_256x7_1sub1,
     55   &_huff_book_line_256x7_1sub2,
     56   &_huff_book_line_256x7_1sub3,
     57 };
     58 static const static_codebook*const _floor_128x11_books[]={
     59   &_huff_book_line_128x11_class1,
     60   &_huff_book_line_128x11_class2,
     61   &_huff_book_line_128x11_class3,
     62 
     63   &_huff_book_line_128x11_0sub0,
     64   &_huff_book_line_128x11_1sub0,
     65   &_huff_book_line_128x11_1sub1,
     66   &_huff_book_line_128x11_2sub1,
     67   &_huff_book_line_128x11_2sub2,
     68   &_huff_book_line_128x11_2sub3,
     69   &_huff_book_line_128x11_3sub1,
     70   &_huff_book_line_128x11_3sub2,
     71   &_huff_book_line_128x11_3sub3,
     72 };
     73 static const static_codebook*const _floor_128x17_books[]={
     74   &_huff_book_line_128x17_class1,
     75   &_huff_book_line_128x17_class2,
     76   &_huff_book_line_128x17_class3,
     77 
     78   &_huff_book_line_128x17_0sub0,
     79   &_huff_book_line_128x17_1sub0,
     80   &_huff_book_line_128x17_1sub1,
     81   &_huff_book_line_128x17_2sub1,
     82   &_huff_book_line_128x17_2sub2,
     83   &_huff_book_line_128x17_2sub3,
     84   &_huff_book_line_128x17_3sub1,
     85   &_huff_book_line_128x17_3sub2,
     86   &_huff_book_line_128x17_3sub3,
     87 };
     88 static const static_codebook*const _floor_256x4low_books[]={
     89   &_huff_book_line_256x4low_class0,
     90   &_huff_book_line_256x4low_0sub0,
     91   &_huff_book_line_256x4low_0sub1,
     92   &_huff_book_line_256x4low_0sub2,
     93   &_huff_book_line_256x4low_0sub3,
     94 };
     95 static const static_codebook*const _floor_1024x27_books[]={
     96   &_huff_book_line_1024x27_class1,
     97   &_huff_book_line_1024x27_class2,
     98   &_huff_book_line_1024x27_class3,
     99   &_huff_book_line_1024x27_class4,
    100 
    101   &_huff_book_line_1024x27_0sub0,
    102   &_huff_book_line_1024x27_1sub0,
    103   &_huff_book_line_1024x27_1sub1,
    104   &_huff_book_line_1024x27_2sub0,
    105   &_huff_book_line_1024x27_2sub1,
    106   &_huff_book_line_1024x27_3sub1,
    107   &_huff_book_line_1024x27_3sub2,
    108   &_huff_book_line_1024x27_3sub3,
    109   &_huff_book_line_1024x27_4sub1,
    110   &_huff_book_line_1024x27_4sub2,
    111   &_huff_book_line_1024x27_4sub3,
    112 };
    113 static const static_codebook*const _floor_2048x27_books[]={
    114   &_huff_book_line_2048x27_class1,
    115   &_huff_book_line_2048x27_class2,
    116   &_huff_book_line_2048x27_class3,
    117   &_huff_book_line_2048x27_class4,
    118 
    119   &_huff_book_line_2048x27_0sub0,
    120   &_huff_book_line_2048x27_1sub0,
    121   &_huff_book_line_2048x27_1sub1,
    122   &_huff_book_line_2048x27_2sub0,
    123   &_huff_book_line_2048x27_2sub1,
    124   &_huff_book_line_2048x27_3sub1,
    125   &_huff_book_line_2048x27_3sub2,
    126   &_huff_book_line_2048x27_3sub3,
    127   &_huff_book_line_2048x27_4sub1,
    128   &_huff_book_line_2048x27_4sub2,
    129   &_huff_book_line_2048x27_4sub3,
    130 };
    131 
    132 static const static_codebook*const _floor_512x17_books[]={
    133   &_huff_book_line_512x17_class1,
    134   &_huff_book_line_512x17_class2,
    135   &_huff_book_line_512x17_class3,
    136 
    137   &_huff_book_line_512x17_0sub0,
    138   &_huff_book_line_512x17_1sub0,
    139   &_huff_book_line_512x17_1sub1,
    140   &_huff_book_line_512x17_2sub1,
    141   &_huff_book_line_512x17_2sub2,
    142   &_huff_book_line_512x17_2sub3,
    143   &_huff_book_line_512x17_3sub1,
    144   &_huff_book_line_512x17_3sub2,
    145   &_huff_book_line_512x17_3sub3,
    146 };
    147 
    148 static const static_codebook*const _floor_Xx0_books[]={
    149   0
    150 };
    151 
    152 static const static_codebook*const *const _floor_books[11]={
    153   _floor_128x4_books,
    154   _floor_256x4_books,
    155   _floor_128x7_books,
    156   _floor_256x7_books,
    157   _floor_128x11_books,
    158   _floor_128x17_books,
    159   _floor_256x4low_books,
    160   _floor_1024x27_books,
    161   _floor_2048x27_books,
    162   _floor_512x17_books,
    163   _floor_Xx0_books,
    164 };
    165 
    166 static const vorbis_info_floor1 _floor[11]={
    167   /* 0: 128 x 4 */
    168   {
    169     1,{0},{4},{2},{0},
    170     {{1,2,3,4}},
    171     4,{0,128, 33,8,16,70},
    172 
    173     60,30,500,   1.,18.,  128
    174   },
    175   /* 1: 256 x 4 */
    176   {
    177     1,{0},{4},{2},{0},
    178     {{1,2,3,4}},
    179     4,{0,256, 66,16,32,140},
    180 
    181     60,30,500,   1.,18.,  256
    182   },
    183   /* 2: 128 x 7 */
    184   {
    185     2,{0,1},{3,4},{2,2},{0,1},
    186     {{-1,2,3,4},{-1,5,6,7}},
    187     4,{0,128, 14,4,58, 2,8,28,90},
    188 
    189     60,30,500,   1.,18.,  128
    190   },
    191   /* 3: 256 x 7 */
    192   {
    193     2,{0,1},{3,4},{2,2},{0,1},
    194     {{-1,2,3,4},{-1,5,6,7}},
    195     4,{0,256, 28,8,116, 4,16,56,180},
    196 
    197     60,30,500,   1.,18.,  256
    198   },
    199   /* 4: 128 x 11 */
    200   {
    201     4,{0,1,2,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
    202     {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
    203 
    204     2,{0,128,  8,33,  4,16,70,  2,6,12,  23,46,90},
    205 
    206      60,30,500,   1,18.,  128
    207   },
    208   /* 5: 128 x 17 */
    209   {
    210     6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
    211     {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
    212     2,{0,128,  12,46,  4,8,16,  23,33,70,  2,6,10,  14,19,28,  39,58,90},
    213 
    214     60,30,500,    1,18.,  128
    215   },
    216   /* 6: 256 x 4 (low bitrate version) */
    217   {
    218     1,{0},{4},{2},{0},
    219     {{1,2,3,4}},
    220     4,{0,256, 66,16,32,140},
    221 
    222     60,30,500,   1.,18.,  256
    223   },
    224   /* 7: 1024 x 27 */
    225   {
    226     8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
    227     {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
    228     2,{0,1024,   93,23,372, 6,46,186,750,  14,33,65, 130,260,556,
    229        3,10,18,28,  39,55,79,111,  158,220,312,  464,650,850},
    230 
    231     60,30,500,    3,18.,  1024
    232   },
    233   /* 8: 2048 x 27 */
    234   {
    235     8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
    236     {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
    237     2,{0,2048,   186,46,744, 12,92,372,1500,  28,66,130, 260,520,1112,
    238        6,20,36,56,  78,110,158,222,  316,440,624,  928,1300,1700},
    239 
    240     60,30,500,    3,18.,  2048
    241   },
    242   /* 9: 512 x 17 */
    243   {
    244     6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
    245     {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
    246     2,{0,512,  46,186,  16,33,65,  93,130,278,
    247        7,23,39,  55,79,110,  156,232,360},
    248 
    249     60,30,500,    1,18.,  512
    250   },
    251 
    252   /* 10: X x 0 (LFE floor; edge posts only) */
    253   {
    254     0,{0}, {0},{0},{-1},
    255     {{-1}},
    256     2,{0,12},
    257     60,30,500,   1.,18.,  10
    258   },
    259 
    260 };
    261