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

libavcodec/aacdectab.h

Go to the documentation of this file.
00001 /*
00002  * AAC decoder data
00003  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
00004  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
00005  *
00006  * This file is part of FFmpeg.
00007  *
00008  * FFmpeg is free software; you can redistribute it and/or
00009  * modify it under the terms of the GNU Lesser General Public
00010  * License as published by the Free Software Foundation; either
00011  * version 2.1 of the License, or (at your option) any later version.
00012  *
00013  * FFmpeg is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016  * Lesser General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU Lesser General Public
00019  * License along with FFmpeg; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00021  */
00022 
00030 #ifndef AVCODEC_AACDECTAB_H
00031 #define AVCODEC_AACDECTAB_H
00032 
00033 #include "aac.h"
00034 
00035 #include <stdint.h>
00036 
00037 /* @name swb_offsets
00038  * Sample offset into the window indicating the beginning of a scalefactor
00039  * window band
00040  *
00041  * scalefactor window band - term for scalefactor bands within a window,
00042  * given in Table 4.110 to Table 4.128.
00043  *
00044  * scalefactor band - a set of spectral coefficients which are scaled by one
00045  * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
00046  * may contain several scalefactor window bands of corresponding frequency. For
00047  * all other window_sequences scalefactor bands and scalefactor window bands are
00048  * identical.
00049  * @{
00050  */
00051 
00052 static const uint16_t swb_offset_1024_96[] = {
00053       0,   4,   8,  12,  16,  20,  24,  28,
00054      32,  36,  40,  44,  48,  52,  56,  64,
00055      72,  80,  88,  96, 108, 120, 132, 144,
00056     156, 172, 188, 212, 240, 276, 320, 384,
00057     448, 512, 576, 640, 704, 768, 832, 896,
00058     960, 1024
00059 };
00060 
00061 static const uint16_t swb_offset_128_96[] = {
00062     0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
00063 };
00064 
00065 static const uint16_t swb_offset_1024_64[] = {
00066       0,   4,   8,  12,  16,  20,  24,  28,
00067      32,  36,  40,  44,  48,  52,  56,  64,
00068      72,  80,  88, 100, 112, 124, 140, 156,
00069     172, 192, 216, 240, 268, 304, 344, 384,
00070     424, 464, 504, 544, 584, 624, 664, 704,
00071     744, 784, 824, 864, 904, 944, 984, 1024
00072 };
00073 
00074 static const uint16_t swb_offset_1024_48[] = {
00075       0,   4,   8,  12,  16,  20,  24,  28,
00076      32,  36,  40,  48,  56,  64,  72,  80,
00077      88,  96, 108, 120, 132, 144, 160, 176,
00078     196, 216, 240, 264, 292, 320, 352, 384,
00079     416, 448, 480, 512, 544, 576, 608, 640,
00080     672, 704, 736, 768, 800, 832, 864, 896,
00081     928, 1024
00082 };
00083 
00084 static const uint16_t swb_offset_128_48[] = {
00085      0,   4,   8,  12,  16,  20,  28,  36,
00086     44,  56,  68,  80,  96, 112, 128
00087 };
00088 
00089 static const uint16_t swb_offset_1024_32[] = {
00090       0,   4,   8,  12,  16,  20,  24,  28,
00091      32,  36,  40,  48,  56,  64,  72,  80,
00092      88,  96, 108, 120, 132, 144, 160, 176,
00093     196, 216, 240, 264, 292, 320, 352, 384,
00094     416, 448, 480, 512, 544, 576, 608, 640,
00095     672, 704, 736, 768, 800, 832, 864, 896,
00096     928, 960, 992, 1024
00097 };
00098 
00099 static const uint16_t swb_offset_1024_24[] = {
00100       0,   4,   8,  12,  16,  20,  24,  28,
00101      32,  36,  40,  44,  52,  60,  68,  76,
00102      84,  92, 100, 108, 116, 124, 136, 148,
00103     160, 172, 188, 204, 220, 240, 260, 284,
00104     308, 336, 364, 396, 432, 468, 508, 552,
00105     600, 652, 704, 768, 832, 896, 960, 1024
00106 };
00107 
00108 static const uint16_t swb_offset_128_24[] = {
00109      0,   4,   8,  12,  16,  20,  24,  28,
00110     36,  44,  52,  64,  76,  92, 108, 128
00111 };
00112 
00113 static const uint16_t swb_offset_1024_16[] = {
00114       0,   8,  16,  24,  32,  40,  48,  56,
00115      64,  72,  80,  88, 100, 112, 124, 136,
00116     148, 160, 172, 184, 196, 212, 228, 244,
00117     260, 280, 300, 320, 344, 368, 396, 424,
00118     456, 492, 532, 572, 616, 664, 716, 772,
00119     832, 896, 960, 1024
00120 };
00121 
00122 static const uint16_t swb_offset_128_16[] = {
00123      0,   4,   8,  12,  16,  20,  24,  28,
00124     32,  40,  48,  60,  72,  88, 108, 128
00125 };
00126 
00127 static const uint16_t swb_offset_1024_8[] = {
00128       0,  12,  24,  36,  48,  60,  72,  84,
00129      96, 108, 120, 132, 144, 156, 172, 188,
00130     204, 220, 236, 252, 268, 288, 308, 328,
00131     348, 372, 396, 420, 448, 476, 508, 544,
00132     580, 620, 664, 712, 764, 820, 880, 944,
00133     1024
00134 };
00135 
00136 static const uint16_t swb_offset_128_8[] = {
00137      0,   4,   8,  12,  16,  20,  24,  28,
00138     36,  44,  52,  60,  72,  88, 108, 128
00139 };
00140 
00141 static const uint16_t *swb_offset_1024[] = {
00142     swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
00143     swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
00144     swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
00145     swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
00146     swb_offset_1024_8
00147 };
00148 
00149 static const uint16_t *swb_offset_128[] = {
00150     /* The last entry on the following row is swb_offset_128_64 but is a
00151        duplicate of swb_offset_128_96. */
00152     swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
00153     swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
00154     swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
00155     swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
00156     swb_offset_128_8
00157 };
00158 
00159 // @}
00160 
00161 /* @name tns_max_bands
00162  * The maximum number of scalefactor bands on which TNS can operate for the long
00163  * and short transforms respectively. The index to these tables is related to
00164  * the sample rate of the audio.
00165  * @{
00166  */
00167 static const uint8_t tns_max_bands_1024[] = {
00168     31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
00169 };
00170 
00171 static const uint8_t tns_max_bands_128[] = {
00172     9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
00173 };
00174 // @}
00175 
00176 /* @name tns_tmp2_map
00177  * Tables of the tmp2[] arrays of LPC coefficients used for TNS.
00178  * The suffix _M_N[] indicate the values of coef_compress and coef_res
00179  * respectively.
00180  * @{
00181  */
00182 static const float tns_tmp2_map_1_3[4] = {
00183      0.00000000, -0.43388373,  0.64278758,  0.34202015,
00184 };
00185 
00186 static const float tns_tmp2_map_0_3[8] = {
00187      0.00000000, -0.43388373, -0.78183150, -0.97492790,
00188      0.98480773,  0.86602539,  0.64278758,  0.34202015,
00189 };
00190 
00191 static const float tns_tmp2_map_1_4[8] = {
00192      0.00000000, -0.20791170, -0.40673664, -0.58778524,
00193      0.67369562,  0.52643216,  0.36124167,  0.18374951,
00194 };
00195 
00196 static const float tns_tmp2_map_0_4[16] = {
00197      0.00000000, -0.20791170, -0.40673664, -0.58778524,
00198     -0.74314481, -0.86602539, -0.95105654, -0.99452192,
00199      0.99573416,  0.96182561,  0.89516330,  0.79801720,
00200      0.67369562,  0.52643216,  0.36124167,  0.18374951,
00201 };
00202 
00203 static const float * const tns_tmp2_map[4] = {
00204     tns_tmp2_map_0_3,
00205     tns_tmp2_map_0_4,
00206     tns_tmp2_map_1_3,
00207     tns_tmp2_map_1_4
00208 };
00209 // @}
00210 
00211 #endif /* AVCODEC_AACDECTAB_H */

Generated on Sat Feb 16 2013 09:23:11 for ffmpeg by  doxygen 1.7.1