dsputil: template get_pixels() for different bit depths
[ffmpeg.git] / libavcodec / dv_vlc_data.h
1 /*
2  * VLC constants for DV codec
3  * Copyright (c) 2002 Fabrice Bellard
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 02110-1301 USA
20  */
21
22 /**
23  * @file
24  * VLC constants for DV codec.
25  */
26
27 #ifndef AVCODEC_DV_VLC_DATA_H
28 #define AVCODEC_DV_VLC_DATA_H
29
30 #include <stdint.h>
31
32 #define NB_DV_VLC 409
33
34 /*
35  * There's a catch about the following three tables: the mapping they establish
36  * between (run, level) and vlc is not 1-1. So you have to watch out for that
37  * when building misc. tables. E.g. (1, 0) can be either 0x7cf or 0x1f82.
38  */
39 static const uint16_t dv_vlc_bits[409] = {
40  0x0000, 0x0002, 0x0007, 0x0008, 0x0009, 0x0014, 0x0015, 0x0016,
41  0x0017, 0x0030, 0x0031, 0x0032, 0x0033, 0x0068, 0x0069, 0x006a,
42  0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x00e0, 0x00e1, 0x00e2,
43  0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea,
44  0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x01e0, 0x01e1, 0x01e2,
45  0x01e3, 0x01e4, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9, 0x01ea,
46  0x01eb, 0x01ec, 0x01ed, 0x01ee, 0x01ef, 0x03e0, 0x03e1, 0x03e2,
47  0x03e3, 0x03e4, 0x03e5, 0x03e6, 0x07ce, 0x07cf, 0x07d0, 0x07d1,
48  0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x0fac, 0x0fad, 0x0fae, 0x0faf,
49  0x0fb0, 0x0fb1, 0x0fb2, 0x0fb3, 0x0fb4, 0x0fb5, 0x0fb6, 0x0fb7,
50  0x0fb8, 0x0fb9, 0x0fba, 0x0fbb, 0x0fbc, 0x0fbd, 0x0fbe, 0x0fbf,
51  0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
52  0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
53  0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
54  0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
55  0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
56  0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
57  0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb5, 0x1fb6, 0x1fb7,
58  0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf,
59  0x7f00, 0x7f01, 0x7f02, 0x7f03, 0x7f04, 0x7f05, 0x7f06, 0x7f07,
60  0x7f08, 0x7f09, 0x7f0a, 0x7f0b, 0x7f0c, 0x7f0d, 0x7f0e, 0x7f0f,
61  0x7f10, 0x7f11, 0x7f12, 0x7f13, 0x7f14, 0x7f15, 0x7f16, 0x7f17,
62  0x7f18, 0x7f19, 0x7f1a, 0x7f1b, 0x7f1c, 0x7f1d, 0x7f1e, 0x7f1f,
63  0x7f20, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
64  0x7f28, 0x7f29, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2e, 0x7f2f,
65  0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f34, 0x7f35, 0x7f36, 0x7f37,
66  0x7f38, 0x7f39, 0x7f3a, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f,
67  0x7f40, 0x7f41, 0x7f42, 0x7f43, 0x7f44, 0x7f45, 0x7f46, 0x7f47,
68  0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f,
69  0x7f50, 0x7f51, 0x7f52, 0x7f53, 0x7f54, 0x7f55, 0x7f56, 0x7f57,
70  0x7f58, 0x7f59, 0x7f5a, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f5f,
71  0x7f60, 0x7f61, 0x7f62, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67,
72  0x7f68, 0x7f69, 0x7f6a, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6e, 0x7f6f,
73  0x7f70, 0x7f71, 0x7f72, 0x7f73, 0x7f74, 0x7f75, 0x7f76, 0x7f77,
74  0x7f78, 0x7f79, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7e, 0x7f7f,
75  0x7f80, 0x7f81, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87,
76  0x7f88, 0x7f89, 0x7f8a, 0x7f8b, 0x7f8c, 0x7f8d, 0x7f8e, 0x7f8f,
77  0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f94, 0x7f95, 0x7f96, 0x7f97,
78  0x7f98, 0x7f99, 0x7f9a, 0x7f9b, 0x7f9c, 0x7f9d, 0x7f9e, 0x7f9f,
79  0x7fa0, 0x7fa1, 0x7fa2, 0x7fa3, 0x7fa4, 0x7fa5, 0x7fa6, 0x7fa7,
80  0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7faf,
81  0x7fb0, 0x7fb1, 0x7fb2, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7,
82  0x7fb8, 0x7fb9, 0x7fba, 0x7fbb, 0x7fbc, 0x7fbd, 0x7fbe, 0x7fbf,
83  0x7fc0, 0x7fc1, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc5, 0x7fc6, 0x7fc7,
84  0x7fc8, 0x7fc9, 0x7fca, 0x7fcb, 0x7fcc, 0x7fcd, 0x7fce, 0x7fcf,
85  0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd4, 0x7fd5, 0x7fd6, 0x7fd7,
86  0x7fd8, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fdf,
87  0x7fe0, 0x7fe1, 0x7fe2, 0x7fe3, 0x7fe4, 0x7fe5, 0x7fe6, 0x7fe7,
88  0x7fe8, 0x7fe9, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fee, 0x7fef,
89  0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7,
90  0x7ff8, 0x7ff9, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffd, 0x7ffe, 0x7fff,
91  0x0006,
92 };
93
94 static const uint8_t dv_vlc_len[409] = {
95   2,  3,  4,  4,  4,  5,  5,  5,
96   5,  6,  6,  6,  6,  7,  7,  7,
97   7,  7,  7,  7,  7,  8,  8,  8,
98   8,  8,  8,  8,  8,  8,  8,  8,
99   8,  8,  8,  8,  8,  9,  9,  9,
100   9,  9,  9,  9,  9,  9,  9,  9,
101   9,  9,  9,  9,  9, 10, 10, 10,
102  10, 10, 10, 10, 11, 11, 11, 11,
103  11, 11, 11, 11, 12, 12, 12, 12,
104  12, 12, 12, 12, 12, 12, 12, 12,
105  12, 12, 12, 12, 12, 12, 12, 12,
106  13, 13, 13, 13, 13, 13, 13, 13,
107  13, 13, 13, 13, 13, 13, 13, 13,
108  13, 13, 13, 13, 13, 13, 13, 13,
109  13, 13, 13, 13, 13, 13, 13, 13,
110  13, 13, 13, 13, 13, 13, 13, 13,
111  13, 13, 13, 13, 13, 13, 13, 13,
112  13, 13, 13, 13, 13, 13, 13, 13,
113  13, 13, 13, 13, 13, 13, 13, 13,
114  15, 15, 15, 15, 15, 15, 15, 15,
115  15, 15, 15, 15, 15, 15, 15, 15,
116  15, 15, 15, 15, 15, 15, 15, 15,
117  15, 15, 15, 15, 15, 15, 15, 15,
118  15, 15, 15, 15, 15, 15, 15, 15,
119  15, 15, 15, 15, 15, 15, 15, 15,
120  15, 15, 15, 15, 15, 15, 15, 15,
121  15, 15, 15, 15, 15, 15, 15, 15,
122  15, 15, 15, 15, 15, 15, 15, 15,
123  15, 15, 15, 15, 15, 15, 15, 15,
124  15, 15, 15, 15, 15, 15, 15, 15,
125  15, 15, 15, 15, 15, 15, 15, 15,
126  15, 15, 15, 15, 15, 15, 15, 15,
127  15, 15, 15, 15, 15, 15, 15, 15,
128  15, 15, 15, 15, 15, 15, 15, 15,
129  15, 15, 15, 15, 15, 15, 15, 15,
130  15, 15, 15, 15, 15, 15, 15, 15,
131  15, 15, 15, 15, 15, 15, 15, 15,
132  15, 15, 15, 15, 15, 15, 15, 15,
133  15, 15, 15, 15, 15, 15, 15, 15,
134  15, 15, 15, 15, 15, 15, 15, 15,
135  15, 15, 15, 15, 15, 15, 15, 15,
136  15, 15, 15, 15, 15, 15, 15, 15,
137  15, 15, 15, 15, 15, 15, 15, 15,
138  15, 15, 15, 15, 15, 15, 15, 15,
139  15, 15, 15, 15, 15, 15, 15, 15,
140  15, 15, 15, 15, 15, 15, 15, 15,
141  15, 15, 15, 15, 15, 15, 15, 15,
142  15, 15, 15, 15, 15, 15, 15, 15,
143  15, 15, 15, 15, 15, 15, 15, 15,
144  15, 15, 15, 15, 15, 15, 15, 15,
145  15, 15, 15, 15, 15, 15, 15, 15,
146   4,
147 };
148
149 static const uint8_t dv_vlc_run[409] = {
150   0,  0,  1,  0,  0,  2,  1,  0,
151   0,  3,  4,  0,  0,  5,  6,  2,
152   1,  1,  0,  0,  0,  7,  8,  9,
153  10,  3,  4,  2,  1,  1,  1,  0,
154   0,  0,  0,  0,  0, 11, 12, 13,
155  14,  5,  6,  3,  4,  2,  2,  1,
156   0,  0,  0,  0,  0,  5,  3,  3,
157   2,  1,  1,  1,  0,  1,  6,  4,
158   3,  1,  1,  1,  2,  3,  4,  5,
159   7,  8,  9, 10,  7,  8,  4,  3,
160   2,  2,  2,  2,  2,  1,  1,  1,
161   0,  1,  2,  3,  4,  5,  6,  7,
162   8,  9, 10, 11, 12, 13, 14, 15,
163  16, 17, 18, 19, 20, 21, 22, 23,
164  24, 25, 26, 27, 28, 29, 30, 31,
165  32, 33, 34, 35, 36, 37, 38, 39,
166  40, 41, 42, 43, 44, 45, 46, 47,
167  48, 49, 50, 51, 52, 53, 54, 55,
168  56, 57, 58, 59, 60, 61, 62, 63,
169   0,  0,  0,  0,  0,  0,  0,  0,
170   0,  0,  0,  0,  0,  0,  0,  0,
171   0,  0,  0,  0,  0,  0,  0,  0,
172   0,  0,  0,  0,  0,  0,  0,  0,
173   0,  0,  0,  0,  0,  0,  0,  0,
174   0,  0,  0,  0,  0,  0,  0,  0,
175   0,  0,  0,  0,  0,  0,  0,  0,
176   0,  0,  0,  0,  0,  0,  0,  0,
177   0,  0,  0,  0,  0,  0,  0,  0,
178   0,  0,  0,  0,  0,  0,  0,  0,
179   0,  0,  0,  0,  0,  0,  0,  0,
180   0,  0,  0,  0,  0,  0,  0,  0,
181   0,  0,  0,  0,  0,  0,  0,  0,
182   0,  0,  0,  0,  0,  0,  0,  0,
183   0,  0,  0,  0,  0,  0,  0,  0,
184   0,  0,  0,  0,  0,  0,  0,  0,
185   0,  0,  0,  0,  0,  0,  0,  0,
186   0,  0,  0,  0,  0,  0,  0,  0,
187   0,  0,  0,  0,  0,  0,  0,  0,
188   0,  0,  0,  0,  0,  0,  0,  0,
189   0,  0,  0,  0,  0,  0,  0,  0,
190   0,  0,  0,  0,  0,  0,  0,  0,
191   0,  0,  0,  0,  0,  0,  0,  0,
192   0,  0,  0,  0,  0,  0,  0,  0,
193   0,  0,  0,  0,  0,  0,  0,  0,
194   0,  0,  0,  0,  0,  0,  0,  0,
195   0,  0,  0,  0,  0,  0,  0,  0,
196   0,  0,  0,  0,  0,  0,  0,  0,
197   0,  0,  0,  0,  0,  0,  0,  0,
198   0,  0,  0,  0,  0,  0,  0,  0,
199   0,  0,  0,  0,  0,  0,  0,  0,
200   0,  0,  0,  0,  0,  0,  0,  0,
201 127,
202 };
203
204 static const uint8_t dv_vlc_level[409] = {
205    1,   2,   1,   3,   4,   1,   2,   5,
206    6,   1,   1,   7,   8,   1,   1,   2,
207    3,   4,   9,  10,  11,   1,   1,   1,
208    1,   2,   2,   3,   5,   6,   7,  12,
209   13,  14,  15,  16,  17,   1,   1,   1,
210    1,   2,   2,   3,   3,   4,   5,   8,
211   18,  19,  20,  21,  22,   3,   4,   5,
212    6,   9,  10,  11,   0,   0,   3,   4,
213    6,  12,  13,  14,   0,   0,   0,   0,
214    2,   2,   2,   2,   3,   3,   5,   7,
215    7,   8,   9,  10,  11,  15,  16,  17,
216    0,   0,   0,   0,   0,   0,   0,   0,
217    0,   0,   0,   0,   0,   0,   0,   0,
218    0,   0,   0,   0,   0,   0,   0,   0,
219    0,   0,   0,   0,   0,   0,   0,   0,
220    0,   0,   0,   0,   0,   0,   0,   0,
221    0,   0,   0,   0,   0,   0,   0,   0,
222    0,   0,   0,   0,   0,   0,   0,   0,
223    0,   0,   0,   0,   0,   0,   0,   0,
224    0,   1,   2,   3,   4,   5,   6,   7,
225    8,   9,  10,  11,  12,  13,  14,  15,
226   16,  17,  18,  19,  20,  21,  22,  23,
227   24,  25,  26,  27,  28,  29,  30,  31,
228   32,  33,  34,  35,  36,  37,  38,  39,
229   40,  41,  42,  43,  44,  45,  46,  47,
230   48,  49,  50,  51,  52,  53,  54,  55,
231   56,  57,  58,  59,  60,  61,  62,  63,
232   64,  65,  66,  67,  68,  69,  70,  71,
233   72,  73,  74,  75,  76,  77,  78,  79,
234   80,  81,  82,  83,  84,  85,  86,  87,
235   88,  89,  90,  91,  92,  93,  94,  95,
236   96,  97,  98,  99, 100, 101, 102, 103,
237  104, 105, 106, 107, 108, 109, 110, 111,
238  112, 113, 114, 115, 116, 117, 118, 119,
239  120, 121, 122, 123, 124, 125, 126, 127,
240  128, 129, 130, 131, 132, 133, 134, 135,
241  136, 137, 138, 139, 140, 141, 142, 143,
242  144, 145, 146, 147, 148, 149, 150, 151,
243  152, 153, 154, 155, 156, 157, 158, 159,
244  160, 161, 162, 163, 164, 165, 166, 167,
245  168, 169, 170, 171, 172, 173, 174, 175,
246  176, 177, 178, 179, 180, 181, 182, 183,
247  184, 185, 186, 187, 188, 189, 190, 191,
248  192, 193, 194, 195, 196, 197, 198, 199,
249  200, 201, 202, 203, 204, 205, 206, 207,
250  208, 209, 210, 211, 212, 213, 214, 215,
251  216, 217, 218, 219, 220, 221, 222, 223,
252  224, 225, 226, 227, 228, 229, 230, 231,
253  232, 233, 234, 235, 236, 237, 238, 239,
254  240, 241, 242, 243, 244, 245, 246, 247,
255  248, 249, 250, 251, 252, 253, 254, 255,
256    0,
257 };
258
259 #endif /* AVCODEC_DV_VLC_DATA_H */