Libav 0.7.1
|
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 Libav. 00007 * 00008 * Libav 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 * Libav 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 Libav; 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 // @}