• 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 /* selector tables */
00109 
00110 static const uint8_t CLCLengthTab[8] = {0, 4, 3, 3, 4, 4, 5, 6};
00111 static const int8_t seTab_0[4] = {0, 1, -2, -1};
00112 static const int8_t decTable1[18] = {0,0, 0,1, 0,-1, 1,0, -1,0, 1,1, 1,-1, -1,1, -1,-1};
00113 
00114 
00115 /* tables for the scalefactor decoding */
00116 
00117 static const float iMaxQuant[8] = {
00118   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
00119 };
00120 
00121 static const uint16_t subbandTab[33] = {
00122   0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224,
00123   256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 896, 1024
00124 };
00125 
00126 /* transform data */
00127 
00128 static const float qmf_48tap_half[24] = {
00129    -0.00001461907, -0.00009205479, -0.000056157569, 0.00030117269,
00130     0.0002422519,-0.00085293897, -0.0005205574, 0.0020340169,
00131     0.00078333891, -0.0042153862, -0.00075614988, 0.0078402944,
00132    -0.000061169922, -0.01344162, 0.0024626821, 0.021736089,
00133    -0.007801671, -0.034090221, 0.01880949, 0.054326009,
00134    -0.043596379, -0.099384367, 0.13207909, 0.46424159
00135 };
00136 
00137 /* joint stereo related tables */
00138 static const float matrixCoeffs[8] = {0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0};
00139 
00140 #endif /* AVCODEC_ATRAC3DATA_H */

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