annotate atrac3data.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents 7dd2a45249a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4856
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
1 /*
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
2 * Atrac 3 compatible decoder data
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
3 * Copyright (c) 2006-2007 Maxim Poliakovski
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
4 * Copyright (c) 2006-2007 Benjamin Larsson
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
5 *
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
6 * This file is part of FFmpeg.
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
7 *
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
12 *
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
16 * Lesser General Public License for more details.
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
17 *
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
21 */
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
22
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
23 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 10167
diff changeset
24 * @file
4856
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
25 * Atrac 3 AKA RealAudio 8 compatible decoder data
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
26 */
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
27
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7129
diff changeset
28 #ifndef AVCODEC_ATRAC3DATA_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7129
diff changeset
29 #define AVCODEC_ATRAC3DATA_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5162
diff changeset
30
5162
4394344397d8 include all prerequisites in header files
mru
parents: 4856
diff changeset
31 #include <stdint.h>
4394344397d8 include all prerequisites in header files
mru
parents: 4856
diff changeset
32
4856
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
33 /* VLC tables */
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
34
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
35 static const uint8_t huffcode1[9] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
36 0x0,0x4,0x5,0xC,0xD,0x1C,0x1D,0x1E,0x1F,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
37 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
38
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
39 static const uint8_t huffbits1[9] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
40 1,3,3,4,4,5,5,5,5,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
41 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
42
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
43 static const uint8_t huffcode2[5] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
44 0x0,0x4,0x5,0x6,0x7,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
45 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
46
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
47 static const uint8_t huffbits2[5] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
48 1,3,3,3,3,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
49 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
50
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
51 static const uint8_t huffcode3[7] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
52 0x0,0x4,0x5,0xC,0xD,0xE,0xF,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
53 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
54
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
55 static const uint8_t huffbits3[7] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
56 1,3,3,4,4,4,4,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
57 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
58
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
59 static const uint8_t huffcode4[9] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
60 0x0,0x4,0x5,0xC,0xD,0x1C,0x1D,0x1E,0x1F,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
61 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
62
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
63 static const uint8_t huffbits4[9] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
64 1,3,3,4,4,5,5,5,5,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
65 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
66
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
67 static const uint8_t huffcode5[15] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
68 0x0,0x2,0x3,0x8,0x9,0xA,0xB,0x1C,0x1D,0x3C,0x3D,0x3E,0x3F,0xC,0xD,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
69 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
70
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
71 static const uint8_t huffbits5[15] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
72 2,3,3,4,4,4,4,5,5,6,6,6,6,4,4
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
73 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
74
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
75 static const uint8_t huffcode6[31] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
76 0x0,0x2,0x3,0x4,0x5,0x6,0x7,0x14,0x15,0x16,0x17,0x18,0x19,0x34,0x35,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
77 0x36,0x37,0x38,0x39,0x3A,0x3B,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x8,0x9,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
78 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
79
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
80 static const uint8_t huffbits6[31] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
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
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
82 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
83
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
84 static const uint8_t huffcode7[63] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
85 0x0,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,0x10,0x11,0x24,0x25,0x26,0x27,0x28,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
86 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x68,0x69,0x6A,0x6B,0x6C,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
87 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
88 0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0x2,0x3,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
89 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
90
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
91 static const uint8_t huffbits7[63] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
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,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
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
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
94 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
95
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
96 static const uint8_t huff_tab_sizes[7] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
97 9, 5, 7, 9, 15, 31, 63,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
98 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
99
7129
322023e630a6 mark read-only data as const
stefang
parents: 5830
diff changeset
100 static const uint8_t* const huff_codes[7] = {
4856
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
101 huffcode1,huffcode2,huffcode3,huffcode4,huffcode5,huffcode6,huffcode7,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
102 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
103
7129
322023e630a6 mark read-only data as const
stefang
parents: 5830
diff changeset
104 static const uint8_t* const huff_bits[7] = {
4856
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
105 huffbits1,huffbits2,huffbits3,huffbits4,huffbits5,huffbits6,huffbits7,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
106 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
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
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
112 /* selector tables */
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
113
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
114 static const uint8_t CLCLengthTab[8] = {0, 4, 3, 3, 4, 4, 5, 6};
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
115 static const int8_t seTab_0[4] = {0, 1, -2, -1};
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
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};
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
117
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
118
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
119 /* tables for the scalefactor decoding */
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
120
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
121 static const float iMaxQuant[8] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
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
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
123 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
124
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
125 static const uint16_t subbandTab[33] = {
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
126 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224,
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
127 256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 896, 1024
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
128 };
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
129
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
130 /* joint stereo related tables */
5af8895c2805 Atrac3 decoder.
banan
parents:
diff changeset
131 static const float matrixCoeffs[8] = {0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0};
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5162
diff changeset
132
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7129
diff changeset
133 #endif /* AVCODEC_ATRAC3DATA_H */