• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

libavcodec/aactab.c

Go to the documentation of this file.
00001 /*
00002  * AAC data
00003  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
00004  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
00005  *
00006  * This file is part of FFmpeg.
00007  *
00008  * FFmpeg is free software; you can redistribute it and/or
00009  * modify it under the terms of the GNU Lesser General Public
00010  * License as published by the Free Software Foundation; either
00011  * version 2.1 of the License, or (at your option) any later version.
00012  *
00013  * FFmpeg is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016  * Lesser General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU Lesser General Public
00019  * License along with FFmpeg; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00021  */
00022 
00030 #include "libavutil/mem.h"
00031 #include "aac.h"
00032 #include "aac_tablegen.h"
00033 
00034 #include <stdint.h>
00035 
00036 DECLARE_ALIGNED(16, float,  ff_aac_kbd_long_1024)[1024];
00037 DECLARE_ALIGNED(16, float,  ff_aac_kbd_short_128)[128];
00038 
00039 const uint8_t ff_aac_num_swb_1024[] = {
00040     41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
00041 };
00042 
00043 const uint8_t ff_aac_num_swb_128[] = {
00044     12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
00045 };
00046 
00047 const uint8_t ff_aac_pred_sfb_max[] = {
00048     33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
00049 };
00050 
00051 const uint32_t ff_aac_scalefactor_code[121] = {
00052     0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
00053     0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
00054     0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
00055     0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
00056     0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
00057     0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
00058     0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
00059     0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
00060     0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
00061     0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
00062     0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
00063     0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
00064     0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
00065     0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
00066     0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
00067     0x7fff3,
00068 };
00069 
00070 const uint8_t ff_aac_scalefactor_bits[121] = {
00071     18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
00072     19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
00073     14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
00074     10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
00075      6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
00076     12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
00077     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
00078     19, 19, 19, 19, 19, 19, 19, 19, 19,
00079 };
00080 
00081 static const uint16_t codes1[81] = {
00082     0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
00083     0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
00084     0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
00085     0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
00086     0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
00087     0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
00088     0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
00089     0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
00090     0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
00091     0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
00092     0x7f4,
00093 };
00094 
00095 static const uint8_t bits1[81] = {
00096     11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
00097      7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
00098      7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
00099      7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
00100      7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
00101     11,
00102 };
00103 
00104 static const uint16_t codes2[81] = {
00105     0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
00106     0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
00107     0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
00108     0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
00109     0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
00110     0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
00111     0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
00112     0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
00113     0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
00114     0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
00115     0x1f6,
00116 };
00117 
00118 static const uint8_t bits2[81] = {
00119     9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
00120     6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
00121     6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
00122     6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
00123     6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
00124     9,
00125 };
00126 
00127 static const uint16_t codes3[81] = {
00128     0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
00129     0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
00130     0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
00131     0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
00132     0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
00133     0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
00134     0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
00135     0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
00136     0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
00137     0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
00138     0x7ffa,
00139 };
00140 
00141 static const uint8_t bits3[81] = {
00142      1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
00143      9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
00144     10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
00145      8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
00146     10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
00147     15,
00148 };
00149 
00150 static const uint16_t codes4[81] = {
00151     0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
00152     0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
00153     0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
00154     0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
00155     0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
00156     0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
00157     0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
00158     0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
00159     0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
00160     0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
00161     0x7fc,
00162 };
00163 
00164 static const uint8_t bits4[81] = {
00165      4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
00166      7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
00167      8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
00168      7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
00169      7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
00170     11,
00171 };
00172 
00173 static const uint16_t codes5[81] = {
00174     0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
00175     0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
00176     0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
00177     0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
00178     0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
00179     0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
00180     0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
00181     0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
00182     0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
00183     0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
00184     0x1ffe,
00185 };
00186 
00187 static const uint8_t bits5[81] = {
00188     13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
00189     11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
00190      5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
00191      5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
00192     11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
00193     13,
00194 };
00195 
00196 static const uint16_t codes6[81] = {
00197     0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
00198     0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
00199     0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
00200     0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
00201     0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
00202     0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
00203     0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
00204     0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
00205     0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
00206     0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
00207     0x7fc,
00208 };
00209 
00210 static const uint8_t bits6[81] = {
00211     11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
00212      9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
00213      4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
00214      4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
00215      9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
00216     11,
00217 };
00218 
00219 static const uint16_t codes7[64] = {
00220     0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
00221     0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
00222     0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
00223     0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
00224     0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
00225     0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
00226     0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
00227     0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
00228 };
00229 
00230 static const uint8_t bits7[64] = {
00231      1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
00232      6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
00233      8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
00234     10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
00235 };
00236 
00237 static const uint16_t codes8[64] = {
00238     0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
00239     0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
00240     0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
00241     0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
00242     0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
00243     0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
00244     0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
00245     0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
00246 };
00247 
00248 static const uint8_t bits8[64] = {
00249      5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
00250      5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
00251      7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
00252      9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
00253 };
00254 
00255 static const uint16_t codes9[169] = {
00256     0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
00257     0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
00258     0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
00259     0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
00260     0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
00261     0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
00262     0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
00263     0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
00264     0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
00265     0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
00266     0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
00267     0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
00268     0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
00269     0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
00270     0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
00271     0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
00272     0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
00273     0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
00274     0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
00275     0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
00276     0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
00277     0x7fff,
00278 };
00279 
00280 static const uint8_t bits9[169] = {
00281      1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
00282      7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
00283     10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
00284     11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
00285     13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
00286     10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
00287     12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
00288     13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
00289     14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
00290     11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
00291     13, 13, 13, 13, 14, 14, 14, 14, 15,
00292 };
00293 
00294 static const uint16_t codes10[169] = {
00295     0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
00296     0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
00297     0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
00298     0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
00299     0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
00300     0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
00301     0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
00302     0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
00303     0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
00304     0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
00305     0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
00306     0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
00307     0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
00308     0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
00309     0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
00310     0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
00311     0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
00312     0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
00313     0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
00314     0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
00315     0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
00316     0xfff,
00317 };
00318 
00319 static const uint8_t bits10[169] = {
00320      6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
00321      5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
00322      7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
00323      9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
00324     10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
00325      7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
00326      8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
00327     10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
00328     11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
00329     10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
00330     10, 10, 10, 11, 11, 12, 12, 12, 12,
00331 };
00332 
00333 static const uint16_t codes11[289] = {
00334     0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
00335     0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
00336     0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
00337     0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
00338     0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
00339     0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
00340     0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
00341     0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
00342     0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
00343     0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
00344     0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
00345     0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
00346     0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
00347     0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
00348     0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
00349     0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
00350     0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
00351     0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
00352     0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
00353     0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
00354     0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
00355     0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
00356     0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
00357     0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
00358     0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
00359     0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
00360     0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
00361     0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
00362     0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
00363     0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
00364     0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
00365     0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
00366     0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
00367     0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
00368     0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
00369     0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
00370     0x004,
00371 };
00372 
00373 static const uint8_t bits11[289] = {
00374      4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
00375     10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
00376     11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
00377     10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
00378     10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
00379     10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
00380      9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
00381      9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
00382      9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
00383      9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
00384      9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
00385      9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
00386      9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
00387     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
00388      9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
00389     10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
00390     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
00391      9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
00392      5,
00393 };
00394 
00395 const uint16_t * const ff_aac_spectral_codes[11] = {
00396     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
00397     codes9, codes10, codes11,
00398 };
00399 
00400 const uint8_t * const ff_aac_spectral_bits[11] = {
00401     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
00402     bits9, bits10, bits11,
00403 };
00404 
00405 const uint16_t ff_aac_spectral_sizes[11] = {
00406     81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
00407 };
00408 
00409 /* NOTE:
00410  * 64.0f is a special value indicating the existence of an escape code in the
00411  * bitstream.
00412  */
00413 static const DECLARE_ALIGNED(16, float, codebook_vector0)[324] = {
00414  -1.0000000, -1.0000000, -1.0000000, -1.0000000,
00415  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
00416  -1.0000000, -1.0000000, -1.0000000,  1.0000000,
00417  -1.0000000, -1.0000000,  0.0000000, -1.0000000,
00418  -1.0000000, -1.0000000,  0.0000000,  0.0000000,
00419  -1.0000000, -1.0000000,  0.0000000,  1.0000000,
00420  -1.0000000, -1.0000000,  1.0000000, -1.0000000,
00421  -1.0000000, -1.0000000,  1.0000000,  0.0000000,
00422  -1.0000000, -1.0000000,  1.0000000,  1.0000000,
00423  -1.0000000,  0.0000000, -1.0000000, -1.0000000,
00424  -1.0000000,  0.0000000, -1.0000000,  0.0000000,
00425  -1.0000000,  0.0000000, -1.0000000,  1.0000000,
00426  -1.0000000,  0.0000000,  0.0000000, -1.0000000,
00427  -1.0000000,  0.0000000,  0.0000000,  0.0000000,
00428  -1.0000000,  0.0000000,  0.0000000,  1.0000000,
00429  -1.0000000,  0.0000000,  1.0000000, -1.0000000,
00430  -1.0000000,  0.0000000,  1.0000000,  0.0000000,
00431  -1.0000000,  0.0000000,  1.0000000,  1.0000000,
00432  -1.0000000,  1.0000000, -1.0000000, -1.0000000,
00433  -1.0000000,  1.0000000, -1.0000000,  0.0000000,
00434  -1.0000000,  1.0000000, -1.0000000,  1.0000000,
00435  -1.0000000,  1.0000000,  0.0000000, -1.0000000,
00436  -1.0000000,  1.0000000,  0.0000000,  0.0000000,
00437  -1.0000000,  1.0000000,  0.0000000,  1.0000000,
00438  -1.0000000,  1.0000000,  1.0000000, -1.0000000,
00439  -1.0000000,  1.0000000,  1.0000000,  0.0000000,
00440  -1.0000000,  1.0000000,  1.0000000,  1.0000000,
00441   0.0000000, -1.0000000, -1.0000000, -1.0000000,
00442   0.0000000, -1.0000000, -1.0000000,  0.0000000,
00443   0.0000000, -1.0000000, -1.0000000,  1.0000000,
00444   0.0000000, -1.0000000,  0.0000000, -1.0000000,
00445   0.0000000, -1.0000000,  0.0000000,  0.0000000,
00446   0.0000000, -1.0000000,  0.0000000,  1.0000000,
00447   0.0000000, -1.0000000,  1.0000000, -1.0000000,
00448   0.0000000, -1.0000000,  1.0000000,  0.0000000,
00449   0.0000000, -1.0000000,  1.0000000,  1.0000000,
00450   0.0000000,  0.0000000, -1.0000000, -1.0000000,
00451   0.0000000,  0.0000000, -1.0000000,  0.0000000,
00452   0.0000000,  0.0000000, -1.0000000,  1.0000000,
00453   0.0000000,  0.0000000,  0.0000000, -1.0000000,
00454   0.0000000,  0.0000000,  0.0000000,  0.0000000,
00455   0.0000000,  0.0000000,  0.0000000,  1.0000000,
00456   0.0000000,  0.0000000,  1.0000000, -1.0000000,
00457   0.0000000,  0.0000000,  1.0000000,  0.0000000,
00458   0.0000000,  0.0000000,  1.0000000,  1.0000000,
00459   0.0000000,  1.0000000, -1.0000000, -1.0000000,
00460   0.0000000,  1.0000000, -1.0000000,  0.0000000,
00461   0.0000000,  1.0000000, -1.0000000,  1.0000000,
00462   0.0000000,  1.0000000,  0.0000000, -1.0000000,
00463   0.0000000,  1.0000000,  0.0000000,  0.0000000,
00464   0.0000000,  1.0000000,  0.0000000,  1.0000000,
00465   0.0000000,  1.0000000,  1.0000000, -1.0000000,
00466   0.0000000,  1.0000000,  1.0000000,  0.0000000,
00467   0.0000000,  1.0000000,  1.0000000,  1.0000000,
00468   1.0000000, -1.0000000, -1.0000000, -1.0000000,
00469   1.0000000, -1.0000000, -1.0000000,  0.0000000,
00470   1.0000000, -1.0000000, -1.0000000,  1.0000000,
00471   1.0000000, -1.0000000,  0.0000000, -1.0000000,
00472   1.0000000, -1.0000000,  0.0000000,  0.0000000,
00473   1.0000000, -1.0000000,  0.0000000,  1.0000000,
00474   1.0000000, -1.0000000,  1.0000000, -1.0000000,
00475   1.0000000, -1.0000000,  1.0000000,  0.0000000,
00476   1.0000000, -1.0000000,  1.0000000,  1.0000000,
00477   1.0000000,  0.0000000, -1.0000000, -1.0000000,
00478   1.0000000,  0.0000000, -1.0000000,  0.0000000,
00479   1.0000000,  0.0000000, -1.0000000,  1.0000000,
00480   1.0000000,  0.0000000,  0.0000000, -1.0000000,
00481   1.0000000,  0.0000000,  0.0000000,  0.0000000,
00482   1.0000000,  0.0000000,  0.0000000,  1.0000000,
00483   1.0000000,  0.0000000,  1.0000000, -1.0000000,
00484   1.0000000,  0.0000000,  1.0000000,  0.0000000,
00485   1.0000000,  0.0000000,  1.0000000,  1.0000000,
00486   1.0000000,  1.0000000, -1.0000000, -1.0000000,
00487   1.0000000,  1.0000000, -1.0000000,  0.0000000,
00488   1.0000000,  1.0000000, -1.0000000,  1.0000000,
00489   1.0000000,  1.0000000,  0.0000000, -1.0000000,
00490   1.0000000,  1.0000000,  0.0000000,  0.0000000,
00491   1.0000000,  1.0000000,  0.0000000,  1.0000000,
00492   1.0000000,  1.0000000,  1.0000000, -1.0000000,
00493   1.0000000,  1.0000000,  1.0000000,  0.0000000,
00494   1.0000000,  1.0000000,  1.0000000,  1.0000000,
00495 };
00496 
00497 static const DECLARE_ALIGNED(16, float, codebook_vector2)[324] = {
00498   0.0000000,  0.0000000,  0.0000000,  0.0000000,
00499   0.0000000,  0.0000000,  0.0000000,  1.0000000,
00500   0.0000000,  0.0000000,  0.0000000,  2.5198421,
00501   0.0000000,  0.0000000,  1.0000000,  0.0000000,
00502   0.0000000,  0.0000000,  1.0000000,  1.0000000,
00503   0.0000000,  0.0000000,  1.0000000,  2.5198421,
00504   0.0000000,  0.0000000,  2.5198421,  0.0000000,
00505   0.0000000,  0.0000000,  2.5198421,  1.0000000,
00506   0.0000000,  0.0000000,  2.5198421,  2.5198421,
00507   0.0000000,  1.0000000,  0.0000000,  0.0000000,
00508   0.0000000,  1.0000000,  0.0000000,  1.0000000,
00509   0.0000000,  1.0000000,  0.0000000,  2.5198421,
00510   0.0000000,  1.0000000,  1.0000000,  0.0000000,
00511   0.0000000,  1.0000000,  1.0000000,  1.0000000,
00512   0.0000000,  1.0000000,  1.0000000,  2.5198421,
00513   0.0000000,  1.0000000,  2.5198421,  0.0000000,
00514   0.0000000,  1.0000000,  2.5198421,  1.0000000,
00515   0.0000000,  1.0000000,  2.5198421,  2.5198421,
00516   0.0000000,  2.5198421,  0.0000000,  0.0000000,
00517   0.0000000,  2.5198421,  0.0000000,  1.0000000,
00518   0.0000000,  2.5198421,  0.0000000,  2.5198421,
00519   0.0000000,  2.5198421,  1.0000000,  0.0000000,
00520   0.0000000,  2.5198421,  1.0000000,  1.0000000,
00521   0.0000000,  2.5198421,  1.0000000,  2.5198421,
00522   0.0000000,  2.5198421,  2.5198421,  0.0000000,
00523   0.0000000,  2.5198421,  2.5198421,  1.0000000,
00524   0.0000000,  2.5198421,  2.5198421,  2.5198421,
00525   1.0000000,  0.0000000,  0.0000000,  0.0000000,
00526   1.0000000,  0.0000000,  0.0000000,  1.0000000,
00527   1.0000000,  0.0000000,  0.0000000,  2.5198421,
00528   1.0000000,  0.0000000,  1.0000000,  0.0000000,
00529   1.0000000,  0.0000000,  1.0000000,  1.0000000,
00530   1.0000000,  0.0000000,  1.0000000,  2.5198421,
00531   1.0000000,  0.0000000,  2.5198421,  0.0000000,
00532   1.0000000,  0.0000000,  2.5198421,  1.0000000,
00533   1.0000000,  0.0000000,  2.5198421,  2.5198421,
00534   1.0000000,  1.0000000,  0.0000000,  0.0000000,
00535   1.0000000,  1.0000000,  0.0000000,  1.0000000,
00536   1.0000000,  1.0000000,  0.0000000,  2.5198421,
00537   1.0000000,  1.0000000,  1.0000000,  0.0000000,
00538   1.0000000,  1.0000000,  1.0000000,  1.0000000,
00539   1.0000000,  1.0000000,  1.0000000,  2.5198421,
00540   1.0000000,  1.0000000,  2.5198421,  0.0000000,
00541   1.0000000,  1.0000000,  2.5198421,  1.0000000,
00542   1.0000000,  1.0000000,  2.5198421,  2.5198421,
00543   1.0000000,  2.5198421,  0.0000000,  0.0000000,
00544   1.0000000,  2.5198421,  0.0000000,  1.0000000,
00545   1.0000000,  2.5198421,  0.0000000,  2.5198421,
00546   1.0000000,  2.5198421,  1.0000000,  0.0000000,
00547   1.0000000,  2.5198421,  1.0000000,  1.0000000,
00548   1.0000000,  2.5198421,  1.0000000,  2.5198421,
00549   1.0000000,  2.5198421,  2.5198421,  0.0000000,
00550   1.0000000,  2.5198421,  2.5198421,  1.0000000,
00551   1.0000000,  2.5198421,  2.5198421,  2.5198421,
00552   2.5198421,  0.0000000,  0.0000000,  0.0000000,
00553   2.5198421,  0.0000000,  0.0000000,  1.0000000,
00554   2.5198421,  0.0000000,  0.0000000,  2.5198421,
00555   2.5198421,  0.0000000,  1.0000000,  0.0000000,
00556   2.5198421,  0.0000000,  1.0000000,  1.0000000,
00557   2.5198421,  0.0000000,  1.0000000,  2.5198421,
00558   2.5198421,  0.0000000,  2.5198421,  0.0000000,
00559   2.5198421,  0.0000000,  2.5198421,  1.0000000,
00560   2.5198421,  0.0000000,  2.5198421,  2.5198421,
00561   2.5198421,  1.0000000,  0.0000000,  0.0000000,
00562   2.5198421,  1.0000000,  0.0000000,  1.0000000,
00563   2.5198421,  1.0000000,  0.0000000,  2.5198421,
00564   2.5198421,  1.0000000,  1.0000000,  0.0000000,
00565   2.5198421,  1.0000000,  1.0000000,  1.0000000,
00566   2.5198421,  1.0000000,  1.0000000,  2.5198421,
00567   2.5198421,  1.0000000,  2.5198421,  0.0000000,
00568   2.5198421,  1.0000000,  2.5198421,  1.0000000,
00569   2.5198421,  1.0000000,  2.5198421,  2.5198421,
00570   2.5198421,  2.5198421,  0.0000000,  0.0000000,
00571   2.5198421,  2.5198421,  0.0000000,  1.0000000,
00572   2.5198421,  2.5198421,  0.0000000,  2.5198421,
00573   2.5198421,  2.5198421,  1.0000000,  0.0000000,
00574   2.5198421,  2.5198421,  1.0000000,  1.0000000,
00575   2.5198421,  2.5198421,  1.0000000,  2.5198421,
00576   2.5198421,  2.5198421,  2.5198421,  0.0000000,
00577   2.5198421,  2.5198421,  2.5198421,  1.0000000,
00578   2.5198421,  2.5198421,  2.5198421,  2.5198421,
00579 };
00580 
00581 static const DECLARE_ALIGNED(16, float, codebook_vector4)[162] = {
00582  -6.3496042, -6.3496042, -6.3496042, -4.3267487,
00583  -6.3496042, -2.5198421, -6.3496042, -1.0000000,
00584  -6.3496042,  0.0000000, -6.3496042,  1.0000000,
00585  -6.3496042,  2.5198421, -6.3496042,  4.3267487,
00586  -6.3496042,  6.3496042, -4.3267487, -6.3496042,
00587  -4.3267487, -4.3267487, -4.3267487, -2.5198421,
00588  -4.3267487, -1.0000000, -4.3267487,  0.0000000,
00589  -4.3267487,  1.0000000, -4.3267487,  2.5198421,
00590  -4.3267487,  4.3267487, -4.3267487,  6.3496042,
00591  -2.5198421, -6.3496042, -2.5198421, -4.3267487,
00592  -2.5198421, -2.5198421, -2.5198421, -1.0000000,
00593  -2.5198421,  0.0000000, -2.5198421,  1.0000000,
00594  -2.5198421,  2.5198421, -2.5198421,  4.3267487,
00595  -2.5198421,  6.3496042, -1.0000000, -6.3496042,
00596  -1.0000000, -4.3267487, -1.0000000, -2.5198421,
00597  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
00598  -1.0000000,  1.0000000, -1.0000000,  2.5198421,
00599  -1.0000000,  4.3267487, -1.0000000,  6.3496042,
00600   0.0000000, -6.3496042,  0.0000000, -4.3267487,
00601   0.0000000, -2.5198421,  0.0000000, -1.0000000,
00602   0.0000000,  0.0000000,  0.0000000,  1.0000000,
00603   0.0000000,  2.5198421,  0.0000000,  4.3267487,
00604   0.0000000,  6.3496042,  1.0000000, -6.3496042,
00605   1.0000000, -4.3267487,  1.0000000, -2.5198421,
00606   1.0000000, -1.0000000,  1.0000000,  0.0000000,
00607   1.0000000,  1.0000000,  1.0000000,  2.5198421,
00608   1.0000000,  4.3267487,  1.0000000,  6.3496042,
00609   2.5198421, -6.3496042,  2.5198421, -4.3267487,
00610   2.5198421, -2.5198421,  2.5198421, -1.0000000,
00611   2.5198421,  0.0000000,  2.5198421,  1.0000000,
00612   2.5198421,  2.5198421,  2.5198421,  4.3267487,
00613   2.5198421,  6.3496042,  4.3267487, -6.3496042,
00614   4.3267487, -4.3267487,  4.3267487, -2.5198421,
00615   4.3267487, -1.0000000,  4.3267487,  0.0000000,
00616   4.3267487,  1.0000000,  4.3267487,  2.5198421,
00617   4.3267487,  4.3267487,  4.3267487,  6.3496042,
00618   6.3496042, -6.3496042,  6.3496042, -4.3267487,
00619   6.3496042, -2.5198421,  6.3496042, -1.0000000,
00620   6.3496042,  0.0000000,  6.3496042,  1.0000000,
00621   6.3496042,  2.5198421,  6.3496042,  4.3267487,
00622   6.3496042,  6.3496042,
00623 };
00624 
00625 static const DECLARE_ALIGNED(16, float, codebook_vector6)[128] = {
00626   0.0000000,  0.0000000,  0.0000000,  1.0000000,
00627   0.0000000,  2.5198421,  0.0000000,  4.3267487,
00628   0.0000000,  6.3496042,  0.0000000,  8.5498797,
00629   0.0000000, 10.9027236,  0.0000000, 13.3905183,
00630   1.0000000,  0.0000000,  1.0000000,  1.0000000,
00631   1.0000000,  2.5198421,  1.0000000,  4.3267487,
00632   1.0000000,  6.3496042,  1.0000000,  8.5498797,
00633   1.0000000, 10.9027236,  1.0000000, 13.3905183,
00634   2.5198421,  0.0000000,  2.5198421,  1.0000000,
00635   2.5198421,  2.5198421,  2.5198421,  4.3267487,
00636   2.5198421,  6.3496042,  2.5198421,  8.5498797,
00637   2.5198421, 10.9027236,  2.5198421, 13.3905183,
00638   4.3267487,  0.0000000,  4.3267487,  1.0000000,
00639   4.3267487,  2.5198421,  4.3267487,  4.3267487,
00640   4.3267487,  6.3496042,  4.3267487,  8.5498797,
00641   4.3267487, 10.9027236,  4.3267487, 13.3905183,
00642   6.3496042,  0.0000000,  6.3496042,  1.0000000,
00643   6.3496042,  2.5198421,  6.3496042,  4.3267487,
00644   6.3496042,  6.3496042,  6.3496042,  8.5498797,
00645   6.3496042, 10.9027236,  6.3496042, 13.3905183,
00646   8.5498797,  0.0000000,  8.5498797,  1.0000000,
00647   8.5498797,  2.5198421,  8.5498797,  4.3267487,
00648   8.5498797,  6.3496042,  8.5498797,  8.5498797,
00649   8.5498797, 10.9027236,  8.5498797, 13.3905183,
00650  10.9027236,  0.0000000, 10.9027236,  1.0000000,
00651  10.9027236,  2.5198421, 10.9027236,  4.3267487,
00652  10.9027236,  6.3496042, 10.9027236,  8.5498797,
00653  10.9027236, 10.9027236, 10.9027236, 13.3905183,
00654  13.3905183,  0.0000000, 13.3905183,  1.0000000,
00655  13.3905183,  2.5198421, 13.3905183,  4.3267487,
00656  13.3905183,  6.3496042, 13.3905183,  8.5498797,
00657  13.3905183, 10.9027236, 13.3905183, 13.3905183,
00658 };
00659 
00660 static const DECLARE_ALIGNED(16, float, codebook_vector8)[338] = {
00661   0.0000000,  0.0000000,  0.0000000,  1.0000000,
00662   0.0000000,  2.5198421,  0.0000000,  4.3267487,
00663   0.0000000,  6.3496042,  0.0000000,  8.5498797,
00664   0.0000000, 10.9027236,  0.0000000, 13.3905183,
00665   0.0000000, 16.0000000,  0.0000000, 18.7207544,
00666   0.0000000, 21.5443469,  0.0000000, 24.4637810,
00667   0.0000000, 27.4731418,  1.0000000,  0.0000000,
00668   1.0000000,  1.0000000,  1.0000000,  2.5198421,
00669   1.0000000,  4.3267487,  1.0000000,  6.3496042,
00670   1.0000000,  8.5498797,  1.0000000, 10.9027236,
00671   1.0000000, 13.3905183,  1.0000000, 16.0000000,
00672   1.0000000, 18.7207544,  1.0000000, 21.5443469,
00673   1.0000000, 24.4637810,  1.0000000, 27.4731418,
00674   2.5198421,  0.0000000,  2.5198421,  1.0000000,
00675   2.5198421,  2.5198421,  2.5198421,  4.3267487,
00676   2.5198421,  6.3496042,  2.5198421,  8.5498797,
00677   2.5198421, 10.9027236,  2.5198421, 13.3905183,
00678   2.5198421, 16.0000000,  2.5198421, 18.7207544,
00679   2.5198421, 21.5443469,  2.5198421, 24.4637810,
00680   2.5198421, 27.4731418,  4.3267487,  0.0000000,
00681   4.3267487,  1.0000000,  4.3267487,  2.5198421,
00682   4.3267487,  4.3267487,  4.3267487,  6.3496042,
00683   4.3267487,  8.5498797,  4.3267487, 10.9027236,
00684   4.3267487, 13.3905183,  4.3267487, 16.0000000,
00685   4.3267487, 18.7207544,  4.3267487, 21.5443469,
00686   4.3267487, 24.4637810,  4.3267487, 27.4731418,
00687   6.3496042,  0.0000000,  6.3496042,  1.0000000,
00688   6.3496042,  2.5198421,  6.3496042,  4.3267487,
00689   6.3496042,  6.3496042,  6.3496042,  8.5498797,
00690   6.3496042, 10.9027236,  6.3496042, 13.3905183,
00691   6.3496042, 16.0000000,  6.3496042, 18.7207544,
00692   6.3496042, 21.5443469,  6.3496042, 24.4637810,
00693   6.3496042, 27.4731418,  8.5498797,  0.0000000,
00694   8.5498797,  1.0000000,  8.5498797,  2.5198421,
00695   8.5498797,  4.3267487,  8.5498797,  6.3496042,
00696   8.5498797,  8.5498797,  8.5498797, 10.9027236,
00697   8.5498797, 13.3905183,  8.5498797, 16.0000000,
00698   8.5498797, 18.7207544,  8.5498797, 21.5443469,
00699   8.5498797, 24.4637810,  8.5498797, 27.4731418,
00700  10.9027236,  0.0000000, 10.9027236,  1.0000000,
00701  10.9027236,  2.5198421, 10.9027236,  4.3267487,
00702  10.9027236,  6.3496042, 10.9027236,  8.5498797,
00703  10.9027236, 10.9027236, 10.9027236, 13.3905183,
00704  10.9027236, 16.0000000, 10.9027236, 18.7207544,
00705  10.9027236, 21.5443469, 10.9027236, 24.4637810,
00706  10.9027236, 27.4731418, 13.3905183,  0.0000000,
00707  13.3905183,  1.0000000, 13.3905183,  2.5198421,
00708  13.3905183,  4.3267487, 13.3905183,  6.3496042,
00709  13.3905183,  8.5498797, 13.3905183, 10.9027236,
00710  13.3905183, 13.3905183, 13.3905183, 16.0000000,
00711  13.3905183, 18.7207544, 13.3905183, 21.5443469,
00712  13.3905183, 24.4637810, 13.3905183, 27.4731418,
00713  16.0000000,  0.0000000, 16.0000000,  1.0000000,
00714  16.0000000,  2.5198421, 16.0000000,  4.3267487,
00715  16.0000000,  6.3496042, 16.0000000,  8.5498797,
00716  16.0000000, 10.9027236, 16.0000000, 13.3905183,
00717  16.0000000, 16.0000000, 16.0000000, 18.7207544,
00718  16.0000000, 21.5443469, 16.0000000, 24.4637810,
00719  16.0000000, 27.4731418, 18.7207544,  0.0000000,
00720  18.7207544,  1.0000000, 18.7207544,  2.5198421,
00721  18.7207544,  4.3267487, 18.7207544,  6.3496042,
00722  18.7207544,  8.5498797, 18.7207544, 10.9027236,
00723  18.7207544, 13.3905183, 18.7207544, 16.0000000,
00724  18.7207544, 18.7207544, 18.7207544, 21.5443469,
00725  18.7207544, 24.4637810, 18.7207544, 27.4731418,
00726  21.5443469,  0.0000000, 21.5443469,  1.0000000,
00727  21.5443469,  2.5198421, 21.5443469,  4.3267487,
00728  21.5443469,  6.3496042, 21.5443469,  8.5498797,
00729  21.5443469, 10.9027236, 21.5443469, 13.3905183,
00730  21.5443469, 16.0000000, 21.5443469, 18.7207544,
00731  21.5443469, 21.5443469, 21.5443469, 24.4637810,
00732  21.5443469, 27.4731418, 24.4637810,  0.0000000,
00733  24.4637810,  1.0000000, 24.4637810,  2.5198421,
00734  24.4637810,  4.3267487, 24.4637810,  6.3496042,
00735  24.4637810,  8.5498797, 24.4637810, 10.9027236,
00736  24.4637810, 13.3905183, 24.4637810, 16.0000000,
00737  24.4637810, 18.7207544, 24.4637810, 21.5443469,
00738  24.4637810, 24.4637810, 24.4637810, 27.4731418,
00739  27.4731418,  0.0000000, 27.4731418,  1.0000000,
00740  27.4731418,  2.5198421, 27.4731418,  4.3267487,
00741  27.4731418,  6.3496042, 27.4731418,  8.5498797,
00742  27.4731418, 10.9027236, 27.4731418, 13.3905183,
00743  27.4731418, 16.0000000, 27.4731418, 18.7207544,
00744  27.4731418, 21.5443469, 27.4731418, 24.4637810,
00745  27.4731418, 27.4731418,
00746 };
00747 
00748 static const DECLARE_ALIGNED(16, float, codebook_vector10)[578] = {
00749   0.0000000,  0.0000000,  0.0000000,  1.0000000,
00750   0.0000000,  2.5198421,  0.0000000,  4.3267487,
00751   0.0000000,  6.3496042,  0.0000000,  8.5498797,
00752   0.0000000, 10.9027236,  0.0000000, 13.3905183,
00753   0.0000000, 16.0000000,  0.0000000, 18.7207544,
00754   0.0000000, 21.5443469,  0.0000000, 24.4637810,
00755   0.0000000, 27.4731418,  0.0000000, 30.5673509,
00756   0.0000000, 33.7419917,  0.0000000, 36.9931811,
00757   0.0000000,      64.0f,  1.0000000,  0.0000000,
00758   1.0000000,  1.0000000,  1.0000000,  2.5198421,
00759   1.0000000,  4.3267487,  1.0000000,  6.3496042,
00760   1.0000000,  8.5498797,  1.0000000, 10.9027236,
00761   1.0000000, 13.3905183,  1.0000000, 16.0000000,
00762   1.0000000, 18.7207544,  1.0000000, 21.5443469,
00763   1.0000000, 24.4637810,  1.0000000, 27.4731418,
00764   1.0000000, 30.5673509,  1.0000000, 33.7419917,
00765   1.0000000, 36.9931811,  1.0000000,      64.0f,
00766   2.5198421,  0.0000000,  2.5198421,  1.0000000,
00767   2.5198421,  2.5198421,  2.5198421,  4.3267487,
00768   2.5198421,  6.3496042,  2.5198421,  8.5498797,
00769   2.5198421, 10.9027236,  2.5198421, 13.3905183,
00770   2.5198421, 16.0000000,  2.5198421, 18.7207544,
00771   2.5198421, 21.5443469,  2.5198421, 24.4637810,
00772   2.5198421, 27.4731418,  2.5198421, 30.5673509,
00773   2.5198421, 33.7419917,  2.5198421, 36.9931811,
00774   2.5198421,      64.0f,  4.3267487,  0.0000000,
00775   4.3267487,  1.0000000,  4.3267487,  2.5198421,
00776   4.3267487,  4.3267487,  4.3267487,  6.3496042,
00777   4.3267487,  8.5498797,  4.3267487, 10.9027236,
00778   4.3267487, 13.3905183,  4.3267487, 16.0000000,
00779   4.3267487, 18.7207544,  4.3267487, 21.5443469,
00780   4.3267487, 24.4637810,  4.3267487, 27.4731418,
00781   4.3267487, 30.5673509,  4.3267487, 33.7419917,
00782   4.3267487, 36.9931811,  4.3267487,      64.0f,
00783   6.3496042,  0.0000000,  6.3496042,  1.0000000,
00784   6.3496042,  2.5198421,  6.3496042,  4.3267487,
00785   6.3496042,  6.3496042,  6.3496042,  8.5498797,
00786   6.3496042, 10.9027236,  6.3496042, 13.3905183,
00787   6.3496042, 16.0000000,  6.3496042, 18.7207544,
00788   6.3496042, 21.5443469,  6.3496042, 24.4637810,
00789   6.3496042, 27.4731418,  6.3496042, 30.5673509,
00790   6.3496042, 33.7419917,  6.3496042, 36.9931811,
00791   6.3496042,      64.0f,  8.5498797,  0.0000000,
00792   8.5498797,  1.0000000,  8.5498797,  2.5198421,
00793   8.5498797,  4.3267487,  8.5498797,  6.3496042,
00794   8.5498797,  8.5498797,  8.5498797, 10.9027236,
00795   8.5498797, 13.3905183,  8.5498797, 16.0000000,
00796   8.5498797, 18.7207544,  8.5498797, 21.5443469,
00797   8.5498797, 24.4637810,  8.5498797, 27.4731418,
00798   8.5498797, 30.5673509,  8.5498797, 33.7419917,
00799   8.5498797, 36.9931811,  8.5498797,      64.0f,
00800  10.9027236,  0.0000000, 10.9027236,  1.0000000,
00801  10.9027236,  2.5198421, 10.9027236,  4.3267487,
00802  10.9027236,  6.3496042, 10.9027236,  8.5498797,
00803  10.9027236, 10.9027236, 10.9027236, 13.3905183,
00804  10.9027236, 16.0000000, 10.9027236, 18.7207544,
00805  10.9027236, 21.5443469, 10.9027236, 24.4637810,
00806  10.9027236, 27.4731418, 10.9027236, 30.5673509,
00807  10.9027236, 33.7419917, 10.9027236, 36.9931811,
00808  10.9027236,      64.0f, 13.3905183,  0.0000000,
00809  13.3905183,  1.0000000, 13.3905183,  2.5198421,
00810  13.3905183,  4.3267487, 13.3905183,  6.3496042,
00811  13.3905183,  8.5498797, 13.3905183, 10.9027236,
00812  13.3905183, 13.3905183, 13.3905183, 16.0000000,
00813  13.3905183, 18.7207544, 13.3905183, 21.5443469,
00814  13.3905183, 24.4637810, 13.3905183, 27.4731418,
00815  13.3905183, 30.5673509, 13.3905183, 33.7419917,
00816  13.3905183, 36.9931811, 13.3905183,      64.0f,
00817  16.0000000,  0.0000000, 16.0000000,  1.0000000,
00818  16.0000000,  2.5198421, 16.0000000,  4.3267487,
00819  16.0000000,  6.3496042, 16.0000000,  8.5498797,
00820  16.0000000, 10.9027236, 16.0000000, 13.3905183,
00821  16.0000000, 16.0000000, 16.0000000, 18.7207544,
00822  16.0000000, 21.5443469, 16.0000000, 24.4637810,
00823  16.0000000, 27.4731418, 16.0000000, 30.5673509,
00824  16.0000000, 33.7419917, 16.0000000, 36.9931811,
00825  16.0000000,      64.0f, 18.7207544,  0.0000000,
00826  18.7207544,  1.0000000, 18.7207544,  2.5198421,
00827  18.7207544,  4.3267487, 18.7207544,  6.3496042,
00828  18.7207544,  8.5498797, 18.7207544, 10.9027236,
00829  18.7207544, 13.3905183, 18.7207544, 16.0000000,
00830  18.7207544, 18.7207544, 18.7207544, 21.5443469,
00831  18.7207544, 24.4637810, 18.7207544, 27.4731418,
00832  18.7207544, 30.5673509, 18.7207544, 33.7419917,
00833  18.7207544, 36.9931811, 18.7207544,      64.0f,
00834  21.5443469,  0.0000000, 21.5443469,  1.0000000,
00835  21.5443469,  2.5198421, 21.5443469,  4.3267487,
00836  21.5443469,  6.3496042, 21.5443469,  8.5498797,
00837  21.5443469, 10.9027236, 21.5443469, 13.3905183,
00838  21.5443469, 16.0000000, 21.5443469, 18.7207544,
00839  21.5443469, 21.5443469, 21.5443469, 24.4637810,
00840  21.5443469, 27.4731418, 21.5443469, 30.5673509,
00841  21.5443469, 33.7419917, 21.5443469, 36.9931811,
00842  21.5443469,      64.0f, 24.4637810,  0.0000000,
00843  24.4637810,  1.0000000, 24.4637810,  2.5198421,
00844  24.4637810,  4.3267487, 24.4637810,  6.3496042,
00845  24.4637810,  8.5498797, 24.4637810, 10.9027236,
00846  24.4637810, 13.3905183, 24.4637810, 16.0000000,
00847  24.4637810, 18.7207544, 24.4637810, 21.5443469,
00848  24.4637810, 24.4637810, 24.4637810, 27.4731418,
00849  24.4637810, 30.5673509, 24.4637810, 33.7419917,
00850  24.4637810, 36.9931811, 24.4637810,      64.0f,
00851  27.4731418,  0.0000000, 27.4731418,  1.0000000,
00852  27.4731418,  2.5198421, 27.4731418,  4.3267487,
00853  27.4731418,  6.3496042, 27.4731418,  8.5498797,
00854  27.4731418, 10.9027236, 27.4731418, 13.3905183,
00855  27.4731418, 16.0000000, 27.4731418, 18.7207544,
00856  27.4731418, 21.5443469, 27.4731418, 24.4637810,
00857  27.4731418, 27.4731418, 27.4731418, 30.5673509,
00858  27.4731418, 33.7419917, 27.4731418, 36.9931811,
00859  27.4731418,      64.0f, 30.5673509,  0.0000000,
00860  30.5673509,  1.0000000, 30.5673509,  2.5198421,
00861  30.5673509,  4.3267487, 30.5673509,  6.3496042,
00862  30.5673509,  8.5498797, 30.5673509, 10.9027236,
00863  30.5673509, 13.3905183, 30.5673509, 16.0000000,
00864  30.5673509, 18.7207544, 30.5673509, 21.5443469,
00865  30.5673509, 24.4637810, 30.5673509, 27.4731418,
00866  30.5673509, 30.5673509, 30.5673509, 33.7419917,
00867  30.5673509, 36.9931811, 30.5673509,      64.0f,
00868  33.7419917,  0.0000000, 33.7419917,  1.0000000,
00869  33.7419917,  2.5198421, 33.7419917,  4.3267487,
00870  33.7419917,  6.3496042, 33.7419917,  8.5498797,
00871  33.7419917, 10.9027236, 33.7419917, 13.3905183,
00872  33.7419917, 16.0000000, 33.7419917, 18.7207544,
00873  33.7419917, 21.5443469, 33.7419917, 24.4637810,
00874  33.7419917, 27.4731418, 33.7419917, 30.5673509,
00875  33.7419917, 33.7419917, 33.7419917, 36.9931811,
00876  33.7419917,      64.0f, 36.9931811,  0.0000000,
00877  36.9931811,  1.0000000, 36.9931811,  2.5198421,
00878  36.9931811,  4.3267487, 36.9931811,  6.3496042,
00879  36.9931811,  8.5498797, 36.9931811, 10.9027236,
00880  36.9931811, 13.3905183, 36.9931811, 16.0000000,
00881  36.9931811, 18.7207544, 36.9931811, 21.5443469,
00882  36.9931811, 24.4637810, 36.9931811, 27.4731418,
00883  36.9931811, 30.5673509, 36.9931811, 33.7419917,
00884  36.9931811, 36.9931811, 36.9931811,      64.0f,
00885       64.0f,  0.0000000,      64.0f,  1.0000000,
00886       64.0f,  2.5198421,      64.0f,  4.3267487,
00887       64.0f,  6.3496042,      64.0f,  8.5498797,
00888       64.0f, 10.9027236,      64.0f, 13.3905183,
00889       64.0f, 16.0000000,      64.0f, 18.7207544,
00890       64.0f, 21.5443469,      64.0f, 24.4637810,
00891       64.0f, 27.4731418,      64.0f, 30.5673509,
00892       64.0f, 33.7419917,      64.0f, 36.9931811,
00893       64.0f,      64.0f,
00894 };
00895 
00896 const float * const ff_aac_codebook_vectors[] = {
00897     codebook_vector0, codebook_vector0, codebook_vector2,
00898     codebook_vector2, codebook_vector4, codebook_vector4,
00899     codebook_vector6, codebook_vector6, codebook_vector8,
00900     codebook_vector8, codebook_vector10,
00901 };
00902 
00903 static const float codebook_vector0_vals[] = {
00904    -1.0000000,  0.0000000,  1.0000000
00905 };
00906 
00907 /*
00908  * bits  0:1, 2:3, 4:5, 6:7  index into _vals array
00909  *       8:11                number of non-zero values
00910  *      12:15                bit mask of non-zero values
00911  */
00912 static const uint16_t codebook_vector02_idx[] = {
00913     0x0000, 0x8140, 0x8180, 0x4110, 0xc250, 0xc290, 0x4120, 0xc260, 0xc2a0,
00914     0x2104, 0xa244, 0xa284, 0x6214, 0xe354, 0xe394, 0x6224, 0xe364, 0xe3a4,
00915     0x2108, 0xa248, 0xa288, 0x6218, 0xe358, 0xe398, 0x6228, 0xe368, 0xe3a8,
00916     0x1101, 0x9241, 0x9281, 0x5211, 0xd351, 0xd391, 0x5221, 0xd361, 0xd3a1,
00917     0x3205, 0xb345, 0xb385, 0x7315, 0xf455, 0xf495, 0x7325, 0xf465, 0xf4a5,
00918     0x3209, 0xb349, 0xb389, 0x7319, 0xf459, 0xf499, 0x7329, 0xf469, 0xf4a9,
00919     0x1102, 0x9242, 0x9282, 0x5212, 0xd352, 0xd392, 0x5222, 0xd362, 0xd3a2,
00920     0x3206, 0xb346, 0xb386, 0x7316, 0xf456, 0xf496, 0x7326, 0xf466, 0xf4a6,
00921     0x320a, 0xb34a, 0xb38a, 0x731a, 0xf45a, 0xf49a, 0x732a, 0xf46a, 0xf4aa,
00922 };
00923 
00924 static const float codebook_vector4_vals[] = {
00925    -6.3496042, -4.3267487,
00926    -2.5198421, -1.0000000,
00927     0.0000000,  1.0000000,
00928     2.5198421,  4.3267487,
00929     6.3496042,
00930 };
00931 
00932 /*
00933  * bits  0:3, 4:7  index into _vals array
00934  */
00935 static const uint16_t codebook_vector4_idx[] = {
00936     0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070, 0x0080,
00937     0x0001, 0x0011, 0x0021, 0x0031, 0x0041, 0x0051, 0x0061, 0x0071, 0x0081,
00938     0x0002, 0x0012, 0x0022, 0x0032, 0x0042, 0x0052, 0x0062, 0x0072, 0x0082,
00939     0x0003, 0x0013, 0x0023, 0x0033, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083,
00940     0x0004, 0x0014, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, 0x0074, 0x0084,
00941     0x0005, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075, 0x0085,
00942     0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0076, 0x0086,
00943     0x0007, 0x0017, 0x0027, 0x0037, 0x0047, 0x0057, 0x0067, 0x0077, 0x0087,
00944     0x0008, 0x0018, 0x0028, 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088,
00945 };
00946 
00947 /*
00948  * bits  0:3, 4:7  index into _vals array
00949  *       8:11      number of non-zero values
00950  *      12:15      1: only second value non-zero
00951  *                 0: other cases
00952  */
00953 static const uint16_t codebook_vector6_idx[] = {
00954     0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
00955     0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261, 0x0271,
00956     0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262, 0x0272,
00957     0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263, 0x0273,
00958     0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264, 0x0274,
00959     0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265, 0x0275,
00960     0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266, 0x0276,
00961     0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267, 0x0277,
00962 };
00963 
00964 /*
00965  * bits  0:3, 4:7  index into _vals array
00966  *       8:11      number of non-zero values
00967  *      12:15      1: only second value non-zero
00968  *                 0: other cases
00969  */
00970 static const uint16_t codebook_vector8_idx[] = {
00971   0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
00972   0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0,
00973   0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261,
00974   0x0271, 0x0281, 0x0291, 0x02a1, 0x02b1, 0x02c1,
00975   0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262,
00976   0x0272, 0x0282, 0x0292, 0x02a2, 0x02b2, 0x02c2,
00977   0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263,
00978   0x0273, 0x0283, 0x0293, 0x02a3, 0x02b3, 0x02c3,
00979   0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264,
00980   0x0274, 0x0284, 0x0294, 0x02a4, 0x02b4, 0x02c4,
00981   0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265,
00982   0x0275, 0x0285, 0x0295, 0x02a5, 0x02b5, 0x02c5,
00983   0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266,
00984   0x0276, 0x0286, 0x0296, 0x02a6, 0x02b6, 0x02c6,
00985   0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267,
00986   0x0277, 0x0287, 0x0297, 0x02a7, 0x02b7, 0x02c7,
00987   0x1108, 0x0218, 0x0228, 0x0238, 0x0248, 0x0258, 0x0268,
00988   0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8,
00989   0x1109, 0x0219, 0x0229, 0x0239, 0x0249, 0x0259, 0x0269,
00990   0x0279, 0x0289, 0x0299, 0x02a9, 0x02b9, 0x02c9,
00991   0x110a, 0x021a, 0x022a, 0x023a, 0x024a, 0x025a, 0x026a,
00992   0x027a, 0x028a, 0x029a, 0x02aa, 0x02ba, 0x02ca,
00993   0x110b, 0x021b, 0x022b, 0x023b, 0x024b, 0x025b, 0x026b,
00994   0x027b, 0x028b, 0x029b, 0x02ab, 0x02bb, 0x02cb,
00995   0x110c, 0x021c, 0x022c, 0x023c, 0x024c, 0x025c, 0x026c,
00996   0x027c, 0x028c, 0x029c, 0x02ac, 0x02bc, 0x02cc,
00997 };
00998 
00999 static const float codebook_vector10_vals[] = {
01000      0.0000000,  1.0000000,
01001      2.5198421,  4.3267487,
01002      6.3496042,  8.5498797,
01003     10.9027236, 13.3905183,
01004     16.0000000, 18.7207544,
01005     21.5443469, 24.4637810,
01006     27.4731418, 30.5673509,
01007     33.7419917, 36.9931811,
01008 };
01009 
01010 /*
01011  * bits  0:3, 4:7  index into _vals array
01012  *       8:9       bit mask of escape-coded entries
01013  *      12:15      number of non-zero values
01014  */
01015 static const uint16_t codebook_vector10_idx[] = {
01016     0x0000, 0x1010, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
01017     0x1080, 0x1090, 0x10a0, 0x10b0, 0x10c0, 0x10d0, 0x10e0, 0x10f0, 0x1200,
01018     0x1001, 0x2011, 0x2021, 0x2031, 0x2041, 0x2051, 0x2061, 0x2071,
01019     0x2081, 0x2091, 0x20a1, 0x20b1, 0x20c1, 0x20d1, 0x20e1, 0x20f1, 0x2201,
01020     0x1002, 0x2012, 0x2022, 0x2032, 0x2042, 0x2052, 0x2062, 0x2072,
01021     0x2082, 0x2092, 0x20a2, 0x20b2, 0x20c2, 0x20d2, 0x20e2, 0x20f2, 0x2202,
01022     0x1003, 0x2013, 0x2023, 0x2033, 0x2043, 0x2053, 0x2063, 0x2073,
01023     0x2083, 0x2093, 0x20a3, 0x20b3, 0x20c3, 0x20d3, 0x20e3, 0x20f3, 0x2203,
01024     0x1004, 0x2014, 0x2024, 0x2034, 0x2044, 0x2054, 0x2064, 0x2074,
01025     0x2084, 0x2094, 0x20a4, 0x20b4, 0x20c4, 0x20d4, 0x20e4, 0x20f4, 0x2204,
01026     0x1005, 0x2015, 0x2025, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
01027     0x2085, 0x2095, 0x20a5, 0x20b5, 0x20c5, 0x20d5, 0x20e5, 0x20f5, 0x2205,
01028     0x1006, 0x2016, 0x2026, 0x2036, 0x2046, 0x2056, 0x2066, 0x2076,
01029     0x2086, 0x2096, 0x20a6, 0x20b6, 0x20c6, 0x20d6, 0x20e6, 0x20f6, 0x2206,
01030     0x1007, 0x2017, 0x2027, 0x2037, 0x2047, 0x2057, 0x2067, 0x2077,
01031     0x2087, 0x2097, 0x20a7, 0x20b7, 0x20c7, 0x20d7, 0x20e7, 0x20f7, 0x2207,
01032     0x1008, 0x2018, 0x2028, 0x2038, 0x2048, 0x2058, 0x2068, 0x2078,
01033     0x2088, 0x2098, 0x20a8, 0x20b8, 0x20c8, 0x20d8, 0x20e8, 0x20f8, 0x2208,
01034     0x1009, 0x2019, 0x2029, 0x2039, 0x2049, 0x2059, 0x2069, 0x2079,
01035     0x2089, 0x2099, 0x20a9, 0x20b9, 0x20c9, 0x20d9, 0x20e9, 0x20f9, 0x2209,
01036     0x100a, 0x201a, 0x202a, 0x203a, 0x204a, 0x205a, 0x206a, 0x207a,
01037     0x208a, 0x209a, 0x20aa, 0x20ba, 0x20ca, 0x20da, 0x20ea, 0x20fa, 0x220a,
01038     0x100b, 0x201b, 0x202b, 0x203b, 0x204b, 0x205b, 0x206b, 0x207b,
01039     0x208b, 0x209b, 0x20ab, 0x20bb, 0x20cb, 0x20db, 0x20eb, 0x20fb, 0x220b,
01040     0x100c, 0x201c, 0x202c, 0x203c, 0x204c, 0x205c, 0x206c, 0x207c,
01041     0x208c, 0x209c, 0x20ac, 0x20bc, 0x20cc, 0x20dc, 0x20ec, 0x20fc, 0x220c,
01042     0x100d, 0x201d, 0x202d, 0x203d, 0x204d, 0x205d, 0x206d, 0x207d,
01043     0x208d, 0x209d, 0x20ad, 0x20bd, 0x20cd, 0x20dd, 0x20ed, 0x20fd, 0x220d,
01044     0x100e, 0x201e, 0x202e, 0x203e, 0x204e, 0x205e, 0x206e, 0x207e,
01045     0x208e, 0x209e, 0x20ae, 0x20be, 0x20ce, 0x20de, 0x20ee, 0x20fe, 0x220e,
01046     0x100f, 0x201f, 0x202f, 0x203f, 0x204f, 0x205f, 0x206f, 0x207f,
01047     0x208f, 0x209f, 0x20af, 0x20bf, 0x20cf, 0x20df, 0x20ef, 0x20ff, 0x220f,
01048     0x1100, 0x2110, 0x2120, 0x2130, 0x2140, 0x2150, 0x2160, 0x2170,
01049     0x2180, 0x2190, 0x21a0, 0x21b0, 0x21c0, 0x21d0, 0x21e0, 0x21f0, 0x2300,
01050 };
01051 
01052 const float *const ff_aac_codebook_vector_vals[] = {
01053     codebook_vector0_vals,  codebook_vector0_vals,
01054     codebook_vector10_vals, codebook_vector10_vals,
01055     codebook_vector4_vals,  codebook_vector4_vals,
01056     codebook_vector10_vals, codebook_vector10_vals,
01057     codebook_vector10_vals, codebook_vector10_vals,
01058     codebook_vector10_vals,
01059 };
01060 
01061 const uint16_t *const ff_aac_codebook_vector_idx[] = {
01062     codebook_vector02_idx, codebook_vector02_idx,
01063     codebook_vector02_idx, codebook_vector02_idx,
01064     codebook_vector4_idx,  codebook_vector4_idx,
01065     codebook_vector6_idx,  codebook_vector6_idx,
01066     codebook_vector8_idx,  codebook_vector8_idx,
01067     codebook_vector10_idx,
01068 };
01069 
01070 /* @name swb_offsets
01071  * Sample offset into the window indicating the beginning of a scalefactor
01072  * window band
01073  *
01074  * scalefactor window band - term for scalefactor bands within a window,
01075  * given in Table 4.110 to Table 4.128.
01076  *
01077  * scalefactor band - a set of spectral coefficients which are scaled by one
01078  * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
01079  * may contain several scalefactor window bands of corresponding frequency. For
01080  * all other window_sequences scalefactor bands and scalefactor window bands are
01081  * identical.
01082  * @{
01083  */
01084 
01085 static const uint16_t swb_offset_1024_96[] = {
01086       0,   4,   8,  12,  16,  20,  24,  28,
01087      32,  36,  40,  44,  48,  52,  56,  64,
01088      72,  80,  88,  96, 108, 120, 132, 144,
01089     156, 172, 188, 212, 240, 276, 320, 384,
01090     448, 512, 576, 640, 704, 768, 832, 896,
01091     960, 1024
01092 };
01093 
01094 static const uint16_t swb_offset_128_96[] = {
01095     0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
01096 };
01097 
01098 static const uint16_t swb_offset_1024_64[] = {
01099       0,   4,   8,  12,  16,  20,  24,  28,
01100      32,  36,  40,  44,  48,  52,  56,  64,
01101      72,  80,  88, 100, 112, 124, 140, 156,
01102     172, 192, 216, 240, 268, 304, 344, 384,
01103     424, 464, 504, 544, 584, 624, 664, 704,
01104     744, 784, 824, 864, 904, 944, 984, 1024
01105 };
01106 
01107 static const uint16_t swb_offset_1024_48[] = {
01108       0,   4,   8,  12,  16,  20,  24,  28,
01109      32,  36,  40,  48,  56,  64,  72,  80,
01110      88,  96, 108, 120, 132, 144, 160, 176,
01111     196, 216, 240, 264, 292, 320, 352, 384,
01112     416, 448, 480, 512, 544, 576, 608, 640,
01113     672, 704, 736, 768, 800, 832, 864, 896,
01114     928, 1024
01115 };
01116 
01117 static const uint16_t swb_offset_128_48[] = {
01118      0,   4,   8,  12,  16,  20,  28,  36,
01119     44,  56,  68,  80,  96, 112, 128
01120 };
01121 
01122 static const uint16_t swb_offset_1024_32[] = {
01123       0,   4,   8,  12,  16,  20,  24,  28,
01124      32,  36,  40,  48,  56,  64,  72,  80,
01125      88,  96, 108, 120, 132, 144, 160, 176,
01126     196, 216, 240, 264, 292, 320, 352, 384,
01127     416, 448, 480, 512, 544, 576, 608, 640,
01128     672, 704, 736, 768, 800, 832, 864, 896,
01129     928, 960, 992, 1024
01130 };
01131 
01132 static const uint16_t swb_offset_1024_24[] = {
01133       0,   4,   8,  12,  16,  20,  24,  28,
01134      32,  36,  40,  44,  52,  60,  68,  76,
01135      84,  92, 100, 108, 116, 124, 136, 148,
01136     160, 172, 188, 204, 220, 240, 260, 284,
01137     308, 336, 364, 396, 432, 468, 508, 552,
01138     600, 652, 704, 768, 832, 896, 960, 1024
01139 };
01140 
01141 static const uint16_t swb_offset_128_24[] = {
01142      0,   4,   8,  12,  16,  20,  24,  28,
01143     36,  44,  52,  64,  76,  92, 108, 128
01144 };
01145 
01146 static const uint16_t swb_offset_1024_16[] = {
01147       0,   8,  16,  24,  32,  40,  48,  56,
01148      64,  72,  80,  88, 100, 112, 124, 136,
01149     148, 160, 172, 184, 196, 212, 228, 244,
01150     260, 280, 300, 320, 344, 368, 396, 424,
01151     456, 492, 532, 572, 616, 664, 716, 772,
01152     832, 896, 960, 1024
01153 };
01154 
01155 static const uint16_t swb_offset_128_16[] = {
01156      0,   4,   8,  12,  16,  20,  24,  28,
01157     32,  40,  48,  60,  72,  88, 108, 128
01158 };
01159 
01160 static const uint16_t swb_offset_1024_8[] = {
01161       0,  12,  24,  36,  48,  60,  72,  84,
01162      96, 108, 120, 132, 144, 156, 172, 188,
01163     204, 220, 236, 252, 268, 288, 308, 328,
01164     348, 372, 396, 420, 448, 476, 508, 544,
01165     580, 620, 664, 712, 764, 820, 880, 944,
01166     1024
01167 };
01168 
01169 static const uint16_t swb_offset_128_8[] = {
01170      0,   4,   8,  12,  16,  20,  24,  28,
01171     36,  44,  52,  60,  72,  88, 108, 128
01172 };
01173 
01174 const uint16_t * const ff_swb_offset_1024[] = {
01175     swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
01176     swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
01177     swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
01178     swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
01179     swb_offset_1024_8
01180 };
01181 
01182 const uint16_t * const ff_swb_offset_128[] = {
01183     /* The last entry on the following row is swb_offset_128_64 but is a
01184        duplicate of swb_offset_128_96. */
01185     swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
01186     swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
01187     swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
01188     swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
01189     swb_offset_128_8
01190 };
01191 
01192 // @}
01193 
01194 /* @name ff_tns_max_bands
01195  * The maximum number of scalefactor bands on which TNS can operate for the long
01196  * and short transforms respectively. The index to these tables is related to
01197  * the sample rate of the audio.
01198  * @{
01199  */
01200 const uint8_t ff_tns_max_bands_1024[] = {
01201     31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
01202 };
01203 
01204 const uint8_t ff_tns_max_bands_128[] = {
01205     9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
01206 };
01207 // @}

Generated on Fri Sep 16 2011 17:17:33 for FFmpeg by  doxygen 1.7.1