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

libavcodec/mpegaudiodectab.h

Go to the documentation of this file.
00001 /*
00002  * MPEG Audio decoder
00003  * copyright (c) 2002 Fabrice Bellard
00004  *
00005  * This file is part of FFmpeg.
00006  *
00007  * FFmpeg is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * FFmpeg is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with FFmpeg; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00020  */
00021 
00027 #ifndef AVCODEC_MPEGAUDIODECTAB_H
00028 #define AVCODEC_MPEGAUDIODECTAB_H
00029 
00030 #include <stdint.h>
00031 #include "mpegaudio.h"
00032 
00033 /*******************************************************/
00034 /* layer 3 tables */
00035 
00036 /* layer3 scale factor size */
00037 static const uint8_t slen_table[2][16] = {
00038     { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
00039     { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 },
00040 };
00041 
00042 /* number of lsf scale factors for a given size */
00043 static const uint8_t lsf_nsf_table[6][3][4] = {
00044     { {  6,  5,  5, 5 }, {  9,  9,  9, 9 }, {  6,  9,  9, 9 } },
00045     { {  6,  5,  7, 3 }, {  9,  9, 12, 6 }, {  6,  9, 12, 6 } },
00046     { { 11, 10,  0, 0 }, { 18, 18,  0, 0 }, { 15, 18,  0, 0 } },
00047     { {  7,  7,  7, 0 }, { 12, 12, 12, 0 }, {  6, 15, 12, 0 } },
00048     { {  6,  6,  6, 3 }, { 12,  9,  9, 6 }, {  6, 12,  9, 6 } },
00049     { {  8,  8,  5, 0 }, { 15, 12,  9, 0 }, {  6, 18,  9, 0 } },
00050 };
00051 
00052 /* mpegaudio layer 3 huffman tables */
00053 
00054 static const uint16_t mpa_huffcodes_1[4] = {
00055  0x0001, 0x0001, 0x0001, 0x0000,
00056 };
00057 
00058 static const uint8_t mpa_huffbits_1[4] = {
00059   1,  3,  2,  3,
00060 };
00061 
00062 static const uint16_t mpa_huffcodes_2[9] = {
00063  0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002,
00064  0x0000,
00065 };
00066 
00067 static const uint8_t mpa_huffbits_2[9] = {
00068   1,  3,  6,  3,  3,  5,  5,  5,
00069   6,
00070 };
00071 
00072 static const uint16_t mpa_huffcodes_3[9] = {
00073  0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002,
00074  0x0000,
00075 };
00076 
00077 static const uint8_t mpa_huffbits_3[9] = {
00078   2,  2,  6,  3,  2,  5,  5,  5,
00079   6,
00080 };
00081 
00082 static const uint16_t mpa_huffcodes_5[16] = {
00083  0x0001, 0x0002, 0x0006, 0x0005, 0x0003, 0x0001, 0x0004, 0x0004,
00084  0x0007, 0x0005, 0x0007, 0x0001, 0x0006, 0x0001, 0x0001, 0x0000,
00085 };
00086 
00087 static const uint8_t mpa_huffbits_5[16] = {
00088   1,  3,  6,  7,  3,  3,  6,  7,
00089   6,  6,  7,  8,  7,  6,  7,  8,
00090 };
00091 
00092 static const uint16_t mpa_huffcodes_6[16] = {
00093  0x0007, 0x0003, 0x0005, 0x0001, 0x0006, 0x0002, 0x0003, 0x0002,
00094  0x0005, 0x0004, 0x0004, 0x0001, 0x0003, 0x0003, 0x0002, 0x0000,
00095 };
00096 
00097 static const uint8_t mpa_huffbits_6[16] = {
00098   3,  3,  5,  7,  3,  2,  4,  5,
00099   4,  4,  5,  6,  6,  5,  6,  7,
00100 };
00101 
00102 static const uint16_t mpa_huffcodes_7[36] = {
00103  0x0001, 0x0002, 0x000a, 0x0013, 0x0010, 0x000a, 0x0003, 0x0003,
00104  0x0007, 0x000a, 0x0005, 0x0003, 0x000b, 0x0004, 0x000d, 0x0011,
00105  0x0008, 0x0004, 0x000c, 0x000b, 0x0012, 0x000f, 0x000b, 0x0002,
00106  0x0007, 0x0006, 0x0009, 0x000e, 0x0003, 0x0001, 0x0006, 0x0004,
00107  0x0005, 0x0003, 0x0002, 0x0000,
00108 };
00109 
00110 static const uint8_t mpa_huffbits_7[36] = {
00111   1,  3,  6,  8,  8,  9,  3,  4,
00112   6,  7,  7,  8,  6,  5,  7,  8,
00113   8,  9,  7,  7,  8,  9,  9,  9,
00114   7,  7,  8,  9,  9, 10,  8,  8,
00115   9, 10, 10, 10,
00116 };
00117 
00118 static const uint16_t mpa_huffcodes_8[36] = {
00119  0x0003, 0x0004, 0x0006, 0x0012, 0x000c, 0x0005, 0x0005, 0x0001,
00120  0x0002, 0x0010, 0x0009, 0x0003, 0x0007, 0x0003, 0x0005, 0x000e,
00121  0x0007, 0x0003, 0x0013, 0x0011, 0x000f, 0x000d, 0x000a, 0x0004,
00122  0x000d, 0x0005, 0x0008, 0x000b, 0x0005, 0x0001, 0x000c, 0x0004,
00123  0x0004, 0x0001, 0x0001, 0x0000,
00124 };
00125 
00126 static const uint8_t mpa_huffbits_8[36] = {
00127   2,  3,  6,  8,  8,  9,  3,  2,
00128   4,  8,  8,  8,  6,  4,  6,  8,
00129   8,  9,  8,  8,  8,  9,  9, 10,
00130   8,  7,  8,  9, 10, 10,  9,  8,
00131   9,  9, 11, 11,
00132 };
00133 
00134 static const uint16_t mpa_huffcodes_9[36] = {
00135  0x0007, 0x0005, 0x0009, 0x000e, 0x000f, 0x0007, 0x0006, 0x0004,
00136  0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0006, 0x0008, 0x0008,
00137  0x0008, 0x0005, 0x000f, 0x0006, 0x0009, 0x000a, 0x0005, 0x0001,
00138  0x000b, 0x0007, 0x0009, 0x0006, 0x0004, 0x0001, 0x000e, 0x0004,
00139  0x0006, 0x0002, 0x0006, 0x0000,
00140 };
00141 
00142 static const uint8_t mpa_huffbits_9[36] = {
00143   3,  3,  5,  6,  8,  9,  3,  3,
00144   4,  5,  6,  8,  4,  4,  5,  6,
00145   7,  8,  6,  5,  6,  7,  7,  8,
00146   7,  6,  7,  7,  8,  9,  8,  7,
00147   8,  8,  9,  9,
00148 };
00149 
00150 static const uint16_t mpa_huffcodes_10[64] = {
00151  0x0001, 0x0002, 0x000a, 0x0017, 0x0023, 0x001e, 0x000c, 0x0011,
00152  0x0003, 0x0003, 0x0008, 0x000c, 0x0012, 0x0015, 0x000c, 0x0007,
00153  0x000b, 0x0009, 0x000f, 0x0015, 0x0020, 0x0028, 0x0013, 0x0006,
00154  0x000e, 0x000d, 0x0016, 0x0022, 0x002e, 0x0017, 0x0012, 0x0007,
00155  0x0014, 0x0013, 0x0021, 0x002f, 0x001b, 0x0016, 0x0009, 0x0003,
00156  0x001f, 0x0016, 0x0029, 0x001a, 0x0015, 0x0014, 0x0005, 0x0003,
00157  0x000e, 0x000d, 0x000a, 0x000b, 0x0010, 0x0006, 0x0005, 0x0001,
00158  0x0009, 0x0008, 0x0007, 0x0008, 0x0004, 0x0004, 0x0002, 0x0000,
00159 };
00160 
00161 static const uint8_t mpa_huffbits_10[64] = {
00162   1,  3,  6,  8,  9,  9,  9, 10,
00163   3,  4,  6,  7,  8,  9,  8,  8,
00164   6,  6,  7,  8,  9, 10,  9,  9,
00165   7,  7,  8,  9, 10, 10,  9, 10,
00166   8,  8,  9, 10, 10, 10, 10, 10,
00167   9,  9, 10, 10, 11, 11, 10, 11,
00168   8,  8,  9, 10, 10, 10, 11, 11,
00169   9,  8,  9, 10, 10, 11, 11, 11,
00170 };
00171 
00172 static const uint16_t mpa_huffcodes_11[64] = {
00173  0x0003, 0x0004, 0x000a, 0x0018, 0x0022, 0x0021, 0x0015, 0x000f,
00174  0x0005, 0x0003, 0x0004, 0x000a, 0x0020, 0x0011, 0x000b, 0x000a,
00175  0x000b, 0x0007, 0x000d, 0x0012, 0x001e, 0x001f, 0x0014, 0x0005,
00176  0x0019, 0x000b, 0x0013, 0x003b, 0x001b, 0x0012, 0x000c, 0x0005,
00177  0x0023, 0x0021, 0x001f, 0x003a, 0x001e, 0x0010, 0x0007, 0x0005,
00178  0x001c, 0x001a, 0x0020, 0x0013, 0x0011, 0x000f, 0x0008, 0x000e,
00179  0x000e, 0x000c, 0x0009, 0x000d, 0x000e, 0x0009, 0x0004, 0x0001,
00180  0x000b, 0x0004, 0x0006, 0x0006, 0x0006, 0x0003, 0x0002, 0x0000,
00181 };
00182 
00183 static const uint8_t mpa_huffbits_11[64] = {
00184   2,  3,  5,  7,  8,  9,  8,  9,
00185   3,  3,  4,  6,  8,  8,  7,  8,
00186   5,  5,  6,  7,  8,  9,  8,  8,
00187   7,  6,  7,  9,  8, 10,  8,  9,
00188   8,  8,  8,  9,  9, 10,  9, 10,
00189   8,  8,  9, 10, 10, 11, 10, 11,
00190   8,  7,  7,  8,  9, 10, 10, 10,
00191   8,  7,  8,  9, 10, 10, 10, 10,
00192 };
00193 
00194 static const uint16_t mpa_huffcodes_12[64] = {
00195  0x0009, 0x0006, 0x0010, 0x0021, 0x0029, 0x0027, 0x0026, 0x001a,
00196  0x0007, 0x0005, 0x0006, 0x0009, 0x0017, 0x0010, 0x001a, 0x000b,
00197  0x0011, 0x0007, 0x000b, 0x000e, 0x0015, 0x001e, 0x000a, 0x0007,
00198  0x0011, 0x000a, 0x000f, 0x000c, 0x0012, 0x001c, 0x000e, 0x0005,
00199  0x0020, 0x000d, 0x0016, 0x0013, 0x0012, 0x0010, 0x0009, 0x0005,
00200  0x0028, 0x0011, 0x001f, 0x001d, 0x0011, 0x000d, 0x0004, 0x0002,
00201  0x001b, 0x000c, 0x000b, 0x000f, 0x000a, 0x0007, 0x0004, 0x0001,
00202  0x001b, 0x000c, 0x0008, 0x000c, 0x0006, 0x0003, 0x0001, 0x0000,
00203 };
00204 
00205 static const uint8_t mpa_huffbits_12[64] = {
00206   4,  3,  5,  7,  8,  9,  9,  9,
00207   3,  3,  4,  5,  7,  7,  8,  8,
00208   5,  4,  5,  6,  7,  8,  7,  8,
00209   6,  5,  6,  6,  7,  8,  8,  8,
00210   7,  6,  7,  7,  8,  8,  8,  9,
00211   8,  7,  8,  8,  8,  9,  8,  9,
00212   8,  7,  7,  8,  8,  9,  9, 10,
00213   9,  8,  8,  9,  9,  9,  9, 10,
00214 };
00215 
00216 static const uint16_t mpa_huffcodes_13[256] = {
00217  0x0001, 0x0005, 0x000e, 0x0015, 0x0022, 0x0033, 0x002e, 0x0047,
00218  0x002a, 0x0034, 0x0044, 0x0034, 0x0043, 0x002c, 0x002b, 0x0013,
00219  0x0003, 0x0004, 0x000c, 0x0013, 0x001f, 0x001a, 0x002c, 0x0021,
00220  0x001f, 0x0018, 0x0020, 0x0018, 0x001f, 0x0023, 0x0016, 0x000e,
00221  0x000f, 0x000d, 0x0017, 0x0024, 0x003b, 0x0031, 0x004d, 0x0041,
00222  0x001d, 0x0028, 0x001e, 0x0028, 0x001b, 0x0021, 0x002a, 0x0010,
00223  0x0016, 0x0014, 0x0025, 0x003d, 0x0038, 0x004f, 0x0049, 0x0040,
00224  0x002b, 0x004c, 0x0038, 0x0025, 0x001a, 0x001f, 0x0019, 0x000e,
00225  0x0023, 0x0010, 0x003c, 0x0039, 0x0061, 0x004b, 0x0072, 0x005b,
00226  0x0036, 0x0049, 0x0037, 0x0029, 0x0030, 0x0035, 0x0017, 0x0018,
00227  0x003a, 0x001b, 0x0032, 0x0060, 0x004c, 0x0046, 0x005d, 0x0054,
00228  0x004d, 0x003a, 0x004f, 0x001d, 0x004a, 0x0031, 0x0029, 0x0011,
00229  0x002f, 0x002d, 0x004e, 0x004a, 0x0073, 0x005e, 0x005a, 0x004f,
00230  0x0045, 0x0053, 0x0047, 0x0032, 0x003b, 0x0026, 0x0024, 0x000f,
00231  0x0048, 0x0022, 0x0038, 0x005f, 0x005c, 0x0055, 0x005b, 0x005a,
00232  0x0056, 0x0049, 0x004d, 0x0041, 0x0033, 0x002c, 0x002b, 0x002a,
00233  0x002b, 0x0014, 0x001e, 0x002c, 0x0037, 0x004e, 0x0048, 0x0057,
00234  0x004e, 0x003d, 0x002e, 0x0036, 0x0025, 0x001e, 0x0014, 0x0010,
00235  0x0035, 0x0019, 0x0029, 0x0025, 0x002c, 0x003b, 0x0036, 0x0051,
00236  0x0042, 0x004c, 0x0039, 0x0036, 0x0025, 0x0012, 0x0027, 0x000b,
00237  0x0023, 0x0021, 0x001f, 0x0039, 0x002a, 0x0052, 0x0048, 0x0050,
00238  0x002f, 0x003a, 0x0037, 0x0015, 0x0016, 0x001a, 0x0026, 0x0016,
00239  0x0035, 0x0019, 0x0017, 0x0026, 0x0046, 0x003c, 0x0033, 0x0024,
00240  0x0037, 0x001a, 0x0022, 0x0017, 0x001b, 0x000e, 0x0009, 0x0007,
00241  0x0022, 0x0020, 0x001c, 0x0027, 0x0031, 0x004b, 0x001e, 0x0034,
00242  0x0030, 0x0028, 0x0034, 0x001c, 0x0012, 0x0011, 0x0009, 0x0005,
00243  0x002d, 0x0015, 0x0022, 0x0040, 0x0038, 0x0032, 0x0031, 0x002d,
00244  0x001f, 0x0013, 0x000c, 0x000f, 0x000a, 0x0007, 0x0006, 0x0003,
00245  0x0030, 0x0017, 0x0014, 0x0027, 0x0024, 0x0023, 0x0035, 0x0015,
00246  0x0010, 0x0017, 0x000d, 0x000a, 0x0006, 0x0001, 0x0004, 0x0002,
00247  0x0010, 0x000f, 0x0011, 0x001b, 0x0019, 0x0014, 0x001d, 0x000b,
00248  0x0011, 0x000c, 0x0010, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001,
00249 };
00250 
00251 static const uint8_t mpa_huffbits_13[256] = {
00252   1,  4,  6,  7,  8,  9,  9, 10,
00253   9, 10, 11, 11, 12, 12, 13, 13,
00254   3,  4,  6,  7,  8,  8,  9,  9,
00255   9,  9, 10, 10, 11, 12, 12, 12,
00256   6,  6,  7,  8,  9,  9, 10, 10,
00257   9, 10, 10, 11, 11, 12, 13, 13,
00258   7,  7,  8,  9,  9, 10, 10, 10,
00259  10, 11, 11, 11, 11, 12, 13, 13,
00260   8,  7,  9,  9, 10, 10, 11, 11,
00261  10, 11, 11, 12, 12, 13, 13, 14,
00262   9,  8,  9, 10, 10, 10, 11, 11,
00263  11, 11, 12, 11, 13, 13, 14, 14,
00264   9,  9, 10, 10, 11, 11, 11, 11,
00265  11, 12, 12, 12, 13, 13, 14, 14,
00266  10,  9, 10, 11, 11, 11, 12, 12,
00267  12, 12, 13, 13, 13, 14, 16, 16,
00268   9,  8,  9, 10, 10, 11, 11, 12,
00269  12, 12, 12, 13, 13, 14, 15, 15,
00270  10,  9, 10, 10, 11, 11, 11, 13,
00271  12, 13, 13, 14, 14, 14, 16, 15,
00272  10, 10, 10, 11, 11, 12, 12, 13,
00273  12, 13, 14, 13, 14, 15, 16, 17,
00274  11, 10, 10, 11, 12, 12, 12, 12,
00275  13, 13, 13, 14, 15, 15, 15, 16,
00276  11, 11, 11, 12, 12, 13, 12, 13,
00277  14, 14, 15, 15, 15, 16, 16, 16,
00278  12, 11, 12, 13, 13, 13, 14, 14,
00279  14, 14, 14, 15, 16, 15, 16, 16,
00280  13, 12, 12, 13, 13, 13, 15, 14,
00281  14, 17, 15, 15, 15, 17, 16, 16,
00282  12, 12, 13, 14, 14, 14, 15, 14,
00283  15, 15, 16, 16, 19, 18, 19, 16,
00284 };
00285 
00286 static const uint16_t mpa_huffcodes_15[256] = {
00287  0x0007, 0x000c, 0x0012, 0x0035, 0x002f, 0x004c, 0x007c, 0x006c,
00288  0x0059, 0x007b, 0x006c, 0x0077, 0x006b, 0x0051, 0x007a, 0x003f,
00289  0x000d, 0x0005, 0x0010, 0x001b, 0x002e, 0x0024, 0x003d, 0x0033,
00290  0x002a, 0x0046, 0x0034, 0x0053, 0x0041, 0x0029, 0x003b, 0x0024,
00291  0x0013, 0x0011, 0x000f, 0x0018, 0x0029, 0x0022, 0x003b, 0x0030,
00292  0x0028, 0x0040, 0x0032, 0x004e, 0x003e, 0x0050, 0x0038, 0x0021,
00293  0x001d, 0x001c, 0x0019, 0x002b, 0x0027, 0x003f, 0x0037, 0x005d,
00294  0x004c, 0x003b, 0x005d, 0x0048, 0x0036, 0x004b, 0x0032, 0x001d,
00295  0x0034, 0x0016, 0x002a, 0x0028, 0x0043, 0x0039, 0x005f, 0x004f,
00296  0x0048, 0x0039, 0x0059, 0x0045, 0x0031, 0x0042, 0x002e, 0x001b,
00297  0x004d, 0x0025, 0x0023, 0x0042, 0x003a, 0x0034, 0x005b, 0x004a,
00298  0x003e, 0x0030, 0x004f, 0x003f, 0x005a, 0x003e, 0x0028, 0x0026,
00299  0x007d, 0x0020, 0x003c, 0x0038, 0x0032, 0x005c, 0x004e, 0x0041,
00300  0x0037, 0x0057, 0x0047, 0x0033, 0x0049, 0x0033, 0x0046, 0x001e,
00301  0x006d, 0x0035, 0x0031, 0x005e, 0x0058, 0x004b, 0x0042, 0x007a,
00302  0x005b, 0x0049, 0x0038, 0x002a, 0x0040, 0x002c, 0x0015, 0x0019,
00303  0x005a, 0x002b, 0x0029, 0x004d, 0x0049, 0x003f, 0x0038, 0x005c,
00304  0x004d, 0x0042, 0x002f, 0x0043, 0x0030, 0x0035, 0x0024, 0x0014,
00305  0x0047, 0x0022, 0x0043, 0x003c, 0x003a, 0x0031, 0x0058, 0x004c,
00306  0x0043, 0x006a, 0x0047, 0x0036, 0x0026, 0x0027, 0x0017, 0x000f,
00307  0x006d, 0x0035, 0x0033, 0x002f, 0x005a, 0x0052, 0x003a, 0x0039,
00308  0x0030, 0x0048, 0x0039, 0x0029, 0x0017, 0x001b, 0x003e, 0x0009,
00309  0x0056, 0x002a, 0x0028, 0x0025, 0x0046, 0x0040, 0x0034, 0x002b,
00310  0x0046, 0x0037, 0x002a, 0x0019, 0x001d, 0x0012, 0x000b, 0x000b,
00311  0x0076, 0x0044, 0x001e, 0x0037, 0x0032, 0x002e, 0x004a, 0x0041,
00312  0x0031, 0x0027, 0x0018, 0x0010, 0x0016, 0x000d, 0x000e, 0x0007,
00313  0x005b, 0x002c, 0x0027, 0x0026, 0x0022, 0x003f, 0x0034, 0x002d,
00314  0x001f, 0x0034, 0x001c, 0x0013, 0x000e, 0x0008, 0x0009, 0x0003,
00315  0x007b, 0x003c, 0x003a, 0x0035, 0x002f, 0x002b, 0x0020, 0x0016,
00316  0x0025, 0x0018, 0x0011, 0x000c, 0x000f, 0x000a, 0x0002, 0x0001,
00317  0x0047, 0x0025, 0x0022, 0x001e, 0x001c, 0x0014, 0x0011, 0x001a,
00318  0x0015, 0x0010, 0x000a, 0x0006, 0x0008, 0x0006, 0x0002, 0x0000,
00319 };
00320 
00321 static const uint8_t mpa_huffbits_15[256] = {
00322   3,  4,  5,  7,  7,  8,  9,  9,
00323   9, 10, 10, 11, 11, 11, 12, 13,
00324   4,  3,  5,  6,  7,  7,  8,  8,
00325   8,  9,  9, 10, 10, 10, 11, 11,
00326   5,  5,  5,  6,  7,  7,  8,  8,
00327   8,  9,  9, 10, 10, 11, 11, 11,
00328   6,  6,  6,  7,  7,  8,  8,  9,
00329   9,  9, 10, 10, 10, 11, 11, 11,
00330   7,  6,  7,  7,  8,  8,  9,  9,
00331   9,  9, 10, 10, 10, 11, 11, 11,
00332   8,  7,  7,  8,  8,  8,  9,  9,
00333   9,  9, 10, 10, 11, 11, 11, 12,
00334   9,  7,  8,  8,  8,  9,  9,  9,
00335   9, 10, 10, 10, 11, 11, 12, 12,
00336   9,  8,  8,  9,  9,  9,  9, 10,
00337  10, 10, 10, 10, 11, 11, 11, 12,
00338   9,  8,  8,  9,  9,  9,  9, 10,
00339  10, 10, 10, 11, 11, 12, 12, 12,
00340   9,  8,  9,  9,  9,  9, 10, 10,
00341  10, 11, 11, 11, 11, 12, 12, 12,
00342  10,  9,  9,  9, 10, 10, 10, 10,
00343  10, 11, 11, 11, 11, 12, 13, 12,
00344  10,  9,  9,  9, 10, 10, 10, 10,
00345  11, 11, 11, 11, 12, 12, 12, 13,
00346  11, 10,  9, 10, 10, 10, 11, 11,
00347  11, 11, 11, 11, 12, 12, 13, 13,
00348  11, 10, 10, 10, 10, 11, 11, 11,
00349  11, 12, 12, 12, 12, 12, 13, 13,
00350  12, 11, 11, 11, 11, 11, 11, 11,
00351  12, 12, 12, 12, 13, 13, 12, 13,
00352  12, 11, 11, 11, 11, 11, 11, 12,
00353  12, 12, 12, 12, 13, 13, 13, 13,
00354 };
00355 
00356 static const uint16_t mpa_huffcodes_16[256] = {
00357  0x0001, 0x0005, 0x000e, 0x002c, 0x004a, 0x003f, 0x006e, 0x005d,
00358  0x00ac, 0x0095, 0x008a, 0x00f2, 0x00e1, 0x00c3, 0x0178, 0x0011,
00359  0x0003, 0x0004, 0x000c, 0x0014, 0x0023, 0x003e, 0x0035, 0x002f,
00360  0x0053, 0x004b, 0x0044, 0x0077, 0x00c9, 0x006b, 0x00cf, 0x0009,
00361  0x000f, 0x000d, 0x0017, 0x0026, 0x0043, 0x003a, 0x0067, 0x005a,
00362  0x00a1, 0x0048, 0x007f, 0x0075, 0x006e, 0x00d1, 0x00ce, 0x0010,
00363  0x002d, 0x0015, 0x0027, 0x0045, 0x0040, 0x0072, 0x0063, 0x0057,
00364  0x009e, 0x008c, 0x00fc, 0x00d4, 0x00c7, 0x0183, 0x016d, 0x001a,
00365  0x004b, 0x0024, 0x0044, 0x0041, 0x0073, 0x0065, 0x00b3, 0x00a4,
00366  0x009b, 0x0108, 0x00f6, 0x00e2, 0x018b, 0x017e, 0x016a, 0x0009,
00367  0x0042, 0x001e, 0x003b, 0x0038, 0x0066, 0x00b9, 0x00ad, 0x0109,
00368  0x008e, 0x00fd, 0x00e8, 0x0190, 0x0184, 0x017a, 0x01bd, 0x0010,
00369  0x006f, 0x0036, 0x0034, 0x0064, 0x00b8, 0x00b2, 0x00a0, 0x0085,
00370  0x0101, 0x00f4, 0x00e4, 0x00d9, 0x0181, 0x016e, 0x02cb, 0x000a,
00371  0x0062, 0x0030, 0x005b, 0x0058, 0x00a5, 0x009d, 0x0094, 0x0105,
00372  0x00f8, 0x0197, 0x018d, 0x0174, 0x017c, 0x0379, 0x0374, 0x0008,
00373  0x0055, 0x0054, 0x0051, 0x009f, 0x009c, 0x008f, 0x0104, 0x00f9,
00374  0x01ab, 0x0191, 0x0188, 0x017f, 0x02d7, 0x02c9, 0x02c4, 0x0007,
00375  0x009a, 0x004c, 0x0049, 0x008d, 0x0083, 0x0100, 0x00f5, 0x01aa,
00376  0x0196, 0x018a, 0x0180, 0x02df, 0x0167, 0x02c6, 0x0160, 0x000b,
00377  0x008b, 0x0081, 0x0043, 0x007d, 0x00f7, 0x00e9, 0x00e5, 0x00db,
00378  0x0189, 0x02e7, 0x02e1, 0x02d0, 0x0375, 0x0372, 0x01b7, 0x0004,
00379  0x00f3, 0x0078, 0x0076, 0x0073, 0x00e3, 0x00df, 0x018c, 0x02ea,
00380  0x02e6, 0x02e0, 0x02d1, 0x02c8, 0x02c2, 0x00df, 0x01b4, 0x0006,
00381  0x00ca, 0x00e0, 0x00de, 0x00da, 0x00d8, 0x0185, 0x0182, 0x017d,
00382  0x016c, 0x0378, 0x01bb, 0x02c3, 0x01b8, 0x01b5, 0x06c0, 0x0004,
00383  0x02eb, 0x00d3, 0x00d2, 0x00d0, 0x0172, 0x017b, 0x02de, 0x02d3,
00384  0x02ca, 0x06c7, 0x0373, 0x036d, 0x036c, 0x0d83, 0x0361, 0x0002,
00385  0x0179, 0x0171, 0x0066, 0x00bb, 0x02d6, 0x02d2, 0x0166, 0x02c7,
00386  0x02c5, 0x0362, 0x06c6, 0x0367, 0x0d82, 0x0366, 0x01b2, 0x0000,
00387  0x000c, 0x000a, 0x0007, 0x000b, 0x000a, 0x0011, 0x000b, 0x0009,
00388  0x000d, 0x000c, 0x000a, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
00389 };
00390 
00391 static const uint8_t mpa_huffbits_16[256] = {
00392   1,  4,  6,  8,  9,  9, 10, 10,
00393  11, 11, 11, 12, 12, 12, 13,  9,
00394   3,  4,  6,  7,  8,  9,  9,  9,
00395  10, 10, 10, 11, 12, 11, 12,  8,
00396   6,  6,  7,  8,  9,  9, 10, 10,
00397  11, 10, 11, 11, 11, 12, 12,  9,
00398   8,  7,  8,  9,  9, 10, 10, 10,
00399  11, 11, 12, 12, 12, 13, 13, 10,
00400   9,  8,  9,  9, 10, 10, 11, 11,
00401  11, 12, 12, 12, 13, 13, 13,  9,
00402   9,  8,  9,  9, 10, 11, 11, 12,
00403  11, 12, 12, 13, 13, 13, 14, 10,
00404  10,  9,  9, 10, 11, 11, 11, 11,
00405  12, 12, 12, 12, 13, 13, 14, 10,
00406  10,  9, 10, 10, 11, 11, 11, 12,
00407  12, 13, 13, 13, 13, 15, 15, 10,
00408  10, 10, 10, 11, 11, 11, 12, 12,
00409  13, 13, 13, 13, 14, 14, 14, 10,
00410  11, 10, 10, 11, 11, 12, 12, 13,
00411  13, 13, 13, 14, 13, 14, 13, 11,
00412  11, 11, 10, 11, 12, 12, 12, 12,
00413  13, 14, 14, 14, 15, 15, 14, 10,
00414  12, 11, 11, 11, 12, 12, 13, 14,
00415  14, 14, 14, 14, 14, 13, 14, 11,
00416  12, 12, 12, 12, 12, 13, 13, 13,
00417  13, 15, 14, 14, 14, 14, 16, 11,
00418  14, 12, 12, 12, 13, 13, 14, 14,
00419  14, 16, 15, 15, 15, 17, 15, 11,
00420  13, 13, 11, 12, 14, 14, 13, 14,
00421  14, 15, 16, 15, 17, 15, 14, 11,
00422   9,  8,  8,  9,  9, 10, 10, 10,
00423  11, 11, 11, 11, 11, 11, 11,  8,
00424 };
00425 
00426 static const uint16_t mpa_huffcodes_24[256] = {
00427  0x000f, 0x000d, 0x002e, 0x0050, 0x0092, 0x0106, 0x00f8, 0x01b2,
00428  0x01aa, 0x029d, 0x028d, 0x0289, 0x026d, 0x0205, 0x0408, 0x0058,
00429  0x000e, 0x000c, 0x0015, 0x0026, 0x0047, 0x0082, 0x007a, 0x00d8,
00430  0x00d1, 0x00c6, 0x0147, 0x0159, 0x013f, 0x0129, 0x0117, 0x002a,
00431  0x002f, 0x0016, 0x0029, 0x004a, 0x0044, 0x0080, 0x0078, 0x00dd,
00432  0x00cf, 0x00c2, 0x00b6, 0x0154, 0x013b, 0x0127, 0x021d, 0x0012,
00433  0x0051, 0x0027, 0x004b, 0x0046, 0x0086, 0x007d, 0x0074, 0x00dc,
00434  0x00cc, 0x00be, 0x00b2, 0x0145, 0x0137, 0x0125, 0x010f, 0x0010,
00435  0x0093, 0x0048, 0x0045, 0x0087, 0x007f, 0x0076, 0x0070, 0x00d2,
00436  0x00c8, 0x00bc, 0x0160, 0x0143, 0x0132, 0x011d, 0x021c, 0x000e,
00437  0x0107, 0x0042, 0x0081, 0x007e, 0x0077, 0x0072, 0x00d6, 0x00ca,
00438  0x00c0, 0x00b4, 0x0155, 0x013d, 0x012d, 0x0119, 0x0106, 0x000c,
00439  0x00f9, 0x007b, 0x0079, 0x0075, 0x0071, 0x00d7, 0x00ce, 0x00c3,
00440  0x00b9, 0x015b, 0x014a, 0x0134, 0x0123, 0x0110, 0x0208, 0x000a,
00441  0x01b3, 0x0073, 0x006f, 0x006d, 0x00d3, 0x00cb, 0x00c4, 0x00bb,
00442  0x0161, 0x014c, 0x0139, 0x012a, 0x011b, 0x0213, 0x017d, 0x0011,
00443  0x01ab, 0x00d4, 0x00d0, 0x00cd, 0x00c9, 0x00c1, 0x00ba, 0x00b1,
00444  0x00a9, 0x0140, 0x012f, 0x011e, 0x010c, 0x0202, 0x0179, 0x0010,
00445  0x014f, 0x00c7, 0x00c5, 0x00bf, 0x00bd, 0x00b5, 0x00ae, 0x014d,
00446  0x0141, 0x0131, 0x0121, 0x0113, 0x0209, 0x017b, 0x0173, 0x000b,
00447  0x029c, 0x00b8, 0x00b7, 0x00b3, 0x00af, 0x0158, 0x014b, 0x013a,
00448  0x0130, 0x0122, 0x0115, 0x0212, 0x017f, 0x0175, 0x016e, 0x000a,
00449  0x028c, 0x015a, 0x00ab, 0x00a8, 0x00a4, 0x013e, 0x0135, 0x012b,
00450  0x011f, 0x0114, 0x0107, 0x0201, 0x0177, 0x0170, 0x016a, 0x0006,
00451  0x0288, 0x0142, 0x013c, 0x0138, 0x0133, 0x012e, 0x0124, 0x011c,
00452  0x010d, 0x0105, 0x0200, 0x0178, 0x0172, 0x016c, 0x0167, 0x0004,
00453  0x026c, 0x012c, 0x0128, 0x0126, 0x0120, 0x011a, 0x0111, 0x010a,
00454  0x0203, 0x017c, 0x0176, 0x0171, 0x016d, 0x0169, 0x0165, 0x0002,
00455  0x0409, 0x0118, 0x0116, 0x0112, 0x010b, 0x0108, 0x0103, 0x017e,
00456  0x017a, 0x0174, 0x016f, 0x016b, 0x0168, 0x0166, 0x0164, 0x0000,
00457  0x002b, 0x0014, 0x0013, 0x0011, 0x000f, 0x000d, 0x000b, 0x0009,
00458  0x0007, 0x0006, 0x0004, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
00459 };
00460 
00461 static const uint8_t mpa_huffbits_24[256] = {
00462   4,  4,  6,  7,  8,  9,  9, 10,
00463  10, 11, 11, 11, 11, 11, 12,  9,
00464   4,  4,  5,  6,  7,  8,  8,  9,
00465   9,  9, 10, 10, 10, 10, 10,  8,
00466   6,  5,  6,  7,  7,  8,  8,  9,
00467   9,  9,  9, 10, 10, 10, 11,  7,
00468   7,  6,  7,  7,  8,  8,  8,  9,
00469   9,  9,  9, 10, 10, 10, 10,  7,
00470   8,  7,  7,  8,  8,  8,  8,  9,
00471   9,  9, 10, 10, 10, 10, 11,  7,
00472   9,  7,  8,  8,  8,  8,  9,  9,
00473   9,  9, 10, 10, 10, 10, 10,  7,
00474   9,  8,  8,  8,  8,  9,  9,  9,
00475   9, 10, 10, 10, 10, 10, 11,  7,
00476  10,  8,  8,  8,  9,  9,  9,  9,
00477  10, 10, 10, 10, 10, 11, 11,  8,
00478  10,  9,  9,  9,  9,  9,  9,  9,
00479   9, 10, 10, 10, 10, 11, 11,  8,
00480  10,  9,  9,  9,  9,  9,  9, 10,
00481  10, 10, 10, 10, 11, 11, 11,  8,
00482  11,  9,  9,  9,  9, 10, 10, 10,
00483  10, 10, 10, 11, 11, 11, 11,  8,
00484  11, 10,  9,  9,  9, 10, 10, 10,
00485  10, 10, 10, 11, 11, 11, 11,  8,
00486  11, 10, 10, 10, 10, 10, 10, 10,
00487  10, 10, 11, 11, 11, 11, 11,  8,
00488  11, 10, 10, 10, 10, 10, 10, 10,
00489  11, 11, 11, 11, 11, 11, 11,  8,
00490  12, 10, 10, 10, 10, 10, 10, 11,
00491  11, 11, 11, 11, 11, 11, 11,  8,
00492   8,  7,  7,  7,  7,  7,  7,  7,
00493   7,  7,  7,  8,  8,  8,  8,  4,
00494 };
00495 
00496 static const HuffTable mpa_huff_tables[16] = {
00497 { 1, NULL, NULL },
00498 { 2, mpa_huffbits_1, mpa_huffcodes_1 },
00499 { 3, mpa_huffbits_2, mpa_huffcodes_2 },
00500 { 3, mpa_huffbits_3, mpa_huffcodes_3 },
00501 { 4, mpa_huffbits_5, mpa_huffcodes_5 },
00502 { 4, mpa_huffbits_6, mpa_huffcodes_6 },
00503 { 6, mpa_huffbits_7, mpa_huffcodes_7 },
00504 { 6, mpa_huffbits_8, mpa_huffcodes_8 },
00505 { 6, mpa_huffbits_9, mpa_huffcodes_9 },
00506 { 8, mpa_huffbits_10, mpa_huffcodes_10 },
00507 { 8, mpa_huffbits_11, mpa_huffcodes_11 },
00508 { 8, mpa_huffbits_12, mpa_huffcodes_12 },
00509 { 16, mpa_huffbits_13, mpa_huffcodes_13 },
00510 { 16, mpa_huffbits_15, mpa_huffcodes_15 },
00511 { 16, mpa_huffbits_16, mpa_huffcodes_16 },
00512 { 16, mpa_huffbits_24, mpa_huffcodes_24 },
00513 };
00514 
00515 static const uint8_t mpa_huff_data[32][2] = {
00516 { 0, 0 },
00517 { 1, 0 },
00518 { 2, 0 },
00519 { 3, 0 },
00520 { 0, 0 },
00521 { 4, 0 },
00522 { 5, 0 },
00523 { 6, 0 },
00524 { 7, 0 },
00525 { 8, 0 },
00526 { 9, 0 },
00527 { 10, 0 },
00528 { 11, 0 },
00529 { 12, 0 },
00530 { 0, 0 },
00531 { 13, 0 },
00532 { 14, 1 },
00533 { 14, 2 },
00534 { 14, 3 },
00535 { 14, 4 },
00536 { 14, 6 },
00537 { 14, 8 },
00538 { 14, 10 },
00539 { 14, 13 },
00540 { 15, 4 },
00541 { 15, 5 },
00542 { 15, 6 },
00543 { 15, 7 },
00544 { 15, 8 },
00545 { 15, 9 },
00546 { 15, 11 },
00547 { 15, 13 },
00548 };
00549 
00550 
00551 /* huffman tables for quadrules */
00552 static const uint8_t mpa_quad_codes[2][16] = {
00553     {  1,  5,  4,  5,  6,  5,  4,  4, 7,  3,  6,  0,  7,  2,  3,  1, },
00554     { 15, 14, 13, 12, 11, 10,  9,  8, 7,  6,  5,  4,  3,  2,  1,  0, },
00555 };
00556 
00557 static const uint8_t mpa_quad_bits[2][16] = {
00558     { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6, },
00559     { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, },
00560 };
00561 
00562 /* band size tables */
00563 static const uint8_t band_size_long[9][22] = {
00564 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
00565   12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */
00566 { 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10,
00567   12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, }, /* 48000 */
00568 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12,
00569   16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, }, /* 32000 */
00570 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00571   20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 22050 */
00572 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00573   18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36, }, /* 24000 */
00574 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00575   20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 16000 */
00576 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00577   20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 11025 */
00578 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00579   20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 12000 */
00580 { 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32,
00581   40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2, }, /* 8000 */
00582 };
00583 
00584 static const uint8_t band_size_short[9][13] = {
00585 { 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56, }, /* 44100 */
00586 { 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66, }, /* 48000 */
00587 { 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12, }, /* 32000 */
00588 { 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18, }, /* 22050 */
00589 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12, }, /* 24000 */
00590 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 16000 */
00591 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 11025 */
00592 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 12000 */
00593 { 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26, }, /* 8000 */
00594 };
00595 
00596 static const uint8_t mpa_pretab[2][22] = {
00597     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
00598     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 },
00599 };
00600 
00601 /* table for alias reduction (XXX: store it as integer !) */
00602 static const float ci_table[8] = {
00603     -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037,
00604 };
00605 
00606 #endif /* AVCODEC_MPEGAUDIODECTAB_H */

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