annotate bgmc.c @ 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 fdafbcef52f5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
1 /*
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
2 * Block Gilbert-Moore decoder
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
3 * Copyright (c) 2010 Thilo Borgmann <thilo.borgmann _at_ googlemail.com>
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
4 *
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
5 * This file is part of FFmpeg.
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
6 *
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
11 *
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
15 * Lesser General Public License for more details.
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
16 *
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
20 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
21
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
22 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 11148
diff changeset
23 * @file
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
24 * Block Gilbert-Moore decoder as used by MPEG-4 ALS
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
25 * @author Thilo Borgmann <thilo.borgmann _at_ googlemail.com>
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
26 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
27
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
28
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
29 #include "bgmc.h"
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
30
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
31
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
32 #define FREQ_BITS 14 // bits used by frequency counters
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
33 #define VALUE_BITS 18 // bits used to represent the values
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
34 #define TOP_VALUE ((1 << VALUE_BITS) - 1) // maximum value
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
35 #define FIRST_QTR (TOP_VALUE / 4 + 1) // first quarter of values maximum value
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
36 #define HALF (2 * FIRST_QTR) // first half of values maximum value
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
37 #define THIRD_QTR (3 * FIRST_QTR) // third quarter of values maximum value
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
38
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
39 #define LUT_BITS (FREQ_BITS - 8) // number of bits used to index lookup tables
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
40 #define LUT_SIZE (1 << LUT_BITS) // size of the lookup tables
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
41 #define LUT_BUFF 4 // number of buffered lookup tables
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
42
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
43
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
44 /** Cumulative frequency tables for block Gilbert-Moore coding.
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
45 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
46 static const uint16_t cf_tables_1[3][129] = {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
47 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
48 16384, 16066, 15748, 15431, 15114, 14799, 14485, 14173, 13861, 13552,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
49 13243, 12939, 12635, 12336, 12038, 11745, 11452, 11161, 10870, 10586,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
50 10303, 10027, 9751, 9483, 9215, 8953, 8692, 8440, 8189, 7946,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
51 7704, 7472, 7240, 7008, 6776, 6554, 6333, 6122, 5912, 5711,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
52 5512, 5320, 5128, 4947, 4766, 4595, 4425, 4264, 4104, 3946,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
53 3788, 3640, 3493, 3355, 3218, 3090, 2963, 2842, 2721, 2609,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
54 2498, 2395, 2292, 2196, 2100, 2004, 1908, 1820, 1732, 1651,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
55 1570, 1497, 1424, 1355, 1287, 1223, 1161, 1100, 1044, 988,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
56 938, 888, 839, 790, 746, 702, 662, 623, 588, 553,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
57 520, 488, 459, 431, 405, 380, 357, 334, 311, 288,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
58 268, 248, 230, 213, 197, 182, 168, 154, 142, 130,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
59 119, 108, 99, 90, 81, 72, 64, 56, 49, 42,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
60 36, 30, 25, 20, 15, 11, 7, 3, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
61 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
62 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
63 16384, 16080, 15776, 15473, 15170, 14868, 14567, 14268, 13970, 13674,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
64 13378, 13086, 12794, 12505, 12218, 11936, 11654, 11373, 11092, 10818,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
65 10544, 10276, 10008, 9749, 9490, 9236, 8982, 8737, 8492, 8256,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
66 8020, 7792, 7564, 7336, 7108, 6888, 6669, 6459, 6249, 6050,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
67 5852, 5660, 5468, 5286, 5104, 4931, 4760, 4598, 4436, 4275,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
68 4115, 3965, 3816, 3674, 3534, 3403, 3272, 3147, 3023, 2907,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
69 2792, 2684, 2577, 2476, 2375, 2274, 2173, 2079, 1986, 1897,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
70 1810, 1724, 1645, 1567, 1493, 1419, 1351, 1284, 1222, 1161,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
71 1105, 1050, 995, 941, 891, 842, 797, 753, 713, 673,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
72 636, 599, 566, 533, 503, 473, 446, 419, 392, 365,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
73 340, 316, 294, 272, 253, 234, 216, 199, 184, 169,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
74 155, 142, 130, 118, 106, 95, 85, 75, 66, 57,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
75 49, 41, 34, 27, 21, 15, 10, 5, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
76 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
77 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
78 16384, 16092, 15801, 15510, 15219, 14930, 14641, 14355, 14069, 13785,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
79 13501, 13219, 12938, 12661, 12384, 12112, 11841, 11571, 11301, 11037,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
80 10773, 10514, 10256, 10005, 9754, 9508, 9263, 9025, 8787, 8557,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
81 8327, 8103, 7879, 7655, 7431, 7215, 7000, 6792, 6585, 6387,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
82 6190, 5998, 5807, 5625, 5445, 5272, 5100, 4937, 4774, 4613,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
83 4452, 4301, 4150, 4007, 3865, 3731, 3597, 3469, 3341, 3218,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
84 3099, 2981, 2869, 2758, 2652, 2546, 2440, 2334, 2234, 2134,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
85 2041, 1949, 1864, 1779, 1699, 1620, 1547, 1474, 1407, 1340,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
86 1278, 1217, 1157, 1097, 1043, 989, 940, 891, 846, 801,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
87 759, 718, 680, 643, 609, 575, 543, 511, 479, 447,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
88 418, 389, 363, 337, 314, 291, 270, 249, 230, 212,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
89 195, 179, 164, 149, 135, 121, 108, 96, 85, 74,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
90 64, 54, 45, 36, 28, 20, 13, 6, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
91 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
92 };
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
93
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
94
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
95 static const uint16_t cf_tables_2[8][193] = {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
96 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
97 16384, 16104, 15825, 15546, 15268, 14991, 14714, 14439, 14164, 13891,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
98 13620, 13350, 13081, 12815, 12549, 12287, 12025, 11765, 11505, 11250,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
99 10996, 10746, 10497, 10254, 10011, 9772, 9534, 9303, 9072, 8848,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
100 8624, 8406, 8188, 7970, 7752, 7539, 7327, 7123, 6919, 6724,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
101 6529, 6339, 6150, 5970, 5790, 5618, 5446, 5282, 5119, 4957,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
102 4795, 4642, 4490, 4345, 4201, 4065, 3929, 3798, 3669, 3547,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
103 3425, 3310, 3196, 3086, 2976, 2866, 2756, 2650, 2545, 2447,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
104 2350, 2260, 2170, 2085, 2000, 1921, 1843, 1770, 1698, 1632,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
105 1566, 1501, 1436, 1376, 1316, 1261, 1207, 1157, 1108, 1061,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
106 1015, 973, 931, 893, 855, 819, 783, 747, 711, 677,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
107 644, 614, 584, 557, 530, 505, 480, 458, 436, 416,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
108 396, 378, 360, 343, 326, 310, 295, 281, 267, 255,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
109 243, 232, 221, 211, 201, 192, 183, 174, 166, 158,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
110 150, 142, 134, 126, 119, 112, 106, 100, 95, 90,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
111 85, 80, 76, 72, 69, 66, 63, 60, 57, 54,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
112 51, 48, 46, 44, 42, 40, 38, 36, 34, 33,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
113 32, 31, 30, 29, 28, 27, 26, 25, 24, 23,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
114 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
115 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
116 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
117 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
118 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
119 16384, 16116, 15849, 15582, 15316, 15050, 14785, 14521, 14257, 13995,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
120 13734, 13476, 13218, 12963, 12708, 12457, 12206, 11956, 11706, 11460,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
121 11215, 10975, 10735, 10500, 10265, 10034, 9803, 9579, 9355, 9136,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
122 8917, 8703, 8489, 8275, 8061, 7853, 7645, 7444, 7244, 7051,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
123 6858, 6671, 6484, 6305, 6127, 5956, 5785, 5622, 5459, 5298,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
124 5137, 4983, 4830, 4684, 4539, 4401, 4263, 4131, 3999, 3874,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
125 3750, 3632, 3515, 3401, 3287, 3173, 3059, 2949, 2840, 2737,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
126 2635, 2539, 2444, 2354, 2264, 2181, 2098, 2020, 1943, 1872,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
127 1801, 1731, 1661, 1596, 1532, 1472, 1412, 1357, 1303, 1251,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
128 1200, 1153, 1106, 1063, 1020, 979, 938, 897, 856, 818,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
129 780, 746, 712, 681, 650, 621, 592, 566, 540, 517,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
130 494, 473, 452, 431, 410, 391, 373, 356, 340, 325,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
131 310, 296, 282, 270, 258, 247, 236, 225, 214, 203,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
132 192, 182, 172, 162, 153, 144, 136, 128, 121, 114,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
133 108, 102, 97, 92, 87, 82, 77, 73, 69, 65,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
134 62, 59, 56, 53, 50, 47, 45, 43, 41, 39,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
135 37, 35, 33, 31, 29, 27, 26, 25, 24, 23,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
136 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
137 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
138 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
139 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
140 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
141 16384, 16128, 15872, 15617, 15362, 15107, 14853, 14600, 14347, 14096,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
142 13846, 13597, 13350, 13105, 12860, 12618, 12376, 12135, 11894, 11657,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
143 11421, 11189, 10957, 10730, 10503, 10279, 10056, 9838, 9620, 9407,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
144 9195, 8987, 8779, 8571, 8363, 8159, 7955, 7758, 7561, 7371,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
145 7182, 6997, 6812, 6635, 6459, 6289, 6120, 5957, 5795, 5634,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
146 5473, 5319, 5165, 5018, 4871, 4732, 4593, 4458, 4324, 4197,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
147 4071, 3951, 3831, 3714, 3597, 3480, 3363, 3250, 3138, 3032,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
148 2927, 2828, 2729, 2635, 2541, 2453, 2366, 2284, 2202, 2126,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
149 2050, 1975, 1900, 1830, 1761, 1697, 1633, 1574, 1515, 1459,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
150 1403, 1351, 1300, 1252, 1205, 1160, 1115, 1070, 1025, 982,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
151 939, 899, 860, 824, 789, 756, 723, 693, 663, 636,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
152 609, 584, 559, 535, 511, 489, 467, 447, 427, 409,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
153 391, 374, 358, 343, 328, 313, 300, 287, 274, 261,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
154 248, 235, 223, 211, 200, 189, 179, 169, 160, 151,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
155 143, 135, 128, 121, 115, 109, 103, 97, 92, 87,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
156 82, 77, 73, 69, 65, 61, 58, 55, 52, 49,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
157 46, 43, 40, 37, 35, 33, 31, 29, 27, 25,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
158 23, 21, 20, 19, 18, 17, 16, 15, 14, 13,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
159 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
160 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
161 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
162 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
163 16384, 16139, 15894, 15649, 15405, 15162, 14919, 14677, 14435, 14195,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
164 13955, 13717, 13479, 13243, 13008, 12775, 12542, 12310, 12079, 11851,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
165 11623, 11399, 11176, 10956, 10737, 10521, 10305, 10094, 9883, 9677,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
166 9471, 9268, 9065, 8862, 8659, 8459, 8260, 8067, 7874, 7688,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
167 7502, 7321, 7140, 6965, 6790, 6621, 6452, 6290, 6128, 5968,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
168 5808, 5655, 5503, 5356, 5209, 5069, 4929, 4794, 4660, 4532,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
169 4404, 4282, 4160, 4041, 3922, 3803, 3684, 3568, 3452, 3343,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
170 3234, 3131, 3029, 2931, 2833, 2741, 2649, 2563, 2477, 2396,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
171 2316, 2236, 2157, 2083, 2009, 1940, 1871, 1807, 1743, 1683,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
172 1623, 1567, 1511, 1459, 1407, 1357, 1307, 1257, 1207, 1159,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
173 1111, 1067, 1023, 983, 943, 905, 868, 834, 800, 769,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
174 738, 709, 681, 653, 625, 600, 575, 552, 529, 508,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
175 487, 466, 447, 428, 410, 392, 376, 360, 344, 328,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
176 313, 298, 283, 268, 255, 242, 230, 218, 207, 196,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
177 186, 176, 167, 158, 150, 142, 135, 128, 121, 114,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
178 108, 102, 97, 92, 87, 82, 78, 74, 70, 66,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
179 62, 58, 54, 50, 47, 44, 41, 38, 35, 32,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
180 30, 28, 26, 24, 22, 20, 18, 16, 14, 13,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
181 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
182 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
183 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
184 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
185 16384, 16149, 15915, 15681, 15447, 15214, 14981, 14749, 14517, 14286,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
186 14055, 13827, 13599, 13373, 13147, 12923, 12699, 12476, 12253, 12034,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
187 11815, 11599, 11383, 11171, 10959, 10750, 10541, 10337, 10133, 9933,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
188 9733, 9536, 9339, 9142, 8945, 8751, 8557, 8369, 8181, 7998,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
189 7816, 7638, 7460, 7288, 7116, 6950, 6785, 6625, 6465, 6306,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
190 6147, 5995, 5843, 5697, 5551, 5411, 5271, 5135, 5000, 4871,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
191 4742, 4618, 4495, 4374, 4253, 4132, 4011, 3893, 3775, 3663,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
192 3552, 3446, 3340, 3239, 3138, 3043, 2948, 2858, 2768, 2684,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
193 2600, 2516, 2433, 2355, 2278, 2205, 2133, 2065, 1997, 1932,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
194 1867, 1807, 1747, 1690, 1634, 1580, 1526, 1472, 1418, 1366,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
195 1314, 1266, 1218, 1174, 1130, 1088, 1047, 1009, 971, 936,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
196 901, 868, 836, 804, 772, 743, 714, 685, 658, 631,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
197 606, 582, 559, 536, 515, 494, 475, 456, 437, 418,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
198 399, 380, 362, 344, 328, 312, 297, 283, 270, 257,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
199 245, 233, 222, 211, 201, 191, 181, 172, 163, 155,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
200 147, 139, 132, 125, 119, 113, 107, 101, 96, 91,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
201 86, 81, 76, 71, 66, 62, 58, 54, 50, 46,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
202 43, 40, 37, 34, 31, 28, 26, 24, 22, 20,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
203 18, 16, 14, 12, 10, 8, 6, 5, 4, 3,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
204 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
205 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
206 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
207 16384, 16159, 15934, 15709, 15485, 15261, 15038, 14816, 14594, 14373,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
208 14152, 13933, 13714, 13497, 13280, 13065, 12850, 12636, 12422, 12211,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
209 12000, 11791, 11583, 11378, 11173, 10971, 10769, 10571, 10373, 10179,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
210 9985, 9793, 9601, 9409, 9217, 9029, 8842, 8658, 8475, 8297,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
211 8120, 7946, 7773, 7604, 7435, 7271, 7108, 6950, 6792, 6634,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
212 6477, 6326, 6175, 6029, 5883, 5742, 5602, 5466, 5330, 5199,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
213 5068, 4943, 4818, 4696, 4574, 4452, 4330, 4211, 4093, 3979,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
214 3866, 3759, 3652, 3549, 3446, 3348, 3250, 3157, 3065, 2977,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
215 2889, 2802, 2716, 2634, 2553, 2476, 2399, 2326, 2254, 2185,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
216 2117, 2052, 1987, 1926, 1866, 1808, 1750, 1692, 1634, 1578,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
217 1522, 1470, 1418, 1369, 1321, 1275, 1229, 1187, 1145, 1105,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
218 1066, 1027, 991, 955, 919, 883, 850, 817, 786, 756,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
219 728, 700, 674, 648, 624, 600, 578, 556, 534, 512,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
220 490, 468, 447, 426, 407, 388, 371, 354, 338, 322,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
221 307, 293, 280, 267, 255, 243, 231, 219, 209, 199,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
222 189, 179, 170, 161, 153, 145, 138, 131, 124, 117,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
223 111, 105, 99, 93, 87, 81, 76, 71, 66, 61,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
224 57, 53, 49, 45, 42, 39, 36, 33, 30, 27,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
225 24, 21, 19, 17, 15, 13, 11, 9, 7, 5,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
226 3, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
227 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
228 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
229 16384, 16169, 15954, 15739, 15524, 15310, 15096, 14883, 14670, 14458,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
230 14246, 14035, 13824, 13614, 13405, 13198, 12991, 12785, 12579, 12376,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
231 12173, 11972, 11772, 11574, 11377, 11182, 10987, 10795, 10603, 10414,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
232 10226, 10040, 9854, 9668, 9482, 9299, 9116, 8937, 8759, 8585,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
233 8411, 8241, 8071, 7906, 7741, 7580, 7419, 7263, 7107, 6952,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
234 6797, 6647, 6497, 6353, 6209, 6070, 5931, 5796, 5661, 5531,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
235 5401, 5275, 5150, 5027, 4904, 4781, 4658, 4538, 4419, 4304,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
236 4190, 4081, 3972, 3867, 3762, 3662, 3562, 3467, 3372, 3281,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
237 3191, 3101, 3012, 2928, 2844, 2764, 2684, 2608, 2533, 2460,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
238 2387, 2318, 2250, 2185, 2121, 2059, 1997, 1935, 1873, 1813,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
239 1754, 1698, 1642, 1588, 1535, 1483, 1433, 1384, 1338, 1292,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
240 1249, 1206, 1165, 1125, 1085, 1045, 1008, 971, 937, 903,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
241 871, 840, 810, 780, 752, 724, 698, 672, 647, 622,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
242 597, 572, 548, 524, 502, 480, 460, 440, 421, 403,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
243 386, 369, 353, 337, 323, 309, 295, 281, 268, 255,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
244 243, 231, 220, 209, 199, 189, 180, 171, 163, 155,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
245 147, 139, 131, 123, 116, 109, 102, 95, 89, 83,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
246 77, 72, 67, 62, 57, 52, 48, 44, 40, 36,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
247 32, 28, 25, 22, 19, 16, 13, 10, 8, 6,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
248 4, 2, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
249 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
250 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
251 16384, 16177, 15970, 15764, 15558, 15353, 15148, 14944, 14740, 14537,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
252 14334, 14132, 13930, 13729, 13529, 13330, 13131, 12933, 12735, 12539,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
253 12343, 12150, 11957, 11766, 11576, 11388, 11200, 11015, 10830, 10647,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
254 10465, 10285, 10105, 9925, 9745, 9568, 9391, 9218, 9045, 8876,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
255 8707, 8541, 8375, 8213, 8051, 7894, 7737, 7583, 7429, 7277,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
256 7125, 6977, 6830, 6687, 6544, 6406, 6268, 6133, 5998, 5868,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
257 5738, 5612, 5487, 5364, 5241, 5118, 4995, 4875, 4755, 4640,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
258 4525, 4414, 4304, 4198, 4092, 3990, 3888, 3790, 3693, 3600,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
259 3507, 3415, 3323, 3235, 3147, 3064, 2981, 2902, 2823, 2746,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
260 2670, 2594, 2522, 2450, 2382, 2314, 2248, 2182, 2116, 2050,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
261 1987, 1924, 1864, 1804, 1748, 1692, 1638, 1585, 1534, 1484,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
262 1437, 1390, 1346, 1302, 1258, 1215, 1174, 1133, 1095, 1057,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
263 1021, 986, 952, 918, 887, 856, 827, 798, 770, 742,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
264 714, 686, 659, 632, 607, 582, 559, 536, 514, 492,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
265 472, 452, 433, 415, 398, 381, 364, 348, 333, 318,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
266 304, 290, 277, 264, 252, 240, 229, 218, 208, 198,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
267 188, 178, 168, 158, 149, 140, 132, 124, 116, 108,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
268 101, 94, 87, 81, 75, 69, 64, 59, 54, 49,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
269 44, 39, 35, 31, 27, 23, 19, 15, 12, 9,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
270 6, 3, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
271 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
272 };
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
273
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
274
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
275 static const uint16_t cf_tables_3[5][257] = {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
276 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
277 16384, 16187, 15990, 15793, 15597, 15401, 15205, 15009, 14813, 14618,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
278 14423, 14230, 14037, 13845, 13653, 13463, 13273, 13083, 12894, 12706,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
279 12518, 12332, 12146, 11962, 11778, 11597, 11416, 11237, 11059, 10882,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
280 10706, 10532, 10358, 10184, 10010, 9838, 9666, 9497, 9328, 9163,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
281 8999, 8837, 8675, 8517, 8359, 8205, 8051, 7901, 7751, 7602,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
282 7453, 7308, 7163, 7022, 6882, 6745, 6609, 6476, 6343, 6214,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
283 6085, 5960, 5835, 5712, 5589, 5466, 5343, 5223, 5103, 4987,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
284 4872, 4761, 4650, 4542, 4435, 4332, 4229, 4130, 4031, 3936,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
285 3841, 3747, 3653, 3563, 3473, 3387, 3302, 3220, 3138, 3059,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
286 2980, 2905, 2830, 2759, 2688, 2619, 2550, 2481, 2412, 2345,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
287 2278, 2215, 2152, 2092, 2032, 1974, 1917, 1863, 1809, 1758,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
288 1707, 1659, 1611, 1564, 1517, 1473, 1429, 1387, 1346, 1307,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
289 1268, 1230, 1193, 1158, 1123, 1090, 1058, 1026, 994, 962,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
290 930, 899, 869, 841, 813, 786, 760, 735, 710, 687,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
291 664, 643, 622, 602, 582, 562, 543, 525, 507, 490,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
292 473, 457, 442, 427, 412, 398, 385, 373, 361, 349,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
293 337, 325, 313, 301, 290, 279, 269, 259, 249, 240,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
294 231, 222, 214, 206, 199, 192, 185, 178, 171, 165,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
295 159, 153, 148, 143, 138, 133, 128, 123, 119, 115,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
296 111, 107, 103, 99, 95, 91, 87, 83, 80, 77,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
297 74, 71, 68, 65, 63, 61, 59, 57, 55, 53,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
298 51, 49, 47, 45, 43, 41, 40, 39, 38, 37,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
299 36, 35, 34, 33, 32, 31, 30, 29, 28, 27,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
300 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
301 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
302 6, 5, 4, 3, 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
303 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
304 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
305 16384, 16195, 16006, 15817, 15629, 15441, 15253, 15065, 14878, 14692,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
306 14506, 14321, 14136, 13952, 13768, 13585, 13402, 13219, 13037, 12857,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
307 12677, 12499, 12321, 12144, 11967, 11792, 11617, 11444, 11271, 11100,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
308 10930, 10762, 10594, 10426, 10258, 10091, 9925, 9761, 9598, 9438,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
309 9278, 9120, 8963, 8809, 8655, 8504, 8354, 8207, 8060, 7914,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
310 7769, 7627, 7485, 7347, 7209, 7074, 6939, 6807, 6676, 6548,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
311 6420, 6296, 6172, 6050, 5928, 5806, 5684, 5564, 5444, 5328,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
312 5212, 5100, 4988, 4879, 4771, 4667, 4563, 4462, 4362, 4265,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
313 4169, 4073, 3978, 3886, 3795, 3707, 3619, 3535, 3451, 3369,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
314 3288, 3210, 3133, 3059, 2985, 2913, 2841, 2769, 2697, 2627,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
315 2557, 2490, 2424, 2360, 2297, 2237, 2177, 2119, 2062, 2007,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
316 1953, 1901, 1849, 1798, 1748, 1700, 1652, 1607, 1562, 1519,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
317 1476, 1435, 1394, 1355, 1317, 1281, 1245, 1210, 1175, 1140,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
318 1105, 1071, 1037, 1005, 973, 943, 913, 885, 857, 830,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
319 804, 779, 754, 731, 708, 685, 663, 642, 621, 601,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
320 581, 563, 545, 528, 511, 495, 479, 463, 448, 433,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
321 419, 405, 391, 377, 364, 351, 338, 326, 314, 302,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
322 291, 280, 270, 260, 251, 242, 234, 226, 218, 210,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
323 202, 195, 188, 181, 174, 168, 162, 156, 150, 144,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
324 139, 134, 129, 124, 119, 114, 109, 104, 100, 96,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
325 92, 88, 84, 80, 77, 74, 71, 68, 65, 62,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
326 59, 56, 54, 52, 50, 48, 46, 44, 42, 40,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
327 38, 36, 34, 33, 32, 31, 30, 29, 28, 27,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
328 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
329 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
330 6, 5, 4, 3, 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
331 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
332 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
333 16384, 16203, 16022, 15842, 15662, 15482, 15302, 15122, 14942, 14763,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
334 14584, 14406, 14228, 14051, 13874, 13698, 13522, 13347, 13172, 12998,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
335 12824, 12652, 12480, 12310, 12140, 11971, 11803, 11637, 11471, 11307,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
336 11143, 10980, 10817, 10654, 10491, 10330, 10169, 10011, 9853, 9697,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
337 9542, 9389, 9236, 9086, 8936, 8789, 8642, 8498, 8355, 8212,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
338 8070, 7931, 7792, 7656, 7520, 7388, 7256, 7126, 6996, 6870,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
339 6744, 6621, 6498, 6377, 6256, 6135, 6014, 5895, 5776, 5660,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
340 5545, 5433, 5321, 5212, 5104, 4999, 4895, 4793, 4692, 4594,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
341 4496, 4400, 4304, 4211, 4118, 4028, 3939, 3853, 3767, 3684,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
342 3601, 3521, 3441, 3364, 3287, 3212, 3137, 3062, 2987, 2915,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
343 2843, 2773, 2704, 2638, 2572, 2508, 2445, 2384, 2324, 2266,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
344 2208, 2153, 2098, 2044, 1990, 1939, 1888, 1839, 1791, 1745,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
345 1699, 1655, 1611, 1569, 1527, 1487, 1448, 1409, 1370, 1331,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
346 1292, 1255, 1218, 1183, 1148, 1115, 1082, 1051, 1020, 990,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
347 960, 932, 904, 878, 852, 826, 801, 777, 753, 731,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
348 709, 687, 666, 645, 625, 605, 586, 567, 550, 533,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
349 516, 499, 482, 465, 449, 433, 418, 403, 389, 375,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
350 362, 349, 337, 325, 314, 303, 293, 283, 273, 263,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
351 254, 245, 236, 227, 219, 211, 204, 197, 190, 183,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
352 177, 171, 165, 159, 153, 147, 141, 135, 130, 125,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
353 120, 115, 110, 105, 101, 97, 93, 89, 85, 81,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
354 77, 74, 71, 68, 65, 62, 59, 56, 53, 51,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
355 49, 47, 45, 43, 41, 39, 37, 35, 33, 31,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
356 29, 27, 25, 23, 22, 21, 20, 19, 18, 17,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
357 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
358 6, 5, 4, 3, 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
359 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
360 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
361 16384, 16210, 16036, 15863, 15690, 15517, 15344, 15172, 15000, 14828,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
362 14656, 14485, 14314, 14145, 13976, 13808, 13640, 13472, 13304, 13137,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
363 12970, 12804, 12639, 12475, 12312, 12149, 11987, 11827, 11667, 11508,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
364 11349, 11192, 11035, 10878, 10721, 10565, 10410, 10257, 10104, 9953,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
365 9802, 9654, 9506, 9359, 9213, 9070, 8927, 8787, 8647, 8508,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
366 8369, 8233, 8097, 7964, 7831, 7700, 7570, 7442, 7315, 7190,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
367 7065, 6943, 6821, 6701, 6581, 6461, 6341, 6223, 6105, 5990,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
368 5876, 5764, 5653, 5545, 5437, 5331, 5226, 5124, 5022, 4924,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
369 4826, 4729, 4632, 4538, 4444, 4353, 4262, 4174, 4087, 4002,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
370 3917, 3835, 3753, 3674, 3595, 3518, 3441, 3364, 3287, 3212,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
371 3138, 3066, 2995, 2926, 2858, 2792, 2726, 2662, 2599, 2538,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
372 2478, 2420, 2362, 2305, 2249, 2195, 2141, 2089, 2037, 1988,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
373 1939, 1891, 1844, 1799, 1754, 1711, 1668, 1626, 1584, 1542,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
374 1500, 1459, 1418, 1380, 1342, 1305, 1269, 1234, 1199, 1166,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
375 1133, 1102, 1071, 1041, 1012, 983, 954, 926, 899, 872,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
376 847, 822, 798, 774, 751, 728, 707, 686, 666, 646,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
377 627, 608, 589, 570, 552, 534, 517, 500, 484, 468,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
378 453, 438, 424, 410, 397, 384, 372, 360, 348, 336,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
379 325, 314, 303, 293, 283, 273, 264, 255, 246, 237,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
380 229, 221, 213, 205, 197, 189, 181, 174, 167, 160,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
381 154, 148, 142, 136, 131, 126, 121, 116, 111, 106,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
382 101, 97, 93, 89, 85, 81, 77, 73, 70, 67,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
383 64, 61, 58, 55, 52, 49, 46, 43, 40, 37,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
384 35, 33, 31, 29, 27, 25, 23, 21, 19, 17,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
385 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
386 6, 5, 4, 3, 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
387 },
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
388 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
389 16384, 16218, 16052, 15886, 15720, 15554, 15389, 15224, 15059, 14895,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
390 14731, 14567, 14403, 14240, 14077, 13915, 13753, 13591, 13429, 13269,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
391 13109, 12950, 12791, 12633, 12476, 12320, 12164, 12009, 11854, 11701,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
392 11548, 11396, 11244, 11092, 10940, 10790, 10640, 10492, 10344, 10198,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
393 10052, 9908, 9764, 9622, 9481, 9342, 9203, 9066, 8929, 8793,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
394 8657, 8524, 8391, 8261, 8131, 8003, 7875, 7749, 7624, 7502,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
395 7380, 7260, 7140, 7022, 6904, 6786, 6668, 6551, 6435, 6322,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
396 6209, 6099, 5989, 5881, 5773, 5668, 5563, 5461, 5359, 5260,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
397 5161, 5063, 4965, 4871, 4777, 4686, 4595, 4506, 4417, 4331,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
398 4245, 4162, 4079, 3999, 3919, 3841, 3763, 3685, 3607, 3530,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
399 3454, 3380, 3307, 3236, 3166, 3097, 3029, 2963, 2897, 2834,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
400 2771, 2710, 2650, 2591, 2532, 2475, 2418, 2363, 2309, 2257,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
401 2205, 2155, 2105, 2057, 2009, 1963, 1918, 1873, 1828, 1783,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
402 1738, 1694, 1650, 1607, 1565, 1524, 1484, 1445, 1407, 1369,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
403 1333, 1297, 1263, 1229, 1197, 1165, 1134, 1103, 1073, 1043,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
404 1015, 987, 960, 933, 907, 882, 858, 834, 811, 788,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
405 766, 744, 722, 700, 679, 658, 638, 618, 599, 581,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
406 563, 545, 528, 511, 495, 480, 465, 451, 437, 423,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
407 410, 397, 384, 372, 360, 348, 337, 326, 315, 305,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
408 295, 285, 275, 265, 255, 245, 236, 227, 219, 211,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
409 203, 195, 188, 181, 174, 167, 161, 155, 149, 143,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
410 137, 131, 126, 121, 116, 111, 106, 101, 97, 93,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
411 89, 85, 81, 77, 73, 69, 65, 61, 58, 55,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
412 52, 49, 46, 43, 40, 37, 34, 32, 30, 28,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
413 26, 24, 22, 20, 18, 16, 14, 12, 10, 8,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
414 6, 5, 4, 3, 2, 1, 0
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
415 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
416 };
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
417
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
418
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
419 static const uint16_t * const cf_table[16] = {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
420 cf_tables_1[0], cf_tables_1[1], cf_tables_1[2], cf_tables_2[0],
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
421 cf_tables_2[1], cf_tables_2[2], cf_tables_2[3], cf_tables_2[4],
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
422 cf_tables_2[5], cf_tables_2[6], cf_tables_2[7], cf_tables_3[0],
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
423 cf_tables_3[1], cf_tables_3[2], cf_tables_3[3], cf_tables_3[4]
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
424 };
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
425
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
426
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
427 /** Initialize a given lookup table using a given delta
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
428 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
429 static void bgmc_lut_fillp(uint8_t *lut, unsigned int *lut_status,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
430 unsigned int delta)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
431 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
432 unsigned int sx, i;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
433
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
434 for (sx = 0; sx < 16; sx++)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
435 for (i = 0; i < LUT_SIZE; i++) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
436 unsigned int target = (i + 1) << (FREQ_BITS - LUT_BITS);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
437 unsigned int symbol = 1 << delta;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
438
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
439 while (cf_table[sx][symbol] > target)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
440 symbol += 1 << delta;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
441
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
442 *lut++ = symbol >> delta;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
443 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
444
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
445 *lut_status = delta;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
446 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
447
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
448
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
449 /** Retune the index of a suitable lookup table for a given delta
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
450 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
451 static uint8_t* bgmc_lut_getp(uint8_t *lut, unsigned int *lut_status,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
452 unsigned int delta)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
453 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
454 unsigned int i = av_clip(delta, 0, LUT_BUFF - 1);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
455
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
456 lut += (i * LUT_SIZE) << 4;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
457
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
458 if (lut_status[i] != delta)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
459 bgmc_lut_fillp(lut, &lut_status[i], delta);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
460
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
461 return lut;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
462 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
463
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
464
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
465 /** Initialize the lookup table arrays
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
466 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
467 int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, unsigned int **cf_lut_status)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
468 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
469 *cf_lut = av_malloc(sizeof(*cf_lut ) * LUT_BUFF * 16 * LUT_SIZE);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
470 *cf_lut_status = av_malloc(sizeof(*cf_lut_status) * LUT_BUFF);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
471
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
472 if (!cf_lut || !cf_lut_status) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
473 ff_bgmc_end(cf_lut, cf_lut_status);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
474 av_log(avctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n");
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
475 return AVERROR(ENOMEM);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
476 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
477
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
478 return 0;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
479 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
480
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
481
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
482 /** Release the lookup table arrays
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
483 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
484 void ff_bgmc_end(uint8_t **cf_lut, unsigned int **cf_lut_status)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
485 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
486 av_freep(cf_lut);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
487 av_freep(cf_lut_status);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
488 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
489
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
490
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
491 /** Initialize decoding and reads the first value
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
492 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
493 void ff_bgmc_decode_init(GetBitContext *gb,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
494 unsigned int *h, unsigned int *l, unsigned int *v)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
495 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
496 *h = TOP_VALUE;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
497 *l = 0;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
498 *v = get_bits_long(gb, VALUE_BITS);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
499 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
500
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
501
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
502 /** Finish decoding
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
503 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
504 void ff_bgmc_decode_end(GetBitContext *gb)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
505 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
506 skip_bits_long(gb, -(VALUE_BITS - 2));
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
507 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
508
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
509
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
510 /** Read and decode a block Gilbert-Moore coded symbol
11148
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
511 */
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
512 void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
513 unsigned int delta, unsigned int sx,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
514 unsigned int *h, unsigned int *l, unsigned int *v,
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
515 uint8_t *cf_lut, unsigned int *cf_lut_status)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
516 {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
517 unsigned int i;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
518 uint8_t *lut = bgmc_lut_getp(cf_lut, cf_lut_status, delta);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
519
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
520 // read current state
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
521 unsigned int high = *h;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
522 unsigned int low = *l;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
523 unsigned int value = *v;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
524
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
525 lut += sx * LUT_SIZE;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
526
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
527 // decode num samples
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
528 for (i = 0; i < num; i++) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
529 unsigned int range = high - low + 1;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
530 unsigned int target = (((value - low + 1) << FREQ_BITS) - 1) / range;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
531 unsigned int symbol = lut[target >> (FREQ_BITS - LUT_BITS)] << delta;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
532
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
533 while (cf_table[sx][symbol] > target)
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
534 symbol += 1 << delta;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
535
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
536 symbol = (symbol >> delta) - 1;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
537
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
538 high = low + ((range * cf_table[sx][(symbol ) << delta] - (1 << FREQ_BITS)) >> FREQ_BITS);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
539 low = low + ((range * cf_table[sx][(symbol + 1) << delta] ) >> FREQ_BITS);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
540
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
541 while (1) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
542 if (high >= HALF) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
543 if (low >= HALF) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
544 value -= HALF;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
545 low -= HALF;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
546 high -= HALF;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
547 } else if (low >= FIRST_QTR && high < THIRD_QTR) {
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
548 value -= FIRST_QTR;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
549 low -= FIRST_QTR;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
550 high -= FIRST_QTR;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
551 } else break;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
552 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
553
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
554 low *= 2;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
555 high = 2 * high + 1;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
556 value = 2 * value + get_bits1(gb);
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
557 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
558
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
559 *dst++ = symbol;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
560 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
561
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
562 // save current state
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
563 *h = high;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
564 *l = low;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
565 *v = value;
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
566 }
2d2780630361 Support arithmetic decoding in ALS.
thilo.borgmann
parents:
diff changeset
567