Mercurial > libavcodec.hg
annotate atrac3data.h @ 11101:a82b9c88682f libavcodec
Branchless calculation of ref_offset.
7 cpu cycles faster.
author | michael |
---|---|
date | Mon, 08 Feb 2010 03:22:17 +0000 |
parents | 0c6cba648271 |
children | 7dd2a45249a9 |
rev | line source |
---|---|
4856 | 1 /* |
2 * Atrac 3 compatible decoder data | |
3 * Copyright (c) 2006-2007 Maxim Poliakovski | |
4 * Copyright (c) 2006-2007 Benjamin Larsson | |
5 * | |
6 * This file is part of FFmpeg. | |
7 * | |
8 * FFmpeg is free software; you can redistribute it and/or | |
9 * modify it under the terms of the GNU Lesser General Public | |
10 * License as published by the Free Software Foundation; either | |
11 * version 2.1 of the License, or (at your option) any later version. | |
12 * | |
13 * FFmpeg is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * Lesser General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU Lesser General Public | |
19 * License along with FFmpeg; if not, write to the Free Software | |
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
21 */ | |
22 | |
23 /** | |
8718
e9d9d946f213
Use full internal pathname in doxygen @file directives.
diego
parents:
7760
diff
changeset
|
24 * @file libavcodec/atrac3data.h |
4856 | 25 * Atrac 3 AKA RealAudio 8 compatible decoder data |
26 */ | |
27 | |
7760 | 28 #ifndef AVCODEC_ATRAC3DATA_H |
29 #define AVCODEC_ATRAC3DATA_H | |
5163 | 30 |
5162 | 31 #include <stdint.h> |
32 | |
4856 | 33 /* VLC tables */ |
34 | |
35 static const uint8_t huffcode1[9] = { | |
36 0x0,0x4,0x5,0xC,0xD,0x1C,0x1D,0x1E,0x1F, | |
37 }; | |
38 | |
39 static const uint8_t huffbits1[9] = { | |
40 1,3,3,4,4,5,5,5,5, | |
41 }; | |
42 | |
43 static const uint8_t huffcode2[5] = { | |
44 0x0,0x4,0x5,0x6,0x7, | |
45 }; | |
46 | |
47 static const uint8_t huffbits2[5] = { | |
48 1,3,3,3,3, | |
49 }; | |
50 | |
51 static const uint8_t huffcode3[7] = { | |
52 0x0,0x4,0x5,0xC,0xD,0xE,0xF, | |
53 }; | |
54 | |
55 static const uint8_t huffbits3[7] = { | |
56 1,3,3,4,4,4,4, | |
57 }; | |
58 | |
59 static const uint8_t huffcode4[9] = { | |
60 0x0,0x4,0x5,0xC,0xD,0x1C,0x1D,0x1E,0x1F, | |
61 }; | |
62 | |
63 static const uint8_t huffbits4[9] = { | |
64 1,3,3,4,4,5,5,5,5, | |
65 }; | |
66 | |
67 static const uint8_t huffcode5[15] = { | |
68 0x0,0x2,0x3,0x8,0x9,0xA,0xB,0x1C,0x1D,0x3C,0x3D,0x3E,0x3F,0xC,0xD, | |
69 }; | |
70 | |
71 static const uint8_t huffbits5[15] = { | |
72 2,3,3,4,4,4,4,5,5,6,6,6,6,4,4 | |
73 }; | |
74 | |
75 static const uint8_t huffcode6[31] = { | |
76 0x0,0x2,0x3,0x4,0x5,0x6,0x7,0x14,0x15,0x16,0x17,0x18,0x19,0x34,0x35, | |
77 0x36,0x37,0x38,0x39,0x3A,0x3B,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x8,0x9, | |
78 }; | |
79 | |
80 static const uint8_t huffbits6[31] = { | |
81 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 | |
82 }; | |
83 | |
84 static const uint8_t huffcode7[63] = { | |
85 0x0,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,0x10,0x11,0x24,0x25,0x26,0x27,0x28, | |
86 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x68,0x69,0x6A,0x6B,0x6C, | |
87 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2, | |
88 0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0x2,0x3, | |
89 }; | |
90 | |
91 static const uint8_t huffbits7[63] = { | |
92 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, | |
93 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 | |
94 }; | |
95 | |
96 static const uint8_t huff_tab_sizes[7] = { | |
97 9, 5, 7, 9, 15, 31, 63, | |
98 }; | |
99 | |
7129 | 100 static const uint8_t* const huff_codes[7] = { |
4856 | 101 huffcode1,huffcode2,huffcode3,huffcode4,huffcode5,huffcode6,huffcode7, |
102 }; | |
103 | |
7129 | 104 static const uint8_t* const huff_bits[7] = { |
4856 | 105 huffbits1,huffbits2,huffbits3,huffbits4,huffbits5,huffbits6,huffbits7, |
106 }; | |
107 | |
9666
c80df3181479
Change from INIT_VLC_USE_STATIC to INIT_VLC_USE_NEW_STATIC in atrac3
banan
parents:
8718
diff
changeset
|
108 static const uint16_t atrac3_vlc_offs[] = { |
c80df3181479
Change from INIT_VLC_USE_STATIC to INIT_VLC_USE_NEW_STATIC in atrac3
banan
parents:
8718
diff
changeset
|
109 0,512,1024,1536,2048,2560,3072,3584,4096 |
c80df3181479
Change from INIT_VLC_USE_STATIC to INIT_VLC_USE_NEW_STATIC in atrac3
banan
parents:
8718
diff
changeset
|
110 }; |
c80df3181479
Change from INIT_VLC_USE_STATIC to INIT_VLC_USE_NEW_STATIC in atrac3
banan
parents:
8718
diff
changeset
|
111 |
4856 | 112 /* selector tables */ |
113 | |
114 static const uint8_t CLCLengthTab[8] = {0, 4, 3, 3, 4, 4, 5, 6}; | |
115 static const int8_t seTab_0[4] = {0, 1, -2, -1}; | |
116 static const int8_t decTable1[18] = {0,0, 0,1, 0,-1, 1,0, -1,0, 1,1, 1,-1, -1,1, -1,-1}; | |
117 | |
118 | |
119 /* tables for the scalefactor decoding */ | |
120 | |
121 static const float iMaxQuant[8] = { | |
122 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 | |
123 }; | |
124 | |
125 static const uint16_t subbandTab[33] = { | |
126 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, | |
127 256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 896, 1024 | |
128 }; | |
129 | |
130 /* joint stereo related tables */ | |
131 static const float matrixCoeffs[8] = {0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0}; | |
5163 | 132 |
7760 | 133 #endif /* AVCODEC_ATRAC3DATA_H */ |