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

libavcodec/atrac3data.h

Go to the documentation of this file.
00001 /*
00002  * Atrac 3 compatible decoder data
00003  * Copyright (c) 2006-2007 Maxim Poliakovski
00004  * Copyright (c) 2006-2007 Benjamin Larsson
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 
00028 #ifndef AVCODEC_ATRAC3DATA_H
00029 #define AVCODEC_ATRAC3DATA_H
00030 
00031 #include <stdint.h>
00032 
00033 /* VLC tables */
00034 
00035 static const uint8_t huffcode1[9] = {
00036   0x0,0x4,0x5,0xC,0xD,0x1C,0x1D,0x1E,0x1F,
00037 };
00038 
00039 static const uint8_t huffbits1[9] = {
00040   1,3,3,4,4,5,5,5,5,
00041 };
00042 
00043 static const uint8_t huffcode2[5] = {
00044   0x0,0x4,0x5,0x6,0x7,
00045 };
00046 
00047 static const uint8_t huffbits2[5] = {
00048   1,3,3,3,3,
00049 };
00050 
00051 static const uint8_t huffcode3[7] = {
00052 0x0,0x4,0x5,0xC,0xD,0xE,0xF,
00053 };
00054 
00055 static const uint8_t huffbits3[7] = {
00056   1,3,3,4,4,4,4,
00057 };
00058 
00059 static const uint8_t huffcode4[9] = {
00060   0x0,0x4,0x5,0xC,0xD,0x1C,0x1D,0x1E,0x1F,
00061 };
00062 
00063 static const uint8_t huffbits4[9] = {
00064   1,3,3,4,4,5,5,5,5,
00065 };
00066 
00067 static const uint8_t huffcode5[15] = {
00068   0x0,0x2,0x3,0x8,0x9,0xA,0xB,0x1C,0x1D,0x3C,0x3D,0x3E,0x3F,0xC,0xD,
00069 };
00070 
00071 static const uint8_t huffbits5[15] = {
00072   2,3,3,4,4,4,4,5,5,6,6,6,6,4,4
00073 };
00074 
00075 static const uint8_t huffcode6[31] = {
00076   0x0,0x2,0x3,0x4,0x5,0x6,0x7,0x14,0x15,0x16,0x17,0x18,0x19,0x34,0x35,
00077   0x36,0x37,0x38,0x39,0x3A,0x3B,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x8,0x9,
00078 };
00079 
00080 static const uint8_t huffbits6[31] = {
00081   3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,4,4
00082 };
00083 
00084 static const uint8_t huffcode7[63] = {
00085   0x0,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,0x10,0x11,0x24,0x25,0x26,0x27,0x28,
00086   0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x68,0x69,0x6A,0x6B,0x6C,
00087   0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
00088   0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0x2,0x3,
00089 };
00090 
00091 static const uint8_t huffbits7[63] = {
00092   3,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,
00093   7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4
00094 };
00095 
00096 static const uint8_t huff_tab_sizes[7] = {
00097   9, 5, 7, 9, 15, 31, 63,
00098 };
00099 
00100 static const uint8_t* const huff_codes[7] = {
00101   huffcode1,huffcode2,huffcode3,huffcode4,huffcode5,huffcode6,huffcode7,
00102 };
00103 
00104 static const uint8_t* const huff_bits[7] = {
00105   huffbits1,huffbits2,huffbits3,huffbits4,huffbits5,huffbits6,huffbits7,
00106 };
00107 
00108 static const uint16_t atrac3_vlc_offs[] = {
00109     0,512,1024,1536,2048,2560,3072,3584,4096
00110 };
00111 
00112 /* selector tables */
00113 
00114 static const uint8_t CLCLengthTab[8] = {0, 4, 3, 3, 4, 4, 5, 6};
00115 static const int8_t seTab_0[4] = {0, 1, -2, -1};
00116 static const int8_t decTable1[18] = {0,0, 0,1, 0,-1, 1,0, -1,0, 1,1, 1,-1, -1,1, -1,-1};
00117 
00118 
00119 /* tables for the scalefactor decoding */
00120 
00121 static const float iMaxQuant[8] = {
00122   0.0, 1.0/1.5, 1.0/2.5, 1.0/3.5, 1.0/4.5, 1.0/7.5, 1.0/15.5, 1.0/31.5
00123 };
00124 
00125 static const uint16_t subbandTab[33] = {
00126   0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224,
00127   256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 896, 1024
00128 };
00129 
00130 /* joint stereo related tables */
00131 static const float matrixCoeffs[8] = {0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0};
00132 
00133 #endif /* AVCODEC_ATRAC3DATA_H */

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