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

libavcodec/ac3tab.c

Go to the documentation of this file.
00001 /*
00002  * AC-3 tables
00003  * copyright (c) 2001 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 #include "ac3tab.h"
00028 
00033 const uint16_t ff_ac3_frame_size_tab[38][3] = {
00034     { 64,   69,   96   },
00035     { 64,   70,   96   },
00036     { 80,   87,   120  },
00037     { 80,   88,   120  },
00038     { 96,   104,  144  },
00039     { 96,   105,  144  },
00040     { 112,  121,  168  },
00041     { 112,  122,  168  },
00042     { 128,  139,  192  },
00043     { 128,  140,  192  },
00044     { 160,  174,  240  },
00045     { 160,  175,  240  },
00046     { 192,  208,  288  },
00047     { 192,  209,  288  },
00048     { 224,  243,  336  },
00049     { 224,  244,  336  },
00050     { 256,  278,  384  },
00051     { 256,  279,  384  },
00052     { 320,  348,  480  },
00053     { 320,  349,  480  },
00054     { 384,  417,  576  },
00055     { 384,  418,  576  },
00056     { 448,  487,  672  },
00057     { 448,  488,  672  },
00058     { 512,  557,  768  },
00059     { 512,  558,  768  },
00060     { 640,  696,  960  },
00061     { 640,  697,  960  },
00062     { 768,  835,  1152 },
00063     { 768,  836,  1152 },
00064     { 896,  975,  1344 },
00065     { 896,  976,  1344 },
00066     { 1024, 1114, 1536 },
00067     { 1024, 1115, 1536 },
00068     { 1152, 1253, 1728 },
00069     { 1152, 1254, 1728 },
00070     { 1280, 1393, 1920 },
00071     { 1280, 1394, 1920 },
00072 };
00073 
00078 const uint8_t ff_ac3_channels_tab[8] = {
00079     2, 1, 2, 3, 3, 4, 4, 5
00080 };
00081 
00082 /* possible frequencies */
00083 const uint16_t ff_ac3_sample_rate_tab[3] = { 48000, 44100, 32000 };
00084 
00085 /* possible bitrates */
00086 const uint16_t ff_ac3_bitrate_tab[19] = {
00087     32, 40, 48, 56, 64, 80, 96, 112, 128,
00088     160, 192, 224, 256, 320, 384, 448, 512, 576, 640
00089 };
00090 
00091 /* AC-3 MDCT window */
00092 
00093 /* MDCT window */
00094 const int16_t ff_ac3_window[256] = {
00095     4,    7,   12,   16,   21,   28,   34,   42,
00096    51,   61,   72,   84,   97,  111,  127,  145,
00097   164,  184,  207,  231,  257,  285,  315,  347,
00098   382,  419,  458,  500,  544,  591,  641,  694,
00099   750,  810,  872,  937, 1007, 1079, 1155, 1235,
00100  1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
00101  2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
00102  3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
00103  4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
00104  6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
00105  8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
00106 10660,10960,11264,11570,11879,12190,12504,12820,
00107 13138,13458,13780,14103,14427,14753,15079,15407,
00108 15735,16063,16392,16720,17049,17377,17705,18032,
00109 18358,18683,19007,19330,19651,19970,20287,20602,
00110 20914,21225,21532,21837,22139,22438,22733,23025,
00111 23314,23599,23880,24157,24430,24699,24964,25225,
00112 25481,25732,25979,26221,26459,26691,26919,27142,
00113 27359,27572,27780,27983,28180,28373,28560,28742,
00114 28919,29091,29258,29420,29577,29729,29876,30018,
00115 30155,30288,30415,30538,30657,30771,30880,30985,
00116 31086,31182,31274,31363,31447,31528,31605,31678,
00117 31747,31814,31877,31936,31993,32046,32097,32145,
00118 32190,32232,32272,32310,32345,32378,32409,32438,
00119 32465,32490,32513,32535,32556,32574,32592,32608,
00120 32623,32636,32649,32661,32671,32681,32690,32698,
00121 32705,32712,32718,32724,32729,32733,32737,32741,
00122 32744,32747,32750,32752,32754,32756,32757,32759,
00123 32760,32761,32762,32763,32764,32764,32765,32765,
00124 32766,32766,32766,32766,32767,32767,32767,32767,
00125 32767,32767,32767,32767,32767,32767,32767,32767,
00126 32767,32767,32767,32767,32767,32767,32767,32767,
00127 };
00128 
00129 const uint8_t ff_ac3_log_add_tab[260]= {
00130 0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,
00131 0x36,0x35,0x34,0x34,0x33,0x32,0x31,0x30,0x2f,0x2f,
00132 0x2e,0x2d,0x2c,0x2c,0x2b,0x2a,0x29,0x29,0x28,0x27,
00133 0x26,0x26,0x25,0x24,0x24,0x23,0x23,0x22,0x21,0x21,
00134 0x20,0x20,0x1f,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1b,
00135 0x1b,0x1a,0x1a,0x19,0x19,0x18,0x18,0x17,0x17,0x16,
00136 0x16,0x15,0x15,0x15,0x14,0x14,0x13,0x13,0x13,0x12,
00137 0x12,0x12,0x11,0x11,0x11,0x10,0x10,0x10,0x0f,0x0f,
00138 0x0f,0x0e,0x0e,0x0e,0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,
00139 0x0c,0x0c,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
00140 0x0a,0x09,0x09,0x09,0x09,0x09,0x08,0x08,0x08,0x08,
00141 0x08,0x08,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,
00142 0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,
00143 0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,
00144 0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,
00145 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,
00146 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
00147 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
00148 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
00149 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
00150 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
00151 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
00152 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
00153 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
00154 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
00155 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
00156 };
00157 
00158 const uint16_t ff_ac3_hearing_threshold_tab[50][3]= {
00159 { 0x04d0,0x04f0,0x0580 },
00160 { 0x04d0,0x04f0,0x0580 },
00161 { 0x0440,0x0460,0x04b0 },
00162 { 0x0400,0x0410,0x0450 },
00163 { 0x03e0,0x03e0,0x0420 },
00164 { 0x03c0,0x03d0,0x03f0 },
00165 { 0x03b0,0x03c0,0x03e0 },
00166 { 0x03b0,0x03b0,0x03d0 },
00167 { 0x03a0,0x03b0,0x03c0 },
00168 { 0x03a0,0x03a0,0x03b0 },
00169 { 0x03a0,0x03a0,0x03b0 },
00170 { 0x03a0,0x03a0,0x03b0 },
00171 { 0x03a0,0x03a0,0x03a0 },
00172 { 0x0390,0x03a0,0x03a0 },
00173 { 0x0390,0x0390,0x03a0 },
00174 { 0x0390,0x0390,0x03a0 },
00175 { 0x0380,0x0390,0x03a0 },
00176 { 0x0380,0x0380,0x03a0 },
00177 { 0x0370,0x0380,0x03a0 },
00178 { 0x0370,0x0380,0x03a0 },
00179 { 0x0360,0x0370,0x0390 },
00180 { 0x0360,0x0370,0x0390 },
00181 { 0x0350,0x0360,0x0390 },
00182 { 0x0350,0x0360,0x0390 },
00183 { 0x0340,0x0350,0x0380 },
00184 { 0x0340,0x0350,0x0380 },
00185 { 0x0330,0x0340,0x0380 },
00186 { 0x0320,0x0340,0x0370 },
00187 { 0x0310,0x0320,0x0360 },
00188 { 0x0300,0x0310,0x0350 },
00189 { 0x02f0,0x0300,0x0340 },
00190 { 0x02f0,0x02f0,0x0330 },
00191 { 0x02f0,0x02f0,0x0320 },
00192 { 0x02f0,0x02f0,0x0310 },
00193 { 0x0300,0x02f0,0x0300 },
00194 { 0x0310,0x0300,0x02f0 },
00195 { 0x0340,0x0320,0x02f0 },
00196 { 0x0390,0x0350,0x02f0 },
00197 { 0x03e0,0x0390,0x0300 },
00198 { 0x0420,0x03e0,0x0310 },
00199 { 0x0460,0x0420,0x0330 },
00200 { 0x0490,0x0450,0x0350 },
00201 { 0x04a0,0x04a0,0x03c0 },
00202 { 0x0460,0x0490,0x0410 },
00203 { 0x0440,0x0460,0x0470 },
00204 { 0x0440,0x0440,0x04a0 },
00205 { 0x0520,0x0480,0x0460 },
00206 { 0x0800,0x0630,0x0440 },
00207 { 0x0840,0x0840,0x0450 },
00208 { 0x0840,0x0840,0x04e0 },
00209 };
00210 
00211 const uint8_t ff_ac3_bap_tab[64]= {
00212     0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
00213     3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
00214     7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
00215     9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
00216     12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
00217     14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
00218     15, 15, 15, 15,
00219 };
00220 
00221 const uint8_t ff_ac3_slow_decay_tab[4]={
00222     0x0f, 0x11, 0x13, 0x15,
00223 };
00224 
00225 const uint8_t ff_ac3_fast_decay_tab[4]={
00226     0x3f, 0x53, 0x67, 0x7b,
00227 };
00228 
00229 const uint16_t ff_ac3_slow_gain_tab[4]= {
00230     0x540, 0x4d8, 0x478, 0x410,
00231 };
00232 
00233 const uint16_t ff_ac3_db_per_bit_tab[4]= {
00234     0x000, 0x700, 0x900, 0xb00,
00235 };
00236 
00237 const int16_t ff_ac3_floor_tab[8]= {
00238     0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
00239 };
00240 
00241 const uint16_t ff_ac3_fast_gain_tab[8]= {
00242     0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
00243 };
00244 
00245 const uint8_t ff_ac3_critical_band_size_tab[50]={
00246     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00247     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
00248     3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24
00249 };
00253 const uint16_t ff_eac3_default_chmap[8] = {
00254     AC3_CHMAP_L |               AC3_CHMAP_R, // FIXME Ch1+Ch2
00255                   AC3_CHMAP_C,
00256     AC3_CHMAP_L |               AC3_CHMAP_R,
00257     AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R,
00258     AC3_CHMAP_L |               AC3_CHMAP_R |                   AC3_CHMAP_C_SUR,
00259     AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R |                   AC3_CHMAP_C_SUR,
00260     AC3_CHMAP_L |               AC3_CHMAP_R | AC3_CHMAP_L_SUR |                  AC3_CHMAP_R_SUR,
00261     AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R | AC3_CHMAP_L_SUR |                  AC3_CHMAP_R_SUR
00262 };

Generated on Tue Nov 4 2014 12:59:21 for ffmpeg by  doxygen 1.7.1