ffmpeg / libavcodec / mpc7data.h @ 2912e87a
History  View  Annotate  Download (7.23 KB)
1 
/*


2 
* Musepack decoder

3 
* Copyright (c) 2006 Konstantin Shishkov

4 
*

5 
* This file is part of Libav.

6 
*

7 
* Libav is free software; you can redistribute it and/or

8 
* modify it under the terms of the GNU Lesser General Public

9 
* License as published by the Free Software Foundation; either

10 
* version 2.1 of the License, or (at your option) any later version.

11 
*

12 
* Libav is distributed in the hope that it will be useful,

13 
* but WITHOUT ANY WARRANTY; without even the implied warranty of

14 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

15 
* Lesser General Public License for more details.

16 
*

17 
* You should have received a copy of the GNU Lesser General Public

18 
* License along with Libav; if not, write to the Free Software

19 
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 021101301 USA

20 
*/

21  
22 
#ifndef AVCODEC_MPC7DATA_H

23 
#define AVCODEC_MPC7DATA_H

24  
25 
#include <stdint.h> 
26  
27 
static const int8_t mpc7_idx30[] = { 1, 0, 1,1, 0, 1,1, 0, 1,1, 0, 1,1, 0, 1,1, 0, 1,1, 0, 1,1, 0, 1,1, 0, 1}; 
28 
static const int8_t mpc7_idx31[] = { 1,1,1, 0, 0, 0, 1, 1, 1,1,1,1, 0, 0, 0, 1, 1, 1,1,1,1, 0, 0, 0, 1, 1, 1}; 
29 
static const int8_t mpc7_idx32[] = { 1,1,1,1,1,1,1,1,1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}; 
30 
static const int8_t mpc7_idx50[] = { 2,1, 0, 1, 2,2,1, 0, 1, 2,2,1, 0, 1, 2,2,1, 0, 1, 2,2,1, 0, 1, 2}; 
31 
static const int8_t mpc7_idx51[] = { 2,2,2,2,2,1,1,1,1,1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; 
32  
33 
#define MPC7_SCFI_SIZE 4 
34 
#define MPC7_SCFI_BITS 3 
35 
static const uint8_t mpc7_scfi[MPC7_SCFI_SIZE * 2] = { 
36 
0x2, 3, 0x1, 1, 0x3, 3, 0x0, 2 
37 
}; 
38  
39 
#define MPC7_DSCF_SIZE 16 
40 
#define MPC7_DSCF_BITS 6 
41 
static const uint8_t mpc7_dscf[MPC7_DSCF_SIZE * 2] = { 
42 
0x20, 6, 0x04, 5, 0x11, 5, 0x1E, 5, 0x0D, 4, 0x00, 3, 0x03, 3, 0x09, 4, 
43 
0x05, 3, 0x02, 3, 0x0E, 4, 0x03, 4, 0x1F, 5, 0x05, 5, 0x21, 6, 0x0C, 4 
44 
}; 
45  
46 
#define MPC7_HDR_SIZE 10 
47 
#define MPC7_HDR_BITS 9 
48 
static const uint8_t mpc7_hdr[MPC7_HDR_SIZE * 2] = { 
49 
0x5C, 8, 0x2F, 7, 0x0A, 5, 0x04, 4, 0x00, 2, 
50 
0x01, 1, 0x03, 3, 0x16, 6, 0xBB, 9, 0xBA, 9 
51 
}; 
52  
53 
#define MPC7_QUANT_VLC_TABLES 7 
54 
static const uint8_t mpc7_quant_vlc_sizes[MPC7_QUANT_VLC_TABLES * 2] = { 
55 
27, 25, 7, 9, 15, 31, 63 
56 
}; 
57  
58 
static const uint8_t mpc7_quant_vlc_off[MPC7_QUANT_VLC_TABLES] = { 
59 
0, 0, 3, 4, 7, 15, 31 
60 
}; 
61  
62 
static const uint16_t mpc7_quant_vlc[MPC7_QUANT_VLC_TABLES][2][64 * 2] = { 
63 
{ 
64 
{ 
65 
0x0036, 6, 0x0009, 5, 0x0020, 6, 0x0005, 5, 0x000A, 4, 0x0007, 5, 
66 
0x0034, 6, 0x0000, 5, 0x0023, 6, 0x000A, 5, 0x0006, 4, 0x0004, 5, 
67 
0x000B, 4, 0x0007, 3, 0x000C, 4, 0x0003, 5, 0x0007, 4, 0x000B, 5, 
68 
0x0022, 6, 0x0001, 5, 0x0035, 6, 0x0006, 5, 0x0009, 4, 0x0002, 5, 
69 
0x0021, 6, 0x0008, 5, 0x0037, 6 
70 
}, 
71 
{ 
72 
0x0067, 8, 0x003E, 7, 0x00E1, 9, 0x0037, 7, 0x0003, 4, 0x0034, 7, 
73 
0x0065, 8, 0x003C, 7, 0x00E3, 9, 0x0018, 6, 0x0000, 4, 0x003D, 7, 
74 
0x0004, 4, 0x0001, 1, 0x0005, 4, 0x003F, 7, 0x0001, 4, 0x003B, 7, 
75 
0x00E2, 9, 0x0039, 7, 0x0064, 8, 0x0035, 7, 0x0002, 4, 0x0036, 7, 
76 
0x00E0, 9, 0x003A, 7, 0x0066, 8 
77 
} 
78 
}, 
79 
{ 
80 
{ 
81 
0x0059, 7, 0x002F, 6, 0x000F, 5, 0x0000, 5, 0x005B, 7, 0x0004, 5, 
82 
0x0006, 4, 0x000D, 4, 0x0004, 4, 0x0005, 5, 0x0014, 5, 0x000C, 4, 
83 
0x0004, 3, 0x000F, 4, 0x000E, 5, 0x0003, 5, 0x0003, 4, 0x000E, 4, 
84 
0x0005, 4, 0x0001, 5, 0x005A, 7, 0x0002, 5, 0x0015, 5, 0x002E, 6, 
85 
0x0058, 7 
86 
}, 
87 
{ 
88 
0x0399, 10, 0x0071, 7, 0x0033, 6, 0x00E7, 8, 0x039A, 10, 0x0068, 7, 
89 
0x001E, 5, 0x0000, 3, 0x001D, 5, 0x0069, 7, 0x0032, 6, 0x0001, 3, 
90 
0x0002, 2, 0x0003, 3, 0x0031, 6, 0x006B, 7, 0x001B, 5, 0x0002, 3, 
91 
0x001F, 5, 0x0070, 7, 0x0398, 10, 0x006A, 7, 0x0030, 6, 0x0072, 7, 
92 
0x039B, 10 
93 
} 
94 
}, 
95 
{ 
96 
{ 
97 
0x000C, 4, 0x0004, 3, 0x0000, 2, 0x0001, 2, 0x0007, 3, 0x0005, 3, 0x000D, 4 
98 
}, 
99 
{ 
100 
0x0004, 5, 0x0003, 4, 0x0002, 2, 0x0003, 2, 0x0001, 2, 0x0000, 3, 0x0005, 5 
101 
} 
102 
}, 
103 
{ 
104 
{ 
105 
0x0005, 4, 0x0000, 3, 0x0004, 3, 0x0006, 3, 0x0007, 3, 0x0005, 3, 0x0003, 3, 0x0001, 3, 0x0004, 4 
106 
}, 
107 
{ 
108 
0x0009, 5, 0x000C, 4, 0x0003, 3, 0x0000, 2, 0x0002, 2, 0x0007, 3, 0x000D, 4, 0x0005, 4, 0x0008, 5 
109 
} 
110 
}, 
111 
{ 
112 
{ 
113 
0x0039, 6, 0x0017, 5, 0x0008, 4, 0x000A, 4, 0x000D, 4, 0x0000, 3, 
114 
0x0002, 3, 0x0003, 3, 0x0001, 3, 0x000F, 4, 0x000C, 4, 0x0009, 4, 
115 
0x001D, 5, 0x0016, 5, 0x0038, 6, 
116 
}, 
117 
{ 
118 
0x00E5, 8, 0x0038, 6, 0x0007, 5, 0x0002, 4, 0x0000, 3, 0x0003, 3, 
119 
0x0005, 3, 0x0006, 3, 0x0004, 3, 0x0002, 3, 0x000F, 4, 0x001D, 5, 
120 
0x0006, 5, 0x0073, 7, 0x00E4, 8, 
121 
}, 
122 
}, 
123 
{ 
124 
{ 
125 
0x0041, 7, 0x0006, 6, 0x002C, 6, 0x002D, 6, 0x003B, 6, 0x000D, 5, 
126 
0x0011, 5, 0x0013, 5, 0x0017, 5, 0x0015, 5, 0x001A, 5, 0x001E, 5, 
127 
0x0000, 4, 0x0002, 4, 0x0005, 4, 0x0007, 4, 0x0003, 4, 0x0004, 4, 
128 
0x001F, 5, 0x001C, 5, 0x0019, 5, 0x001B, 5, 0x0018, 5, 0x0014, 5, 
129 
0x0012, 5, 0x000C, 5, 0x0002, 5, 0x003A, 6, 0x0021, 6, 0x0007, 6, 
130 
0x0040, 7 
131 
}, 
132 
{ 
133 
0x1948, 13, 0x194A, 13, 0x0328, 10, 0x0195, 9, 0x00CB, 8, 0x0066, 7, 
134 
0x0031, 6, 0x0009, 5, 0x000F, 5, 0x001F, 5, 0x0002, 4, 0x0006, 4, 
135 
0x0008, 4, 0x000B, 4, 0x000D, 4, 0x0000, 3, 0x000E, 4, 0x000A, 4, 
136 
0x0009, 4, 0x0005, 4, 0x0003, 4, 0x001E, 5, 0x000E, 5, 0x0008, 5, 
137 
0x0030, 6, 0x0067, 7, 0x00C9, 8, 0x00C8, 8, 0x0653, 11, 0x1949, 13, 
138 
0x194B, 13 
139 
} 
140 
}, 
141 
{ 
142 
{ 
143 
0x0067, 8, 0x0099, 8, 0x00B5, 8, 0x00E9, 8, 0x0040, 7, 0x0041, 7, 
144 
0x004D, 7, 0x0051, 7, 0x005B, 7, 0x0071, 7, 0x0070, 7, 0x0018, 6, 
145 
0x001D, 6, 0x0023, 6, 0x0025, 6, 0x0029, 6, 0x002C, 6, 0x002E, 6, 
146 
0x0033, 6, 0x0031, 6, 0x0036, 6, 0x0037, 6, 0x0039, 6, 0x003C, 6, 
147 
0x0000, 5, 0x0002, 5, 0x000A, 5, 0x0005, 5, 0x0009, 5, 0x0006, 5, 
148 
0x000D, 5, 0x0007, 5, 0x000B, 5, 0x000F, 5, 0x0008, 5, 0x0004, 5, 
149 
0x0003, 5, 0x0001, 5, 0x003F, 6, 0x003E, 6, 0x003D, 6, 0x0035, 6, 
150 
0x003B, 6, 0x0034, 6, 0x0030, 6, 0x002F, 6, 0x002B, 6, 0x002A, 6, 
151 
0x0027, 6, 0x0024, 6, 0x0021, 6, 0x001C, 6, 0x0075, 7, 0x0065, 7, 
152 
0x0064, 7, 0x0050, 7, 0x0045, 7, 0x0044, 7, 0x0032, 7, 0x00E8, 8, 
153 
0x00B4, 8, 0x0098, 8, 0x0066, 8 
154 
}, 
155 
{ 
156 
0x37A4, 14, 0x37AD, 14, 0x37A6, 14, 0x37AE, 14, 0x0DEA, 12, 0x02F0, 10, 
157 
0x02F1, 10, 0x00A0, 9, 0x00A2, 9, 0x01BC, 9, 0x007A, 8, 0x00DF, 8, 
158 
0x003C, 7, 0x0049, 7, 0x006E, 7, 0x000E, 6, 0x0018, 6, 0x0019, 6, 
159 
0x0022, 6, 0x0025, 6, 0x0036, 6, 0x0003, 5, 0x0009, 5, 0x000B, 5, 
160 
0x0010, 5, 0x0013, 5, 0x0015, 5, 0x0018, 5, 0x001A, 5, 0x001D, 5, 
161 
0x001F, 5, 0x0002, 4, 0x0000, 4, 0x001E, 5, 0x001C, 5, 0x0019, 5, 
162 
0x0016, 5, 0x0014, 5, 0x000E, 5, 0x000D, 5, 0x0008, 5, 0x0006, 5, 
163 
0x0002, 5, 0x002E, 6, 0x0023, 6, 0x001F, 6, 0x0015, 6, 0x000F, 6, 
164 
0x005F, 7, 0x0048, 7, 0x0029, 7, 0x00BD, 8, 0x007B, 8, 0x0179, 9, 
165 
0x00A1, 9, 0x037B, 10, 0x0147, 10, 0x0146, 10, 0x0DE8, 12, 0x37AF, 14, 
166 
0x37A7, 14, 0x37AC, 14, 0x37A5, 14 
167 
} 
168 
} 
169 
}; 
170  
171 
#endif /* AVCODEC_MPC7DATA_H */ 